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
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// Copyright 2024 The Chromium Authors
|
|
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
|
-
/* eslint-disable @devtools/no-imperative-dom-api */
|
|
5
|
-
/* eslint-disable @devtools/no-lit-render-outside-of-view */
|
|
6
4
|
|
|
7
5
|
import '../../../ui/components/settings/settings.js';
|
|
8
6
|
import '../../../ui/kit/kit.js';
|
|
@@ -22,7 +20,6 @@ import * as LiveMetrics from '../../../models/live-metrics/live-metrics.js';
|
|
|
22
20
|
import * as Trace from '../../../models/trace/trace.js';
|
|
23
21
|
import * as Buttons from '../../../ui/components/buttons/buttons.js';
|
|
24
22
|
import type * as Menus from '../../../ui/components/menus/menus.js';
|
|
25
|
-
import * as RenderCoordinator from '../../../ui/components/render_coordinator/render_coordinator.js';
|
|
26
23
|
import type * as Settings from '../../../ui/components/settings/settings.js';
|
|
27
24
|
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
28
25
|
import * as UI from '../../../ui/legacy/legacy.js';
|
|
@@ -37,8 +34,8 @@ import type {MetricCardData} from './MetricCard.js';
|
|
|
37
34
|
import metricValueStyles from './metricValueStyles.css.js';
|
|
38
35
|
import {CLS_THRESHOLDS, INP_THRESHOLDS, renderMetricValue} from './Utils.js';
|
|
39
36
|
|
|
40
|
-
const {html, nothing} = Lit;
|
|
41
|
-
const {widget
|
|
37
|
+
const {html, nothing, Directives: {live}} = Lit;
|
|
38
|
+
const {widget} = UI.Widget;
|
|
42
39
|
|
|
43
40
|
type DeviceOption = CrUXManager.DeviceScope|'AUTO';
|
|
44
41
|
|
|
@@ -967,15 +964,10 @@ function renderLogSection(input: ViewInput, output: ViewOutput): Lit.LitTemplate
|
|
|
967
964
|
class="logs-section"
|
|
968
965
|
aria-label=${i18nString(UIStrings.eventLogs)}
|
|
969
966
|
>
|
|
970
|
-
<devtools-widget ${widget(LiveMetricsLogs
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
} else if (input.highlightedLayoutShiftClusterIds?.size) {
|
|
975
|
-
widget.selectTab('layout-shifts');
|
|
976
|
-
}
|
|
977
|
-
})}
|
|
978
|
-
>
|
|
967
|
+
<devtools-widget ${widget(LiveMetricsLogs, {
|
|
968
|
+
selectedTab: input.highlightedInteractionId ? 'interactions'
|
|
969
|
+
: input.highlightedLayoutShiftClusterIds?.size ? 'layout-shifts'
|
|
970
|
+
: undefined})}>
|
|
979
971
|
${renderInteractionsLog(input, output)}
|
|
980
972
|
${renderLayoutShiftsLog(input, output)}
|
|
981
973
|
</devtools-widget>
|
|
@@ -1000,7 +992,7 @@ function renderNodeView(input: ViewInput): Lit.LitTemplate {
|
|
|
1000
992
|
|
|
1001
993
|
export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
1002
994
|
if (input.isNode) {
|
|
1003
|
-
Lit.render(renderNodeView(input), target
|
|
995
|
+
Lit.render(renderNodeView(input), target);
|
|
1004
996
|
return;
|
|
1005
997
|
}
|
|
1006
998
|
|
|
@@ -1061,12 +1053,13 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
1061
1053
|
</div>
|
|
1062
1054
|
</div>
|
|
1063
1055
|
`;
|
|
1064
|
-
|
|
1056
|
+
// clang-format on
|
|
1057
|
+
Lit.render(outputTemplate, target);
|
|
1065
1058
|
|
|
1066
1059
|
if (input.highlightedInteractionId) {
|
|
1067
1060
|
const interactionEl = target.querySelector<HTMLElement>('#' + CSS.escape(input.highlightedInteractionId));
|
|
1068
1061
|
if (interactionEl) {
|
|
1069
|
-
|
|
1062
|
+
requestAnimationFrame(() => {
|
|
1070
1063
|
interactionEl.scrollIntoView({
|
|
1071
1064
|
block: 'center',
|
|
1072
1065
|
});
|
|
@@ -1086,7 +1079,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
1086
1079
|
}
|
|
1087
1080
|
|
|
1088
1081
|
if (layoutShiftEls.length) {
|
|
1089
|
-
|
|
1082
|
+
requestAnimationFrame(() => {
|
|
1090
1083
|
layoutShiftEls[0].scrollIntoView({
|
|
1091
1084
|
block: 'start',
|
|
1092
1085
|
});
|
|
@@ -1262,20 +1255,61 @@ export class LiveMetricsView extends UI.Widget.Widget {
|
|
|
1262
1255
|
}
|
|
1263
1256
|
}
|
|
1264
1257
|
|
|
1258
|
+
interface LiveMetricsLogsViewInput {
|
|
1259
|
+
onClear: () => void;
|
|
1260
|
+
selectedTab?: string;
|
|
1261
|
+
onTabSelected: (tabId: string) => void;
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
type LiveMetricsLogsView = (input: LiveMetricsLogsViewInput, output: undefined, target: HTMLElement) => void;
|
|
1265
|
+
|
|
1266
|
+
const LIVE_METRICS_LOGS_VIEW: LiveMetricsLogsView = (input, output, target) => {
|
|
1267
|
+
// clang-format off
|
|
1268
|
+
Lit.render(html`
|
|
1269
|
+
<style>
|
|
1270
|
+
/* Any children of the root element will be matched to the slots defined within the container
|
|
1271
|
+
widget's shadow DOM. */
|
|
1272
|
+
:host,
|
|
1273
|
+
.widget {
|
|
1274
|
+
display: contents;
|
|
1275
|
+
}
|
|
1276
|
+
</style>
|
|
1277
|
+
<devtools-tabbed-pane @select=${(event: Event) => input.onTabSelected((event as CustomEvent).detail.tabId)}>
|
|
1278
|
+
<devtools-toolbar slot="right">
|
|
1279
|
+
<devtools-button .iconName=${'clear'} .variant=${Buttons.Button.Variant.TOOLBAR}
|
|
1280
|
+
title=${i18nString(UIStrings.clearCurrentLog)} @click=${input.onClear}
|
|
1281
|
+
.jslogContext=${'timeline.landing.clear-log'}>
|
|
1282
|
+
</devtools-button>
|
|
1283
|
+
</devtools-toolbar>
|
|
1284
|
+
<!-- Taking advantage of web component slots allows us to render updates in the lit templates defined in the
|
|
1285
|
+
main component. This should be more performant and doesn't require us to inject live metrics styles twice. -->
|
|
1286
|
+
<slot name="interactions-log-content" id="interactions" ?selected=${live(input.selectedTab === 'interactions')}
|
|
1287
|
+
title=${i18nString(UIStrings.interactions)} jslogcontext="timeline.landing.interactions-log">
|
|
1288
|
+
</slot>
|
|
1289
|
+
<slot name="layout-shifts-log-content" id="layout-shifts" ?selected=${live(input.selectedTab === 'layout-shifts')}
|
|
1290
|
+
title=${i18nString(UIStrings.layoutShifts)} jslogcontext="timeline.landing.layout-shifts-log">
|
|
1291
|
+
</slot>
|
|
1292
|
+
</devtools-tabbed-pane>
|
|
1293
|
+
`, target);
|
|
1294
|
+
// clang-format on
|
|
1295
|
+
};
|
|
1296
|
+
|
|
1265
1297
|
class LiveMetricsLogs extends UI.Widget.Widget {
|
|
1266
|
-
#
|
|
1298
|
+
#view: LiveMetricsLogsView;
|
|
1299
|
+
#selectedTab = 'interactions';
|
|
1267
1300
|
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1301
|
+
set selectedTab(tabId: string|undefined) {
|
|
1302
|
+
if (!tabId || this.#selectedTab === tabId) {
|
|
1303
|
+
return;
|
|
1304
|
+
}
|
|
1305
|
+
this.#selectedTab = tabId;
|
|
1306
|
+
this.requestUpdate();
|
|
1273
1307
|
}
|
|
1274
1308
|
|
|
1275
1309
|
#clearCurrentLog(): void {
|
|
1276
1310
|
const liveMetrics = LiveMetrics.LiveMetrics.instance();
|
|
1277
1311
|
|
|
1278
|
-
switch (this.#
|
|
1312
|
+
switch (this.#selectedTab) {
|
|
1279
1313
|
case 'interactions':
|
|
1280
1314
|
liveMetrics.clearInteractions();
|
|
1281
1315
|
break;
|
|
@@ -1284,35 +1318,22 @@ class LiveMetricsLogs extends UI.Widget.Widget {
|
|
|
1284
1318
|
break;
|
|
1285
1319
|
}
|
|
1286
1320
|
}
|
|
1287
|
-
constructor(element: HTMLElement) {
|
|
1321
|
+
constructor(element: HTMLElement, view: LiveMetricsLogsView = LIVE_METRICS_LOGS_VIEW) {
|
|
1288
1322
|
super(element, {useShadowDom: true});
|
|
1289
|
-
this
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
const layoutShiftsSlot = document.createElement('slot');
|
|
1306
|
-
layoutShiftsSlot.name = 'layout-shifts-log-content';
|
|
1307
|
-
const layoutShiftsTab = UI.Widget.Widget.getOrCreateWidget(layoutShiftsSlot);
|
|
1308
|
-
this.#tabbedPane.appendTab(
|
|
1309
|
-
'layout-shifts', i18nString(UIStrings.layoutShifts), layoutShiftsTab, undefined, undefined, undefined,
|
|
1310
|
-
undefined, undefined, 'timeline.landing.layout-shifts-log');
|
|
1311
|
-
|
|
1312
|
-
const clearButton = new UI.Toolbar.ToolbarButton(
|
|
1313
|
-
i18nString(UIStrings.clearCurrentLog), 'clear', undefined, 'timeline.landing.clear-log');
|
|
1314
|
-
clearButton.addEventListener(UI.Toolbar.ToolbarButton.Events.CLICK, this.#clearCurrentLog, this);
|
|
1315
|
-
this.#tabbedPane.rightToolbar().appendToolbarItem(clearButton);
|
|
1316
|
-
this.#tabbedPane.show(this.contentElement);
|
|
1323
|
+
this.#view = view;
|
|
1324
|
+
|
|
1325
|
+
this.requestUpdate();
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
override performUpdate(): void {
|
|
1329
|
+
const viewInput: LiveMetricsLogsViewInput = {
|
|
1330
|
+
onClear: this.#clearCurrentLog.bind(this),
|
|
1331
|
+
selectedTab: this.#selectedTab,
|
|
1332
|
+
onTabSelected: (tabId: string) => {
|
|
1333
|
+
this.selectedTab = tabId;
|
|
1334
|
+
},
|
|
1335
|
+
};
|
|
1336
|
+
|
|
1337
|
+
this.#view(viewInput, undefined, this.contentElement);
|
|
1317
1338
|
}
|
|
1318
1339
|
}
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
height: 100%;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
.timeline-tree-view {
|
|
20
|
+
border-left: var(--sys-size-1) solid var(--sys-color-divider);
|
|
21
|
+
}
|
|
22
|
+
|
|
19
23
|
@container (max-width: 450px) {
|
|
20
24
|
.timeline-details-range-summary {
|
|
21
25
|
display: grid;
|
|
@@ -27,6 +31,10 @@
|
|
|
27
31
|
.timeline-summary {
|
|
28
32
|
width: 100%;
|
|
29
33
|
}
|
|
34
|
+
|
|
35
|
+
.timeline-tree-view {
|
|
36
|
+
border-left: none;
|
|
37
|
+
}
|
|
30
38
|
}
|
|
31
39
|
|
|
32
40
|
.timeline-summary {
|
|
@@ -62,6 +62,10 @@ const UIStrings = {
|
|
|
62
62
|
* @description Title of a setting under the Performance category in Settings
|
|
63
63
|
*/
|
|
64
64
|
chromeFrameInLayersView: 'Chrome frame in Layers view',
|
|
65
|
+
/**
|
|
66
|
+
* @description Title of a setting under the Performance category in Settings
|
|
67
|
+
*/
|
|
68
|
+
timelineShowAllEvents: 'Show all events',
|
|
65
69
|
} as const;
|
|
66
70
|
const str_ = i18n.i18n.registerUIStrings('panels/timeline/timeline-meta.ts', UIStrings);
|
|
67
71
|
const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
|
|
@@ -314,6 +318,15 @@ Common.Settings.registerSettingExtension({
|
|
|
314
318
|
defaultValue: true,
|
|
315
319
|
});
|
|
316
320
|
|
|
321
|
+
Common.Settings.registerSettingExtension({
|
|
322
|
+
category: Common.Settings.SettingCategory.PERFORMANCE,
|
|
323
|
+
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
324
|
+
title: i18nLazyString(UIStrings.timelineShowAllEvents),
|
|
325
|
+
settingName: 'timeline-show-all-events',
|
|
326
|
+
settingType: Common.Settings.SettingType.BOOLEAN,
|
|
327
|
+
defaultValue: false,
|
|
328
|
+
});
|
|
329
|
+
|
|
317
330
|
// IMPORTANT: if you are updating this, you should also update the setting in
|
|
318
331
|
// js_timeline-meta.
|
|
319
332
|
Common.Settings.registerSettingExtension({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Name: Dependencies sourced from the upstream `chromium` repository
|
|
2
2
|
URL: Internal
|
|
3
3
|
Version: N/A
|
|
4
|
-
Revision:
|
|
4
|
+
Revision: f6aa8926592f9b5bd54bf4b6430d3abb4bc480f6
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|
|
@@ -900,7 +900,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
|
|
|
900
900
|
// Perform measurement
|
|
901
901
|
for (const [measuringTabElement, tab] of measuringTabElements) {
|
|
902
902
|
const width = measuringTabElement.getBoundingClientRect().width;
|
|
903
|
-
tab.measuredWidth = Math.ceil(width);
|
|
903
|
+
tab.measuredWidth = Math.ceil(width) || undefined; // Don't cache 0
|
|
904
904
|
}
|
|
905
905
|
|
|
906
906
|
// Nuke elements from the UI
|
|
@@ -1670,6 +1670,7 @@ export class TabbedPaneElement extends WidgetElement<TabbedPane> {
|
|
|
1670
1670
|
child.removeAttribute('selected');
|
|
1671
1671
|
}
|
|
1672
1672
|
}
|
|
1673
|
+
this.dispatchEvent(new CustomEvent('select', {detail: {tabId: widget.selectedTabId}}));
|
|
1673
1674
|
});
|
|
1674
1675
|
this.#syncTabs(widget);
|
|
1675
1676
|
return widget;
|
|
@@ -1716,6 +1717,7 @@ export class TabbedPaneElement extends WidgetElement<TabbedPane> {
|
|
|
1716
1717
|
view.setHideOnDetach();
|
|
1717
1718
|
if (widget.selectedTabId !== id) {
|
|
1718
1719
|
view.hideWidget();
|
|
1720
|
+
child.classList.add('hidden');
|
|
1719
1721
|
} else {
|
|
1720
1722
|
view.showWidget();
|
|
1721
1723
|
}
|
|
@@ -273,8 +273,8 @@ export const enum PanelOrDrawer {
|
|
|
273
273
|
export class CommandMenuProvider extends Provider {
|
|
274
274
|
private commands: Command[];
|
|
275
275
|
|
|
276
|
-
constructor(
|
|
277
|
-
super(
|
|
276
|
+
constructor(commandsForTest: Command[] = []) {
|
|
277
|
+
super();
|
|
278
278
|
this.commands = commandsForTest;
|
|
279
279
|
}
|
|
280
280
|
|
|
@@ -453,7 +453,7 @@ export class ShowActionDelegate implements UI.ActionRegistration.ActionDelegate
|
|
|
453
453
|
registerProvider({
|
|
454
454
|
prefix: '>',
|
|
455
455
|
iconName: 'chevron-right',
|
|
456
|
-
provider: (
|
|
456
|
+
provider: () => Promise.resolve(new CommandMenuProvider()),
|
|
457
457
|
helpTitle: () => i18nString(UIStrings.runCommand),
|
|
458
458
|
titlePrefix: () => i18nString(UIStrings.run),
|
|
459
459
|
titleSuggestion: () => i18nString(UIStrings.command),
|
|
@@ -590,10 +590,7 @@ export interface EventTypes {
|
|
|
590
590
|
|
|
591
591
|
export class Provider {
|
|
592
592
|
private refreshCallback!: () => void;
|
|
593
|
-
jslogContext
|
|
594
|
-
constructor(jslogContext: string) {
|
|
595
|
-
this.jslogContext = jslogContext;
|
|
596
|
-
}
|
|
593
|
+
jslogContext = '';
|
|
597
594
|
|
|
598
595
|
setRefreshCallback(refreshCallback: () => void): void {
|
|
599
596
|
this.refreshCallback = refreshCallback;
|
|
@@ -657,7 +654,7 @@ export function getRegisteredProviders(): ProviderRegistration[] {
|
|
|
657
654
|
export interface ProviderRegistration {
|
|
658
655
|
prefix: string;
|
|
659
656
|
iconName: string;
|
|
660
|
-
provider: (
|
|
657
|
+
provider: () => Promise<Provider>;
|
|
661
658
|
helpTitle: (() => string);
|
|
662
659
|
titlePrefix: (() => string);
|
|
663
660
|
titleSuggestion?: (() => string);
|
|
@@ -17,8 +17,8 @@ export class HelpQuickOpen extends Provider {
|
|
|
17
17
|
jslogContext: string,
|
|
18
18
|
}>;
|
|
19
19
|
|
|
20
|
-
constructor(
|
|
21
|
-
super(
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
22
|
this.providers = [];
|
|
23
23
|
getRegisteredProviders().forEach(this.addProvider.bind(this));
|
|
24
24
|
}
|
|
@@ -74,8 +74,8 @@ export class HelpQuickOpen extends Provider {
|
|
|
74
74
|
registerProvider({
|
|
75
75
|
prefix: '?',
|
|
76
76
|
iconName: 'help',
|
|
77
|
-
provider:
|
|
77
|
+
provider: () => Promise.resolve(new HelpQuickOpen()),
|
|
78
78
|
helpTitle: () => 'Help',
|
|
79
79
|
titlePrefix: () => 'Help',
|
|
80
|
-
jslogContext: 'help'
|
|
80
|
+
jslogContext: 'help',
|
|
81
81
|
});
|
|
@@ -54,7 +54,11 @@ export class QuickOpenImpl {
|
|
|
54
54
|
}
|
|
55
55
|
this.prefixes.push(prefix);
|
|
56
56
|
this.providers.set(prefix, {
|
|
57
|
-
provider: () =>
|
|
57
|
+
provider: async () => {
|
|
58
|
+
const provider = await extension.provider();
|
|
59
|
+
provider.jslogContext = extension.jslogContext;
|
|
60
|
+
return provider;
|
|
61
|
+
},
|
|
58
62
|
titlePrefix: extension.titlePrefix,
|
|
59
63
|
titleSuggestion: extension.titleSuggestion,
|
|
60
64
|
});
|
|
@@ -611,7 +611,8 @@ export class Linkifier extends Common.ObjectWrapper.ObjectWrapper<EventTypes> im
|
|
|
611
611
|
jslogContext: options.jslogContext || 'url',
|
|
612
612
|
lineNumber,
|
|
613
613
|
columnNumber,
|
|
614
|
-
userMetric: options?.userMetric
|
|
614
|
+
userMetric: options?.userMetric,
|
|
615
|
+
onRef: options.onRef,
|
|
615
616
|
};
|
|
616
617
|
return Linkifier.renderLink(linkText, className, linkOptions);
|
|
617
618
|
}
|
|
@@ -1013,6 +1013,7 @@ export const knownContextValues = new Set([
|
|
|
1013
1013
|
'copy-full-xpath',
|
|
1014
1014
|
'copy-initiator-url',
|
|
1015
1015
|
'copy-js-path',
|
|
1016
|
+
'copy-key',
|
|
1016
1017
|
'copy-link-address',
|
|
1017
1018
|
'copy-object',
|
|
1018
1019
|
'copy-outer-html',
|
|
@@ -1089,6 +1090,7 @@ export const knownContextValues = new Set([
|
|
|
1089
1090
|
'cpu-throttling',
|
|
1090
1091
|
'cpu-throttling-selector',
|
|
1091
1092
|
'cpu-throttling-selector-calibrate',
|
|
1093
|
+
'crash-report-context',
|
|
1092
1094
|
'create-new-snippet',
|
|
1093
1095
|
'create-profile',
|
|
1094
1096
|
'create-recording',
|
|
@@ -1768,9 +1770,6 @@ export const knownContextValues = new Set([
|
|
|
1768
1770
|
'freestyler.settings',
|
|
1769
1771
|
'freestyler.style-tab-context',
|
|
1770
1772
|
'full-accessibility',
|
|
1771
|
-
'full-accessibility-tree',
|
|
1772
|
-
'full-accessibility-tree-documentation',
|
|
1773
|
-
'full-accessibility-tree-feedback',
|
|
1774
1773
|
'full-version',
|
|
1775
1774
|
'function',
|
|
1776
1775
|
'galaxy-z-fold-5',
|
package/package.json
CHANGED