chrome-devtools-frontend 1.0.948916 → 1.0.949424

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 (23) hide show
  1. package/config/gni/all_devtools_files.gni +5 -0
  2. package/config/gni/devtools_grd_files.gni +5 -0
  3. package/front_end/core/i18n/locales/en-US.json +21 -0
  4. package/front_end/core/i18n/locales/en-XL.json +21 -0
  5. package/front_end/core/root/Runtime.ts +1 -0
  6. package/front_end/core/sdk/AccessibilityModel.ts +7 -7
  7. package/front_end/models/issues_manager/AttributionReportingIssue.ts +20 -5
  8. package/front_end/models/issues_manager/descriptions/arInvalidAttributionSourceExpiry.md +4 -0
  9. package/front_end/models/issues_manager/descriptions/arInvalidAttributionSourcePriority.md +4 -0
  10. package/front_end/models/issues_manager/descriptions/arInvalidEventSourceTriggerData.md +9 -0
  11. package/front_end/models/issues_manager/descriptions/arInvalidTriggerDedupKey.md +5 -0
  12. package/front_end/models/issues_manager/descriptions/arInvalidTriggerPriority.md +5 -0
  13. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +45 -3
  14. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +2 -4
  15. package/front_end/panels/accessibility/axBreadcrumbs.css +4 -0
  16. package/front_end/panels/elements/AccessibilityTreeView.ts +4 -6
  17. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +44 -0
  18. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +1 -0
  19. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  20. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +8 -6
  21. package/front_end/third_party/codemirror.next/package.json +3 -3
  22. package/package.json +1 -1
  23. package/scripts/build/rjsmin.py +0 -484
@@ -50,6 +50,11 @@ all_devtools_files = [
50
50
  "front_end/models/issues_manager/descriptions/arAttributionUntrustworthyOrigin.md",
51
51
  "front_end/models/issues_manager/descriptions/arInvalidAttributionData.md",
52
52
  "front_end/models/issues_manager/descriptions/arInvalidAttributionSourceEventId.md",
53
+ "front_end/models/issues_manager/descriptions/arInvalidAttributionSourceExpiry.md",
54
+ "front_end/models/issues_manager/descriptions/arInvalidAttributionSourcePriority.md",
55
+ "front_end/models/issues_manager/descriptions/arInvalidEventSourceTriggerData.md",
56
+ "front_end/models/issues_manager/descriptions/arInvalidTriggerDedupKey.md",
57
+ "front_end/models/issues_manager/descriptions/arInvalidTriggerPriority.md",
53
58
  "front_end/models/issues_manager/descriptions/arMissingAttributionData.md",
54
59
  "front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md",
55
60
  "front_end/models/issues_manager/descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md",
@@ -274,6 +274,11 @@ grd_files_release_sources = [
274
274
  "front_end/models/issues_manager/descriptions/arAttributionUntrustworthyOrigin.md",
275
275
  "front_end/models/issues_manager/descriptions/arInvalidAttributionData.md",
276
276
  "front_end/models/issues_manager/descriptions/arInvalidAttributionSourceEventId.md",
277
+ "front_end/models/issues_manager/descriptions/arInvalidAttributionSourceExpiry.md",
278
+ "front_end/models/issues_manager/descriptions/arInvalidAttributionSourcePriority.md",
279
+ "front_end/models/issues_manager/descriptions/arInvalidEventSourceTriggerData.md",
280
+ "front_end/models/issues_manager/descriptions/arInvalidTriggerDedupKey.md",
281
+ "front_end/models/issues_manager/descriptions/arInvalidTriggerPriority.md",
277
282
  "front_end/models/issues_manager/descriptions/arMissingAttributionData.md",
278
283
  "front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md",
279
284
  "front_end/models/issues_manager/descriptions/corsAllowCredentialsRequired.md",
@@ -1955,9 +1955,18 @@
1955
1955
  "panels/accessibility/AXBreadcrumbsPane.ts | accessibilityTree": {
1956
1956
  "message": "Accessibility Tree"
1957
1957
  },
1958
+ "panels/accessibility/AXBreadcrumbsPane.ts | fullTreeExperimentDescription": {
1959
+ "message": "The accessibility tree moved to the top right corner of the DOM tree."
1960
+ },
1961
+ "panels/accessibility/AXBreadcrumbsPane.ts | fullTreeExperimentName": {
1962
+ "message": "Enable full-page accessibility tree"
1963
+ },
1958
1964
  "panels/accessibility/AXBreadcrumbsPane.ts | ignored": {
1959
1965
  "message": "Ignored"
1960
1966
  },
1967
+ "panels/accessibility/AXBreadcrumbsPane.ts | reloadRequired": {
1968
+ "message": "Reload required before the change takes effect."
1969
+ },
1961
1970
  "panels/accessibility/AXBreadcrumbsPane.ts | scrollIntoView": {
1962
1971
  "message": "Scroll into view"
1963
1972
  },
@@ -5189,9 +5198,21 @@
5189
5198
  "panels/issues/AttributionReportingIssueDetailsView.ts | invalidSourceEventId": {
5190
5199
  "message": "Invalid attributionsourceeventid"
5191
5200
  },
5201
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidSourceExpiry": {
5202
+ "message": "Invalid attributionexpiry"
5203
+ },
5204
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidSourcePriority": {
5205
+ "message": "Invalid attributionsourcepriority"
5206
+ },
5192
5207
  "panels/issues/AttributionReportingIssueDetailsView.ts | invalidTriggerData": {
5193
5208
  "message": "Invalid trigger-data"
5194
5209
  },
5210
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidTriggerDedupKey": {
5211
+ "message": "Invalid dedup-key"
5212
+ },
5213
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidTriggerPriority": {
5214
+ "message": "Invalid priority"
5215
+ },
5195
5216
  "panels/issues/AttributionReportingIssueDetailsView.ts | nViolations": {
5196
5217
  "message": "{n, plural, =1 {# violation} other {# violations}}"
5197
5218
  },
@@ -1955,9 +1955,18 @@
1955
1955
  "panels/accessibility/AXBreadcrumbsPane.ts | accessibilityTree": {
1956
1956
  "message": "Âćĉéŝśîb́îĺît́ŷ T́r̂éê"
1957
1957
  },
1958
+ "panels/accessibility/AXBreadcrumbsPane.ts | fullTreeExperimentDescription": {
1959
+ "message": "T̂h́ê áĉćêśŝíb̂íl̂ít̂ý t̂ŕêé m̂óv̂éd̂ t́ô t́ĥé t̂óp̂ ŕîǵĥt́ ĉór̂ńêŕ ôf́ t̂h́ê D́ÔḾ t̂ŕêé."
1960
+ },
1961
+ "panels/accessibility/AXBreadcrumbsPane.ts | fullTreeExperimentName": {
1962
+ "message": "Êńâb́l̂é f̂úl̂ĺ-p̂áĝé âćĉéŝśîb́îĺît́ŷ t́r̂éê"
1963
+ },
1958
1964
  "panels/accessibility/AXBreadcrumbsPane.ts | ignored": {
1959
1965
  "message": "Îǵn̂ór̂éd̂"
1960
1966
  },
1967
+ "panels/accessibility/AXBreadcrumbsPane.ts | reloadRequired": {
1968
+ "message": "R̂él̂óâd́ r̂éq̂úîŕêd́ b̂éf̂ór̂é t̂h́ê ćĥán̂ǵê t́âḱêś êf́f̂éĉt́."
1969
+ },
1961
1970
  "panels/accessibility/AXBreadcrumbsPane.ts | scrollIntoView": {
1962
1971
  "message": "Ŝćr̂ól̂ĺ îńt̂ó v̂íêẃ"
1963
1972
  },
@@ -5189,9 +5198,21 @@
5189
5198
  "panels/issues/AttributionReportingIssueDetailsView.ts | invalidSourceEventId": {
5190
5199
  "message": "Îńv̂ál̂íd̂ attributionsourceeventid"
5191
5200
  },
5201
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidSourceExpiry": {
5202
+ "message": "Îńv̂ál̂íd̂ attributionexpiry"
5203
+ },
5204
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidSourcePriority": {
5205
+ "message": "Îńv̂ál̂íd̂ attributionsourcepriority"
5206
+ },
5192
5207
  "panels/issues/AttributionReportingIssueDetailsView.ts | invalidTriggerData": {
5193
5208
  "message": "Îńv̂ál̂íd̂ trigger-data"
5194
5209
  },
5210
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidTriggerDedupKey": {
5211
+ "message": "Îńv̂ál̂íd̂ dedup-key"
5212
+ },
5213
+ "panels/issues/AttributionReportingIssueDetailsView.ts | invalidTriggerPriority": {
5214
+ "message": "Îńv̂ál̂íd̂ priority"
5215
+ },
5195
5216
  "panels/issues/AttributionReportingIssueDetailsView.ts | nViolations": {
5196
5217
  "message": "{n, plural, =1 {# v̂íôĺât́îón̂} other {# v́îól̂át̂íôńŝ}}"
5197
5218
  },
@@ -351,6 +351,7 @@ export enum ExperimentName {
351
351
  PROTOCOL_MONITOR = 'protocolMonitor',
352
352
  WEBAUTHN_PANE = 'webauthnPane',
353
353
  SYNC_SETTINGS = 'syncSettings',
354
+ FULL_ACCESSIBILITY_TREE = 'fullAccessibilityTree',
354
355
  }
355
356
 
356
357
  // TODO(crbug.com/1167717): Make this a const enum again
@@ -291,25 +291,25 @@ export class AccessibilityModel extends SDKModel<EventTypes> implements Protocol
291
291
  async requestAXChildren(nodeId: Protocol.Accessibility.AXNodeId, frameId?: Protocol.Page.FrameId):
292
292
  Promise<AccessibilityNode[]> {
293
293
  const parent = this.#axIdToAXNode.get(nodeId);
294
- if (parent && !parent.hasUnloadedChildren()) {
294
+ if (!parent) {
295
+ throw Error('Cannot request children before parent');
296
+ }
297
+ if (!parent.hasUnloadedChildren()) {
295
298
  return parent.children();
296
299
  }
297
300
 
298
301
  let nodes;
299
302
  const request = this.#pendingChildRequests.get(nodeId);
300
303
  if (request) {
301
- nodes = (await request).nodes;
304
+ await request;
302
305
  } else {
303
306
  const req = this.agent.invoke_getChildAXNodes({id: nodeId, frameId});
304
307
  this.#pendingChildRequests.set(nodeId, req);
305
308
  nodes = (await req).nodes;
309
+ this.createNodesFromPayload(nodes);
306
310
  this.#pendingChildRequests.delete(nodeId);
307
311
  }
308
- if (!nodes) {
309
- return [];
310
- }
311
- const axNodes = this.createNodesFromPayload(nodes);
312
- return axNodes;
312
+ return parent.children();
313
313
  }
314
314
 
315
315
  async requestAndLoadSubTreeToNode(node: DOMNode): Promise<AccessibilityNode[]|null> {
@@ -124,15 +124,30 @@ export class AttributionReportingIssue extends Issue<IssueCode> {
124
124
  links: [],
125
125
  };
126
126
  case IssueCode.InvalidAttributionSourceExpiry:
127
- return null;
127
+ return {
128
+ file: 'arInvalidAttributionSourceExpiry.md',
129
+ links: [],
130
+ };
128
131
  case IssueCode.InvalidAttributionSourcePriority:
129
- return null;
132
+ return {
133
+ file: 'arInvalidAttributionSourcePriority.md',
134
+ links: [],
135
+ };
130
136
  case IssueCode.InvalidEventSourceTriggerData:
131
- return null;
137
+ return {
138
+ file: 'arInvalidEventSourceTriggerData.md',
139
+ links: [],
140
+ };
132
141
  case IssueCode.InvalidTriggerPriority:
133
- return null;
142
+ return {
143
+ file: 'arInvalidTriggerPriority.md',
144
+ links: [],
145
+ };
134
146
  case IssueCode.InvalidTriggerDedupKey:
135
- return null;
147
+ return {
148
+ file: 'arInvalidTriggerDedupKey.md',
149
+ links: [],
150
+ };
136
151
  }
137
152
  }
138
153
 
@@ -0,0 +1,4 @@
1
+ # Ensure attribution source expiry is a valid number
2
+
3
+ The expiry associated with an attribution source was defaulted to 30 days.
4
+ This happens if the provided value is not a valid 64-bit signed integer.
@@ -0,0 +1,4 @@
1
+ # Ensure attribution source priority is a valid number
2
+
3
+ The priority associated with an attribution source was defaulted to `0`.
4
+ This happens if the provided value is not a valid 64-bit signed integer.
@@ -0,0 +1,9 @@
1
+ # Ensure the "event-source-trigger-data" query parameter for an attribution redirect is a valid number
2
+
3
+ The event-source trigger data associated with an attribution was defaulted to `0`.
4
+ This happens if the `event-source-trigger-data` query parameter provided in the `.well-known`
5
+ redirect is not a valid 64-bit unsigned integer.
6
+
7
+ Note that even if a valid integer is provided, only the lowest 1-bit of the
8
+ `event-source-trigger-data` query parameter is recorded, with a 5% chance of the 1 bit being
9
+ noised.
@@ -0,0 +1,5 @@
1
+ # Ensure the "dedup-key" query parameter for an attribution redirect is a valid number
2
+
3
+ The dedup key associated with an attribution was defaulted to `null`.
4
+ This happens if the `dedup-key` query parameter provided in the `.well-known` redirect is not a
5
+ valid 64-bit signed integer.
@@ -0,0 +1,5 @@
1
+ # Ensure the "priority" query parameter for an attribution redirect is a valid number
2
+
3
+ The priority associated with an attribution was defaulted to `0`.
4
+ This happens if the `priority` query parameter provided in the `.well-known` redirect is not a
5
+ valid 64-bit signed integer.
@@ -3,8 +3,11 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as Common from '../../core/common/common.js';
6
+ import * as Host from '../../core/host/host.js';
6
7
  import * as i18n from '../../core/i18n/i18n.js';
8
+ import * as Root from '../../core/root/root.js';
7
9
  import * as SDK from '../../core/sdk/sdk.js';
10
+ import * as Feedback from '../../ui/components/panel_feedback/panel_feedback.js';
8
11
  import * as UI from '../../ui/legacy/legacy.js';
9
12
 
10
13
  import axBreadcrumbsStyles from './axBreadcrumbs.css.js';
@@ -27,6 +30,18 @@ const UIStrings = {
27
30
  *@description Ignored node element text content in AXBreadcrumbs Pane of the Accessibility panel
28
31
  */
29
32
  ignored: 'Ignored',
33
+ /**
34
+ *@description Name for experimental tree toggle.
35
+ */
36
+ fullTreeExperimentName: 'Enable full-page accessibility tree',
37
+ /**
38
+ *@description Description text for experimental tree toggle.
39
+ */
40
+ fullTreeExperimentDescription: 'The accessibility tree moved to the top right corner of the DOM tree.',
41
+ /**
42
+ *@description Message saying that DevTools must be restarted before the experiment is enabled.
43
+ */
44
+ reloadRequired: 'Reload required before the change takes effect.',
30
45
  };
31
46
  const str_ = i18n.i18n.registerUIStrings('panels/accessibility/AXBreadcrumbsPane.ts', UIStrings);
32
47
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -37,24 +52,48 @@ export class AXBreadcrumbsPane extends AccessibilitySubPane {
37
52
  private collapsingBreadcrumbId: number;
38
53
  private hoveredBreadcrumb: AXBreadcrumb|null;
39
54
  private readonly rootElement: HTMLElement;
55
+ #legacyTreeDisabled = false;
40
56
 
41
57
  constructor(axSidebarView: AccessibilitySidebarView) {
42
58
  super(i18nString(UIStrings.accessibilityTree));
43
59
 
44
60
  this.element.classList.add('ax-subpane');
45
- UI.ARIAUtils.markAsTree(this.element);
46
61
  this.element.tabIndex = -1;
47
62
 
48
63
  this.axSidebarView = axSidebarView;
49
-
50
64
  this.preselectedBreadcrumb = null;
51
65
  this.inspectedNodeBreadcrumb = null;
52
66
 
53
67
  this.collapsingBreadcrumbId = -1;
54
68
 
55
- this.hoveredBreadcrumb = null;
56
69
  this.rootElement = this.element.createChild('div', 'ax-breadcrumbs');
57
70
 
71
+ this.hoveredBreadcrumb = null;
72
+ const previewToggle = new Feedback.PreviewToggle.PreviewToggle();
73
+ const name = i18nString(UIStrings.fullTreeExperimentName);
74
+ const experiment = Root.Runtime.ExperimentName.FULL_ACCESSIBILITY_TREE;
75
+ const onChangeCallback: (checked: boolean) => void = checked => {
76
+ Host.userMetrics.experimentChanged(experiment, checked);
77
+ UI.InspectorView.InspectorView.instance().displayReloadRequiredWarning(i18nString(UIStrings.reloadRequired));
78
+ };
79
+ if (Root.Runtime.experiments.isEnabled(experiment)) {
80
+ this.#legacyTreeDisabled = true;
81
+ const feedbackURL = 'https://goo.gle/devtools-a11y-tree-feedback';
82
+ previewToggle.data = {
83
+ name,
84
+ helperText: i18nString(UIStrings.fullTreeExperimentDescription),
85
+ feedbackURL,
86
+ experiment,
87
+ onChangeCallback,
88
+ };
89
+ this.element.appendChild(previewToggle);
90
+ return;
91
+ }
92
+ previewToggle.data = {name, helperText: null, feedbackURL: null, experiment, onChangeCallback};
93
+ this.element.prepend(previewToggle);
94
+
95
+ UI.ARIAUtils.markAsTree(this.rootElement);
96
+
58
97
  this.rootElement.addEventListener('keydown', this.onKeyDown.bind(this), true);
59
98
  this.rootElement.addEventListener('mousemove', this.onMouseMove.bind(this), false);
60
99
  this.rootElement.addEventListener('mouseleave', this.onMouseLeave.bind(this), false);
@@ -72,6 +111,9 @@ export class AXBreadcrumbsPane extends AccessibilitySubPane {
72
111
  }
73
112
 
74
113
  setAXNode(axNode: SDK.AccessibilityModel.AccessibilityNode|null): void {
114
+ if (this.#legacyTreeDisabled) {
115
+ return;
116
+ }
75
117
  const hadFocus = this.element.hasFocus();
76
118
  super.setAXNode(axNode);
77
119
 
@@ -31,10 +31,8 @@ export class AccessibilitySidebarView extends UI.ThrottledWidget.ThrottledWidget
31
31
  this.axNodeInternal = null;
32
32
  this.skipNextPullNode = false;
33
33
  this.sidebarPaneStack = UI.ViewManager.ViewManager.instance().createStackLocation();
34
- if (!Root.Runtime.experiments.isEnabled('fullAccessibilityTree')) {
35
- this.breadcrumbsSubPane = new AXBreadcrumbsPane(this);
36
- this.sidebarPaneStack.showView(this.breadcrumbsSubPane);
37
- }
34
+ this.breadcrumbsSubPane = new AXBreadcrumbsPane(this);
35
+ this.sidebarPaneStack.showView(this.breadcrumbsSubPane);
38
36
  this.ariaSubPane = new ARIAAttributesPane();
39
37
  this.sidebarPaneStack.showView(this.ariaSubPane);
40
38
  this.axNodeSubPane = new AXNodeSubPane();
@@ -99,6 +99,10 @@
99
99
  background-color: var(--color-background-elevation-0);
100
100
  }
101
101
 
102
+ .ax-breadcrumbs .ax-node:not(.inspected):focus {
103
+ background-color: var(--color-background-elevation-1);
104
+ }
105
+
102
106
  .ax-breadcrumbs .ax-node.inspected:focus * {
103
107
  color: inherit;
104
108
  }
@@ -120,16 +120,14 @@ export class AccessibilityTreeView extends UI.Widget.VBox implements
120
120
 
121
121
  // Selected node in the DOM tree has changed.
122
122
  async selectedNodeChanged(inspectedNode: SDK.DOMModel.DOMNode): Promise<void> {
123
- if (this.isShowing()) {
123
+ if (this.isShowing() || (inspectedNode === this.inspectedDOMNode)) {
124
124
  return;
125
125
  }
126
126
  if (inspectedNode.ownerDocument && (inspectedNode.nodeName() === 'HTML' || inspectedNode.nodeName() === 'BODY')) {
127
- inspectedNode = inspectedNode.ownerDocument;
127
+ this.inspectedDOMNode = inspectedNode.ownerDocument;
128
+ } else {
129
+ this.inspectedDOMNode = inspectedNode;
128
130
  }
129
- if (inspectedNode === this.inspectedDOMNode) {
130
- return;
131
- }
132
- this.inspectedDOMNode = inspectedNode;
133
131
  }
134
132
 
135
133
  treeUpdated({data}: Common.EventTarget
@@ -32,6 +32,16 @@ const UIStrings = {
32
32
  * on an anchor HTML element ("a link").
33
33
  */
34
34
  invalidSourceEventId: 'Invalid `attributionsourceeventid`',
35
+ /**
36
+ * @description Label for the column showing the invalid value used as the 'attributionexpiry' attribute
37
+ * on an anchor HTML element ("a link").
38
+ */
39
+ invalidSourceExpiry: 'Invalid `attributionexpiry`',
40
+ /**
41
+ * @description Label for the column showing the invalid value used as the 'attributionpriority' attribute
42
+ * on an anchor HTML element ("a link").
43
+ */
44
+ invalidSourcePriority: 'Invalid `attributionsourcepriority`',
35
45
  /**
36
46
  * @description Label for the column showing the invalid URL used in an HTML anchor element ("a link").
37
47
  * A origin is (roughly said) the front part of a URL.
@@ -47,6 +57,16 @@ const UIStrings = {
47
57
  * 'event-source-trigger-data' query parameter.
48
58
  */
49
59
  invalidEventSourceTriggerData: 'Invalid `event-source-trigger-data`',
60
+ /**
61
+ * @description Label for the column showing the invalid value used for the
62
+ * 'priority' query parameter.
63
+ */
64
+ invalidTriggerPriority: 'Invalid `priority`',
65
+ /**
66
+ * @description Label for the column showing the invalid value used for the
67
+ * 'dedup-key' query parameter.
68
+ */
69
+ invalidTriggerDedupKey: 'Invalid `dedup-key`',
50
70
  };
51
71
  const str_ = i18n.i18n.registerUIStrings('panels/issues/AttributionReportingIssueDetailsView.ts', UIStrings);
52
72
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -94,15 +114,34 @@ export class AttributionReportingIssueDetailsView extends AffectedResourcesView
94
114
  this.appendColumnTitle(header, i18nString(UIStrings.request));
95
115
  this.appendColumnTitle(header, i18nString(UIStrings.invalidTriggerData));
96
116
  break;
117
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidEventSourceTriggerData:
97
118
  case IssuesManager.AttributionReportingIssue.IssueCode.AttributionEventSourceTriggerDataTooLarge:
98
119
  this.appendColumnTitle(header, i18nString(UIStrings.request));
99
120
  this.appendColumnTitle(header, i18nString(UIStrings.invalidEventSourceTriggerData));
100
121
  break;
122
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidTriggerPriority:
123
+ this.appendColumnTitle(header, i18nString(UIStrings.request));
124
+ this.appendColumnTitle(header, i18nString(UIStrings.invalidTriggerPriority));
125
+ break;
126
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidTriggerDedupKey:
127
+ this.appendColumnTitle(header, i18nString(UIStrings.request));
128
+ this.appendColumnTitle(header, i18nString(UIStrings.invalidTriggerDedupKey));
129
+ break;
101
130
  case IssuesManager.AttributionReportingIssue.IssueCode.InvalidAttributionSourceEventId:
102
131
  this.appendColumnTitle(header, i18nString(UIStrings.frame));
103
132
  this.appendColumnTitle(header, i18nString(UIStrings.element));
104
133
  this.appendColumnTitle(header, i18nString(UIStrings.invalidSourceEventId));
105
134
  break;
135
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidAttributionSourceExpiry:
136
+ this.appendColumnTitle(header, i18nString(UIStrings.frame));
137
+ this.appendColumnTitle(header, i18nString(UIStrings.element));
138
+ this.appendColumnTitle(header, i18nString(UIStrings.invalidSourceExpiry));
139
+ break;
140
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidAttributionSourcePriority:
141
+ this.appendColumnTitle(header, i18nString(UIStrings.frame));
142
+ this.appendColumnTitle(header, i18nString(UIStrings.element));
143
+ this.appendColumnTitle(header, i18nString(UIStrings.invalidSourcePriority));
144
+ break;
106
145
  case IssuesManager.AttributionReportingIssue.IssueCode.MissingAttributionData:
107
146
  this.appendColumnTitle(header, i18nString(UIStrings.request));
108
147
  break;
@@ -144,11 +183,16 @@ export class AttributionReportingIssueDetailsView extends AffectedResourcesView
144
183
  case IssuesManager.AttributionReportingIssue.IssueCode.AttributionEventSourceTriggerDataTooLarge:
145
184
  case IssuesManager.AttributionReportingIssue.IssueCode.AttributionUntrustworthyOrigin:
146
185
  case IssuesManager.AttributionReportingIssue.IssueCode.InvalidAttributionData:
186
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidEventSourceTriggerData:
187
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidTriggerPriority:
188
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidTriggerDedupKey:
147
189
  this.appendRequestOrEmptyCell(element, details.request);
148
190
  this.appendIssueDetailCell(element, details.invalidParameter || '');
149
191
  break;
150
192
  case IssuesManager.AttributionReportingIssue.IssueCode.AttributionSourceUntrustworthyFrameOrigin:
151
193
  case IssuesManager.AttributionReportingIssue.IssueCode.InvalidAttributionSourceEventId:
194
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidAttributionSourceExpiry:
195
+ case IssuesManager.AttributionReportingIssue.IssueCode.InvalidAttributionSourcePriority:
152
196
  this.appendFrameOrEmptyCell(element, issue);
153
197
  await this.appendElementOrEmptyCell(element, issue);
154
198
  this.appendIssueDetailCell(element, details.invalidParameter || '');
@@ -554,6 +554,7 @@ export class UserAgentClientHintsForm extends HTMLElement {
554
554
  aria-controls="form-container"
555
555
  @disabled=${this.isFormDisabled}
556
556
  aria-disabled=${this.isFormDisabled}
557
+ aria-label=${i18nString(UIStrings.title)}
557
558
  >
558
559
  <${IconButton.Icon.Icon.litTagName}
559
560
  class=${this.isFormOpened ? '' : 'rotate-icon'}