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.
- package/docs/ui_engineering.md +2 -0
- package/eslint.config.mjs +2 -0
- package/front_end/core/common/VersionController.ts +18 -1
- package/front_end/core/host/UserMetrics.ts +0 -2
- package/front_end/core/platform/node/HostRuntime.ts +1 -1
- package/front_end/core/root/ExperimentNames.ts +0 -2
- package/front_end/core/sdk/AccessibilityModel.ts +13 -1
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -13
- package/front_end/core/sdk/StorageBucketsModel.ts +0 -12
- package/front_end/entrypoints/main/MainImpl.ts +2 -11
- package/front_end/generated/InspectorBackendCommands.ts +3 -33
- package/front_end/generated/SupportedCSSProperties.js +8 -4
- package/front_end/generated/protocol-mapping.d.ts +7 -26
- package/front_end/generated/protocol-proxy-api.d.ts +5 -24
- package/front_end/generated/protocol.ts +2 -296
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -2
- package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +6 -6
- package/front_end/models/ai_assistance/agents/ConversationSummaryAgent.ts +2 -1
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +46 -21
- package/front_end/{panels/profiler → models/heap_snapshot_model}/ChildrenProvider.ts +3 -4
- package/front_end/{panels/profiler → models/heap_snapshot_model}/HeapSnapshotProxy.ts +19 -36
- package/front_end/models/heap_snapshot_model/heap_snapshot_model.ts +4 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +0 -4
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +53 -10
- package/front_end/panels/accessibility/accessibility.ts +0 -2
- package/front_end/panels/accessibility/accessibilitySidebarView.css +10 -0
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +6 -5
- package/front_end/panels/ai_assistance/components/WalkthroughView.ts +36 -17
- package/front_end/panels/ai_assistance/components/chatMessage.css +7 -0
- package/front_end/panels/ai_assistance/components/walkthroughView.css +39 -11
- package/front_end/panels/application/CrashReportContextView.ts +237 -0
- package/front_end/panels/application/IndexedDBModel.ts +0 -10
- package/front_end/panels/application/InterestGroupStorageModel.ts +0 -11
- package/front_end/panels/application/ReportingApiTreeElement.ts +40 -1
- package/front_end/panels/application/SharedStorageModel.ts +0 -11
- package/front_end/panels/application/WebMCPView.ts +389 -52
- package/front_end/panels/application/application.ts +4 -0
- package/front_end/panels/application/components/CrashReportContextGrid.ts +154 -0
- package/front_end/panels/application/components/components.ts +2 -0
- package/front_end/panels/application/webMCPView.css +107 -10
- package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +12 -2
- package/front_end/panels/elements/AccessibilityTreeView.ts +10 -6
- package/front_end/panels/elements/ElementsPanel.ts +9 -50
- package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
- package/front_end/panels/elements/elements-meta.ts +1 -0
- package/front_end/panels/elements/elementsPanel.css +4 -14
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +23 -13
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +30 -30
- package/front_end/panels/profiler/HeapSnapshotView.ts +16 -13
- package/front_end/panels/profiler/profiler.ts +0 -4
- package/front_end/panels/snippets/SnippetsQuickOpen.ts +5 -5
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +2 -2
- package/front_end/panels/sources/sources-meta.ts +7 -7
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +1 -3
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +6 -1
- package/front_end/panels/timeline/ThreadAppender.ts +1 -3
- package/front_end/panels/timeline/TimelineController.ts +2 -2
- package/front_end/panels/timeline/TimelinePanel.ts +2 -4
- package/front_end/panels/timeline/TimelineTreeView.ts +32 -2
- package/front_end/panels/timeline/components/LiveMetricsView.ts +75 -54
- package/front_end/panels/timeline/components/timelineRangeSummaryView.css +8 -0
- package/front_end/panels/timeline/thirdPartyTreeView.css +0 -1
- package/front_end/panels/timeline/timeline-meta.ts +13 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/legacy/TabbedPane.ts +3 -1
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +3 -3
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +2 -5
- package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +4 -4
- package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +5 -1
- package/front_end/ui/legacy/components/utils/Linkifier.ts +2 -1
- package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +2 -3
- package/package.json +1 -1
- 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,
|
|
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,
|
|
1219
|
-
|
|
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
|
-
|
|
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|
|
|
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 =
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
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):
|
|
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
|
|
43
|
-
const {forceNew
|
|
42
|
+
static instance(opts: {forceNew: boolean|null} = {forceNew: null}): SnippetsQuickOpen {
|
|
43
|
+
const {forceNew} = opts;
|
|
44
44
|
if (!snippetsQuickOpenInstance || forceNew) {
|
|
45
|
-
snippetsQuickOpenInstance = new SnippetsQuickOpen(
|
|
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:
|
|
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(
|
|
41
|
-
super(
|
|
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(
|
|
2013
|
+
async provider() {
|
|
2014
2014
|
const Sources = await loadSourcesModule();
|
|
2015
|
-
return new Sources.OutlineQuickOpen.OutlineQuickOpen(
|
|
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(
|
|
2026
|
+
async provider() {
|
|
2027
2027
|
const Sources = await loadSourcesModule();
|
|
2028
|
-
return new Sources.GoToLineQuickOpen.GoToLineQuickOpen(
|
|
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(
|
|
2039
|
+
async provider() {
|
|
2040
2040
|
const Sources = await loadSourcesModule();
|
|
2041
|
-
return new Sources.OpenFileQuickOpen.OpenFileQuickOpen(
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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();
|