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.
- package/.agents/skills/verification/SKILL.md +1 -1
- package/front_end/core/common/Color.ts +0 -4
- package/front_end/core/i18n/collect-ui-strings.js +3 -3
- package/front_end/core/root/Runtime.ts +5 -0
- package/front_end/core/sdk/SourceMap.ts +8 -3
- package/front_end/generated/ARIAProperties.js +17 -0
- package/front_end/generated/InspectorBackendCommands.ts +7 -5
- package/front_end/generated/SupportedCSSProperties.js +1 -0
- package/front_end/generated/protocol.ts +40 -2
- package/front_end/models/ai_assistance/AiConversation.ts +0 -8
- package/front_end/models/ai_assistance/AiHistoryStorage.ts +0 -1
- package/front_end/models/ai_assistance/AiUtils.ts +9 -0
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +17 -36
- package/front_end/models/ai_assistance/agents/AiAgent.ts +34 -10
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +6 -0
- package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +0 -2
- package/front_end/models/ai_assistance/agents/NetworkAgent.snapshot.txt +19 -0
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +6 -0
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +20 -2
- package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
- package/front_end/models/bindings/CompilerScriptMapping.ts +12 -4
- package/front_end/models/breakpoints/BreakpointManager.ts +54 -2
- package/front_end/models/greendev/Prototypes.ts +0 -7
- package/front_end/models/issues_manager/EmailVerificationRequestIssue.ts +293 -0
- package/front_end/models/issues_manager/IssuesManager.ts +5 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestInvalidEmail.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestUserLoggedOut.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -0
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -0
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +1739 -1734
- package/front_end/models/stack_trace/DetailedErrorStackParser.ts +9 -1
- package/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +21 -25
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -75
- package/front_end/panels/ai_assistance/components/AccessibilityAgentMarkdownRenderer.ts +10 -3
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +66 -1
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +4 -4
- package/front_end/panels/console/ConsoleViewMessage.ts +0 -90
- package/front_end/panels/elements/StylePropertiesSection.ts +6 -2
- package/front_end/panels/elements/StylesSidebarPane.ts +9 -0
- package/front_end/panels/elements/elements-meta.ts +14 -0
- package/front_end/panels/network/NetworkLogView.ts +4 -1
- package/front_end/panels/network/RequestHeadersView.ts +55 -19
- package/front_end/panels/recorder/components/ReplaySection.ts +28 -16
- package/front_end/panels/recorder/converters/LighthouseConverter.snapshot.txt +47 -0
- package/front_end/panels/recorder/converters/PuppeteerConverter.snapshot.txt +49 -0
- package/front_end/panels/recorder/converters/PuppeteerReplayConverter.snapshot.txt +33 -0
- package/front_end/panels/settings/SettingsScreen.ts +1 -2
- package/front_end/panels/sources/BreakpointsView.ts +23 -42
- package/front_end/panels/sources/DebuggerPlugin.ts +12 -5
- package/front_end/panels/sources/PersistenceActions.ts +21 -7
- package/front_end/panels/timeline/TimelineDetailsView.ts +36 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +2 -2
- package/front_end/third_party/puppeteer-replay/README.chromium +2 -2
- package/front_end/third_party/puppeteer-replay/package/lib/cli.js +84 -80
- package/front_end/third_party/puppeteer-replay/package/lib/cli.js.map +1 -1
- package/front_end/third_party/puppeteer-replay/package/lib/extension-test.js +79 -83
- package/front_end/third_party/puppeteer-replay/package/lib/extension-test.js.map +1 -1
- package/front_end/third_party/puppeteer-replay/package/lib/main.d.ts +43 -171
- package/front_end/third_party/puppeteer-replay/package/lib/main.js +51 -206
- package/front_end/third_party/puppeteer-replay/package/lib/main.js.map +1 -1
- package/front_end/third_party/puppeteer-replay/package/package.json +37 -67
- package/front_end/ui/legacy/Dialog.ts +1 -0
- package/front_end/ui/legacy/UIUtils.ts +4 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
- package/mcp/mcp.ts +1 -6
- package/package.json +8 -10
- package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgent.ts +0 -1015
- package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgentOverlay.ts +0 -87
- package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.cjs +0 -2099
- package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.cjs.map +0 -1
- package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.d.cts +0 -686
- package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.d.ts +0 -35
- 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 {
|
|
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 {
|
|
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
|
|
235
|
-
if (!
|
|
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
|
-
|
|
243
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Email verification request failed because the DNS fetch failed.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md
ADDED
|
@@ -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.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Email verification request failed because the Relying Party origin is opaque.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md
ADDED
|
@@ -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.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Email verification request failed because the token endpoint response was invalid.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Email verification request failed because the token endpoint returned an invalid SD-JWT.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Email verification request failed because the token endpoint returned a malformed SD-JWT.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md
ADDED
|
@@ -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.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md
ADDED
|
@@ -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.
|
package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md
ADDED
|
@@ -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,
|