chrome-devtools-frontend 1.0.1606789 → 1.0.1608868

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 (75) hide show
  1. package/docs/ui_engineering.md +2 -0
  2. package/eslint.config.mjs +2 -0
  3. package/front_end/core/common/VersionController.ts +18 -1
  4. package/front_end/core/host/UserMetrics.ts +0 -2
  5. package/front_end/core/platform/node/HostRuntime.ts +1 -1
  6. package/front_end/core/root/ExperimentNames.ts +0 -2
  7. package/front_end/core/sdk/AccessibilityModel.ts +13 -1
  8. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -13
  9. package/front_end/core/sdk/StorageBucketsModel.ts +0 -12
  10. package/front_end/entrypoints/main/MainImpl.ts +2 -11
  11. package/front_end/generated/InspectorBackendCommands.ts +3 -33
  12. package/front_end/generated/SupportedCSSProperties.js +8 -4
  13. package/front_end/generated/protocol-mapping.d.ts +7 -26
  14. package/front_end/generated/protocol-proxy-api.d.ts +5 -24
  15. package/front_end/generated/protocol.ts +2 -296
  16. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -2
  17. package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgent.ts +1 -1
  18. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +6 -6
  19. package/front_end/models/ai_assistance/agents/ConversationSummaryAgent.ts +2 -1
  20. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +46 -21
  21. package/front_end/{panels/profiler → models/heap_snapshot_model}/ChildrenProvider.ts +3 -4
  22. package/front_end/{panels/profiler → models/heap_snapshot_model}/HeapSnapshotProxy.ts +19 -36
  23. package/front_end/models/heap_snapshot_model/heap_snapshot_model.ts +4 -0
  24. package/front_end/models/javascript_metadata/NativeFunctions.js +0 -4
  25. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +53 -10
  26. package/front_end/panels/accessibility/accessibility.ts +0 -2
  27. package/front_end/panels/accessibility/accessibilitySidebarView.css +10 -0
  28. package/front_end/panels/ai_assistance/components/ChatMessage.ts +6 -5
  29. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +36 -17
  30. package/front_end/panels/ai_assistance/components/chatMessage.css +7 -0
  31. package/front_end/panels/ai_assistance/components/walkthroughView.css +39 -11
  32. package/front_end/panels/application/CrashReportContextView.ts +237 -0
  33. package/front_end/panels/application/IndexedDBModel.ts +0 -10
  34. package/front_end/panels/application/InterestGroupStorageModel.ts +0 -11
  35. package/front_end/panels/application/ReportingApiTreeElement.ts +40 -1
  36. package/front_end/panels/application/SharedStorageModel.ts +0 -11
  37. package/front_end/panels/application/WebMCPView.ts +389 -52
  38. package/front_end/panels/application/application.ts +4 -0
  39. package/front_end/panels/application/components/CrashReportContextGrid.ts +154 -0
  40. package/front_end/panels/application/components/components.ts +2 -0
  41. package/front_end/panels/application/webMCPView.css +107 -10
  42. package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +12 -2
  43. package/front_end/panels/elements/AccessibilityTreeView.ts +10 -6
  44. package/front_end/panels/elements/ElementsPanel.ts +9 -50
  45. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  46. package/front_end/panels/elements/elements-meta.ts +1 -0
  47. package/front_end/panels/elements/elementsPanel.css +4 -14
  48. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +23 -13
  49. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +30 -30
  50. package/front_end/panels/profiler/HeapSnapshotView.ts +16 -13
  51. package/front_end/panels/profiler/profiler.ts +0 -4
  52. package/front_end/panels/snippets/SnippetsQuickOpen.ts +5 -5
  53. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +2 -2
  54. package/front_end/panels/sources/sources-meta.ts +7 -7
  55. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +1 -3
  56. package/front_end/panels/timeline/ThirdPartyTreeView.ts +6 -1
  57. package/front_end/panels/timeline/ThreadAppender.ts +1 -3
  58. package/front_end/panels/timeline/TimelineController.ts +2 -2
  59. package/front_end/panels/timeline/TimelinePanel.ts +2 -4
  60. package/front_end/panels/timeline/TimelineTreeView.ts +32 -2
  61. package/front_end/panels/timeline/components/LiveMetricsView.ts +75 -54
  62. package/front_end/panels/timeline/components/timelineRangeSummaryView.css +8 -0
  63. package/front_end/panels/timeline/thirdPartyTreeView.css +0 -1
  64. package/front_end/panels/timeline/timeline-meta.ts +13 -0
  65. package/front_end/third_party/chromium/README.chromium +1 -1
  66. package/front_end/ui/legacy/TabbedPane.ts +3 -1
  67. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +3 -3
  68. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +2 -5
  69. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +4 -4
  70. package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +5 -1
  71. package/front_end/ui/legacy/components/utils/Linkifier.ts +2 -1
  72. package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
  73. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -3
  74. package/package.json +1 -1
  75. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +0 -653
@@ -17,7 +17,6 @@ import * as UI from '../../ui/legacy/legacy.js';
17
17
  import {Directives, html, render} from '../../ui/lit/lit.js';
18
18
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
19
19
 
20
- import type {ChildrenProvider} from './ChildrenProvider.js';
21
20
  import {
22
21
  type AllocationDataGrid,
23
22
  type HeapSnapshotConstructorsDataGrid,
@@ -25,7 +24,6 @@ import {
25
24
  type HeapSnapshotSortableDataGrid,
26
25
  HeapSnapshotSortableDataGridEvents,
27
26
  } from './HeapSnapshotDataGrids.js';
28
- import type {HeapSnapshotProviderProxy, HeapSnapshotProxy} from './HeapSnapshotProxy.js';
29
27
  import type {DataDisplayDelegate} from './ProfileHeader.js';
30
28
 
31
29
  const UIStrings = {
@@ -144,7 +142,7 @@ export class HeapSnapshotGridNode extends
144
142
  from: number,
145
143
  to: number,
146
144
  }>;
147
- providerObject: ChildrenProvider|null;
145
+ providerObject: HeapSnapshotModel.ChildrenProvider.ChildrenProvider|null;
148
146
  reachableFromWindow: boolean;
149
147
  populated?: boolean;
150
148
 
@@ -169,7 +167,7 @@ export class HeapSnapshotGridNode extends
169
167
  return undefined;
170
168
  }
171
169
 
172
- createProvider(): ChildrenProvider {
170
+ createProvider(): HeapSnapshotModel.ChildrenProvider.ChildrenProvider {
173
171
  throw new Error('Not implemented.');
174
172
  }
175
173
 
@@ -186,14 +184,14 @@ export class HeapSnapshotGridNode extends
186
184
  }
187
185
 
188
186
  retainersDataSource(): {
189
- snapshot: HeapSnapshotProxy,
187
+ snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy,
190
188
  snapshotNodeIndex: number,
191
189
  snapshotNodeId: number|undefined,
192
190
  }|null {
193
191
  return null;
194
192
  }
195
193
 
196
- provider(): ChildrenProvider {
194
+ provider(): HeapSnapshotModel.ChildrenProvider.ChildrenProvider {
197
195
  if (!this.providerObject) {
198
196
  this.providerObject = this.createProvider();
199
197
  }
@@ -560,7 +558,7 @@ export abstract class HeapSnapshotGenericObjectNode extends HeapSnapshotGridNode
560
558
  this.detachedDOMTreeNode = true;
561
559
  }
562
560
 
563
- const snapshot = (dataGrid.snapshot as HeapSnapshotProxy);
561
+ const snapshot = (dataGrid.snapshot as HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy);
564
562
  const shallowSizePercent = this.shallowSize / snapshot.totalSize * 100.0;
565
563
  const retainedSizePercent = this.retainedSize / snapshot.totalSize * 100.0;
566
564
 
@@ -578,12 +576,12 @@ export abstract class HeapSnapshotGenericObjectNode extends HeapSnapshotGridNode
578
576
  }
579
577
 
580
578
  override retainersDataSource(): {
581
- snapshot: HeapSnapshotProxy,
579
+ snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy,
582
580
  snapshotNodeIndex: number,
583
581
  snapshotNodeId: number|undefined,
584
582
  }|null {
585
583
  return this.snapshotNodeIndex === undefined ? null : {
586
- snapshot: (this.dataGridInternal.snapshot as HeapSnapshotProxy),
584
+ snapshot: (this.dataGridInternal.snapshot as HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy),
587
585
  snapshotNodeIndex: this.snapshotNodeIndex,
588
586
  snapshotNodeId: this.snapshotNodeId,
589
587
  };
@@ -799,12 +797,12 @@ export class HeapSnapshotObjectNode extends HeapSnapshotGenericObjectNode {
799
797
  override referenceName: string;
800
798
  readonly referenceType: string;
801
799
  readonly edgeIndex: number;
802
- readonly snapshot: HeapSnapshotProxy;
800
+ readonly snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy;
803
801
  parentObjectNode: HeapSnapshotObjectNode|null;
804
802
  readonly cycledWithAncestorGridNode: HeapSnapshotObjectNode|null;
805
803
 
806
804
  constructor(
807
- dataGrid: HeapSnapshotSortableDataGrid, snapshot: HeapSnapshotProxy,
805
+ dataGrid: HeapSnapshotSortableDataGrid, snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy,
808
806
  edge: HeapSnapshotModel.HeapSnapshotModel.Edge, parentObjectNode: HeapSnapshotObjectNode|null) {
809
807
  super(dataGrid, edge.node);
810
808
  this.referenceName = edge.name;
@@ -829,7 +827,7 @@ export class HeapSnapshotObjectNode extends HeapSnapshotGenericObjectNode {
829
827
  }
830
828
 
831
829
  override retainersDataSource(): {
832
- snapshot: HeapSnapshotProxy,
830
+ snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy,
833
831
  snapshotNodeIndex: number,
834
832
  snapshotNodeId: number|undefined,
835
833
  }|null {
@@ -838,7 +836,7 @@ export class HeapSnapshotObjectNode extends HeapSnapshotGenericObjectNode {
838
836
  {snapshot: this.snapshot, snapshotNodeIndex: this.snapshotNodeIndex, snapshotNodeId: this.snapshotNodeId};
839
837
  }
840
838
 
841
- override createProvider(): HeapSnapshotProviderProxy {
839
+ override createProvider(): HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy {
842
840
  if (this.snapshotNodeIndex === undefined) {
843
841
  throw new Error('Cannot create a provider on a root node');
844
842
  }
@@ -925,7 +923,7 @@ export class HeapSnapshotObjectNode extends HeapSnapshotGenericObjectNode {
925
923
  export class HeapSnapshotRetainingObjectNode extends HeapSnapshotObjectNode {
926
924
  #ignored: boolean;
927
925
  constructor(
928
- dataGrid: HeapSnapshotSortableDataGrid, snapshot: HeapSnapshotProxy,
926
+ dataGrid: HeapSnapshotSortableDataGrid, snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy,
929
927
  edge: HeapSnapshotModel.HeapSnapshotModel.Edge, parentRetainingObjectNode: HeapSnapshotRetainingObjectNode|null) {
930
928
  super(dataGrid, snapshot, edge, parentRetainingObjectNode);
931
929
  this.#ignored = edge.node.ignored;
@@ -934,7 +932,7 @@ export class HeapSnapshotRetainingObjectNode extends HeapSnapshotObjectNode {
934
932
  }
935
933
  }
936
934
 
937
- override createProvider(): HeapSnapshotProviderProxy {
935
+ override createProvider(): HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy {
938
936
  if (this.snapshotNodeIndex === undefined) {
939
937
  throw new Error('Cannot create providers on root nodes');
940
938
  }
@@ -1021,10 +1019,10 @@ export class HeapSnapshotRetainingObjectNode extends HeapSnapshotObjectNode {
1021
1019
  }
1022
1020
 
1023
1021
  export class HeapSnapshotInstanceNode extends HeapSnapshotGenericObjectNode {
1024
- readonly baseSnapshotOrSnapshot: HeapSnapshotProxy;
1022
+ readonly baseSnapshotOrSnapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy;
1025
1023
  readonly isDeletedNode: boolean;
1026
1024
  constructor(
1027
- dataGrid: HeapSnapshotSortableDataGrid, snapshot: HeapSnapshotProxy,
1025
+ dataGrid: HeapSnapshotSortableDataGrid, snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy,
1028
1026
  node: HeapSnapshotModel.HeapSnapshotModel.Node, isDeletedNode: boolean) {
1029
1027
  super(dataGrid, node);
1030
1028
  this.baseSnapshotOrSnapshot = snapshot;
@@ -1049,7 +1047,7 @@ export class HeapSnapshotInstanceNode extends HeapSnapshotGenericObjectNode {
1049
1047
  }
1050
1048
 
1051
1049
  override retainersDataSource(): {
1052
- snapshot: HeapSnapshotProxy,
1050
+ snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy,
1053
1051
  snapshotNodeIndex: number,
1054
1052
  snapshotNodeId: number|undefined,
1055
1053
  }|null {
@@ -1060,7 +1058,7 @@ export class HeapSnapshotInstanceNode extends HeapSnapshotGenericObjectNode {
1060
1058
  };
1061
1059
  }
1062
1060
 
1063
- override createProvider(): HeapSnapshotProviderProxy {
1061
+ override createProvider(): HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy {
1064
1062
  if (this.snapshotNodeIndex === undefined) {
1065
1063
  throw new Error('Cannot create providers on root nodes');
1066
1064
  }
@@ -1131,7 +1129,7 @@ export class HeapSnapshotConstructorNode extends HeapSnapshotGridNode {
1131
1129
  this.retainedSize = aggregate.maxRet;
1132
1130
  this.classKey = classKey;
1133
1131
 
1134
- const snapshot = (dataGrid.snapshot as HeapSnapshotProxy);
1132
+ const snapshot = (dataGrid.snapshot as HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy);
1135
1133
  const retainedSizePercent = this.retainedSize / snapshot.totalSize * 100.0;
1136
1134
  const shallowSizePercent = this.shallowSize / snapshot.totalSize * 100.0;
1137
1135
  this.data = {
@@ -1149,8 +1147,8 @@ export class HeapSnapshotConstructorNode extends HeapSnapshotGridNode {
1149
1147
  return this.nameInternal;
1150
1148
  }
1151
1149
 
1152
- override createProvider(): HeapSnapshotProviderProxy {
1153
- return (this.dataGridInternal.snapshot as HeapSnapshotProxy)
1150
+ override createProvider(): HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy {
1151
+ return (this.dataGridInternal.snapshot as HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy)
1154
1152
  .createNodesProviderForClass(this.classKey, this.nodeFilter);
1155
1153
  }
1156
1154
 
@@ -1186,7 +1184,8 @@ export class HeapSnapshotConstructorNode extends HeapSnapshotGridNode {
1186
1184
  override createChildNode(item: HeapSnapshotModel.HeapSnapshotModel.Node|HeapSnapshotModel.HeapSnapshotModel.Edge):
1187
1185
  HeapSnapshotInstanceNode {
1188
1186
  return new HeapSnapshotInstanceNode(
1189
- this.dataGridInternal, (this.dataGridInternal.snapshot as HeapSnapshotProxy),
1187
+ this.dataGridInternal,
1188
+ (this.dataGridInternal.snapshot as HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy),
1190
1189
  (item as HeapSnapshotModel.HeapSnapshotModel.Node), false);
1191
1190
  }
1192
1191
 
@@ -1209,14 +1208,15 @@ export class HeapSnapshotConstructorNode extends HeapSnapshotGridNode {
1209
1208
  }
1210
1209
  }
1211
1210
 
1212
- export class HeapSnapshotDiffNodesProvider implements ChildrenProvider {
1213
- addedNodesProvider: HeapSnapshotProviderProxy;
1214
- deletedNodesProvider: HeapSnapshotProviderProxy;
1211
+ export class HeapSnapshotDiffNodesProvider implements HeapSnapshotModel.ChildrenProvider.ChildrenProvider {
1212
+ addedNodesProvider: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy;
1213
+ deletedNodesProvider: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy;
1215
1214
  addedCount: number;
1216
1215
  removedCount: number;
1217
1216
  constructor(
1218
- addedNodesProvider: HeapSnapshotProviderProxy, deletedNodesProvider: HeapSnapshotProviderProxy,
1219
- addedCount: number, removedCount: number) {
1217
+ addedNodesProvider: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy,
1218
+ deletedNodesProvider: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProviderProxy, addedCount: number,
1219
+ removedCount: number) {
1220
1220
  this.addedNodesProvider = addedNodesProvider;
1221
1221
  this.deletedNodesProvider = deletedNodesProvider;
1222
1222
  this.addedCount = addedCount;
@@ -1424,8 +1424,8 @@ export class AllocationGridNode extends HeapSnapshotGridNode {
1424
1424
  async doPopulate(): Promise<void> {
1425
1425
  this.populated = true;
1426
1426
 
1427
- const callers =
1428
- await (this.dataGridInternal.snapshot as HeapSnapshotProxy).allocationNodeCallers(this.allocationNode.id);
1427
+ const callers = await (this.dataGridInternal.snapshot as HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy)
1428
+ .allocationNodeCallers(this.allocationNode.id);
1429
1429
 
1430
1430
  const callersChain = callers.nodesWithSingleCaller;
1431
1431
  let parentNode: AllocationGridNode = this;
@@ -34,7 +34,6 @@ import {
34
34
  HeapSnapshotGenericObjectNode,
35
35
  type HeapSnapshotGridNode,
36
36
  } from './HeapSnapshotGridNodes.js';
37
- import {type HeapSnapshotProxy, HeapSnapshotWorkerProxy} from './HeapSnapshotProxy.js';
38
37
  import {Events, HeapTimelineOverview, type IdsRangeChangedEvent, Samples} from './HeapTimelineOverview.js';
39
38
  import * as ModuleUIStrings from './ModuleUIStrings.js';
40
39
  import {
@@ -586,7 +585,7 @@ export class HeapSnapshotView extends UI.View.SimpleView implements DataDisplayD
586
585
  }
587
586
  }
588
587
 
589
- async retrieveStatistics(heapSnapshotProxy: HeapSnapshotProxy):
588
+ async retrieveStatistics(heapSnapshotProxy: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy):
590
589
  Promise<HeapSnapshotModel.HeapSnapshotModel.Statistics> {
591
590
  const statistics = await heapSnapshotProxy.getStatistics();
592
591
  const {v8heap, native} = statistics;
@@ -1646,11 +1645,12 @@ export interface TrackingHeapSnapshotProfileTypeEventTypes {
1646
1645
  export class HeapProfileHeader extends ProfileHeader {
1647
1646
  readonly heapProfilerModelInternal: SDK.HeapProfilerModel.HeapProfilerModel|null;
1648
1647
  maxJSObjectId = -1;
1649
- workerProxy: HeapSnapshotWorkerProxy|null = null;
1648
+ workerProxy: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotWorkerProxy|null = null;
1650
1649
  receiver: Common.StringOutputStream.OutputStream|null = null;
1651
- snapshotProxy: HeapSnapshotProxy|null = null;
1652
- readonly loadPromise: Promise<HeapSnapshotProxy>;
1653
- fulfillLoad: (value: HeapSnapshotProxy|PromiseLike<HeapSnapshotProxy>) => void;
1650
+ snapshotProxy: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy|null = null;
1651
+ readonly loadPromise: Promise<HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy>;
1652
+ fulfillLoad: (value: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy|
1653
+ PromiseLike<HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy>) => void;
1654
1654
  totalNumberOfChunks = 0;
1655
1655
  bufferedWriter: Bindings.TempFile.TempFile|null = null;
1656
1656
  onTempFileReady: (() => void)|null = null;
@@ -1665,7 +1665,7 @@ export class HeapProfileHeader extends ProfileHeader {
1665
1665
  ) {
1666
1666
  super(type, title || i18nString(UIStrings.snapshotD, {PH1: type.nextProfileUid()}));
1667
1667
  this.heapProfilerModelInternal = heapProfilerModel;
1668
- const {promise, resolve} = Promise.withResolvers<HeapSnapshotProxy>();
1668
+ const {promise, resolve} = Promise.withResolvers<HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy>();
1669
1669
  this.loadPromise = promise;
1670
1670
  this.fulfillLoad = resolve;
1671
1671
  }
@@ -1716,10 +1716,12 @@ export class HeapProfileHeader extends ProfileHeader {
1716
1716
 
1717
1717
  setupWorker(): void {
1718
1718
  console.assert(!this.workerProxy, 'HeapSnapshotWorkerProxy already exists');
1719
- this.workerProxy = new HeapSnapshotWorkerProxy(this.handleWorkerEvent.bind(this));
1720
- this.workerProxy.addEventListener(HeapSnapshotWorkerProxy.Events.WAIT, event => {
1721
- this.updateStatus(null, event.data);
1722
- }, this);
1719
+ this.workerProxy =
1720
+ new HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotWorkerProxy(this.handleWorkerEvent.bind(this));
1721
+ this.workerProxy.addEventListener(
1722
+ HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotWorkerProxy.Events.WAIT, event => {
1723
+ this.updateStatus(null, event.data);
1724
+ }, this);
1723
1725
  this.receiver = this.workerProxy.createLoader(this.uid, this.snapshotReceived.bind(this));
1724
1726
  }
1725
1727
 
@@ -1765,7 +1767,7 @@ export class HeapProfileHeader extends ProfileHeader {
1765
1767
  }
1766
1768
  }
1767
1769
 
1768
- snapshotReceived(snapshotProxy: HeapSnapshotProxy): void {
1770
+ snapshotReceived(snapshotProxy: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy): void {
1769
1771
  if (this.wasDisposed) {
1770
1772
  return;
1771
1773
  }
@@ -1945,7 +1947,8 @@ export class HeapAllocationStackView extends UI.Widget.Widget {
1945
1947
  event.consume(true);
1946
1948
  }
1947
1949
 
1948
- async setAllocatedObject(snapshot: HeapSnapshotProxy, snapshotNodeIndex: number): Promise<void> {
1950
+ async setAllocatedObject(snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy, snapshotNodeIndex: number):
1951
+ Promise<void> {
1949
1952
  this.clear();
1950
1953
  const frames = await snapshot.allocationStack(snapshotNodeIndex);
1951
1954
 
@@ -3,12 +3,10 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as BottomUpProfileDataGrid from './BottomUpProfileDataGrid.js';
6
- import * as ChildrenProvider from './ChildrenProvider.js';
7
6
  import * as HeapProfilerPanel from './HeapProfilerPanel.js';
8
7
  import * as HeapProfileView from './HeapProfileView.js';
9
8
  import * as HeapSnapshotDataGrids from './HeapSnapshotDataGrids.js';
10
9
  import * as HeapSnapshotGridNodes from './HeapSnapshotGridNodes.js';
11
- import * as HeapSnapshotProxy from './HeapSnapshotProxy.js';
12
10
  import * as HeapSnapshotView from './HeapSnapshotView.js';
13
11
  import * as HeapTimelineOverview from './HeapTimelineOverview.js';
14
12
  import * as IsolateSelector from './IsolateSelector.js';
@@ -25,12 +23,10 @@ import * as TopDownProfileDataGrid from './TopDownProfileDataGrid.js';
25
23
 
26
24
  export {
27
25
  BottomUpProfileDataGrid,
28
- ChildrenProvider,
29
26
  HeapProfilerPanel,
30
27
  HeapProfileView,
31
28
  HeapSnapshotDataGrids,
32
29
  HeapSnapshotGridNodes,
33
- HeapSnapshotProxy,
34
30
  HeapSnapshotView,
35
31
  HeapTimelineOverview,
36
32
  IsolateSelector,
@@ -39,10 +39,10 @@ let snippetsQuickOpenInstance: SnippetsQuickOpen;
39
39
  export class SnippetsQuickOpen extends QuickOpen.FilteredListWidget.Provider {
40
40
  private snippets: Workspace.UISourceCode.UISourceCode[] = [];
41
41
 
42
- static instance(opts: {forceNew: boolean|null, jslogContext: string}): SnippetsQuickOpen {
43
- const {forceNew, jslogContext} = opts;
42
+ static instance(opts: {forceNew: boolean|null} = {forceNew: null}): SnippetsQuickOpen {
43
+ const {forceNew} = opts;
44
44
  if (!snippetsQuickOpenInstance || forceNew) {
45
- snippetsQuickOpenInstance = new SnippetsQuickOpen(jslogContext);
45
+ snippetsQuickOpenInstance = new SnippetsQuickOpen();
46
46
  }
47
47
 
48
48
  return snippetsQuickOpenInstance;
@@ -98,9 +98,9 @@ export class SnippetsQuickOpen extends QuickOpen.FilteredListWidget.Provider {
98
98
  QuickOpen.FilteredListWidget.registerProvider({
99
99
  prefix: '!',
100
100
  iconName: 'exclamation',
101
- provider: jslogContext => Promise.resolve(SnippetsQuickOpen.instance({forceNew: null, jslogContext})),
101
+ provider: () => Promise.resolve(SnippetsQuickOpen.instance()),
102
102
  helpTitle: i18nLazyString(UIStrings.runSnippet),
103
103
  titlePrefix: i18nLazyString(UIStrings.run),
104
104
  titleSuggestion: i18nLazyString(UIStrings.snippet),
105
- jslogContext: 'snippet'
105
+ jslogContext: 'snippet',
106
106
  });
@@ -37,8 +37,8 @@ export class FilteredUISourceCodeListProvider extends QuickOpen.FilteredListWidg
37
37
  private uiSourceCodes: Workspace.UISourceCode.UISourceCode[];
38
38
  private readonly uiSourceCodeIds: Set<string>;
39
39
  private query!: string;
40
- constructor(jslogContext: string) {
41
- super(jslogContext);
40
+ constructor() {
41
+ super();
42
42
 
43
43
  this.queryLineNumberAndColumnNumber = '';
44
44
  this.defaultScores = null;
@@ -2010,22 +2010,22 @@ UI.ContextMenu.registerItem({
2010
2010
  QuickOpen.FilteredListWidget.registerProvider({
2011
2011
  prefix: '@',
2012
2012
  iconName: 'symbol',
2013
- async provider(jslogContext: string) {
2013
+ async provider() {
2014
2014
  const Sources = await loadSourcesModule();
2015
- return new Sources.OutlineQuickOpen.OutlineQuickOpen(jslogContext);
2015
+ return new Sources.OutlineQuickOpen.OutlineQuickOpen();
2016
2016
  },
2017
2017
  helpTitle: i18nLazyString(UIStrings.goToSymbol),
2018
2018
  titlePrefix: i18nLazyString(UIStrings.goTo),
2019
2019
  titleSuggestion: i18nLazyString(UIStrings.symbol),
2020
- jslogContext: 'source-symbol'
2020
+ jslogContext: 'source-symbol',
2021
2021
  });
2022
2022
 
2023
2023
  QuickOpen.FilteredListWidget.registerProvider({
2024
2024
  prefix: ':',
2025
2025
  iconName: 'colon',
2026
- async provider(jslogContext: string) {
2026
+ async provider() {
2027
2027
  const Sources = await loadSourcesModule();
2028
- return new Sources.GoToLineQuickOpen.GoToLineQuickOpen(jslogContext);
2028
+ return new Sources.GoToLineQuickOpen.GoToLineQuickOpen();
2029
2029
  },
2030
2030
  helpTitle: i18nLazyString(UIStrings.goToLine),
2031
2031
  titlePrefix: i18nLazyString(UIStrings.goTo),
@@ -2036,9 +2036,9 @@ QuickOpen.FilteredListWidget.registerProvider({
2036
2036
  QuickOpen.FilteredListWidget.registerProvider({
2037
2037
  prefix: '',
2038
2038
  iconName: 'document',
2039
- async provider(jslogContext: string) {
2039
+ async provider() {
2040
2040
  const Sources = await loadSourcesModule();
2041
- return new Sources.OpenFileQuickOpen.OpenFileQuickOpen(jslogContext);
2041
+ return new Sources.OpenFileQuickOpen.OpenFileQuickOpen();
2042
2042
  },
2043
2043
  helpTitle: i18nLazyString(UIStrings.openFile),
2044
2044
  titlePrefix: i18nLazyString(UIStrings.open),
@@ -6,7 +6,6 @@
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as Host from '../../core/host/host.js';
8
8
  import * as Platform from '../../core/platform/platform.js';
9
- import * as Root from '../../core/root/root.js';
10
9
  import * as Trace from '../../models/trace/trace.js';
11
10
  import * as SourceMapsResolver from '../../models/trace_source_maps_resolver/trace_source_maps_resolver.js';
12
11
  import type * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
@@ -314,8 +313,7 @@ export class CompatibilityTracksAppender {
314
313
  }
315
314
  };
316
315
  const threads = Trace.Handlers.Threads.threadsInTrace(this.#parsedTrace.data);
317
- const showAllEvents =
318
- Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
316
+ const showAllEvents = Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get();
319
317
 
320
318
  for (const {pid, tid, name, type, entries, tree} of threads) {
321
319
  if (this.#parsedTrace.data.Meta.traceIsGeneric) {
@@ -258,7 +258,12 @@ export class ThirdPartyTreeViewWidget extends TimelineTreeView.TimelineTreeView
258
258
  return Boolean(entity) && entity?.category === 'Chrome Extension';
259
259
  }
260
260
 
261
- set maxRows(maxRows: number) {
261
+ override get maxRows(): number|undefined {
262
+ return super.maxRows;
263
+ }
264
+
265
+ override set maxRows(maxRows: number) {
266
+ super.maxRows = maxRows;
262
267
  this.element.style.setProperty('--max-rows', String(maxRows));
263
268
  this.element.classList.toggle('has-max-rows', Boolean(maxRows));
264
269
  }
@@ -4,7 +4,6 @@
4
4
  import * as Common from '../../core/common/common.js';
5
5
  import * as i18n from '../../core/i18n/i18n.js';
6
6
  import * as Platform from '../../core/platform/platform.js';
7
- import * as Root from '../../core/root/root.js';
8
7
  import * as SDK from '../../core/sdk/sdk.js';
9
8
  import * as Bindings from '../../models/bindings/bindings.js';
10
9
  import * as Trace from '../../models/trace/trace.js';
@@ -151,8 +150,7 @@ export class ThreadAppender implements TrackAppender {
151
150
  #headerAppended = false;
152
151
  readonly threadType: Trace.Handlers.Threads.ThreadType = Trace.Handlers.Threads.ThreadType.MAIN_THREAD;
153
152
  readonly isOnMainFrame: boolean;
154
- #showAllEventsEnabled =
155
- Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
153
+ #showAllEventsEnabled = Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get();
156
154
  #url = '';
157
155
  #headerNestingLevel: number|null = null;
158
156
  constructor(
@@ -2,7 +2,7 @@
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
- import type * as Common from '../../core/common/common.js';
5
+ import * as Common from '../../core/common/common.js';
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import type * as Platform from '../../core/platform/platform.js';
8
8
  import * as Root from '../../core/root/root.js';
@@ -229,7 +229,7 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
229
229
  // 'disabled-by-default-v8.cpu_profiler'
230
230
  // └ default: on, option: enableJSSampling
231
231
  const categoriesArray = [
232
- Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS) ? '*' : '-*',
232
+ Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get() ? '*' : '-*',
233
233
  Trace.Types.Events.Categories.Console,
234
234
  Trace.Types.Events.Categories.Loading,
235
235
  Trace.Types.Events.Categories.UserTiming,
@@ -739,8 +739,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
739
739
 
740
740
  #instantiateNewModel(): Trace.TraceModel.Model {
741
741
  const config = Trace.Types.Configuration.defaults();
742
- config.showAllEvents =
743
- Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
742
+ config.showAllEvents = Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get();
744
743
  config.debugMode = Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE);
745
744
 
746
745
  const traceEngineModel = Trace.TraceModel.Model.createWithAllHandlers(config);
@@ -2072,8 +2071,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2072
2071
 
2073
2072
  #applyActiveFilters(traceIsGeneric: boolean, exclusiveFilter: Trace.Extras.TraceFilter.TraceFilter|null = null):
2074
2073
  void {
2075
- if (traceIsGeneric ||
2076
- Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS)) {
2074
+ if (traceIsGeneric || Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get()) {
2077
2075
  return;
2078
2076
  }
2079
2077
 
@@ -201,6 +201,7 @@ export class TimelineTreeView extends
201
201
  // suitable for AI assistance widgets. It removes sidebars and toolbars.
202
202
  #compactMode = false;
203
203
  #maxLinkLength: number|undefined = undefined;
204
+ #maxRows: number|undefined = undefined;
204
205
 
205
206
  /**
206
207
  * Determines if the first child in the data grid will be selected
@@ -281,6 +282,18 @@ export class TimelineTreeView extends
281
282
  this.#maxLinkLength = maxLinkLength;
282
283
  }
283
284
 
285
+ get maxRows(): number|undefined {
286
+ return this.#maxRows;
287
+ }
288
+
289
+ set maxRows(maxRows: number|undefined) {
290
+ if (this.#maxRows === maxRows) {
291
+ return;
292
+ }
293
+ this.#maxRows = maxRows;
294
+ this.refreshTree();
295
+ }
296
+
284
297
  #applyCompactMode(): void {
285
298
  if (this.#compactMode && this.dataGrid) {
286
299
  this.splitWidget?.detach();
@@ -516,15 +529,32 @@ export class TimelineTreeView extends
516
529
  maxSelfTime = Math.max(maxSelfTime, child.selfTime);
517
530
  maxTotalTime = Math.max(maxTotalTime, child.totalTime);
518
531
  }
532
+
533
+ const gridNodes: GridNode[] = [];
519
534
  for (const child of children.values()) {
520
- // Exclude the idle time off the total calculation.
521
535
  const gridNode = new TreeGridNode(child, totalUsedTime, maxSelfTime, maxTotalTime, this);
522
536
  for (const e of child.events) {
523
537
  this.eventToTreeNode.set(e, child);
524
538
  }
525
- this.dataGrid.insertChild(gridNode);
539
+ gridNodes.push(gridNode);
526
540
  }
541
+
542
+ const columnId = this.dataGrid.sortColumnId() || 'self';
543
+ const sortFunction = this.getSortingFunction(columnId);
544
+ if (sortFunction) {
545
+ gridNodes.sort((a, b) => {
546
+ const res = sortFunction(a, b);
547
+ return this.dataGrid.isSortOrderAscending() ? res : -res;
548
+ });
549
+ }
550
+
551
+ const countToInsert = this.#maxRows !== undefined ? Math.min(this.#maxRows, gridNodes.length) : gridNodes.length;
552
+ for (let i = 0; i < countToInsert; i++) {
553
+ this.dataGrid.insertChild(gridNodes[i]);
554
+ }
555
+
527
556
  this.sortingChanged();
557
+
528
558
  this.updateDetailsForSelection();
529
559
  if (this.searchableView) {
530
560
  this.searchableView.refreshSearch();