chrome-devtools-frontend 1.0.1603822 → 1.0.1605219

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 (89) hide show
  1. package/AUTHORS +1 -0
  2. package/front_end/Tests.js +23 -7
  3. package/front_end/core/host/AidaClient.ts +153 -525
  4. package/front_end/core/host/AidaClientTypes.ts +470 -0
  5. package/front_end/core/host/AidaGcaTranslation.ts +231 -122
  6. package/front_end/core/host/GcaClient.ts +112 -0
  7. package/front_end/core/host/GcaTypes.ts +107 -155
  8. package/front_end/core/host/UserMetrics.ts +0 -1
  9. package/front_end/core/host/host.ts +2 -0
  10. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +1 -1
  11. package/front_end/core/root/ExperimentNames.ts +0 -1
  12. package/front_end/core/root/Runtime.ts +5 -0
  13. package/front_end/core/sdk/AutofillModel.ts +3 -2
  14. package/front_end/core/sdk/CSSModel.ts +3 -4
  15. package/front_end/core/sdk/CSSProperty.ts +1 -1
  16. package/front_end/core/sdk/ConsoleModel.ts +15 -13
  17. package/front_end/core/sdk/CookieModel.ts +5 -4
  18. package/front_end/core/sdk/DOMDebuggerModel.ts +20 -14
  19. package/front_end/core/sdk/DOMModel.ts +24 -22
  20. package/front_end/core/sdk/DebuggerModel.ts +21 -36
  21. package/front_end/core/sdk/EmulationModel.ts +21 -23
  22. package/front_end/core/sdk/EventBreakpointsModel.ts +16 -6
  23. package/front_end/core/sdk/HeapProfilerModel.ts +4 -7
  24. package/front_end/core/sdk/IsolateManager.ts +12 -7
  25. package/front_end/core/sdk/NetworkManager.ts +35 -28
  26. package/front_end/core/sdk/OverlayModel.ts +10 -10
  27. package/front_end/core/sdk/PreloadingModel.ts +3 -4
  28. package/front_end/core/sdk/ServiceWorkerManager.ts +2 -3
  29. package/front_end/core/sdk/SourceMapScopesInfo.ts +93 -63
  30. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -3
  31. package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +22 -48
  32. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +1 -1
  33. package/front_end/entrypoints/main/MainImpl.ts +0 -4
  34. package/front_end/generated/InspectorBackendCommands.ts +4 -0
  35. package/front_end/generated/SupportedCSSProperties.js +68 -2
  36. package/front_end/generated/protocol-mapping.d.ts +7 -0
  37. package/front_end/generated/protocol-proxy-api.d.ts +14 -0
  38. package/front_end/generated/protocol.ts +22 -0
  39. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +31 -17
  40. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +1 -1
  41. package/front_end/models/bindings/TempFile.ts +1 -4
  42. package/front_end/models/emulation/DeviceModeModel.ts +21 -26
  43. package/front_end/models/extensions/ExtensionAPI.ts +1 -1
  44. package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +34 -47
  45. package/front_end/models/javascript_metadata/NativeFunctions.js +6 -6
  46. package/front_end/models/trace/insights/LCPDiscovery.ts +14 -6
  47. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +85 -31
  48. package/front_end/panels/ai_assistance/components/ChatMessage.ts +50 -40
  49. package/front_end/panels/ai_assistance/components/ChatView.ts +3 -2
  50. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +35 -7
  51. package/front_end/panels/ai_assistance/components/chatMessage.css +5 -1
  52. package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -0
  53. package/front_end/panels/application/IndexedDBViews.ts +0 -9
  54. package/front_end/panels/application/WebMCPTreeElement.ts +35 -0
  55. package/front_end/panels/application/WebMCPView.ts +118 -0
  56. package/front_end/panels/application/application.ts +4 -0
  57. package/front_end/panels/application/webMCPView.css +65 -0
  58. package/front_end/panels/common/aiCodeCompletionSummaryToolbar.css +1 -1
  59. package/front_end/panels/console/consoleView.css +4 -0
  60. package/front_end/panels/elements/ElementsTreeElement.ts +91 -13
  61. package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +23 -2
  62. package/front_end/panels/elements/StylesSidebarPane.ts +85 -20
  63. package/front_end/panels/elements/elementsPanel.css +14 -0
  64. package/front_end/panels/elements/elementsTreeOutline.css +18 -0
  65. package/front_end/panels/network/NetworkLogViewColumns.ts +3 -3
  66. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +15 -19
  67. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +4 -2
  68. package/front_end/panels/profiler/HeapSnapshotProxy.ts +12 -16
  69. package/front_end/panels/profiler/HeapSnapshotView.ts +3 -10
  70. package/front_end/panels/profiler/ProfilesPanel.ts +5 -7
  71. package/front_end/panels/recorder/components/recordingView.css +0 -6
  72. package/front_end/panels/sensors/SensorsView.ts +28 -61
  73. package/front_end/panels/timeline/EventsTimelineTreeView.ts +2 -2
  74. package/front_end/panels/timeline/ThirdPartyTreeView.ts +35 -36
  75. package/front_end/panels/timeline/TimelineDetailsView.ts +47 -41
  76. package/front_end/panels/timeline/TimelinePanel.ts +1 -3
  77. package/front_end/panels/timeline/TimelineTreeView.ts +13 -13
  78. package/front_end/panels/timeline/components/LiveMetricsView.ts +852 -824
  79. package/front_end/panels/timeline/components/liveMetricsView.css +4 -0
  80. package/front_end/panels/timeline/thirdPartyTreeView.css +2 -2
  81. package/front_end/third_party/chromium/README.chromium +1 -1
  82. package/front_end/ui/components/buttons/button.css +2 -2
  83. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +0 -11
  84. package/front_end/ui/legacy/InspectorDrawerView.ts +206 -0
  85. package/front_end/ui/legacy/InspectorView.ts +41 -91
  86. package/front_end/ui/legacy/ViewManager.ts +14 -5
  87. package/front_end/ui/legacy/inspectorDrawerTabbedPane.css +5 -0
  88. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -1
  89. package/package.json +1 -1
@@ -91,7 +91,6 @@ export class TimelineDetailsPane extends
91
91
  #parsedTrace: Trace.TraceModel.ParsedTrace|null = null;
92
92
  #eventToRelatedInsightsMap: TimelineComponents.RelatedInsightChips.EventToRelatedInsightsMap|null = null;
93
93
  #onTraceBoundsChangeBound = this.#onTraceBoundsChange.bind(this);
94
- #thirdPartyTree = new ThirdPartyTreeViewWidget();
95
94
  #entityMapper: Trace.EntityMapper.EntityMapper|null = null;
96
95
 
97
96
  constructor(delegate: TimelineModeViewDelegate) {
@@ -148,20 +147,18 @@ export class TimelineDetailsPane extends
148
147
  node => this.dispatchEventToListeners(TimelineTreeView.Events.TREE_ROW_HOVERED, {node: node.data}));
149
148
  }
150
149
  });
151
- this.#thirdPartyTree.addEventListener(TimelineTreeView.Events.TREE_ROW_HOVERED, node => {
152
- // Re-dispatch through 3P event to get 3P dimmer.
153
- this.dispatchEventToListeners(
154
- TimelineTreeView.Events.TREE_ROW_HOVERED, {node: node.data.node, events: node.data.events});
155
- });
156
150
 
157
- this.#thirdPartyTree.addEventListener(TimelineTreeView.Events.BOTTOM_UP_BUTTON_CLICKED, node => {
158
- this.selectTab(Tab.BottomUp, node.data, AggregatedTimelineTreeView.GroupBy.ThirdParties);
159
- });
160
- this.#thirdPartyTree.addEventListener(TimelineTreeView.Events.TREE_ROW_CLICKED, node => {
151
+ this.#summaryContent.onTreeRowHovered = (node, events) => {
161
152
  // Re-dispatch through 3P event to get 3P dimmer.
162
- this.dispatchEventToListeners(
163
- TimelineTreeView.Events.TREE_ROW_CLICKED, {node: node.data.node, events: node.data.events});
164
- });
153
+ this.dispatchEventToListeners(TimelineTreeView.Events.TREE_ROW_HOVERED, {node, events});
154
+ };
155
+ this.#summaryContent.onBottomUpButtonClicked = node => {
156
+ this.selectTab(Tab.BottomUp, node, AggregatedTimelineTreeView.GroupBy.ThirdParties);
157
+ };
158
+ this.#summaryContent.onTreeRowClicked = (node, events) => {
159
+ // Re-dispatch through 3P event to get 3P dimmer.
160
+ this.dispatchEventToListeners(TimelineTreeView.Events.TREE_ROW_CLICKED, {node, events});
161
+ };
165
162
 
166
163
  this.tabbedPane.addEventListener(UI.TabbedPane.Events.TabSelected, this.tabSelected, this);
167
164
 
@@ -294,10 +291,12 @@ export class TimelineDetailsPane extends
294
291
  this.#summaryContent.entityMapper = this.#entityMapper;
295
292
  this.tabbedPane.closeTabs([Tab.PaintProfiler, Tab.LayerViewer], false);
296
293
  for (const view of this.rangeDetailViews.values()) {
297
- view.setModelWithEvents(data.selectedEvents, data.parsedTrace, data.entityMapper);
294
+ view.model = {
295
+ selectedEvents: data.selectedEvents,
296
+ parsedTrace: data.parsedTrace,
297
+ entityMapper: data.entityMapper
298
+ };
298
299
  }
299
- // Set the 3p tree model.
300
- this.#thirdPartyTree.setModelWithEvents(data.selectedEvents, data.parsedTrace, data.entityMapper);
301
300
  this.#summaryContent.requestUpdate();
302
301
  this.lazyPaintProfilerView = null;
303
302
  this.lazyLayersView = null;
@@ -329,7 +328,7 @@ export class TimelineDetailsPane extends
329
328
  // Update the view that we currently have selected.
330
329
  const view = this.rangeDetailViews.get(this.tabbedPane.selectedTabId || '');
331
330
  if (view) {
332
- view.updateContents(this.selection || selectionFromRangeMilliSeconds(visibleWindow.min, visibleWindow.max));
331
+ view.activeSelection = this.selection || selectionFromRangeMilliSeconds(visibleWindow.min, visibleWindow.max);
333
332
  }
334
333
  }
335
334
 
@@ -544,21 +543,12 @@ export class TimelineDetailsPane extends
544
543
  this.#summaryContent.selectedEvent = null;
545
544
  this.#summaryContent.selectedRange = {
546
545
  events: this.#selectedEvents,
547
- thirdPartyTree: this.#thirdPartyTree,
548
546
  startTime,
549
547
  endTime,
548
+ selection: this.selection ?? null,
550
549
  };
551
550
 
552
- // This is a bit of a hack as we are midway through migrating this to
553
- // the new UI Eng vision.
554
- // The 3P tree view will only bother to update its DOM if it has a
555
- // parentElement, so we trigger the rendering of the summary content
556
- // (so the 3P Tree View is attached to the DOM) and then we tell it to
557
- // update.
558
- // This will be fixed once we migrate this component fully to the new vision (b/407751379)
559
- void this.updateSummaryPane().then(() => {
560
- this.#thirdPartyTree.updateContents(this.selection || selectionFromRangeMilliSeconds(startTime, endTime));
561
- });
551
+ void this.updateSummaryPane();
562
552
 
563
553
  // Find all recalculate style events data from range
564
554
  const isSelectorStatsEnabled =
@@ -592,7 +582,7 @@ interface SelectedRange {
592
582
  startTime: Trace.Types.Timing.Milli;
593
583
  endTime: Trace.Types.Timing.Milli;
594
584
  events: Trace.Types.Events.Event[];
595
- thirdPartyTree: ThirdPartyTreeViewWidget;
585
+ selection: TimelineSelection|null;
596
586
  }
597
587
 
598
588
  interface SummaryViewInput {
@@ -604,6 +594,9 @@ interface SummaryViewInput {
604
594
  linkifier: Components.Linkifier.Linkifier|null;
605
595
  filmStrip: Trace.Extras.FilmStrip.Data|null;
606
596
  selectedRange: SelectedRange|null;
597
+ onTreeRowHovered: (_node: Trace.Extras.TraceTree.Node|null, _events?: Trace.Types.Events.Event[]) => void;
598
+ onBottomUpButtonClicked: (_node: Trace.Extras.TraceTree.Node|null) => void;
599
+ onTreeRowClicked: (_node: Trace.Extras.TraceTree.Node|null, _events?: Trace.Types.Events.Event[]) => void;
607
600
  }
608
601
 
609
602
  type View = (input: SummaryViewInput, output: object, target: HTMLElement) => void;
@@ -634,6 +627,9 @@ class SummaryView extends UI.Widget.Widget {
634
627
  linkifier: Components.Linkifier.Linkifier|null = null;
635
628
  filmStrip: Trace.Extras.FilmStrip.Data|null = null;
636
629
  selectedRange: SelectedRange|null = null;
630
+ onTreeRowHovered = (_node: Trace.Extras.TraceTree.Node|null, _events?: Trace.Types.Events.Event[]): void => {};
631
+ onBottomUpButtonClicked = (_node: Trace.Extras.TraceTree.Node|null): void => {};
632
+ onTreeRowClicked = (_node: Trace.Extras.TraceTree.Node|null, _events?: Trace.Types.Events.Event[]): void => {};
637
633
 
638
634
  constructor(element?: HTMLElement, view = SUMMARY_DEFAULT_VIEW) {
639
635
  super(element);
@@ -651,6 +647,9 @@ class SummaryView extends UI.Widget.Widget {
651
647
  linkifier: this.linkifier,
652
648
  filmStrip: this.filmStrip,
653
649
  selectedRange: this.selectedRange,
650
+ onTreeRowHovered: this.onTreeRowHovered,
651
+ onBottomUpButtonClicked: this.onBottomUpButtonClicked,
652
+ onTreeRowClicked: this.onTreeRowClicked,
654
653
  },
655
654
  {}, this.contentElement);
656
655
  }
@@ -658,19 +657,26 @@ class SummaryView extends UI.Widget.Widget {
658
657
 
659
658
  function generateRangeSummaryDetails(input: SummaryViewInput): LitTemplate {
660
659
  // clang-format off
661
- return html`
662
- <devtools-widget
663
- ${widget(TimelineComponents.TimelineRangeSummaryView.TimelineRangeSummaryView, {
664
- data: {
660
+ return html`${widget(TimelineComponents.TimelineRangeSummaryView.TimelineRangeSummaryView, {
661
+ data: {
662
+ parsedTrace: input.parsedTrace,
663
+ events: input.selectedRange?.events,
664
+ startTime: input.selectedRange?.startTime,
665
+ endTime: input.selectedRange?.endTime,
666
+ thirdPartyTreeTemplate: input.selectedRange ? html`${widget(ThirdPartyTreeViewWidget, {
667
+ model: {
665
668
  parsedTrace: input.parsedTrace,
666
- events: input.selectedRange?.events,
667
- startTime: input.selectedRange?.startTime,
668
- endTime: input.selectedRange?.endTime,
669
- thirdPartyTreeTemplate: input.selectedRange?.thirdPartyTree ? html`<devtools-performance-third-party-tree-view
670
- .treeView=${input.selectedRange?.thirdPartyTree}></devtools-performance-third-party-tree-view>` : nothing,
671
- } as TimelineComponents.TimelineRangeSummaryView.TimelineRangeSummaryViewData,
672
- })}
673
- ></devtools-widget>`;
669
+ entityMapper: input.entityMapper,
670
+ selectedEvents: input.selectedRange.events ?? null,
671
+ },
672
+ activeSelection: input.selectedRange.selection ||
673
+ selectionFromRangeMilliSeconds(input.selectedRange.startTime, input.selectedRange.endTime),
674
+ onRowHovered: input.onTreeRowHovered,
675
+ onBottomUpButtonClicked: input.onBottomUpButtonClicked,
676
+ onRowClicked: input.onTreeRowClicked,
677
+ })}` : nothing,
678
+ } as TimelineComponents.TimelineRangeSummaryView.TimelineRangeSummaryViewData,
679
+ })}`;
674
680
  // clang-format on
675
681
  }
676
682
 
@@ -54,7 +54,6 @@ import * as TraceBounds from '../../services/trace_bounds/trace_bounds.js';
54
54
  import * as Tracing from '../../services/tracing/tracing.js';
55
55
  import * as Adorners from '../../ui/components/adorners/adorners.js';
56
56
  import * as Dialogs from '../../ui/components/dialogs/dialogs.js';
57
- import * as LegacyWrapper from '../../ui/components/legacy_wrapper/legacy_wrapper.js';
58
57
  import * as Snackbars from '../../ui/components/snackbars/snackbars.js';
59
58
  import {Link} from '../../ui/kit/kit.js';
60
59
  import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
@@ -2463,8 +2462,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2463
2462
  return;
2464
2463
  }
2465
2464
 
2466
- const liveMetrics = new TimelineComponents.LiveMetricsView.LiveMetricsView();
2467
- this.landingPage = LegacyWrapper.LegacyWrapper.legacyWrapper(UI.Widget.Widget, liveMetrics);
2465
+ this.landingPage = new TimelineComponents.LiveMetricsView.LiveMetricsView();
2468
2466
  this.landingPage.element.classList.add('timeline-landing-page', 'fill');
2469
2467
  this.landingPage.contentElement.classList.add('fill');
2470
2468
  this.landingPage.show(this.statusPaneContainer);
@@ -204,8 +204,8 @@ export class TimelineTreeView extends
204
204
  */
205
205
  protected autoSelectFirstChildOnRefresh = true;
206
206
 
207
- constructor() {
208
- super();
207
+ constructor(element?: HTMLElement) {
208
+ super(element);
209
209
  this.#selectedEvents = null;
210
210
  this.element.classList.add('timeline-tree-view');
211
211
  this.registerRequiredCSS(timelineTreeViewStyles);
@@ -225,14 +225,14 @@ export class TimelineTreeView extends
225
225
  this.searchableView = searchableView;
226
226
  }
227
227
 
228
- setModelWithEvents(
229
- selectedEvents: Trace.Types.Events.Event[]|null,
230
- parsedTrace: Trace.TraceModel.ParsedTrace|null = null,
231
- entityMappings: Trace.EntityMapper.EntityMapper|null = null,
232
- ): void {
233
- this.#parsedTrace = parsedTrace;
234
- this.#selectedEvents = selectedEvents;
235
- this.#entityMapper = entityMappings;
228
+ set model(model: {
229
+ selectedEvents: Trace.Types.Events.Event[]|null,
230
+ parsedTrace: Trace.TraceModel.ParsedTrace|null,
231
+ entityMapper: Trace.EntityMapper.EntityMapper|null,
232
+ }) {
233
+ this.#parsedTrace = model.parsedTrace;
234
+ this.#selectedEvents = model.selectedEvents;
235
+ this.#entityMapper = model.entityMapper;
236
236
  this.refreshTree();
237
237
  }
238
238
 
@@ -303,7 +303,7 @@ export class TimelineTreeView extends
303
303
  return this.lastSelectedNodeInternal;
304
304
  }
305
305
 
306
- updateContents(selection: TimelineSelection): void {
306
+ set activeSelection(selection: TimelineSelection) {
307
307
  const timings = rangeForSelection(selection);
308
308
  const timingMilli = Trace.Helpers.Timing.traceWindowMicroSecondsToMilliSeconds(timings);
309
309
  this.setRange(timingMilli.min, timingMilli.max);
@@ -971,8 +971,8 @@ export class AggregatedTimelineTreeView extends TimelineTreeView {
971
971
  this.groupBySetting.set(groupBy);
972
972
  }
973
973
 
974
- override updateContents(selection: TimelineSelection): void {
975
- super.updateContents(selection);
974
+ override set activeSelection(selection: TimelineSelection) {
975
+ super.activeSelection = selection;
976
976
  const rootNode = this.dataGrid.rootNode();
977
977
  if (rootNode.children.length) {
978
978
  rootNode.children[0].select(/* suppressSelectedEvent */ true);