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.
- package/AUTHORS +1 -0
- package/front_end/Tests.js +23 -7
- package/front_end/core/host/AidaClient.ts +153 -525
- package/front_end/core/host/AidaClientTypes.ts +470 -0
- package/front_end/core/host/AidaGcaTranslation.ts +231 -122
- package/front_end/core/host/GcaClient.ts +112 -0
- package/front_end/core/host/GcaTypes.ts +107 -155
- package/front_end/core/host/UserMetrics.ts +0 -1
- package/front_end/core/host/host.ts +2 -0
- package/front_end/core/protocol_client/DevToolsCDPConnection.ts +1 -1
- package/front_end/core/root/ExperimentNames.ts +0 -1
- package/front_end/core/root/Runtime.ts +5 -0
- package/front_end/core/sdk/AutofillModel.ts +3 -2
- package/front_end/core/sdk/CSSModel.ts +3 -4
- package/front_end/core/sdk/CSSProperty.ts +1 -1
- package/front_end/core/sdk/ConsoleModel.ts +15 -13
- package/front_end/core/sdk/CookieModel.ts +5 -4
- package/front_end/core/sdk/DOMDebuggerModel.ts +20 -14
- package/front_end/core/sdk/DOMModel.ts +24 -22
- package/front_end/core/sdk/DebuggerModel.ts +21 -36
- package/front_end/core/sdk/EmulationModel.ts +21 -23
- package/front_end/core/sdk/EventBreakpointsModel.ts +16 -6
- package/front_end/core/sdk/HeapProfilerModel.ts +4 -7
- package/front_end/core/sdk/IsolateManager.ts +12 -7
- package/front_end/core/sdk/NetworkManager.ts +35 -28
- package/front_end/core/sdk/OverlayModel.ts +10 -10
- package/front_end/core/sdk/PreloadingModel.ts +3 -4
- package/front_end/core/sdk/ServiceWorkerManager.ts +2 -3
- package/front_end/core/sdk/SourceMapScopesInfo.ts +93 -63
- package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -3
- package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +22 -48
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +1 -1
- package/front_end/entrypoints/main/MainImpl.ts +0 -4
- package/front_end/generated/InspectorBackendCommands.ts +4 -0
- package/front_end/generated/SupportedCSSProperties.js +68 -2
- package/front_end/generated/protocol-mapping.d.ts +7 -0
- package/front_end/generated/protocol-proxy-api.d.ts +14 -0
- package/front_end/generated/protocol.ts +22 -0
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +31 -17
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +1 -1
- package/front_end/models/bindings/TempFile.ts +1 -4
- package/front_end/models/emulation/DeviceModeModel.ts +21 -26
- package/front_end/models/extensions/ExtensionAPI.ts +1 -1
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +34 -47
- package/front_end/models/javascript_metadata/NativeFunctions.js +6 -6
- package/front_end/models/trace/insights/LCPDiscovery.ts +14 -6
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +85 -31
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +50 -40
- package/front_end/panels/ai_assistance/components/ChatView.ts +3 -2
- package/front_end/panels/ai_assistance/components/WalkthroughView.ts +35 -7
- package/front_end/panels/ai_assistance/components/chatMessage.css +5 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -0
- package/front_end/panels/application/IndexedDBViews.ts +0 -9
- package/front_end/panels/application/WebMCPTreeElement.ts +35 -0
- package/front_end/panels/application/WebMCPView.ts +118 -0
- package/front_end/panels/application/application.ts +4 -0
- package/front_end/panels/application/webMCPView.css +65 -0
- package/front_end/panels/common/aiCodeCompletionSummaryToolbar.css +1 -1
- package/front_end/panels/console/consoleView.css +4 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +91 -13
- package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +23 -2
- package/front_end/panels/elements/StylesSidebarPane.ts +85 -20
- package/front_end/panels/elements/elementsPanel.css +14 -0
- package/front_end/panels/elements/elementsTreeOutline.css +18 -0
- package/front_end/panels/network/NetworkLogViewColumns.ts +3 -3
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +15 -19
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +4 -2
- package/front_end/panels/profiler/HeapSnapshotProxy.ts +12 -16
- package/front_end/panels/profiler/HeapSnapshotView.ts +3 -10
- package/front_end/panels/profiler/ProfilesPanel.ts +5 -7
- package/front_end/panels/recorder/components/recordingView.css +0 -6
- package/front_end/panels/sensors/SensorsView.ts +28 -61
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +2 -2
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +35 -36
- package/front_end/panels/timeline/TimelineDetailsView.ts +47 -41
- package/front_end/panels/timeline/TimelinePanel.ts +1 -3
- package/front_end/panels/timeline/TimelineTreeView.ts +13 -13
- package/front_end/panels/timeline/components/LiveMetricsView.ts +852 -824
- package/front_end/panels/timeline/components/liveMetricsView.css +4 -0
- package/front_end/panels/timeline/thirdPartyTreeView.css +2 -2
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/buttons/button.css +2 -2
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +0 -11
- package/front_end/ui/legacy/InspectorDrawerView.ts +206 -0
- package/front_end/ui/legacy/InspectorView.ts +41 -91
- package/front_end/ui/legacy/ViewManager.ts +14 -5
- package/front_end/ui/legacy/inspectorDrawerTabbedPane.css +5 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +2 -1
- 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.#
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
663
|
-
|
|
664
|
-
|
|
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
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
.
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
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
|
-
|
|
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
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.#parsedTrace = parsedTrace;
|
|
234
|
-
this.#selectedEvents = selectedEvents;
|
|
235
|
-
this.#entityMapper =
|
|
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
|
-
|
|
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
|
|
975
|
-
super.
|
|
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);
|