chrome-devtools-frontend 1.0.1711155 → 1.0.1713292
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/.agents/skills/code-review/SKILL.md +16 -12
- package/AUTHORS +1 -0
- package/DIR_METADATA +36 -0
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +2 -2
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
- package/front_end/core/sdk/NetworkRequest.ts +11 -11
- package/front_end/core/sdk/ResourceTreeModel.ts +17 -1
- package/front_end/core/sdk/SourceMap.ts +6 -0
- package/front_end/core/sdk/SourceMapScopesInfo.ts +25 -0
- package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +7 -7
- package/front_end/generated/InspectorBackendCommands.ts +1 -1
- package/front_end/generated/protocol.ts +6 -0
- package/front_end/models/bindings/SourceMapStepping.ts +29 -2
- package/front_end/models/issues_manager/Issue.ts +1 -1
- package/front_end/models/javascript_metadata/NativeFunctions.ts +14 -6
- package/front_end/models/trace/Processor.ts +9 -3
- package/front_end/models/trace/extras/TraceTree.ts +1 -1
- package/front_end/models/trace/insights/CLSCulprits.ts +1 -1
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingListView.ts +40 -8
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +108 -2
- package/front_end/panels/accessibility/AccessibilityNodeView.ts +2 -2
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +1 -1
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/OptInChangeDialog.ts +1 -1
- package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +3 -2
- package/front_end/panels/application/WebMCPView.ts +6 -2
- package/front_end/panels/application/components/AdsView.ts +28 -29
- package/front_end/panels/application/components/BackForwardCacheStrings.ts +188 -204
- package/front_end/panels/application/components/BackForwardCacheView.ts +33 -45
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +10 -12
- package/front_end/panels/application/components/CrashReportContextGrid.ts +4 -4
- package/front_end/panels/application/components/EndpointsGrid.ts +3 -5
- package/front_end/panels/application/components/PermissionsPolicySection.ts +12 -15
- package/front_end/panels/application/components/ProtocolHandlersView.ts +9 -9
- package/front_end/panels/application/components/ReportsGrid.ts +7 -12
- package/front_end/panels/application/components/StorageMetadataView.ts +22 -24
- package/front_end/panels/application/components/TrustTokensView.ts +8 -10
- package/front_end/panels/application/preloading/components/PreloadingString.ts +28 -29
- package/front_end/panels/application/serviceWorkerUpdateCycleView.css +1 -1
- package/front_end/panels/comments/CommentsPane.ts +14 -7
- package/front_end/panels/comments/commentsPane.css +6 -20
- package/front_end/panels/common/CPUThrottlingOption.ts +1 -1
- package/front_end/panels/console/ConsoleInsightTeaser.ts +1 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +1 -0
- package/front_end/panels/console/ConsoleViewport.ts +35 -4
- package/front_end/panels/coverage/CoverageListView.ts +2 -2
- package/front_end/panels/coverage/CoverageView.ts +2 -2
- package/front_end/panels/elements/CSSRuleValidator.ts +1 -1
- package/front_end/panels/elements/DOMTreeWidget.ts +12 -19
- package/front_end/panels/elements/ElementsPanel.ts +3 -3
- package/front_end/panels/elements/StylePropertyTreeElement.ts +1 -1
- package/front_end/panels/elements/components/CSSVariableValueView.ts +1 -1
- package/front_end/panels/elements/elements-meta.ts +3 -3
- package/front_end/panels/explain/components/ConsoleInsight.ts +1 -1
- package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +2 -3
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +1 -1
- package/front_end/panels/network/FetchHeaderCommenting.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +2 -2
- package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
- package/front_end/panels/network/RequestCookiesView.ts +1 -1
- package/front_end/panels/network/RequestDeviceBoundSessionsView.ts +3 -3
- package/front_end/panels/network/components/RequestHeaderSection.ts +1 -1
- package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
- package/front_end/panels/recorder/RecordingView.ts +1 -1
- package/front_end/panels/sensors/LocationsSettingsTab.ts +4 -9
- package/front_end/panels/sensors/SensorsView.ts +2 -2
- package/front_end/panels/sensors/sensors-meta.ts +0 -83
- package/front_end/panels/settings/AISettingsTab.ts +5 -5
- package/front_end/panels/settings/BackendLinkingSettingsTab.ts +1 -1
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +4 -4
- package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
- package/front_end/panels/sources/DebuggerPlugin.ts +1 -1
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +4 -1
- package/front_end/panels/sources/NavigatorView.ts +9 -6
- package/front_end/panels/sources/PersistenceActions.ts +1 -1
- package/front_end/panels/sources/SourcesPanel.ts +17 -8
- package/front_end/panels/sources/SourcesSearchScope.ts +4 -1
- package/front_end/panels/sources/SourcesView.ts +79 -86
- package/front_end/panels/sources/sources-meta.ts +26 -63
- package/front_end/panels/timeline/CountersGraph.ts +18 -8
- package/front_end/panels/timeline/TimelinePanel.ts +12 -5
- package/front_end/panels/timeline/TimelineUIUtils.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +4 -4
- package/front_end/panels/timeline/timeline-meta.ts +11 -21
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/lists/list.css +1 -2
- package/front_end/ui/components/suggestion_input/SuggestionInput.ts +9 -5
- package/front_end/ui/components/text_editor/AiCodeCompletionDisclaimer.ts +3 -3
- package/front_end/ui/components/text_editor/AiCodeCompletionTeaser.ts +1 -1
- package/front_end/ui/components/text_editor/AiCodeGenerationTeaser.ts +3 -3
- package/front_end/ui/components/text_editor/AiCodeGenerationUpgradeDialog.ts +1 -1
- package/front_end/ui/components/text_editor/config.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -0
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +4 -1
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +2 -5
- package/front_end/ui/legacy/listWidget.css +1 -6
- package/front_end/ui/settings/EmulationSettings.ts +91 -0
- package/front_end/ui/settings/SourcesSettings.ts +58 -0
- package/front_end/ui/settings/TimelineSettings.ts +28 -0
- package/front_end/ui/settings/settings.ts +2 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
- package/package.json +1 -1
|
@@ -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 * as Platform from '../../core/platform/platform.js';
|
|
8
8
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
@@ -109,6 +109,8 @@ export interface BlockedTargetInfo {
|
|
|
109
109
|
reason: string;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
export type RevealTargetPanel = 'elements'|'accessibility';
|
|
113
|
+
|
|
112
114
|
export interface ViewInput {
|
|
113
115
|
isRecording: boolean;
|
|
114
116
|
onToggleRecording: () => void;
|
|
@@ -121,6 +123,10 @@ export interface ViewInput {
|
|
|
121
123
|
onTextFilterChange: (text: string) => void;
|
|
122
124
|
blockedTargets: BlockedTargetInfo[];
|
|
123
125
|
announcements: readonly A11yAnnouncement[];
|
|
126
|
+
selectedAnnouncement: A11yAnnouncement|null;
|
|
127
|
+
onSelectAnnouncement: (item: A11yAnnouncement|null) => void;
|
|
128
|
+
onRevealInElements: (item: A11yAnnouncement) => void;
|
|
129
|
+
onRevealInA11yTree: (item: A11yAnnouncement) => void;
|
|
124
130
|
}
|
|
125
131
|
|
|
126
132
|
export type View = (input: ViewInput, output: undefined, target: HTMLElement) => void;
|
|
@@ -200,7 +206,15 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
|
200
206
|
</div>
|
|
201
207
|
` : Lit.nothing}
|
|
202
208
|
<div class="announcements-main-pane">
|
|
203
|
-
|
|
209
|
+
<devtools-widget
|
|
210
|
+
${widget(AccessibilityAnnouncementRecordingListView, {
|
|
211
|
+
items: input.announcements,
|
|
212
|
+
selectedItem: input.selectedAnnouncement,
|
|
213
|
+
})}
|
|
214
|
+
@announcement-selected=${(e: CustomEvent<A11yAnnouncement|null>) => input.onSelectAnnouncement(e.detail)}
|
|
215
|
+
@reveal-in-elements=${(e: CustomEvent<A11yAnnouncement>) => input.onRevealInElements(e.detail)}
|
|
216
|
+
@reveal-in-a11y-tree=${(e: CustomEvent<A11yAnnouncement>) => input.onRevealInA11yTree(e.detail)}>
|
|
217
|
+
</devtools-widget>
|
|
204
218
|
</div>
|
|
205
219
|
</div>`,
|
|
206
220
|
target);
|
|
@@ -215,6 +229,8 @@ declare global {
|
|
|
215
229
|
__announcementsRecorderBinding_loaded?: boolean;
|
|
216
230
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
217
231
|
__announcementsRecorderBinding_cleanup?: () => void;
|
|
232
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
233
|
+
__announcementsRecorderGetElement?: (id: string) => Element | undefined;
|
|
218
234
|
}
|
|
219
235
|
}
|
|
220
236
|
|
|
@@ -237,6 +253,12 @@ export function injectedScript(ariaLiveApi: string, jsTriggeredApi: string): voi
|
|
|
237
253
|
|
|
238
254
|
// Assigns a unique tracking identifier using an in-memory WeakMap (does not mutate DOM elements).
|
|
239
255
|
const elementIdMap = new WeakMap<Element, string>();
|
|
256
|
+
const elementRegistry = new Map<string, WeakRef<Element>>();
|
|
257
|
+
const registryCleanup = typeof FinalizationRegistry !== 'undefined' ?
|
|
258
|
+
new FinalizationRegistry<string>((id: string) => {
|
|
259
|
+
elementRegistry.delete(id);
|
|
260
|
+
}) :
|
|
261
|
+
null;
|
|
240
262
|
let recordIdCounter = 0;
|
|
241
263
|
function getOrCreateRecordId(element: Element|null|undefined): string {
|
|
242
264
|
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
@@ -247,10 +269,16 @@ export function injectedScript(ariaLiveApi: string, jsTriggeredApi: string): voi
|
|
|
247
269
|
recordIdCounter++;
|
|
248
270
|
id = String(recordIdCounter);
|
|
249
271
|
elementIdMap.set(element, id);
|
|
272
|
+
elementRegistry.set(id, new WeakRef(element));
|
|
273
|
+
registryCleanup?.register(element, id);
|
|
250
274
|
}
|
|
251
275
|
return id;
|
|
252
276
|
}
|
|
253
277
|
|
|
278
|
+
window.__announcementsRecorderGetElement = function(id: string): Element|undefined {
|
|
279
|
+
return elementRegistry.get(id)?.deref();
|
|
280
|
+
};
|
|
281
|
+
|
|
254
282
|
// Traverses to parent element or across shadow root boundary to host element.
|
|
255
283
|
function getParentOrHost(node: Node|null|undefined): Element|null {
|
|
256
284
|
if (!node) {
|
|
@@ -642,6 +670,8 @@ export function injectedScript(ariaLiveApi: string, jsTriggeredApi: string): voi
|
|
|
642
670
|
}
|
|
643
671
|
delete window.__announcementsRecorderBinding_loaded;
|
|
644
672
|
delete window.__announcementsRecorderBinding_cleanup;
|
|
673
|
+
elementRegistry.clear();
|
|
674
|
+
delete window.__announcementsRecorderGetElement;
|
|
645
675
|
};
|
|
646
676
|
}
|
|
647
677
|
|
|
@@ -765,6 +795,7 @@ export function buildCsvContent(announcements: readonly A11yAnnouncement[]): str
|
|
|
765
795
|
export class AccessibilityAnnouncementRecordingView extends AccessibilitySubPane implements SDK.TargetManager.Observer {
|
|
766
796
|
#announcements: A11yAnnouncement[] = [];
|
|
767
797
|
#filteredAnnouncements: readonly A11yAnnouncement[]|null = null;
|
|
798
|
+
#selectedAnnouncement: A11yAnnouncement|null = null;
|
|
768
799
|
#isRecording = false;
|
|
769
800
|
#blockedTargets = new Map<SDK.Target.Target, string>();
|
|
770
801
|
#scriptIdentifiers = new Map<SDK.Target.Target, Protocol.Page.ScriptIdentifier>();
|
|
@@ -951,6 +982,7 @@ export class AccessibilityAnnouncementRecordingView extends AccessibilitySubPane
|
|
|
951
982
|
clearAnnouncements(): void {
|
|
952
983
|
this.#announcements = [];
|
|
953
984
|
this.#filteredAnnouncements = [];
|
|
985
|
+
this.#selectedAnnouncement = null;
|
|
954
986
|
this.requestUpdate();
|
|
955
987
|
}
|
|
956
988
|
|
|
@@ -1040,6 +1072,72 @@ export class AccessibilityAnnouncementRecordingView extends AccessibilitySubPane
|
|
|
1040
1072
|
return this.#buildCsvContent();
|
|
1041
1073
|
}
|
|
1042
1074
|
|
|
1075
|
+
#onSelectAnnouncement = (item: A11yAnnouncement|null): void => {
|
|
1076
|
+
this.#selectedAnnouncement = item;
|
|
1077
|
+
this.requestUpdate();
|
|
1078
|
+
};
|
|
1079
|
+
|
|
1080
|
+
async #revealElement(item: A11yAnnouncement, targetPanel: RevealTargetPanel): Promise<void> {
|
|
1081
|
+
const target = item.target ?? SDK.TargetManager.TargetManager.instance().primaryPageTarget();
|
|
1082
|
+
if (!target) {
|
|
1083
|
+
return;
|
|
1084
|
+
}
|
|
1085
|
+
const runtimeModel = target.model(SDK.RuntimeModel.RuntimeModel);
|
|
1086
|
+
const domModel = target.model(SDK.DOMModel.DOMModel);
|
|
1087
|
+
if (!runtimeModel || !domModel) {
|
|
1088
|
+
return;
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
// Live DOM elements cannot cross the CDP binding string boundary directly,
|
|
1092
|
+
// so elementId acts as an in-memory registry lookup key to fetch the node on
|
|
1093
|
+
// demand. An announcement may lack a valid elementId in several scenarios:
|
|
1094
|
+
// - Document-level announcements: When Document.prototype.ariaNotify is called
|
|
1095
|
+
// directly without a specific element node.
|
|
1096
|
+
// - Detached or non-element nodes: If an announcement was recorded on a node
|
|
1097
|
+
// that lacked an element context when getOrCreateRecordId evaluated.
|
|
1098
|
+
// - Older or synthetic payloads: Payloads constructed in unit tests or external
|
|
1099
|
+
// fixtures where elementId was omitted or passed as "".
|
|
1100
|
+
if (!item.elementId) {
|
|
1101
|
+
return;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
try {
|
|
1105
|
+
const response = await target.runtimeAgent().invoke_evaluate({
|
|
1106
|
+
expression: `window.__announcementsRecorderGetElement?.(${JSON.stringify(item.elementId)})`,
|
|
1107
|
+
objectGroup: 'reveal-node',
|
|
1108
|
+
});
|
|
1109
|
+
if (response.result && response.result.type === 'object' && response.result.subtype !== 'null') {
|
|
1110
|
+
const remoteObject = runtimeModel.createRemoteObject(response.result);
|
|
1111
|
+
const domNode = await domModel.pushObjectAsNodeToFrontend(remoteObject);
|
|
1112
|
+
if (domNode) {
|
|
1113
|
+
const toggleAction = UI.ActionRegistry.ActionRegistry.instance().hasAction('elements.toggle-a11y-tree') ?
|
|
1114
|
+
UI.ActionRegistry.ActionRegistry.instance().getAction('elements.toggle-a11y-tree') :
|
|
1115
|
+
null;
|
|
1116
|
+
if (targetPanel === 'accessibility') {
|
|
1117
|
+
if (toggleAction && !toggleAction.toggled()) {
|
|
1118
|
+
await toggleAction.execute();
|
|
1119
|
+
}
|
|
1120
|
+
} else if (targetPanel === 'elements') {
|
|
1121
|
+
if (toggleAction && toggleAction.toggled()) {
|
|
1122
|
+
await toggleAction.execute();
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
await Common.Revealer.reveal(domNode);
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
} finally {
|
|
1129
|
+
runtimeModel.releaseObjectGroup('reveal-node');
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
revealElementForTest(item: A11yAnnouncement, targetPanel: RevealTargetPanel): Promise<void> {
|
|
1134
|
+
return this.#revealElement(item, targetPanel);
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
selectedAnnouncementForTest(): A11yAnnouncement|null {
|
|
1138
|
+
return this.#selectedAnnouncement;
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1043
1141
|
override performUpdate(): void {
|
|
1044
1142
|
const blockedTargets: BlockedTargetInfo[] = [];
|
|
1045
1143
|
for (const [target, reason] of this.#blockedTargets) {
|
|
@@ -1074,6 +1172,14 @@ export class AccessibilityAnnouncementRecordingView extends AccessibilitySubPane
|
|
|
1074
1172
|
},
|
|
1075
1173
|
blockedTargets,
|
|
1076
1174
|
announcements: filteredAnnouncements,
|
|
1175
|
+
selectedAnnouncement: this.#selectedAnnouncement,
|
|
1176
|
+
onSelectAnnouncement: this.#onSelectAnnouncement,
|
|
1177
|
+
onRevealInElements: (item: A11yAnnouncement) => {
|
|
1178
|
+
void this.#revealElement(item, 'elements');
|
|
1179
|
+
},
|
|
1180
|
+
onRevealInA11yTree: (item: A11yAnnouncement) => {
|
|
1181
|
+
void this.#revealElement(item, 'accessibility');
|
|
1182
|
+
},
|
|
1077
1183
|
};
|
|
1078
1184
|
this.#view(input, undefined, this.contentElement);
|
|
1079
1185
|
}
|
|
@@ -97,11 +97,11 @@ const UIStrings = {
|
|
|
97
97
|
/**
|
|
98
98
|
* @description Reason in the Accessibility tab in the Elements panel.
|
|
99
99
|
*/
|
|
100
|
-
elementIsNotRendered: 'Element
|
|
100
|
+
elementIsNotRendered: 'Element isn’t rendered',
|
|
101
101
|
/**
|
|
102
102
|
* @description Reason in the Accessibility tab in the Elements panel.
|
|
103
103
|
*/
|
|
104
|
-
elementIsNotVisible: 'Element
|
|
104
|
+
elementIsNotVisible: 'Element isn’t visible',
|
|
105
105
|
/**
|
|
106
106
|
* @description Reason in the Accessibility tab in the Elements panel. Indicates the
|
|
107
107
|
* ARIA role for this element, which will always have the format 'role=', but with different roles
|
|
@@ -199,7 +199,7 @@ const UIStringsNotTranslate = {
|
|
|
199
199
|
* @description Disclaimer text right after the chat input when enterprise logging is off.
|
|
200
200
|
*/
|
|
201
201
|
inputDisclaimerEnterpriseNoLogging:
|
|
202
|
-
'Chat messages, data accessible for this site via DevTools panels and Web APIs, and items you select such as network requests, files, and performance traces are sent to Google. The content submitted to and generated by this feature
|
|
202
|
+
'Chat messages, data accessible for this site via DevTools panels and Web APIs, and items you select such as network requests, files, and performance traces are sent to Google. The content submitted to and generated by this feature won’t be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
|
|
203
203
|
} as const;
|
|
204
204
|
|
|
205
205
|
const str_ = i18n.i18n.registerUIStrings('panels/ai_assistance/AiAssistancePanel.ts', UIStrings);
|
|
@@ -51,7 +51,7 @@ const UIStrings = {
|
|
|
51
51
|
/**
|
|
52
52
|
* @description Text informing the user that AI assistance is not available in Incognito mode or Guest mode.
|
|
53
53
|
*/
|
|
54
|
-
notAvailableInIncognitoMode: 'AI assistance
|
|
54
|
+
notAvailableInIncognitoMode: 'AI assistance isn’t available in Incognito mode or Guest mode',
|
|
55
55
|
|
|
56
56
|
} as const;
|
|
57
57
|
|
|
@@ -36,7 +36,7 @@ const UIStrings = {
|
|
|
36
36
|
* @description Third point in the opt-in change dialog (disclaimer) for enterprise users with logging disabled.
|
|
37
37
|
*/
|
|
38
38
|
privacyDisclaimerEnterpriseNoLogging:
|
|
39
|
-
'Chat messages, data accessible for this site via DevTools panels and Web APIs, and items you select such as network requests, files, and performance traces are sent to Google. The content submitted to and generated by this feature
|
|
39
|
+
'Chat messages, data accessible for this site via DevTools panels and Web APIs, and items you select such as network requests, files, and performance traces are sent to Google. The content submitted to and generated by this feature won’t be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
|
|
40
40
|
/**
|
|
41
41
|
* @description Button text for managing settings.
|
|
42
42
|
*/
|
|
@@ -71,8 +71,9 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
|
71
71
|
resize: true,
|
|
72
72
|
keydown: 'ArrowLeft|ArrowRight|ArrowUp|ArrowDown|Enter|Space',
|
|
73
73
|
})}>
|
|
74
|
-
<td class="service-worker-update-timing-bar-clickable" tabindex="0" role="
|
|
75
|
-
aria-
|
|
74
|
+
<td class="service-worker-update-timing-bar-clickable" tabindex="0" role="button"
|
|
75
|
+
aria-expanded=${expanded ? 'true' : 'false'}
|
|
76
|
+
aria-label=${`#${range.id} ${phaseName}`}
|
|
76
77
|
@focus=${input.onFocus}
|
|
77
78
|
@keydown=${(e: Event) => input.onKeydown(e, key)}
|
|
78
79
|
@click=${(e: Event) => input.onClick(e, key)}
|
|
@@ -187,9 +187,13 @@ const UIStrings = {
|
|
|
187
187
|
*/
|
|
188
188
|
editAndRun: 'Edit and run',
|
|
189
189
|
/**
|
|
190
|
-
* @description
|
|
190
|
+
* @description Button label for the paste button in the WebMCP view of the Application panel.
|
|
191
191
|
*/
|
|
192
192
|
paste: 'Paste',
|
|
193
|
+
/**
|
|
194
|
+
* @description Tooltip text for the paste button in the WebMCP view of the Application panel.
|
|
195
|
+
*/
|
|
196
|
+
pasteTooltip: 'Paste tool parameters from clipboard as JSON',
|
|
193
197
|
/**
|
|
194
198
|
* @description Notice displayed when a tool has been unregistered in the WebMCP view of the Application panel.
|
|
195
199
|
*/
|
|
@@ -699,7 +703,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
699
703
|
.size=${Buttons.Button.Size.SMALL}
|
|
700
704
|
.variant=${Buttons.Button.Variant.TEXT}
|
|
701
705
|
.jslogContext=${'paste'}
|
|
702
|
-
title=${i18nString(UIStrings.
|
|
706
|
+
title=${i18nString(UIStrings.pasteTooltip)}
|
|
703
707
|
@click=${input.onPaste}
|
|
704
708
|
>${i18nString(UIStrings.paste)}</devtools-button>
|
|
705
709
|
</div>
|
|
@@ -31,11 +31,11 @@ const AD_DETECTION_DOC_URL = 'https://developer.chrome.com/docs/ads/detection';
|
|
|
31
31
|
|
|
32
32
|
const UIStrings = {
|
|
33
33
|
/**
|
|
34
|
-
* @description Title for the metrics
|
|
34
|
+
* @description Title for the metrics section in the ads view of the Application panel.
|
|
35
35
|
*/
|
|
36
36
|
metrics: 'Metrics',
|
|
37
37
|
/**
|
|
38
|
-
* @description Title for a metric showing the percentage of the viewport covered by ads.
|
|
38
|
+
* @description Title for a metric showing the percentage of the viewport covered by ads in the ads view of the Application panel.
|
|
39
39
|
*/
|
|
40
40
|
viewportAdDensity: 'Viewport ad density',
|
|
41
41
|
/**
|
|
@@ -43,7 +43,7 @@ const UIStrings = {
|
|
|
43
43
|
*/
|
|
44
44
|
viewportAdDensityExplanation: 'Percentage of the viewport covered by ads',
|
|
45
45
|
/**
|
|
46
|
-
* @description Title for a metric showing the number of ads in the viewport.
|
|
46
|
+
* @description Title for a metric showing the number of ads in the viewport in the ads view of the Application panel.
|
|
47
47
|
*/
|
|
48
48
|
viewportAdCount: 'Viewport ad count',
|
|
49
49
|
/**
|
|
@@ -51,7 +51,7 @@ const UIStrings = {
|
|
|
51
51
|
*/
|
|
52
52
|
viewportAdCountExplanation: 'Number of ads in the viewport',
|
|
53
53
|
/**
|
|
54
|
-
* @description Title for a metric showing the total CPU usage by ads.
|
|
54
|
+
* @description Title for a metric showing the total CPU usage by ads in the ads view of the Application panel.
|
|
55
55
|
*/
|
|
56
56
|
totalCpuUsage: 'Total CPU usage by ads',
|
|
57
57
|
/**
|
|
@@ -59,7 +59,7 @@ const UIStrings = {
|
|
|
59
59
|
*/
|
|
60
60
|
totalCpuUsageExplanation: 'Total CPU time consumed by ads',
|
|
61
61
|
/**
|
|
62
|
-
* @description Title for a metric showing the total network usage by ads.
|
|
62
|
+
* @description Title for a metric showing the total network usage by ads in the ads view of the Application panel.
|
|
63
63
|
*/
|
|
64
64
|
totalNetworkUsage: 'Total network usage by ads',
|
|
65
65
|
/**
|
|
@@ -67,99 +67,98 @@ const UIStrings = {
|
|
|
67
67
|
*/
|
|
68
68
|
totalNetworkUsageExplanation: 'Total network data consumed by ads',
|
|
69
69
|
/**
|
|
70
|
-
* @description Subtext showing the average value of a metric.
|
|
70
|
+
* @description Subtext showing the average value of a metric in the ads view of the Application panel.
|
|
71
71
|
* @example {5.00%} PH1
|
|
72
72
|
*/
|
|
73
73
|
average: '(Average: {PH1})',
|
|
74
74
|
/**
|
|
75
|
-
* @description Title for the ad iframes table.
|
|
75
|
+
* @description Title for the ad iframes table in the ads view of the Application panel.
|
|
76
76
|
* @example {3} PH1
|
|
77
77
|
*/
|
|
78
78
|
adIframesTitle: 'Ad iframes (total {PH1})',
|
|
79
79
|
/**
|
|
80
|
-
* @description Text to display when a value is not available.
|
|
80
|
+
* @description Text to display when a metric value is not available in the ads view of the Application panel.
|
|
81
81
|
*/
|
|
82
82
|
notAvailable: 'N/A',
|
|
83
83
|
/**
|
|
84
|
-
* @description Text to display when a frame has no name
|
|
84
|
+
* @description Text to display when a frame has no name or ID in the ads view of the Application panel.
|
|
85
85
|
*/
|
|
86
86
|
unnamed: '<unnamed>',
|
|
87
87
|
/**
|
|
88
|
-
* @description
|
|
88
|
+
* @description Column header for the element ID in the ad iframes table in the ads view of the Application panel.
|
|
89
89
|
*/
|
|
90
90
|
elementId: 'Element ID',
|
|
91
91
|
/**
|
|
92
|
-
* @description
|
|
92
|
+
* @description Column header for the initial origin in the ad iframes table in the ads view of the Application panel.
|
|
93
93
|
*/
|
|
94
94
|
initialOrigin: 'Initial origin',
|
|
95
95
|
/**
|
|
96
|
-
* @description
|
|
96
|
+
* @description Column header for CPU usage in the ad iframes table in the ads view of the Application panel.
|
|
97
97
|
*/
|
|
98
98
|
cpu: 'CPU',
|
|
99
99
|
/**
|
|
100
|
-
* @description
|
|
100
|
+
* @description Column header for network usage in the ad iframes table in the ads view of the Application panel.
|
|
101
101
|
*/
|
|
102
102
|
network: 'Network',
|
|
103
103
|
/**
|
|
104
|
-
* @description Accessible name for the ad iframes table.
|
|
104
|
+
* @description Accessible name for the ad iframes table in the ads view of the Application panel.
|
|
105
105
|
*/
|
|
106
106
|
adIframes: 'Ad iframes',
|
|
107
107
|
/**
|
|
108
|
-
* @description Title for the ad scripts table.
|
|
108
|
+
* @description Title for the ad scripts table in the ads view of the Application panel.
|
|
109
109
|
* @example {3} PH1
|
|
110
110
|
*/
|
|
111
111
|
adScriptsTitle: 'Ad scripts (total {PH1})',
|
|
112
112
|
/**
|
|
113
|
-
* @description
|
|
113
|
+
* @description Column header for the script URL in the ad scripts table in the ads view of the Application panel.
|
|
114
114
|
*/
|
|
115
115
|
url: 'URL',
|
|
116
116
|
/**
|
|
117
|
-
* @description Accessible name for the ad scripts table.
|
|
117
|
+
* @description Accessible name for the ad scripts table in the ads view of the Application panel.
|
|
118
118
|
*/
|
|
119
119
|
adScripts: 'Ad scripts',
|
|
120
120
|
/**
|
|
121
|
-
* @description
|
|
121
|
+
* @description Column header for the ad provenance in the ad scripts table in the ads view of the Application panel.
|
|
122
122
|
*/
|
|
123
123
|
adProvenance: 'Ad provenance',
|
|
124
124
|
/**
|
|
125
|
-
* @description Text to display when a script has no provenance.
|
|
125
|
+
* @description Text to display when a script has no provenance in the ads view of the Application panel.
|
|
126
126
|
*/
|
|
127
127
|
noProvenance: '<no provenance>',
|
|
128
128
|
/**
|
|
129
|
-
* @description
|
|
129
|
+
* @description Tooltip text when a script has no provenance in the ads view of the Application panel.
|
|
130
130
|
*/
|
|
131
131
|
noProvenanceTooltip: 'No provenance data is available',
|
|
132
132
|
/**
|
|
133
|
-
* @description Title for the filter list rule in the ad provenance tooltip.
|
|
133
|
+
* @description Title for the filter list rule in the ad provenance tooltip in the ads view of the Application panel.
|
|
134
134
|
*/
|
|
135
135
|
filterListRule: 'Filter list rule',
|
|
136
136
|
/**
|
|
137
|
-
* @description Title for the root script filter list rule in the ad provenance tooltip.
|
|
137
|
+
* @description Title for the root script filter list rule in the ad provenance tooltip in the ads view of the Application panel.
|
|
138
138
|
*/
|
|
139
139
|
rootScriptFilterListRule: 'Root script filter list rule',
|
|
140
140
|
/**
|
|
141
|
-
* @description Title for the creator ad script ancestry in the ad provenance tooltip.
|
|
141
|
+
* @description Title for the creator ad script ancestry in the ad provenance tooltip in the ads view of the Application panel.
|
|
142
142
|
*/
|
|
143
143
|
creatorAdScriptAncestry: 'Creator ad script ancestry',
|
|
144
144
|
/**
|
|
145
|
-
* @description Title for the settings section.
|
|
145
|
+
* @description Title for the settings section in the ads view of the Application panel.
|
|
146
146
|
*/
|
|
147
147
|
settings: 'Settings',
|
|
148
148
|
/**
|
|
149
|
-
* @description
|
|
150
|
-
* rendering elements for ad-related resources that are found on the page.
|
|
149
|
+
* @description Label for the checkbox setting to highlight ad-related resources on the page in the ads view of the Application panel.
|
|
151
150
|
*/
|
|
152
151
|
highlightAdRelatedResources: 'Highlight ad-related resources',
|
|
153
152
|
/**
|
|
154
|
-
* @description Explanation text for the
|
|
153
|
+
* @description Explanation text for the highlight ad-related resources setting in the ads view of the Application panel.
|
|
155
154
|
*/
|
|
156
155
|
highlightsElementsRedDetectedToBeAdRelated: 'Highlights elements (red) detected to be ad-related',
|
|
157
156
|
/**
|
|
158
|
-
* @description
|
|
157
|
+
* @description Informational notice explaining that ad detection in Chrome can make mistakes in the ads view of the Application panel.
|
|
159
158
|
*/
|
|
160
159
|
adDetectionMistakes: 'Chrome’s ad detection can make mistakes',
|
|
161
160
|
/**
|
|
162
|
-
* @description Link text
|
|
161
|
+
* @description Link text to learn more about ad detection in Chrome in the ads view of the Application panel.
|
|
163
162
|
*/
|
|
164
163
|
learnMore: 'Learn more',
|
|
165
164
|
} as const;
|