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.
Files changed (102) hide show
  1. package/.agents/skills/code-review/SKILL.md +16 -12
  2. package/AUTHORS +1 -0
  3. package/DIR_METADATA +36 -0
  4. package/front_end/core/sdk/CSSStyleSheetHeader.ts +2 -2
  5. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
  6. package/front_end/core/sdk/NetworkRequest.ts +11 -11
  7. package/front_end/core/sdk/ResourceTreeModel.ts +17 -1
  8. package/front_end/core/sdk/SourceMap.ts +6 -0
  9. package/front_end/core/sdk/SourceMapScopesInfo.ts +25 -0
  10. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +7 -7
  11. package/front_end/generated/InspectorBackendCommands.ts +1 -1
  12. package/front_end/generated/protocol.ts +6 -0
  13. package/front_end/models/bindings/SourceMapStepping.ts +29 -2
  14. package/front_end/models/issues_manager/Issue.ts +1 -1
  15. package/front_end/models/javascript_metadata/NativeFunctions.ts +14 -6
  16. package/front_end/models/trace/Processor.ts +9 -3
  17. package/front_end/models/trace/extras/TraceTree.ts +1 -1
  18. package/front_end/models/trace/insights/CLSCulprits.ts +1 -1
  19. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingListView.ts +40 -8
  20. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +108 -2
  21. package/front_end/panels/accessibility/AccessibilityNodeView.ts +2 -2
  22. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +1 -1
  23. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
  24. package/front_end/panels/ai_assistance/components/OptInChangeDialog.ts +1 -1
  25. package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +3 -2
  26. package/front_end/panels/application/WebMCPView.ts +6 -2
  27. package/front_end/panels/application/components/AdsView.ts +28 -29
  28. package/front_end/panels/application/components/BackForwardCacheStrings.ts +188 -204
  29. package/front_end/panels/application/components/BackForwardCacheView.ts +33 -45
  30. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +10 -12
  31. package/front_end/panels/application/components/CrashReportContextGrid.ts +4 -4
  32. package/front_end/panels/application/components/EndpointsGrid.ts +3 -5
  33. package/front_end/panels/application/components/PermissionsPolicySection.ts +12 -15
  34. package/front_end/panels/application/components/ProtocolHandlersView.ts +9 -9
  35. package/front_end/panels/application/components/ReportsGrid.ts +7 -12
  36. package/front_end/panels/application/components/StorageMetadataView.ts +22 -24
  37. package/front_end/panels/application/components/TrustTokensView.ts +8 -10
  38. package/front_end/panels/application/preloading/components/PreloadingString.ts +28 -29
  39. package/front_end/panels/application/serviceWorkerUpdateCycleView.css +1 -1
  40. package/front_end/panels/comments/CommentsPane.ts +14 -7
  41. package/front_end/panels/comments/commentsPane.css +6 -20
  42. package/front_end/panels/common/CPUThrottlingOption.ts +1 -1
  43. package/front_end/panels/console/ConsoleInsightTeaser.ts +1 -1
  44. package/front_end/panels/console/ConsoleViewMessage.ts +1 -0
  45. package/front_end/panels/console/ConsoleViewport.ts +35 -4
  46. package/front_end/panels/coverage/CoverageListView.ts +2 -2
  47. package/front_end/panels/coverage/CoverageView.ts +2 -2
  48. package/front_end/panels/elements/CSSRuleValidator.ts +1 -1
  49. package/front_end/panels/elements/DOMTreeWidget.ts +12 -19
  50. package/front_end/panels/elements/ElementsPanel.ts +3 -3
  51. package/front_end/panels/elements/StylePropertyTreeElement.ts +1 -1
  52. package/front_end/panels/elements/components/CSSVariableValueView.ts +1 -1
  53. package/front_end/panels/elements/elements-meta.ts +3 -3
  54. package/front_end/panels/explain/components/ConsoleInsight.ts +1 -1
  55. package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +2 -3
  56. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +1 -1
  57. package/front_end/panels/network/FetchHeaderCommenting.ts +1 -1
  58. package/front_end/panels/network/NetworkDataGridNode.ts +2 -2
  59. package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
  60. package/front_end/panels/network/RequestCookiesView.ts +1 -1
  61. package/front_end/panels/network/RequestDeviceBoundSessionsView.ts +3 -3
  62. package/front_end/panels/network/components/RequestHeaderSection.ts +1 -1
  63. package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
  64. package/front_end/panels/recorder/RecordingView.ts +1 -1
  65. package/front_end/panels/sensors/LocationsSettingsTab.ts +4 -9
  66. package/front_end/panels/sensors/SensorsView.ts +2 -2
  67. package/front_end/panels/sensors/sensors-meta.ts +0 -83
  68. package/front_end/panels/settings/AISettingsTab.ts +5 -5
  69. package/front_end/panels/settings/BackendLinkingSettingsTab.ts +1 -1
  70. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +4 -4
  71. package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
  72. package/front_end/panels/sources/DebuggerPlugin.ts +1 -1
  73. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +4 -1
  74. package/front_end/panels/sources/NavigatorView.ts +9 -6
  75. package/front_end/panels/sources/PersistenceActions.ts +1 -1
  76. package/front_end/panels/sources/SourcesPanel.ts +17 -8
  77. package/front_end/panels/sources/SourcesSearchScope.ts +4 -1
  78. package/front_end/panels/sources/SourcesView.ts +79 -86
  79. package/front_end/panels/sources/sources-meta.ts +26 -63
  80. package/front_end/panels/timeline/CountersGraph.ts +18 -8
  81. package/front_end/panels/timeline/TimelinePanel.ts +12 -5
  82. package/front_end/panels/timeline/TimelineUIUtils.ts +1 -1
  83. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +4 -4
  84. package/front_end/panels/timeline/timeline-meta.ts +11 -21
  85. package/front_end/third_party/chromium/README.chromium +1 -1
  86. package/front_end/ui/components/lists/list.css +1 -2
  87. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +9 -5
  88. package/front_end/ui/components/text_editor/AiCodeCompletionDisclaimer.ts +3 -3
  89. package/front_end/ui/components/text_editor/AiCodeCompletionTeaser.ts +1 -1
  90. package/front_end/ui/components/text_editor/AiCodeGenerationTeaser.ts +3 -3
  91. package/front_end/ui/components/text_editor/AiCodeGenerationUpgradeDialog.ts +1 -1
  92. package/front_end/ui/components/text_editor/config.ts +3 -3
  93. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -0
  94. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +4 -1
  95. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +2 -5
  96. package/front_end/ui/legacy/listWidget.css +1 -6
  97. package/front_end/ui/settings/EmulationSettings.ts +91 -0
  98. package/front_end/ui/settings/SourcesSettings.ts +58 -0
  99. package/front_end/ui/settings/TimelineSettings.ts +28 -0
  100. package/front_end/ui/settings/settings.ts +2 -0
  101. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  102. 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 type * as Common from '../../core/common/common.js';
5
+ import * as Common from '../../core/common/common.js';
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * 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
- ${widget(AccessibilityAnnouncementRecordingListView, {items: input.announcements})}
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 is not rendered',
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 is not visible',
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 will not be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
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 is not available in Incognito mode or Guest mode',
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 will not be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
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="switch"
75
- aria-checked=${expanded ? 'true' : 'false'}
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 Tooltip text and button label for the paste button in the WebMCP view of the Application panel.
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.paste)}
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 table.
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/id.
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 Title for the Element Id column in the ad iframes table.
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 Title for the Initial origin column in the ad iframes table.
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 Title for the CPU column in the ad iframes table.
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 Title for the Network column in the ad iframes table.
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 Title for the URL column in the ad scripts table.
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 Title for the ad provenance column in the ad scripts table.
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 Text to display in the tooltip when a script has no provenance.
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 The name of a checkbox setting. This setting highlights the
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 'Highlight ad-related resources' setting.
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 Text explaining that ad detection is not perfect.
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 for learning more about ad detection in Chrome.
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;