chrome-devtools-frontend 1.0.1534717 → 1.0.1536371

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/docs/contributing/images/issues-nearestslo.png +0 -0
  2. package/docs/contributing/issues.md +32 -58
  3. package/eslint.config.mjs +1 -0
  4. package/front_end/core/common/Console.ts +1 -8
  5. package/front_end/core/common/ParsedURL.ts +10 -20
  6. package/front_end/core/common/SegmentedRange.ts +1 -2
  7. package/front_end/core/common/StringOutputStream.ts +1 -4
  8. package/front_end/core/host/InspectorFrontendHost.ts +6 -0
  9. package/front_end/core/host/UserMetrics.ts +5 -1
  10. package/front_end/core/i18n/i18nImpl.ts +0 -24
  11. package/front_end/core/protocol_client/CDPConnection.ts +53 -5
  12. package/front_end/core/protocol_client/protocol_client.ts +2 -0
  13. package/front_end/core/sdk/AnimationModel.ts +1 -2
  14. package/front_end/core/sdk/CSSMatchedStyles.ts +2 -2
  15. package/front_end/core/sdk/CSSModel.ts +1 -1
  16. package/front_end/core/sdk/CSSProperty.ts +3 -6
  17. package/front_end/core/sdk/CSSStyleDeclaration.ts +4 -4
  18. package/front_end/core/sdk/DebuggerModel.ts +1 -2
  19. package/front_end/core/sdk/EnhancedTracesParser.ts +4 -0
  20. package/front_end/core/sdk/SourceMap.ts +2 -3
  21. package/front_end/devtools_compatibility.js +32 -24
  22. package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +2 -1
  23. package/front_end/generated/InspectorBackendCommands.js +1 -2
  24. package/front_end/generated/SupportedCSSProperties.js +57 -0
  25. package/front_end/generated/protocol.ts +0 -27
  26. package/front_end/panels/accessibility/AccessibilityNodeView.ts +18 -17
  27. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +9 -12
  28. package/front_end/panels/ai_assistance/PatchWidget.ts +39 -40
  29. package/front_end/panels/ai_assistance/components/ChatView.ts +5 -4
  30. package/front_end/panels/ai_assistance/components/ExploreWidget.ts +0 -2
  31. package/front_end/panels/application/AppManifestView.ts +7 -6
  32. package/front_end/panels/application/ApplicationPanelSidebar.ts +4 -4
  33. package/front_end/panels/application/OpenedWindowDetailsView.ts +6 -6
  34. package/front_end/panels/application/StorageView.ts +9 -8
  35. package/front_end/panels/application/components/BackForwardCacheView.ts +333 -314
  36. package/front_end/panels/application/components/ProtocolHandlersView.ts +3 -2
  37. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -1
  38. package/front_end/panels/autofill/AutofillView.ts +2 -3
  39. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +8 -8
  40. package/front_end/panels/changes/CombinedDiffView.ts +13 -14
  41. package/front_end/panels/common/BadgeNotification.ts +2 -1
  42. package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
  43. package/front_end/panels/console/ConsoleInsightTeaser.ts +13 -2
  44. package/front_end/panels/console/ConsolePinPane.ts +12 -7
  45. package/front_end/panels/console/ConsoleView.ts +1 -0
  46. package/front_end/panels/console/consoleView.css +0 -1
  47. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +9 -9
  48. package/front_end/panels/elements/ComputedStyleWidget.ts +7 -7
  49. package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
  50. package/front_end/panels/elements/EventListenersWidget.ts +9 -9
  51. package/front_end/panels/elements/NodeStackTraceWidget.ts +6 -6
  52. package/front_end/panels/elements/PlatformFontsWidget.ts +5 -5
  53. package/front_end/panels/elements/PropertiesWidget.ts +8 -8
  54. package/front_end/panels/layer_viewer/Layers3DView.ts +2 -1
  55. package/front_end/panels/layer_viewer/PaintProfilerView.ts +3 -3
  56. package/front_end/panels/network/RequestCookiesView.ts +2 -1
  57. package/front_end/panels/network/RequestTimingView.ts +2 -1
  58. package/front_end/panels/network/components/DirectSocketConnectionView.ts +4 -6
  59. package/front_end/panels/recorder/RecorderController.ts +34 -23
  60. package/front_end/panels/recorder/components/CreateRecordingView.ts +249 -240
  61. package/front_end/panels/security/CookieControlsView.ts +74 -67
  62. package/front_end/panels/security/CookieReportView.ts +18 -16
  63. package/front_end/panels/security/IPProtectionView.ts +1 -2
  64. package/front_end/panels/security/SecurityPanel.ts +19 -19
  65. package/front_end/panels/settings/AISettingsTab.ts +2 -1
  66. package/front_end/panels/settings/KeybindsSettingsTab.ts +6 -0
  67. package/front_end/panels/settings/components/SyncSection.ts +2 -1
  68. package/front_end/panels/sources/DebuggerPausedMessage.ts +4 -3
  69. package/front_end/panels/sources/ResourceOriginPlugin.ts +3 -2
  70. package/front_end/panels/sources/SourcesNavigator.ts +2 -1
  71. package/front_end/panels/sources/TabbedEditorContainer.ts +3 -2
  72. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +9 -9
  73. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +36 -36
  74. package/front_end/panels/timeline/TimelineUIUtils.ts +3 -2
  75. package/front_end/panels/timeline/components/DetailsView.ts +5 -4
  76. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +2 -1
  77. package/front_end/panels/timeline/components/LiveMetricsView.ts +5 -4
  78. package/front_end/panels/timeline/components/MetricCompareStrings.ts +25 -24
  79. package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +1 -2
  80. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +2 -1
  81. package/front_end/third_party/chromium/README.chromium +1 -1
  82. package/front_end/ui/components/docs/tooltip/basic.ts +1 -1
  83. package/front_end/ui/components/tooltips/Tooltip.ts +32 -17
  84. package/front_end/ui/i18n/i18n.ts +31 -0
  85. package/front_end/ui/legacy/SoftDropDown.ts +1 -12
  86. package/front_end/ui/legacy/ViewManager.ts +2 -4
  87. package/front_end/ui/legacy/Widget.ts +33 -17
  88. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -1
  89. package/front_end/ui/legacy/legacy.ts +0 -2
  90. package/front_end/ui/visual_logging/KnownContextValues.ts +5 -0
  91. package/mcp/mcp.ts +1 -0
  92. package/package.json +1 -1
  93. package/front_end/ui/components/docs/recorder_create_recording_view/basic.html +0 -20
  94. package/front_end/ui/components/docs/recorder_create_recording_view/basic.ts +0 -27
  95. package/front_end/ui/legacy/ThrottledWidget.ts +0 -48
@@ -397,7 +397,7 @@ export interface EventTypes {
397
397
  [Events.WINDOW_CHANGED]: void;
398
398
  }
399
399
 
400
- export class PaintProfilerCommandLogView extends UI.ThrottledWidget.ThrottledWidget {
400
+ export class PaintProfilerCommandLogView extends UI.Widget.VBox {
401
401
  private readonly treeOutline: UI.TreeOutline.TreeOutlineInShadow;
402
402
  private log: SDK.PaintProfiler.PaintProfilerLogItem[];
403
403
  private readonly treeItemCache: Map<SDK.PaintProfiler.PaintProfilerLogItem, LogTreeElement>;
@@ -435,10 +435,10 @@ export class PaintProfilerCommandLogView extends UI.ThrottledWidget.ThrottledWid
435
435
 
436
436
  updateWindow(selectionWindow: {left: number, right: number}|null): void {
437
437
  this.selectionWindow = selectionWindow;
438
- this.update();
438
+ this.requestUpdate();
439
439
  }
440
440
 
441
- override doUpdate(): Promise<void> {
441
+ override performUpdate(): Promise<void> {
442
442
  if (!this.selectionWindow || !this.log.length) {
443
443
  this.treeOutline.removeChildren();
444
444
  return Promise.resolve();
@@ -8,6 +8,7 @@ import * as i18n from '../../core/i18n/i18n.js';
8
8
  import * as SDK from '../../core/sdk/sdk.js';
9
9
  import * as Protocol from '../../generated/protocol.js';
10
10
  import * as IconButton from '../../ui/components/icon_button/icon_button.js';
11
+ import * as uiI18n from '../../ui/i18n/i18n.js';
11
12
  import * as CookieTable from '../../ui/legacy/components/cookie_table/cookie_table.js';
12
13
  import * as UI from '../../ui/legacy/legacy.js';
13
14
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -120,7 +121,7 @@ export class RequestCookiesView extends UI.Widget.Widget {
120
121
  this.siteHasCookieInOtherPartition =
121
122
  this.element.createChild('div', 'cookies-panel-item site-has-cookies-in-other-partition');
122
123
  this.siteHasCookieInOtherPartition.appendChild(
123
- i18n.i18n.getFormatLocalizedString(str_, UIStrings.siteHasCookieInOtherPartition, {
124
+ uiI18n.getFormatLocalizedString(str_, UIStrings.siteHasCookieInOtherPartition, {
124
125
  PH1: UI.XLink.XLink.create(
125
126
  'https://developer.chrome.com/en/docs/privacy-sandbox/chips/', i18nString(UIStrings.learnMore), undefined,
126
127
  undefined, 'learn-more'),
@@ -11,6 +11,7 @@ import * as SDK from '../../core/sdk/sdk.js';
11
11
  import * as Protocol from '../../generated/protocol.js';
12
12
  import * as Logs from '../../models/logs/logs.js';
13
13
  import * as NetworkTimeCalculator from '../../models/network_time_calculator/network_time_calculator.js';
14
+ import * as uiI18n from '../../ui/i18n/i18n.js';
14
15
  import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
15
16
  import * as UI from '../../ui/legacy/legacy.js';
16
17
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -412,7 +413,7 @@ export class RequestTimingView extends UI.Widget.VBox {
412
413
  'https://web.dev/custom-metrics/#server-timing-api', i18nString(UIStrings.theServerTimingApi), undefined,
413
414
  undefined, 'server-timing-api');
414
415
  information.appendChild(
415
- i18n.i18n.getFormatLocalizedString(str_, UIStrings.duringDevelopmentYouCanUseSToAdd, {PH1: link}));
416
+ uiI18n.getFormatLocalizedString(str_, UIStrings.duringDevelopmentYouCanUseSToAdd, {PH1: link}));
416
417
 
417
418
  return tableElement;
418
419
  }
@@ -2,8 +2,6 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- /* eslint-disable @devtools/no-lit-render-outside-of-view */
6
-
7
5
  import * as Common from '../../../core/common/common.js';
8
6
  import * as Host from '../../../core/host/host.js';
9
7
  import * as i18n from '../../../core/i18n/i18n.js';
@@ -112,9 +110,9 @@ export interface ViewInput {
112
110
  onCopyRow: () => void;
113
111
  }
114
112
 
115
- export type View = (input: ViewInput, target: HTMLElement) => void;
113
+ export type View = (input: ViewInput, output: undefined, target: HTMLElement) => void;
116
114
 
117
- export const DEFAULT_VIEW: View = (input, target) => {
115
+ export const DEFAULT_VIEW: View = (input, _output, target) => {
118
116
  function isCategoryOpen(name: string): boolean {
119
117
  return input.openCategories.includes(name);
120
118
  }
@@ -203,7 +201,7 @@ export const DEFAULT_VIEW: View = (input, target) => {
203
201
  ${renderCategory(CATEGORY_NAME_GENERAL, i18nString(UIStrings.general), generalContent)}
204
202
  ${renderCategory(CATEGORY_NAME_OPTIONS, i18nString(UIStrings.options), optionsContent)}
205
203
  ${socketInfo.openInfo ? renderCategory(CATEGORY_NAME_OPEN_INFO, i18nString(UIStrings.openInfo), openInfoContent) : Lit.nothing}
206
- `, target, {host: input});
204
+ `, target);
207
205
  // clang-format on
208
206
  };
209
207
 
@@ -278,7 +276,7 @@ export class DirectSocketConnectionView extends UI.Widget.Widget {
278
276
  Host.userMetrics.actionTaken(Host.UserMetrics.Action.NetworkPanelCopyValue);
279
277
  }
280
278
  };
281
- this.#view(viewInput, this.contentElement);
279
+ this.#view(viewInput, undefined, this.contentElement);
282
280
  }
283
281
 
284
282
  #setIsOpen(categoryName: string, open: boolean): void {
@@ -233,6 +233,7 @@ export class RecorderController extends LitElement {
233
233
  'disable-self-xss-warning', false, Common.Settings.SettingStorageType.SYNCED);
234
234
 
235
235
  #recordingView?: Components.RecordingView.RecordingView;
236
+ #createRecordingView?: Components.CreateRecordingView.CreateRecordingView;
236
237
 
237
238
  constructor() {
238
239
  super();
@@ -804,7 +805,9 @@ export class RecorderController extends LitElement {
804
805
  this.#clearError();
805
806
  }
806
807
 
807
- async #onRecordingStarted(event: Components.CreateRecordingView.RecordingStartedEvent): Promise<void> {
808
+ async #onRecordingStarted(
809
+ data: {name: string, selectorTypesToRecord: Models.Schema.SelectorType[], selectorAttribute?: string}):
810
+ Promise<void> {
808
811
  // Recording is not available in device mode.
809
812
  await this.#disableDeviceModeIfEnabled();
810
813
 
@@ -815,10 +818,10 @@ export class RecorderController extends LitElement {
815
818
  // -- Recording logic starts here --
816
819
  Host.userMetrics.recordingToggled(Host.UserMetrics.RecordingToggled.RECORDING_STARTED);
817
820
  this.currentRecordingSession = new Models.RecordingSession.RecordingSession(this.#getMainTarget(), {
818
- title: event.name,
819
- selectorAttribute: event.selectorAttribute,
820
- selectorTypesToRecord: event.selectorTypesToRecord.length ? event.selectorTypesToRecord :
821
- Object.values(Models.Schema.SelectorType),
821
+ title: data.name,
822
+ selectorAttribute: data.selectorAttribute,
823
+ selectorTypesToRecord: data.selectorTypesToRecord.length ? data.selectorTypesToRecord :
824
+ Object.values(Models.Schema.SelectorType),
822
825
  });
823
826
  this.#setCurrentRecording(await this.#storage.saveRecording(this.currentRecordingSession.cloneUserFlow()));
824
827
 
@@ -901,7 +904,7 @@ export class RecorderController extends LitElement {
901
904
  this.dispatchEvent(new Events.RecordingStateChangedEvent(this.currentRecording.flow));
902
905
  }
903
906
 
904
- async #onRecordingCancelled(): Promise<void> {
907
+ async onRecordingCancelled(): Promise<void> {
905
908
  if (this.previousPage) {
906
909
  this.#setCurrentPage(this.previousPage);
907
910
  }
@@ -1060,15 +1063,17 @@ export class RecorderController extends LitElement {
1060
1063
 
1061
1064
  case Actions.RecorderActions.START_RECORDING:
1062
1065
  if (this.currentPage !== Pages.CREATE_RECORDING_PAGE && !this.isRecording) {
1063
- this.#shortcutHelper.handleShortcut(this.#onRecordingStarted.bind(
1064
- this,
1065
- new Components.CreateRecordingView.RecordingStartedEvent(
1066
- this.#recorderSettings.defaultTitle, this.#recorderSettings.defaultSelectors,
1067
- this.#recorderSettings.selectorAttribute)));
1066
+ this.#shortcutHelper.handleShortcut(this.#onRecordingStarted.bind(this, {
1067
+ name: this.#recorderSettings.defaultTitle,
1068
+ selectorTypesToRecord: this.#recorderSettings.defaultSelectors,
1069
+ selectorAttribute: this.#recorderSettings.selectorAttribute ? this.#recorderSettings.selectorAttribute :
1070
+ undefined,
1071
+ }));
1068
1072
  } else if (this.currentPage === Pages.CREATE_RECORDING_PAGE) {
1069
- const view = this.renderRoot.querySelector('devtools-create-recording-view');
1070
- if (view) {
1071
- this.#shortcutHelper.handleShortcut(view.startRecording.bind(view));
1073
+ if (this.#createRecordingView) {
1074
+ this.#shortcutHelper.handleShortcut(() => {
1075
+ this.#createRecordingView?.triggerFormSubmission();
1076
+ });
1072
1077
  }
1073
1078
  } else if (this.isRecording) {
1074
1079
  void this.#onRecordingFinished();
@@ -1233,15 +1238,21 @@ export class RecorderController extends LitElement {
1233
1238
  #renderCreateRecordingPage(): Lit.TemplateResult {
1234
1239
  // clang-format off
1235
1240
  return html`
1236
- <devtools-create-recording-view
1237
- .data=${
1238
- {
1239
- recorderSettings: this.#recorderSettings,
1240
- } as Components.CreateRecordingView.CreateRecordingViewData
1241
- }
1242
- @recordingstarted=${this.#onRecordingStarted}
1243
- @recordingcancelled=${this.#onRecordingCancelled}
1244
- ></devtools-create-recording-view>
1241
+ <devtools-widget
1242
+ class="recording-view"
1243
+ .widgetConfig=${UI.Widget.widgetConfig(Components.CreateRecordingView.CreateRecordingView, {
1244
+ recorderSettings: this.#recorderSettings,
1245
+ defaultRecordingName: this.#recorderSettings.defaultTitle,
1246
+ onRecordingStarted: this.#onRecordingStarted.bind(this),
1247
+ onRecordingCancelled: this.onRecordingCancelled.bind(this),
1248
+ })}
1249
+ ${UI.Widget.widgetRef(
1250
+ Components.CreateRecordingView.CreateRecordingView,
1251
+ widget => {
1252
+ this.#createRecordingView = widget;
1253
+ },
1254
+ )}
1255
+ ></devtools-widget>
1245
1256
  `;
1246
1257
  // clang-format on
1247
1258
  }