chrome-devtools-frontend 1.0.1635876 → 1.0.1638082

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 (93) hide show
  1. package/.agents/skills/verification/SKILL.md +1 -1
  2. package/front_end/core/common/Color.ts +0 -4
  3. package/front_end/core/i18n/collect-ui-strings.js +3 -3
  4. package/front_end/core/root/Runtime.ts +5 -0
  5. package/front_end/core/sdk/SourceMap.ts +8 -3
  6. package/front_end/generated/ARIAProperties.js +17 -0
  7. package/front_end/generated/InspectorBackendCommands.ts +7 -5
  8. package/front_end/generated/SupportedCSSProperties.js +1 -0
  9. package/front_end/generated/protocol.ts +40 -2
  10. package/front_end/models/ai_assistance/AiConversation.ts +0 -8
  11. package/front_end/models/ai_assistance/AiHistoryStorage.ts +0 -1
  12. package/front_end/models/ai_assistance/AiUtils.ts +9 -0
  13. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +17 -36
  14. package/front_end/models/ai_assistance/agents/AiAgent.ts +34 -10
  15. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +6 -0
  16. package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +0 -2
  17. package/front_end/models/ai_assistance/agents/NetworkAgent.snapshot.txt +19 -0
  18. package/front_end/models/ai_assistance/agents/NetworkAgent.ts +6 -0
  19. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +20 -2
  20. package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
  21. package/front_end/models/bindings/CompilerScriptMapping.ts +12 -4
  22. package/front_end/models/breakpoints/BreakpointManager.ts +54 -2
  23. package/front_end/models/greendev/Prototypes.ts +0 -7
  24. package/front_end/models/issues_manager/EmailVerificationRequestIssue.ts +293 -0
  25. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  26. package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md +1 -0
  27. package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -0
  28. package/front_end/models/issues_manager/descriptions/emailVerificationRequestInvalidEmail.md +1 -0
  29. package/front_end/models/issues_manager/descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -0
  30. package/front_end/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -0
  31. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -0
  32. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -0
  33. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -0
  34. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -0
  35. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -0
  36. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md +1 -0
  37. package/front_end/models/issues_manager/descriptions/emailVerificationRequestUserLoggedOut.md +1 -0
  38. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -0
  39. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -0
  40. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -0
  41. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -0
  42. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -0
  43. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -0
  44. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -0
  45. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -0
  46. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -0
  47. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -0
  48. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  49. package/front_end/models/javascript_metadata/NativeFunctions.js +1739 -1734
  50. package/front_end/models/stack_trace/DetailedErrorStackParser.ts +9 -1
  51. package/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +21 -25
  52. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -75
  53. package/front_end/panels/ai_assistance/components/AccessibilityAgentMarkdownRenderer.ts +10 -3
  54. package/front_end/panels/ai_assistance/components/ChatMessage.ts +66 -1
  55. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +4 -4
  56. package/front_end/panels/console/ConsoleViewMessage.ts +0 -90
  57. package/front_end/panels/elements/StylePropertiesSection.ts +6 -2
  58. package/front_end/panels/elements/StylesSidebarPane.ts +9 -0
  59. package/front_end/panels/elements/elements-meta.ts +14 -0
  60. package/front_end/panels/network/NetworkLogView.ts +4 -1
  61. package/front_end/panels/network/RequestHeadersView.ts +55 -19
  62. package/front_end/panels/recorder/components/ReplaySection.ts +28 -16
  63. package/front_end/panels/recorder/converters/LighthouseConverter.snapshot.txt +47 -0
  64. package/front_end/panels/recorder/converters/PuppeteerConverter.snapshot.txt +49 -0
  65. package/front_end/panels/recorder/converters/PuppeteerReplayConverter.snapshot.txt +33 -0
  66. package/front_end/panels/settings/SettingsScreen.ts +1 -2
  67. package/front_end/panels/sources/BreakpointsView.ts +23 -42
  68. package/front_end/panels/sources/DebuggerPlugin.ts +12 -5
  69. package/front_end/panels/sources/PersistenceActions.ts +21 -7
  70. package/front_end/panels/timeline/TimelineDetailsView.ts +36 -0
  71. package/front_end/third_party/chromium/README.chromium +1 -1
  72. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +2 -2
  73. package/front_end/third_party/puppeteer-replay/README.chromium +2 -2
  74. package/front_end/third_party/puppeteer-replay/package/lib/cli.js +84 -80
  75. package/front_end/third_party/puppeteer-replay/package/lib/cli.js.map +1 -1
  76. package/front_end/third_party/puppeteer-replay/package/lib/extension-test.js +79 -83
  77. package/front_end/third_party/puppeteer-replay/package/lib/extension-test.js.map +1 -1
  78. package/front_end/third_party/puppeteer-replay/package/lib/main.d.ts +43 -171
  79. package/front_end/third_party/puppeteer-replay/package/lib/main.js +51 -206
  80. package/front_end/third_party/puppeteer-replay/package/lib/main.js.map +1 -1
  81. package/front_end/third_party/puppeteer-replay/package/package.json +37 -67
  82. package/front_end/ui/legacy/Dialog.ts +1 -0
  83. package/front_end/ui/legacy/UIUtils.ts +4 -0
  84. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  85. package/mcp/mcp.ts +1 -6
  86. package/package.json +8 -10
  87. package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgent.ts +0 -1015
  88. package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgentOverlay.ts +0 -87
  89. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.cjs +0 -2099
  90. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.cjs.map +0 -1
  91. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.d.cts +0 -686
  92. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.d.ts +0 -35
  93. package/mcp/HostBindings.ts +0 -319
@@ -20,6 +20,25 @@ Content:
20
20
  "title": "Request initiator chain",
21
21
  "text": "- URL: <redacted cross-origin initiator URL>\n\t- URL: https://www.example.com\n\t\t- URL: https://www.example.com/1\n\t\t- URL: https://www.example.com/2"
22
22
  }
23
+ ],
24
+ "widgets": [
25
+ {
26
+ "name": "NETWORK_REQUEST_GENERAL_HEADERS",
27
+ "data": {
28
+ "request": {
29
+ "statusCode": 200,
30
+ "statusText": "",
31
+ "requestMethod": "",
32
+ "requestTime": 0,
33
+ "protocol": "",
34
+ "mixedContentType": "none",
35
+ "connectionId": "0",
36
+ "connectionReused": false,
37
+ "hasNetworkData": false,
38
+ "localizedFailDescription": null
39
+ }
40
+ }
41
+ }
23
42
  ]
24
43
  },
25
44
  {
@@ -162,6 +162,12 @@ export class NetworkAgent extends AiAgent<SDK.NetworkRequest.NetworkRequest> {
162
162
  yield {
163
163
  type: ResponseType.CONTEXT,
164
164
  details: await createContextDetailsForNetworkAgent(selectedNetworkRequest),
165
+ widgets: [{
166
+ name: 'NETWORK_REQUEST_GENERAL_HEADERS',
167
+ data: {
168
+ request: selectedNetworkRequest.getItem(),
169
+ },
170
+ }],
165
171
  };
166
172
  }
167
173
 
@@ -1093,7 +1093,16 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
1093
1093
 
1094
1094
  const key = `getEventByKey('${params.eventKey}')`;
1095
1095
  this.#cacheFunctionResult(focus, key, details);
1096
- return {result: {details}};
1096
+ return {
1097
+ result: {details},
1098
+ widgets: [{
1099
+ name: 'TIMELINE_EVENT_SUMMARY',
1100
+ data: {
1101
+ event,
1102
+ parsedTrace,
1103
+ },
1104
+ }],
1105
+ };
1097
1106
  },
1098
1107
  });
1099
1108
 
@@ -1493,7 +1502,16 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
1493
1502
 
1494
1503
  const revealable = new SDK.TraceObject.RevealableEvent(event);
1495
1504
  await Common.Revealer.reveal(revealable);
1496
- return {result: {success: true}};
1505
+ return {
1506
+ result: {success: true},
1507
+ widgets: [{
1508
+ name: 'TIMELINE_EVENT_SUMMARY',
1509
+ data: {
1510
+ event,
1511
+ parsedTrace,
1512
+ },
1513
+ }],
1514
+ };
1497
1515
  },
1498
1516
  });
1499
1517
  }
@@ -5,7 +5,6 @@
5
5
  import * as AgentProject from './AgentProject.js';
6
6
  import * as AccessibilityAgent from './agents/AccessibilityAgent.js';
7
7
  import * as AiAgent from './agents/AiAgent.js';
8
- import * as BreakpointDebuggerAgent from './agents/BreakpointDebuggerAgent.js';
9
8
  import * as ContextSelectionAgent from './agents/ContextSelectionAgent.js';
10
9
  import * as ConversationSummaryAgent from './agents/ConversationSummaryAgent.js';
11
10
  import * as FileAgent from './agents/FileAgent.js';
@@ -48,7 +47,6 @@ export {
48
47
  AiHistoryStorage,
49
48
  AIQueries,
50
49
  AiUtils,
51
- BreakpointDebuggerAgent,
52
50
  BuiltInAi,
53
51
  ChangeManager,
54
52
  ContextSelectionAgent,
@@ -231,16 +231,24 @@ export class CompilerScriptMapping implements DebuggerSourceMapping {
231
231
  SDK.DebuggerModel.Location[] {
232
232
  const locations = [];
233
233
  for (const sourceMap of this.#uiSourceCodeToSourceMaps.get(uiSourceCode)) {
234
- const entry = sourceMap.sourceLineMapping(uiSourceCode.url(), lineNumber, columnNumber);
235
- if (!entry) {
234
+ const firstEntry = sourceMap.sourceLineMapping(uiSourceCode.url(), lineNumber, columnNumber);
235
+ if (!firstEntry) {
236
+ continue;
237
+ }
238
+ const entries = sourceMap.findReverseEntries(
239
+ uiSourceCode.url(), firstEntry.sourceLineNumber, firstEntry.sourceColumnNumber, true);
240
+ if (entries.length === 0) {
236
241
  continue;
237
242
  }
238
243
  const script = this.#sourceMapManager.clientForSourceMap(sourceMap);
239
244
  if (!script) {
240
245
  continue;
241
246
  }
242
- const location = script.relativeLocationToRawLocation(entry);
243
- locations.push(script.debuggerModel.createRawLocation(script, location.lineNumber, location.columnNumber));
247
+
248
+ for (const entry of entries) {
249
+ const location = script.relativeLocationToRawLocation(entry);
250
+ locations.push(script.debuggerModel.createRawLocation(script, location.lineNumber, location.columnNumber));
251
+ }
244
252
  }
245
253
  return locations;
246
254
  }
@@ -696,9 +696,19 @@ export class Breakpoint implements SDK.TargetManager.SDKModelObserver<SDK.Debugg
696
696
 
697
697
  // Do we need to do this? Not sure if bound locations will leak...
698
698
  if (this.bound()) {
699
+ const removedUILocations = new Map<string, Workspace.UISourceCode.UILocation>();
699
700
  for (const uiLocation of this.#uiLocations) {
700
701
  if (uiLocation.uiSourceCode === uiSourceCode) {
701
702
  this.#uiLocations.delete(uiLocation);
703
+ removedUILocations.set(uiLocation.id(), uiLocation);
704
+ }
705
+ }
706
+
707
+ for (const uiLocation of removedUILocations.values()) {
708
+ // Multiple physically distinct UILocations can map to the same logical location
709
+ // (same ID). We only notify the manager if all instances of this logical location are gone.
710
+ const isGoneLogically = !Array.from(this.#uiLocations).some(loc => loc.id() === uiLocation.id());
711
+ if (isGoneLogically) {
702
712
  this.breakpointManager.uiLocationRemoved(uiLocation);
703
713
  }
704
714
  }
@@ -730,14 +740,26 @@ export class Breakpoint implements SDK.TargetManager.SDKModelObserver<SDK.Debugg
730
740
  // This is our first bound location; remove all unbound locations
731
741
  this.removeAllUnboundLocations();
732
742
  }
743
+ // A single logical breakpoint can resolve to multiple raw locations (e.g. due to
744
+ // inlining or SSR/client template duplication) that map back to the same logical
745
+ // UILocation. We only notify the manager once per logical UILocation to avoid
746
+ // duplicate items/decorations in the UI.
747
+ const isNewLogicalLocation = !Array.from(this.#uiLocations).some(loc => loc.id() === uiLocation.id());
733
748
  this.#uiLocations.add(uiLocation);
734
- this.breakpointManager.uiLocationAdded(this, uiLocation);
749
+ if (isNewLogicalLocation) {
750
+ this.breakpointManager.uiLocationAdded(this, uiLocation);
751
+ }
735
752
  }
736
753
 
737
754
  uiLocationRemoved(uiLocation: Workspace.UISourceCode.UILocation): void {
738
755
  if (this.#uiLocations.has(uiLocation)) {
739
756
  this.#uiLocations.delete(uiLocation);
740
- this.breakpointManager.uiLocationRemoved(uiLocation);
757
+ // We only notify the manager if there are no other resolved locations left
758
+ // that map to this same logical UILocation (same ID).
759
+ const isGoneLogically = !Array.from(this.#uiLocations).some(loc => loc.id() === uiLocation.id());
760
+ if (isGoneLogically) {
761
+ this.breakpointManager.uiLocationRemoved(uiLocation);
762
+ }
741
763
  if (!this.bound() && !this.isRemoved) {
742
764
  this.addAllUnboundLocations();
743
765
  }
@@ -752,6 +774,36 @@ export class Breakpoint implements SDK.TargetManager.SDKModelObserver<SDK.Debugg
752
774
  return this.#uiLocations.size !== 0;
753
775
  }
754
776
 
777
+ getClosestResolvedLocation(): Workspace.UISourceCode.UILocation|null {
778
+ if (this.#uiLocations.size === 0) {
779
+ return null;
780
+ }
781
+ let closestLocation: Workspace.UISourceCode.UILocation|null = null;
782
+ let minLineDiff = Infinity;
783
+ let minColDiff = Infinity;
784
+
785
+ const breakpointLine = this.lineNumber();
786
+ const breakpointColumn = this.columnNumber() ?? 0;
787
+
788
+ for (const uiLocation of this.#uiLocations) {
789
+ const lineDiff = Math.abs(uiLocation.lineNumber - breakpointLine);
790
+ const colDiff = Math.abs((uiLocation.columnNumber ?? 0) - breakpointColumn);
791
+
792
+ if (lineDiff < minLineDiff) {
793
+ minLineDiff = lineDiff;
794
+ minColDiff = colDiff;
795
+ closestLocation = uiLocation;
796
+ } else if (lineDiff === minLineDiff) {
797
+ if (colDiff < minColDiff) {
798
+ minColDiff = colDiff;
799
+ closestLocation = uiLocation;
800
+ }
801
+ }
802
+ }
803
+
804
+ return closestLocation;
805
+ }
806
+
755
807
  setEnabled(enabled: boolean): void {
756
808
  this.updateState({...this.#storageState, enabled});
757
809
  }
@@ -11,7 +11,6 @@ export interface GreenDevSettings {
11
11
  aiAnnotations: Common.Settings.Setting<boolean>;
12
12
  beyondStylingGemini: Common.Settings.Setting<boolean>;
13
13
  beyondStylingAntigravity: Common.Settings.Setting<boolean>;
14
- breakpointDebuggerAgent: Common.Settings.Setting<boolean>;
15
14
  emulationCapabilities: Common.Settings.Setting<boolean>;
16
15
  }
17
16
 
@@ -53,11 +52,6 @@ export class Prototypes {
53
52
  false,
54
53
  Common.Settings.SettingStorageType.GLOBAL,
55
54
  );
56
- const breakpointDebuggerAgent = settings.createSetting(
57
- 'greendev-breakpoint-debugger-agent-enabled',
58
- false,
59
- Common.Settings.SettingStorageType.LOCAL,
60
- );
61
55
  const emulationCapabilities = settings.createSetting(
62
56
  'greendev-emulation-capabilities-enabled',
63
57
  false,
@@ -68,7 +62,6 @@ export class Prototypes {
68
62
  aiAnnotations,
69
63
  beyondStylingGemini,
70
64
  beyondStylingAntigravity,
71
- breakpointDebuggerAgent,
72
65
  emulationCapabilities
73
66
  };
74
67
  }
@@ -0,0 +1,293 @@
1
+ // Copyright 2026 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import * as i18n from '../../core/i18n/i18n.js';
6
+ import type * as SDK from '../../core/sdk/sdk.js';
7
+ import * as Protocol from '../../generated/protocol.js';
8
+
9
+ import {Issue, IssueCategory, IssueKind} from './Issue.js';
10
+ import {
11
+ type LazyMarkdownIssueDescription,
12
+ type MarkdownIssueDescription,
13
+ resolveLazyDescription,
14
+ } from './MarkdownIssueDescription.js';
15
+
16
+ const UIStrings = {
17
+ /**
18
+ * @description Title for Email Verification Protocol specification url link
19
+ */
20
+ emailVerification: 'Email Verification Protocol',
21
+ } as const;
22
+ const str_ = i18n.i18n.registerUIStrings('models/issues_manager/EmailVerificationRequestIssue.ts', UIStrings);
23
+ const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
24
+
25
+ export class EmailVerificationRequestIssue extends Issue<Protocol.Audits.EmailVerificationRequestIssueDetails> {
26
+ constructor(
27
+ issueDetails: Protocol.Audits.EmailVerificationRequestIssueDetails,
28
+ issuesModel: SDK.IssuesModel.IssuesModel|null) {
29
+ super(
30
+ {
31
+ code: Protocol.Audits.InspectorIssueCode.EmailVerificationRequestIssue,
32
+ umaCode: [
33
+ Protocol.Audits.InspectorIssueCode.EmailVerificationRequestIssue,
34
+ issueDetails.emailVerificationRequestIssueReason,
35
+ ].join('::'),
36
+ },
37
+ issueDetails, issuesModel);
38
+ }
39
+
40
+ getCategory(): IssueCategory {
41
+ return IssueCategory.OTHER;
42
+ }
43
+
44
+ getDescription(): MarkdownIssueDescription|null {
45
+ const description = issueDescriptions.get(this.details().emailVerificationRequestIssueReason);
46
+ if (!description) {
47
+ return null;
48
+ }
49
+ return resolveLazyDescription(description);
50
+ }
51
+
52
+ primaryKey(): string {
53
+ return JSON.stringify(this.details());
54
+ }
55
+
56
+ getKind(): IssueKind {
57
+ return IssueKind.PAGE_ERROR;
58
+ }
59
+
60
+ static fromInspectorIssue(
61
+ issuesModel: SDK.IssuesModel.IssuesModel|null,
62
+ inspectorIssue: Protocol.Audits.InspectorIssue): EmailVerificationRequestIssue[] {
63
+ const details = inspectorIssue.details.emailVerificationRequestIssueDetails;
64
+ if (!details) {
65
+ console.warn('Email verification request issue without details received.');
66
+ return [];
67
+ }
68
+ return [new EmailVerificationRequestIssue(details, issuesModel)];
69
+ }
70
+ }
71
+
72
+ const issueDescriptions = new Map<Protocol.Audits.EmailVerificationRequestIssueReason, LazyMarkdownIssueDescription>([
73
+ [
74
+ Protocol.Audits.EmailVerificationRequestIssueReason.InvalidEmail,
75
+ {
76
+ file: 'emailVerificationRequestInvalidEmail.md',
77
+ links: [{
78
+ link: 'https://github.com/WICG/email-verification-protocol',
79
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
80
+ }],
81
+ },
82
+ ],
83
+ [
84
+ Protocol.Audits.EmailVerificationRequestIssueReason.DnsFetchFailed,
85
+ {
86
+ file: 'emailVerificationRequestDnsFetchFailed.md',
87
+ links: [{
88
+ link: 'https://github.com/WICG/email-verification-protocol',
89
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
90
+ }],
91
+ },
92
+ ],
93
+ [
94
+ Protocol.Audits.EmailVerificationRequestIssueReason.DnsInvalidRecord,
95
+ {
96
+ file: 'emailVerificationRequestDnsInvalidRecord.md',
97
+ links: [{
98
+ link: 'https://github.com/WICG/email-verification-protocol',
99
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
100
+ }],
101
+ },
102
+ ],
103
+ [
104
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownHttpNotFound,
105
+ {
106
+ file: 'emailVerificationRequestWellKnownHttpNotFound.md',
107
+ links: [{
108
+ link: 'https://github.com/WICG/email-verification-protocol',
109
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
110
+ }],
111
+ },
112
+ ],
113
+ [
114
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownNoResponse,
115
+ {
116
+ file: 'emailVerificationRequestWellKnownNoResponse.md',
117
+ links: [{
118
+ link: 'https://github.com/WICG/email-verification-protocol',
119
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
120
+ }],
121
+ },
122
+ ],
123
+ [
124
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownInvalidResponse,
125
+ {
126
+ file: 'emailVerificationRequestWellKnownInvalidResponse.md',
127
+ links: [{
128
+ link: 'https://github.com/WICG/email-verification-protocol',
129
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
130
+ }],
131
+ },
132
+ ],
133
+ [
134
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownListEmpty,
135
+ {
136
+ file: 'emailVerificationRequestWellKnownListEmpty.md',
137
+ links: [{
138
+ link: 'https://github.com/WICG/email-verification-protocol',
139
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
140
+ }],
141
+ },
142
+ ],
143
+ [
144
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownInvalidContentType,
145
+ {
146
+ file: 'emailVerificationRequestWellKnownInvalidContentType.md',
147
+ links: [{
148
+ link: 'https://github.com/WICG/email-verification-protocol',
149
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
150
+ }],
151
+ },
152
+ ],
153
+ [
154
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownMissingIssuanceEndpoint,
155
+ {
156
+ file: 'emailVerificationRequestWellKnownMissingIssuanceEndpoint.md',
157
+ links: [{
158
+ link: 'https://github.com/WICG/email-verification-protocol',
159
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
160
+ }],
161
+ },
162
+ ],
163
+ [
164
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownIssuanceEndpointCrossOrigin,
165
+ {
166
+ file: 'emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md',
167
+ links: [{
168
+ link: 'https://github.com/WICG/email-verification-protocol',
169
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
170
+ }],
171
+ },
172
+ ],
173
+ [
174
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownUnsupportedSigningAlgorithm,
175
+ {
176
+ file: 'emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md',
177
+ links: [{
178
+ link: 'https://github.com/WICG/email-verification-protocol',
179
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
180
+ }],
181
+ },
182
+ ],
183
+ [
184
+ Protocol.Audits.EmailVerificationRequestIssueReason.TokenHttpNotFound,
185
+ {
186
+ file: 'emailVerificationRequestTokenHttpNotFound.md',
187
+ links: [{
188
+ link: 'https://github.com/WICG/email-verification-protocol',
189
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
190
+ }],
191
+ },
192
+ ],
193
+ [
194
+ Protocol.Audits.EmailVerificationRequestIssueReason.TokenNoResponse,
195
+ {
196
+ file: 'emailVerificationRequestTokenNoResponse.md',
197
+ links: [{
198
+ link: 'https://github.com/WICG/email-verification-protocol',
199
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
200
+ }],
201
+ },
202
+ ],
203
+ [
204
+ Protocol.Audits.EmailVerificationRequestIssueReason.TokenInvalidResponse,
205
+ {
206
+ file: 'emailVerificationRequestTokenInvalidResponse.md',
207
+ links: [{
208
+ link: 'https://github.com/WICG/email-verification-protocol',
209
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
210
+ }],
211
+ },
212
+ ],
213
+ [
214
+ Protocol.Audits.EmailVerificationRequestIssueReason.TokenInvalidContentType,
215
+ {
216
+ file: 'emailVerificationRequestTokenInvalidContentType.md',
217
+ links: [{
218
+ link: 'https://github.com/WICG/email-verification-protocol',
219
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
220
+ }],
221
+ },
222
+ ],
223
+ [
224
+ Protocol.Audits.EmailVerificationRequestIssueReason.TokenMalformedSdJwt,
225
+ {
226
+ file: 'emailVerificationRequestTokenMalformedSdJwt.md',
227
+ links: [{
228
+ link: 'https://github.com/WICG/email-verification-protocol',
229
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
230
+ }],
231
+ },
232
+ ],
233
+ [
234
+ Protocol.Audits.EmailVerificationRequestIssueReason.TokenInvalidSdJwt,
235
+ {
236
+ file: 'emailVerificationRequestTokenInvalidSdJwt.md',
237
+ links: [{
238
+ link: 'https://github.com/WICG/email-verification-protocol',
239
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
240
+ }],
241
+ },
242
+ ],
243
+ [
244
+ Protocol.Audits.EmailVerificationRequestIssueReason.KeyBindingSigningFailed,
245
+ {
246
+ file: 'emailVerificationRequestKeyBindingSigningFailed.md',
247
+ links: [{
248
+ link: 'https://github.com/WICG/email-verification-protocol',
249
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
250
+ }],
251
+ },
252
+ ],
253
+ [
254
+ Protocol.Audits.EmailVerificationRequestIssueReason.RpOriginIsOpaque,
255
+ {
256
+ file: 'emailVerificationRequestRpOriginIsOpaque.md',
257
+ links: [{
258
+ link: 'https://github.com/WICG/email-verification-protocol',
259
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
260
+ }],
261
+ },
262
+ ],
263
+ [
264
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownMissingAccountsEndpoint,
265
+ {
266
+ file: 'emailVerificationRequestWellKnownMissingAccountsEndpoint.md',
267
+ links: [{
268
+ link: 'https://github.com/WICG/email-verification-protocol',
269
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
270
+ }],
271
+ },
272
+ ],
273
+ [
274
+ Protocol.Audits.EmailVerificationRequestIssueReason.UserLoggedOut,
275
+ {
276
+ file: 'emailVerificationRequestUserLoggedOut.md',
277
+ links: [{
278
+ link: 'https://github.com/WICG/email-verification-protocol',
279
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
280
+ }],
281
+ },
282
+ ],
283
+ [
284
+ Protocol.Audits.EmailVerificationRequestIssueReason.WellKnownAccountsEndpointCrossOrigin,
285
+ {
286
+ file: 'emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md',
287
+ links: [{
288
+ link: 'https://github.com/WICG/email-verification-protocol',
289
+ linkTitle: i18nLazyString(UIStrings.emailVerification),
290
+ }],
291
+ },
292
+ ],
293
+ ]);
@@ -17,6 +17,7 @@ import {CorsIssue} from './CorsIssue.js';
17
17
  import {CrossOriginEmbedderPolicyIssue, isCrossOriginEmbedderPolicyIssue} from './CrossOriginEmbedderPolicyIssue.js';
18
18
  import {DeprecationIssue} from './DeprecationIssue.js';
19
19
  import {ElementAccessibilityIssue} from './ElementAccessibilityIssue.js';
20
+ import {EmailVerificationRequestIssue} from './EmailVerificationRequestIssue.js';
20
21
  import {FederatedAuthRequestIssue} from './FederatedAuthRequestIssue.js';
21
22
  import {GenericIssue} from './GenericIssue.js';
22
23
  import {HeavyAdIssue} from './HeavyAdIssue.js';
@@ -105,6 +106,10 @@ const issueCodeHandlers = new Map<
105
106
  Protocol.Audits.InspectorIssueCode.ClientHintIssue,
106
107
  ClientHintIssue.fromInspectorIssue,
107
108
  ],
109
+ [
110
+ Protocol.Audits.InspectorIssueCode.EmailVerificationRequestIssue,
111
+ EmailVerificationRequestIssue.fromInspectorIssue,
112
+ ],
108
113
  [
109
114
  Protocol.Audits.InspectorIssueCode.FederatedAuthRequestIssue,
110
115
  FederatedAuthRequestIssue.fromInspectorIssue,
@@ -0,0 +1 @@
1
+ # Email verification request failed because the DNS fetch failed.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the DNS record is invalid.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the email address is invalid.
@@ -0,0 +1 @@
1
+ # Email verification request failed because key binding signing failed.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the Relying Party origin is opaque.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the token endpoint was not found (HTTP 404).
@@ -0,0 +1 @@
1
+ # Email verification request failed because the token endpoint had an invalid Content-Type.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the token endpoint response was invalid.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the token endpoint returned an invalid SD-JWT.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the token endpoint returned a malformed SD-JWT.
@@ -0,0 +1 @@
1
+ # Email verification request failed because there was no response from the token endpoint.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the user is logged out.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the accounts endpoint in the well-known file is cross-origin.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the well-known file was not found (HTTP 404).
@@ -0,0 +1 @@
1
+ # Email verification request failed because the well-known file had an invalid Content-Type.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the well-known file response was invalid.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the issuance endpoint in the well-known file is cross-origin.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the well-known file list was empty.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the well-known file is missing the accounts endpoint.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the well-known file is missing the issuance endpoint.
@@ -0,0 +1 @@
1
+ # Email verification request failed because there was no response when fetching the well-known file.
@@ -0,0 +1 @@
1
+ # Email verification request failed because the well-known file specifies an unsupported signing algorithm.
@@ -13,6 +13,7 @@ import * as CorsIssue from './CorsIssue.js';
13
13
  import * as CrossOriginEmbedderPolicyIssue from './CrossOriginEmbedderPolicyIssue.js';
14
14
  import * as DeprecationIssue from './DeprecationIssue.js';
15
15
  import * as ElementAccessibilityIssue from './ElementAccessibilityIssue.js';
16
+ import * as EmailVerificationRequestIssue from './EmailVerificationRequestIssue.js';
16
17
  import * as FederatedAuthUserInfoRequestIssue from './FederatedAuthUserInfoRequestIssue.js';
17
18
  import * as GenericIssue from './GenericIssue.js';
18
19
  import * as HeavyAdIssue from './HeavyAdIssue.js';
@@ -47,6 +48,7 @@ export {
47
48
  CrossOriginEmbedderPolicyIssue,
48
49
  DeprecationIssue,
49
50
  ElementAccessibilityIssue,
51
+ EmailVerificationRequestIssue,
50
52
  FederatedAuthUserInfoRequestIssue,
51
53
  GenericIssue,
52
54
  HeavyAdIssue,