chrome-devtools-frontend 1.0.1153166 → 1.0.1155899

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 (61) hide show
  1. package/config/gni/devtools_grd_files.gni +3 -2
  2. package/front_end/core/common/Revealer.ts +1 -1
  3. package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -0
  4. package/front_end/core/host/UserMetrics.ts +32 -12
  5. package/front_end/core/platform/array-utilities.ts +25 -9
  6. package/front_end/core/sdk/ChildTargetManager.ts +2 -1
  7. package/front_end/core/sdk/FilmStripModel.ts +35 -25
  8. package/front_end/devtools_compatibility.js +2 -0
  9. package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +8 -2
  10. package/front_end/entrypoints/worker_app/worker_app.ts +0 -1
  11. package/front_end/generated/InspectorBackendCommands.js +2 -1
  12. package/front_end/generated/protocol.ts +36 -0
  13. package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +90 -73
  14. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  15. package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +31 -61
  16. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +69 -0
  17. package/front_end/models/issues_manager/descriptions/stylesheetLateImport.md +4 -0
  18. package/front_end/models/issues_manager/descriptions/stylesheetRequestFailed.md +3 -0
  19. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  20. package/front_end/models/timeline_model/TimelineModel.ts +4 -0
  21. package/front_end/models/trace/ModelImpl.ts +1 -0
  22. package/front_end/models/trace/README.md +73 -17
  23. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +1 -1
  24. package/front_end/models/trace/handlers/RendererHandler.ts +33 -143
  25. package/front_end/models/trace/handlers/UserTimings.md +1 -1
  26. package/front_end/models/trace/types/TraceEvents.ts +3 -2
  27. package/front_end/panels/application/ApplicationPanelSidebar.ts +9 -6
  28. package/front_end/panels/application/PreloadingTreeElement.ts +25 -7
  29. package/front_end/panels/application/preloading/PreloadingView.ts +64 -31
  30. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +19 -9
  31. package/front_end/panels/console/ConsoleViewMessage.ts +14 -2
  32. package/front_end/panels/elements/ElementsPanel.ts +2 -3
  33. package/front_end/panels/elements/components/LayoutPane.ts +256 -60
  34. package/front_end/panels/elements/elements-legacy.ts +0 -3
  35. package/front_end/panels/elements/elements-meta.ts +10 -2
  36. package/front_end/panels/elements/elements.ts +0 -2
  37. package/front_end/panels/network/NetworkDataGridNode.ts +8 -0
  38. package/front_end/panels/network/NetworkLogView.ts +2 -1
  39. package/front_end/panels/network/NetworkPanel.ts +12 -1
  40. package/front_end/panels/recorder/components/ExtensionView.ts +1 -1
  41. package/front_end/panels/sources/DebuggerPlugin.ts +7 -4
  42. package/front_end/panels/sources/SourcesPanel.ts +1 -1
  43. package/front_end/panels/sources/components/BreakpointsView.ts +406 -89
  44. package/front_end/panels/sources/sources-meta.ts +13 -4
  45. package/front_end/panels/sources/sources.ts +0 -2
  46. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
  47. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +106 -95
  48. package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -1
  49. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +5 -0
  50. package/front_end/panels/timeline/TimelinePanel.ts +8 -8
  51. package/front_end/ui/legacy/UIUtils.ts +1 -1
  52. package/front_end/ui/legacy/components/perf_ui/.eslintrc.js +18 -0
  53. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +5 -1
  54. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +5 -2
  55. package/front_end/ui/legacy/components/utils/Linkifier.ts +10 -0
  56. package/package.json +1 -1
  57. package/scripts/build/generate_deprecations.py +3 -0
  58. package/front_end/panels/elements/LayoutSidebarPane.ts +0 -249
  59. package/front_end/panels/sources/BreakpointsSidebarPane.ts +0 -480
  60. package/front_end/ui/components/docs/layout_pane/basic.html +0 -25
  61. package/front_end/ui/components/docs/layout_pane/basic.ts +0 -78
@@ -8,6 +8,7 @@ import * as SDK from '../../core/sdk/sdk.js';
8
8
  import * as UI from '../../ui/legacy/legacy.js';
9
9
 
10
10
  import type * as Elements from './elements.js';
11
+ import type * as ElementsComponents from './components/components.js';
11
12
 
12
13
  import * as i18n from '../../core/i18n/i18n.js';
13
14
  const UIStrings = {
@@ -153,6 +154,7 @@ const UIStrings = {
153
154
  const str_ = i18n.i18n.registerUIStrings('panels/elements/elements-meta.ts', UIStrings);
154
155
  const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
155
156
  let loadedElementsModule: (typeof Elements|undefined);
157
+ let loadedElementsComponentsModule: (typeof ElementsComponents|undefined);
156
158
 
157
159
  async function loadElementsModule(): Promise<typeof Elements> {
158
160
  if (!loadedElementsModule) {
@@ -160,6 +162,12 @@ async function loadElementsModule(): Promise<typeof Elements> {
160
162
  }
161
163
  return loadedElementsModule;
162
164
  }
165
+ async function loadElementsComponentsModule(): Promise<typeof ElementsComponents> {
166
+ if (!loadedElementsComponentsModule) {
167
+ loadedElementsComponentsModule = await import('./components/components.js');
168
+ }
169
+ return loadedElementsComponentsModule;
170
+ }
163
171
  function maybeRetrieveContextTypes<T = unknown>(getClassCallBack: (elementsModule: typeof Elements) => T[]): T[] {
164
172
  if (loadedElementsModule === undefined) {
165
173
  return [];
@@ -250,8 +258,8 @@ UI.ViewManager.registerViewExtension({
250
258
  order: 4,
251
259
  persistence: UI.ViewManager.ViewPersistence.PERMANENT,
252
260
  async loadView() {
253
- const Elements = await loadElementsModule();
254
- return Elements.LayoutSidebarPane.LayoutSidebarPane.instance();
261
+ const ElementsComponents = await loadElementsComponentsModule();
262
+ return ElementsComponents.LayoutPane.LayoutPane.instance().wrapper as UI.Widget.Widget;
255
263
  },
256
264
  });
257
265
 
@@ -49,7 +49,6 @@ import * as ElementsTreeOutline from './ElementsTreeOutline.js';
49
49
  import * as EventListenersWidget from './EventListenersWidget.js';
50
50
  import * as InspectElementModeController from './InspectElementModeController.js';
51
51
  import * as LayersWidget from './LayersWidget.js';
52
- import * as LayoutSidebarPane from './LayoutSidebarPane.js';
53
52
  import * as MarkerDecorator from './MarkerDecorator.js';
54
53
  import * as MetricsSidebarPane from './MetricsSidebarPane.js';
55
54
  import * as NodeStackTraceWidget from './NodeStackTraceWidget.js';
@@ -83,7 +82,6 @@ export {
83
82
  EventListenersWidget,
84
83
  InspectElementModeController,
85
84
  LayersWidget,
86
- LayoutSidebarPane,
87
85
  MarkerDecorator,
88
86
  MetricsSidebarPane,
89
87
  NodeStackTraceWidget,
@@ -1284,6 +1284,13 @@ export class NetworkRequestNode extends NetworkNode {
1284
1284
  }
1285
1285
  }
1286
1286
 
1287
+ #getLinkifierMetric(): Host.UserMetrics.Action|undefined {
1288
+ if (this.requestInternal.resourceType().isStyleSheet()) {
1289
+ return Host.UserMetrics.Action.StyleSheetInitiatorLinkClicked;
1290
+ }
1291
+ return undefined;
1292
+ }
1293
+
1287
1294
  private renderInitiatorCell(cell: HTMLElement): void {
1288
1295
  this.initiatorCell = cell;
1289
1296
  const request = this.requestInternal;
@@ -1301,6 +1308,7 @@ export class NetworkRequestNode extends NetworkNode {
1301
1308
  text: uiSourceCode ? uiSourceCode.displayName() : undefined,
1302
1309
  lineNumber: initiator.lineNumber,
1303
1310
  columnNumber: initiator.columnNumber,
1311
+ userMetric: this.#getLinkifierMetric(),
1304
1312
  } as Components.Linkifier.LinkifyURLOptions)));
1305
1313
  this.appendSubtitle(cell, i18nString(UIStrings.parser));
1306
1314
  break;
@@ -1452,7 +1452,8 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
1452
1452
 
1453
1453
  private onRequestUpdated(event: Common.EventTarget.EventTargetEvent<SDK.NetworkRequest.NetworkRequest>): void {
1454
1454
  const request = event.data;
1455
- if (SDK.TargetManager.TargetManager.instance().isInScope(SDK.NetworkManager.NetworkManager.forRequest(request))) {
1455
+ const networkManager = SDK.NetworkManager.NetworkManager.forRequest(request);
1456
+ if (!networkManager || SDK.TargetManager.TargetManager.instance().isInScope(networkManager)) {
1456
1457
  this.refreshRequest(request);
1457
1458
  }
1458
1459
  }
@@ -371,7 +371,15 @@ export class NetworkPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
371
371
  void {
372
372
  const startTime = Math.max(this.calculator.minimumBoundary(), event.data.startTime / 1000);
373
373
  const endTime = Math.min(this.calculator.maximumBoundary(), event.data.endTime / 1000);
374
- this.networkLogView.setWindow(startTime, endTime);
374
+ if (startTime === this.calculator.minimumBoundary() && endTime === this.calculator.maximumBoundary()) {
375
+ // Reset the filters for NetworkLogView when the window is reset
376
+ // to its boundaries. This clears the filters and allows the users
377
+ // to see the incoming requests after they have updated the curtains
378
+ // to be in the edges. (ex: by double clicking on the overview grid)
379
+ this.networkLogView.setWindow(0, 0);
380
+ } else {
381
+ this.networkLogView.setWindow(startTime, endTime);
382
+ }
375
383
  }
376
384
 
377
385
  private async searchToggleClick(): Promise<void> {
@@ -531,6 +539,9 @@ export class NetworkPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
531
539
 
532
540
  private load(): void {
533
541
  if (this.filmStripRecorder && this.filmStripRecorder.isRecording()) {
542
+ if (this.pendingStopTimer) {
543
+ window.clearTimeout(this.pendingStopTimer);
544
+ }
534
545
  this.pendingStopTimer = window.setTimeout(this.stopFilmStripRecording.bind(this), this.displayScreenshotDelay);
535
546
  }
536
547
  }
@@ -111,7 +111,7 @@ export class ExtensionView extends HTMLElement {
111
111
  {
112
112
  variant: Buttons.Button.Variant.ROUND,
113
113
  size: Buttons.Button.Size.TINY,
114
- iconName: 'bin',
114
+ iconName: 'cross',
115
115
  } as Buttons.Button.ButtonData
116
116
  }
117
117
  @click=${this.#closeView}
@@ -44,12 +44,12 @@ import type * as TextEditor from '../../ui/components/text_editor/text_editor.js
44
44
  import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
45
45
  import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
46
46
  import * as UI from '../../ui/legacy/legacy.js';
47
+ import * as SourceComponents from './components/components.js';
47
48
 
48
49
  import {AddDebugInfoURLDialog} from './AddSourceMapURLDialog.js';
49
50
  import {BreakpointEditDialog, type BreakpointEditDialogResult} from './BreakpointEditDialog.js';
50
51
  import {Plugin} from './Plugin.js';
51
52
  import {SourcesPanel} from './SourcesPanel.js';
52
- import {BreakpointsSidebarController} from './BreakpointsSidebarPane.js';
53
53
 
54
54
  const {EMPTY_BREAKPOINT_CONDITION, NEVER_PAUSE_HERE_CONDITION} = Breakpoints.BreakpointManager;
55
55
 
@@ -837,10 +837,12 @@ export class DebuggerPlugin extends Plugin {
837
837
  dialog.detach();
838
838
  editor.dispatch({effects: compartment.reconfigure([])});
839
839
  if (!result.committed) {
840
- BreakpointsSidebarController.instance().breakpointEditFinished(breakpoint, false);
840
+ SourceComponents.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(
841
+ breakpoint, false);
841
842
  return;
842
843
  }
843
- BreakpointsSidebarController.instance().breakpointEditFinished(breakpoint, oldCondition !== result.condition);
844
+ SourceComponents.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(
845
+ breakpoint, oldCondition !== result.condition);
844
846
  recordBreakpointWithConditionAdded(result);
845
847
  if (breakpoint) {
846
848
  breakpoint.setCondition(result.condition, result.isLogpoint);
@@ -1672,7 +1674,8 @@ export class BreakpointLocationRevealer implements Common.Revealer.Revealer {
1672
1674
  if (debuggerPlugin) {
1673
1675
  debuggerPlugin.editBreakpointLocation(breakpointLocation);
1674
1676
  } else {
1675
- BreakpointsSidebarController.instance().breakpointEditFinished(breakpointLocation.breakpoint, false);
1677
+ SourceComponents.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(
1678
+ breakpointLocation.breakpoint, false);
1676
1679
  }
1677
1680
  }
1678
1681
  }
@@ -261,7 +261,7 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
261
261
  tabbedPane.addEventListener(
262
262
  UI.TabbedPane.Events.TabSelected,
263
263
  ({data: {tabId}}: Common.EventTarget.EventTargetEvent<UI.TabbedPane.EventData>): void =>
264
- Host.userMetrics.sidebarPaneShown(tabId));
264
+ Host.userMetrics.sourcesSidebarTabShown(tabId));
265
265
 
266
266
  if (UI.ViewManager.ViewManager.instance().hasViewsForLocation('run-view-sidebar')) {
267
267
  const navigatorSplitWidget =