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
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devtools-verification
3
- description: MANDATORY: Activate this skill ANY TIME you need to build the project, run tests, or verify code health in DevTools. You MUST use this skill before executing commands like npm test, npm run build, autoninja, or linters, as it contains critical, repository-specific instructions on how to correctly format these commands, filter test runs, and interpret failures.
3
+ description: "MANDATORY: Activate this skill ANY TIME you need to build the project, run tests, or verify code health in DevTools. You MUST use this skill before executing commands like npm test, npm run build, autoninja, or linters, as it contains critical, repository-specific instructions on how to correctly format these commands, filter test runs, and interpret failures."
4
4
  ---
5
5
 
6
6
  # Instructions on how to verify your changes
@@ -2247,10 +2247,6 @@ export class Legacy implements Color {
2247
2247
  }
2248
2248
  }
2249
2249
 
2250
- export const Regex =
2251
- /((?:rgba?|hsla?|hwba?|lab|lch|oklab|oklch|color)\([^)]+\)|#[0-9a-fA-F]{8}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3,4}|\b[a-zA-Z]+\b(?!-))/g;
2252
- export const ColorMixRegex = /color-mix\(.*,\s*(?<firstColor>.+)\s*,\s*(?<secondColor>.+)\s*\)/g;
2253
-
2254
2250
  const COLOR_TO_RGBA_ENTRIES: Array<readonly[string, number[]]> = [
2255
2251
  ['aliceblue', [240, 248, 255]],
2256
2252
  ['antiquewhite', [250, 235, 215]],
@@ -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 glob from 'glob';
5
+ import {globSync} from 'node:fs';
6
6
  import * as path from 'node:path';
7
7
  import yargs from 'yargs';
8
8
  import {hideBin} from 'yargs/helpers';
@@ -68,9 +68,9 @@ for (const directory of inputDirectories) {
68
68
  ...collectAllStringsInDir(directory),
69
69
  };
70
70
 
71
- const fs = glob.sync('**/*.{js,ts,gn}', {
71
+ const fs = globSync('**/*.{js,ts,gn}', {
72
72
  cwd: directory,
73
- ignore: IGNORED_PATH_COMPONENTS,
73
+ exclude: IGNORED_PATH_COMPONENTS,
74
74
  });
75
75
  files.push(...fs.map(f => path.join(directory, f)));
76
76
  }
@@ -625,6 +625,10 @@ interface UseGcaApi {
625
625
  enabled: boolean;
626
626
  }
627
627
 
628
+ interface DevToolsAiV2Architecture {
629
+ enabled: boolean;
630
+ }
631
+
628
632
  interface DevToolsProtocolMonitor {
629
633
  enabled: boolean;
630
634
  }
@@ -663,6 +667,7 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
663
667
  devToolsAiAssistanceAccessibilityAgent: HostConfigAiAssistanceAccessibilityAgent,
664
668
  devToolsAiAssistanceStorageAgent: HostConfigAiAssistanceStorageAgent,
665
669
  devToolsAiAssistanceV2: HostConfigAiAssistanceV2,
670
+ devToolsAiV2Architecture: DevToolsAiV2Architecture,
666
671
  devToolsAiCodeCompletion: HostConfigAiCodeCompletion,
667
672
  devToolsAiCodeGeneration: HostConfigAiCodeGeneration,
668
673
  devToolsAiCodeCompletionStyles: HostConfigAiCodeCompletionStyles,
@@ -356,10 +356,15 @@ export class SourceMap {
356
356
  return reverseMappings.slice(startIndex, endIndex);
357
357
  }
358
358
 
359
- findReverseEntries(sourceURL: Platform.DevToolsPath.UrlString, lineNumber: number, columnNumber: number):
360
- SourceMapEntry[] {
359
+ findReverseEntries(
360
+ sourceURL: Platform.DevToolsPath.UrlString, lineNumber: number, columnNumber: number,
361
+ filterContiguous = false): SourceMapEntry[] {
361
362
  const mappings = this.mappings();
362
- return this.findReverseIndices(sourceURL, lineNumber, columnNumber).map(i => mappings[i]);
363
+ let indices = this.findReverseIndices(sourceURL, lineNumber, columnNumber);
364
+ if (filterContiguous) {
365
+ indices = indices.filter((index, i) => i === 0 || index !== indices[i - 1] + 1);
366
+ }
367
+ return indices.map(i => mappings[i]);
363
368
  }
364
369
 
365
370
  findReverseRanges(sourceURL: Platform.DevToolsPath.UrlString, lineNumber: number, columnNumber: number):
@@ -7,6 +7,23 @@ export const config = {
7
7
  {
8
8
  "isGlobal": true,
9
9
  "name": "aria-actions",
10
+ "preventedOnRoles": [
11
+ "caption",
12
+ "code",
13
+ "definition",
14
+ "deletion",
15
+ "emphasis",
16
+ "generic",
17
+ "insertion",
18
+ "mark",
19
+ "paragraph",
20
+ "strong",
21
+ "subscript",
22
+ "suggestion",
23
+ "superscript",
24
+ "term",
25
+ "time"
26
+ ],
10
27
  "type": "IDREF_list"
11
28
  },
12
29
  {
@@ -79,7 +79,7 @@ inspectorBackend.registerEnum("Audits.HeavyAdReason", {NetworkTotalLimit: "Netwo
79
79
  inspectorBackend.registerEnum("Audits.ContentSecurityPolicyViolationType", {KInlineViolation: "kInlineViolation", KEvalViolation: "kEvalViolation", KURLViolation: "kURLViolation", KSRIViolation: "kSRIViolation", KTrustedTypesSinkViolation: "kTrustedTypesSinkViolation", KTrustedTypesPolicyViolation: "kTrustedTypesPolicyViolation", KWasmEvalViolation: "kWasmEvalViolation"});
80
80
  inspectorBackend.registerEnum("Audits.SharedArrayBufferIssueType", {TransferIssue: "TransferIssue", CreationIssue: "CreationIssue"});
81
81
  inspectorBackend.registerEnum("Audits.AttributionReportingIssueType", {PermissionPolicyDisabled: "PermissionPolicyDisabled", UntrustworthyReportingOrigin: "UntrustworthyReportingOrigin", InsecureContext: "InsecureContext", InvalidHeader: "InvalidHeader", InvalidRegisterTriggerHeader: "InvalidRegisterTriggerHeader", SourceAndTriggerHeaders: "SourceAndTriggerHeaders", SourceIgnored: "SourceIgnored", TriggerIgnored: "TriggerIgnored", OsSourceIgnored: "OsSourceIgnored", OsTriggerIgnored: "OsTriggerIgnored", InvalidRegisterOsSourceHeader: "InvalidRegisterOsSourceHeader", InvalidRegisterOsTriggerHeader: "InvalidRegisterOsTriggerHeader", WebAndOsHeaders: "WebAndOsHeaders", NoWebOrOsSupport: "NoWebOrOsSupport", NavigationRegistrationWithoutTransientUserActivation: "NavigationRegistrationWithoutTransientUserActivation", InvalidInfoHeader: "InvalidInfoHeader", NoRegisterSourceHeader: "NoRegisterSourceHeader", NoRegisterTriggerHeader: "NoRegisterTriggerHeader", NoRegisterOsSourceHeader: "NoRegisterOsSourceHeader", NoRegisterOsTriggerHeader: "NoRegisterOsTriggerHeader", NavigationRegistrationUniqueScopeAlreadySet: "NavigationRegistrationUniqueScopeAlreadySet"});
82
- inspectorBackend.registerEnum("Audits.SharedDictionaryError", {UseErrorCrossOriginNoCorsRequest: "UseErrorCrossOriginNoCorsRequest", UseErrorDictionaryLoadFailure: "UseErrorDictionaryLoadFailure", UseErrorMatchingDictionaryNotUsed: "UseErrorMatchingDictionaryNotUsed", UseErrorUnexpectedContentDictionaryHeader: "UseErrorUnexpectedContentDictionaryHeader", WriteErrorCossOriginNoCorsRequest: "WriteErrorCossOriginNoCorsRequest", WriteErrorDisallowedBySettings: "WriteErrorDisallowedBySettings", WriteErrorExpiredResponse: "WriteErrorExpiredResponse", WriteErrorFeatureDisabled: "WriteErrorFeatureDisabled", WriteErrorInsufficientResources: "WriteErrorInsufficientResources", WriteErrorInvalidMatchField: "WriteErrorInvalidMatchField", WriteErrorInvalidStructuredHeader: "WriteErrorInvalidStructuredHeader", WriteErrorInvalidTTLField: "WriteErrorInvalidTTLField", WriteErrorNavigationRequest: "WriteErrorNavigationRequest", WriteErrorNoMatchField: "WriteErrorNoMatchField", WriteErrorNonIntegerTTLField: "WriteErrorNonIntegerTTLField", WriteErrorNonListMatchDestField: "WriteErrorNonListMatchDestField", WriteErrorNonSecureContext: "WriteErrorNonSecureContext", WriteErrorNonStringIdField: "WriteErrorNonStringIdField", WriteErrorNonStringInMatchDestList: "WriteErrorNonStringInMatchDestList", WriteErrorNonStringMatchField: "WriteErrorNonStringMatchField", WriteErrorNonTokenTypeField: "WriteErrorNonTokenTypeField", WriteErrorRequestAborted: "WriteErrorRequestAborted", WriteErrorShuttingDown: "WriteErrorShuttingDown", WriteErrorTooLongIdField: "WriteErrorTooLongIdField", WriteErrorUnsupportedType: "WriteErrorUnsupportedType"});
82
+ inspectorBackend.registerEnum("Audits.SharedDictionaryError", {UseErrorCrossOriginNoCorsRequest: "UseErrorCrossOriginNoCorsRequest", UseErrorDictionaryLoadFailure: "UseErrorDictionaryLoadFailure", UseErrorMatchingDictionaryNotUsed: "UseErrorMatchingDictionaryNotUsed", UseErrorUnexpectedContentDictionaryHeader: "UseErrorUnexpectedContentDictionaryHeader", WriteErrorCossOriginNoCorsRequest: "WriteErrorCossOriginNoCorsRequest", WriteErrorDisallowedBySettings: "WriteErrorDisallowedBySettings", WriteErrorExpiredResponse: "WriteErrorExpiredResponse", WriteErrorFeatureDisabled: "WriteErrorFeatureDisabled", WriteErrorInsufficientResources: "WriteErrorInsufficientResources", WriteErrorInvalidMatchField: "WriteErrorInvalidMatchField", WriteErrorInvalidStructuredHeader: "WriteErrorInvalidStructuredHeader", WriteErrorInvalidTTLField: "WriteErrorInvalidTTLField", WriteErrorNavigationRequest: "WriteErrorNavigationRequest", WriteErrorNoMatchField: "WriteErrorNoMatchField", WriteErrorNonIntegerTTLField: "WriteErrorNonIntegerTTLField", WriteErrorNonListMatchDestField: "WriteErrorNonListMatchDestField", WriteErrorNonSecureContext: "WriteErrorNonSecureContext", WriteErrorNonStringIdField: "WriteErrorNonStringIdField", WriteErrorNonStringInMatchDestList: "WriteErrorNonStringInMatchDestList", WriteErrorInvalidMatchDestList: "WriteErrorInvalidMatchDestList", WriteErrorNonStringMatchField: "WriteErrorNonStringMatchField", WriteErrorNonTokenTypeField: "WriteErrorNonTokenTypeField", WriteErrorRequestAborted: "WriteErrorRequestAborted", WriteErrorShuttingDown: "WriteErrorShuttingDown", WriteErrorTooLongIdField: "WriteErrorTooLongIdField", WriteErrorUnsupportedType: "WriteErrorUnsupportedType"});
83
83
  inspectorBackend.registerEnum("Audits.SRIMessageSignatureError", {MissingSignatureHeader: "MissingSignatureHeader", MissingSignatureInputHeader: "MissingSignatureInputHeader", InvalidSignatureHeader: "InvalidSignatureHeader", InvalidSignatureInputHeader: "InvalidSignatureInputHeader", SignatureHeaderValueIsNotByteSequence: "SignatureHeaderValueIsNotByteSequence", SignatureHeaderValueIsParameterized: "SignatureHeaderValueIsParameterized", SignatureHeaderValueIsIncorrectLength: "SignatureHeaderValueIsIncorrectLength", SignatureInputHeaderMissingLabel: "SignatureInputHeaderMissingLabel", SignatureInputHeaderValueNotInnerList: "SignatureInputHeaderValueNotInnerList", SignatureInputHeaderValueMissingComponents: "SignatureInputHeaderValueMissingComponents", SignatureInputHeaderInvalidComponentType: "SignatureInputHeaderInvalidComponentType", SignatureInputHeaderInvalidComponentName: "SignatureInputHeaderInvalidComponentName", SignatureInputHeaderInvalidHeaderComponentParameter: "SignatureInputHeaderInvalidHeaderComponentParameter", SignatureInputHeaderInvalidDerivedComponentParameter: "SignatureInputHeaderInvalidDerivedComponentParameter", SignatureInputHeaderKeyIdLength: "SignatureInputHeaderKeyIdLength", SignatureInputHeaderInvalidParameter: "SignatureInputHeaderInvalidParameter", SignatureInputHeaderMissingRequiredParameters: "SignatureInputHeaderMissingRequiredParameters", ValidationFailedSignatureExpired: "ValidationFailedSignatureExpired", ValidationFailedInvalidLength: "ValidationFailedInvalidLength", ValidationFailedSignatureMismatch: "ValidationFailedSignatureMismatch", ValidationFailedIntegrityMismatch: "ValidationFailedIntegrityMismatch", SignatureBaseUnknownDerivedComponent: "SignatureBaseUnknownDerivedComponent", SignatureBaseMissingHeader: "SignatureBaseMissingHeader", SignatureBaseInvalidUnencodedDigest: "SignatureBaseInvalidUnencodedDigest", SignatureBaseUnsupportedComponent: "SignatureBaseUnsupportedComponent"});
84
84
  inspectorBackend.registerEnum("Audits.UnencodedDigestError", {MalformedDictionary: "MalformedDictionary", UnknownAlgorithm: "UnknownAlgorithm", IncorrectDigestType: "IncorrectDigestType", IncorrectDigestLength: "IncorrectDigestLength"});
85
85
  inspectorBackend.registerEnum("Audits.ConnectionAllowlistError", {InvalidHeader: "InvalidHeader", MoreThanOneList: "MoreThanOneList", ItemNotInnerList: "ItemNotInnerList", InvalidAllowlistItemType: "InvalidAllowlistItemType", ReportingEndpointNotToken: "ReportingEndpointNotToken", InvalidUrlPattern: "InvalidUrlPattern"});
@@ -87,13 +87,14 @@ inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {FormLabelForNameE
87
87
  inspectorBackend.registerEnum("Audits.ClientHintIssueReason", {MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML"});
88
88
  inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", {ShouldEmbargo: "ShouldEmbargo", TooManyRequests: "TooManyRequests", WellKnownHttpNotFound: "WellKnownHttpNotFound", WellKnownNoResponse: "WellKnownNoResponse", WellKnownInvalidResponse: "WellKnownInvalidResponse", WellKnownListEmpty: "WellKnownListEmpty", WellKnownInvalidContentType: "WellKnownInvalidContentType", ConfigNotInWellKnown: "ConfigNotInWellKnown", WellKnownTooBig: "WellKnownTooBig", ConfigHttpNotFound: "ConfigHttpNotFound", ConfigNoResponse: "ConfigNoResponse", ConfigInvalidResponse: "ConfigInvalidResponse", ConfigInvalidContentType: "ConfigInvalidContentType", IdpNotPotentiallyTrustworthy: "IdpNotPotentiallyTrustworthy", DisabledInSettings: "DisabledInSettings", DisabledInFlags: "DisabledInFlags", ErrorFetchingSignin: "ErrorFetchingSignin", InvalidSigninResponse: "InvalidSigninResponse", AccountsHttpNotFound: "AccountsHttpNotFound", AccountsNoResponse: "AccountsNoResponse", AccountsInvalidResponse: "AccountsInvalidResponse", AccountsListEmpty: "AccountsListEmpty", AccountsInvalidContentType: "AccountsInvalidContentType", IdTokenHttpNotFound: "IdTokenHttpNotFound", IdTokenNoResponse: "IdTokenNoResponse", IdTokenInvalidResponse: "IdTokenInvalidResponse", IdTokenIdpErrorResponse: "IdTokenIdpErrorResponse", IdTokenCrossSiteIdpErrorResponse: "IdTokenCrossSiteIdpErrorResponse", IdTokenInvalidRequest: "IdTokenInvalidRequest", IdTokenInvalidContentType: "IdTokenInvalidContentType", ErrorIdToken: "ErrorIdToken", Canceled: "Canceled", RpPageNotVisible: "RpPageNotVisible", SilentMediationFailure: "SilentMediationFailure", NotSignedInWithIdp: "NotSignedInWithIdp", MissingTransientUserActivation: "MissingTransientUserActivation", ReplacedByActiveMode: "ReplacedByActiveMode", RelyingPartyOriginIsOpaque: "RelyingPartyOriginIsOpaque", TypeNotMatching: "TypeNotMatching", UiDismissedNoEmbargo: "UiDismissedNoEmbargo", CorsError: "CorsError", SuppressedBySegmentationPlatform: "SuppressedBySegmentationPlatform"});
89
89
  inspectorBackend.registerEnum("Audits.FederatedAuthUserInfoRequestIssueReason", {NotSameOrigin: "NotSameOrigin", NotIframe: "NotIframe", NotPotentiallyTrustworthy: "NotPotentiallyTrustworthy", NoAPIPermission: "NoApiPermission", NotSignedInWithIdp: "NotSignedInWithIdp", NoAccountSharingPermission: "NoAccountSharingPermission", InvalidConfigOrWellKnown: "InvalidConfigOrWellKnown", InvalidAccountsResponse: "InvalidAccountsResponse", NoReturningUserFromFetchedAccounts: "NoReturningUserFromFetchedAccounts"});
90
+ inspectorBackend.registerEnum("Audits.EmailVerificationRequestIssueReason", {InvalidEmail: "InvalidEmail", DnsFetchFailed: "DnsFetchFailed", DnsInvalidRecord: "DnsInvalidRecord", WellKnownHttpNotFound: "WellKnownHttpNotFound", WellKnownNoResponse: "WellKnownNoResponse", WellKnownInvalidResponse: "WellKnownInvalidResponse", WellKnownListEmpty: "WellKnownListEmpty", WellKnownInvalidContentType: "WellKnownInvalidContentType", WellKnownMissingIssuanceEndpoint: "WellKnownMissingIssuanceEndpoint", WellKnownIssuanceEndpointCrossOrigin: "WellKnownIssuanceEndpointCrossOrigin", WellKnownUnsupportedSigningAlgorithm: "WellKnownUnsupportedSigningAlgorithm", TokenHttpNotFound: "TokenHttpNotFound", TokenNoResponse: "TokenNoResponse", TokenInvalidResponse: "TokenInvalidResponse", TokenInvalidContentType: "TokenInvalidContentType", TokenMalformedSdJwt: "TokenMalformedSdJwt", TokenInvalidSdJwt: "TokenInvalidSdJwt", KeyBindingSigningFailed: "KeyBindingSigningFailed", RpOriginIsOpaque: "RpOriginIsOpaque", WellKnownMissingAccountsEndpoint: "WellKnownMissingAccountsEndpoint", UserLoggedOut: "UserLoggedOut", WellKnownAccountsEndpointCrossOrigin: "WellKnownAccountsEndpointCrossOrigin"});
90
91
  inspectorBackend.registerEnum("Audits.PartitioningBlobURLInfo", {BlockedCrossPartitionFetching: "BlockedCrossPartitionFetching", EnforceNoopenerForNavigation: "EnforceNoopenerForNavigation"});
91
92
  inspectorBackend.registerEnum("Audits.ElementAccessibilityIssueReason", {DisallowedSelectChild: "DisallowedSelectChild", DisallowedOptGroupChild: "DisallowedOptGroupChild", NonPhrasingContentOptionChild: "NonPhrasingContentOptionChild", InteractiveContentOptionChild: "InteractiveContentOptionChild", InteractiveContentLegendChild: "InteractiveContentLegendChild", InteractiveContentSummaryDescendant: "InteractiveContentSummaryDescendant"});
92
93
  inspectorBackend.registerEnum("Audits.StyleSheetLoadingIssueReason", {LateImportRule: "LateImportRule", RequestFailed: "RequestFailed"});
93
94
  inspectorBackend.registerEnum("Audits.PropertyRuleIssueReason", {InvalidSyntax: "InvalidSyntax", InvalidInitialValue: "InvalidInitialValue", InvalidInherits: "InvalidInherits", InvalidName: "InvalidName"});
94
95
  inspectorBackend.registerEnum("Audits.UserReidentificationIssueType", {BlockedFrameNavigation: "BlockedFrameNavigation", BlockedSubresource: "BlockedSubresource", NoisedCanvasReadback: "NoisedCanvasReadback"});
95
96
  inspectorBackend.registerEnum("Audits.PermissionElementIssueType", {InvalidType: "InvalidType", FencedFrameDisallowed: "FencedFrameDisallowed", CspFrameAncestorsMissing: "CspFrameAncestorsMissing", PermissionsPolicyBlocked: "PermissionsPolicyBlocked", PaddingRightUnsupported: "PaddingRightUnsupported", PaddingBottomUnsupported: "PaddingBottomUnsupported", InsetBoxShadowUnsupported: "InsetBoxShadowUnsupported", RequestInProgress: "RequestInProgress", UntrustedEvent: "UntrustedEvent", RegistrationFailed: "RegistrationFailed", TypeNotSupported: "TypeNotSupported", InvalidTypeActivation: "InvalidTypeActivation", SecurityChecksFailed: "SecurityChecksFailed", ActivationDisabled: "ActivationDisabled", GeolocationDeprecated: "GeolocationDeprecated", InvalidDisplayStyle: "InvalidDisplayStyle", NonOpaqueColor: "NonOpaqueColor", LowContrast: "LowContrast", FontSizeTooSmall: "FontSizeTooSmall", FontSizeTooLarge: "FontSizeTooLarge", InvalidSizeValue: "InvalidSizeValue"});
96
- inspectorBackend.registerEnum("Audits.InspectorIssueCode", {CookieIssue: "CookieIssue", MixedContentIssue: "MixedContentIssue", BlockedByResponseIssue: "BlockedByResponseIssue", HeavyAdIssue: "HeavyAdIssue", ContentSecurityPolicyIssue: "ContentSecurityPolicyIssue", SharedArrayBufferIssue: "SharedArrayBufferIssue", CorsIssue: "CorsIssue", AttributionReportingIssue: "AttributionReportingIssue", QuirksModeIssue: "QuirksModeIssue", PartitioningBlobURLIssue: "PartitioningBlobURLIssue", NavigatorUserAgentIssue: "NavigatorUserAgentIssue", GenericIssue: "GenericIssue", DeprecationIssue: "DeprecationIssue", ClientHintIssue: "ClientHintIssue", FederatedAuthRequestIssue: "FederatedAuthRequestIssue", BounceTrackingIssue: "BounceTrackingIssue", CookieDeprecationMetadataIssue: "CookieDeprecationMetadataIssue", StylesheetLoadingIssue: "StylesheetLoadingIssue", FederatedAuthUserInfoRequestIssue: "FederatedAuthUserInfoRequestIssue", PropertyRuleIssue: "PropertyRuleIssue", SharedDictionaryIssue: "SharedDictionaryIssue", ElementAccessibilityIssue: "ElementAccessibilityIssue", SRIMessageSignatureIssue: "SRIMessageSignatureIssue", UnencodedDigestIssue: "UnencodedDigestIssue", ConnectionAllowlistIssue: "ConnectionAllowlistIssue", UserReidentificationIssue: "UserReidentificationIssue", PermissionElementIssue: "PermissionElementIssue", PerformanceIssue: "PerformanceIssue", SelectivePermissionsInterventionIssue: "SelectivePermissionsInterventionIssue"});
97
+ inspectorBackend.registerEnum("Audits.InspectorIssueCode", {CookieIssue: "CookieIssue", MixedContentIssue: "MixedContentIssue", BlockedByResponseIssue: "BlockedByResponseIssue", HeavyAdIssue: "HeavyAdIssue", ContentSecurityPolicyIssue: "ContentSecurityPolicyIssue", SharedArrayBufferIssue: "SharedArrayBufferIssue", CorsIssue: "CorsIssue", AttributionReportingIssue: "AttributionReportingIssue", QuirksModeIssue: "QuirksModeIssue", PartitioningBlobURLIssue: "PartitioningBlobURLIssue", NavigatorUserAgentIssue: "NavigatorUserAgentIssue", GenericIssue: "GenericIssue", DeprecationIssue: "DeprecationIssue", ClientHintIssue: "ClientHintIssue", FederatedAuthRequestIssue: "FederatedAuthRequestIssue", BounceTrackingIssue: "BounceTrackingIssue", CookieDeprecationMetadataIssue: "CookieDeprecationMetadataIssue", StylesheetLoadingIssue: "StylesheetLoadingIssue", FederatedAuthUserInfoRequestIssue: "FederatedAuthUserInfoRequestIssue", PropertyRuleIssue: "PropertyRuleIssue", SharedDictionaryIssue: "SharedDictionaryIssue", ElementAccessibilityIssue: "ElementAccessibilityIssue", SRIMessageSignatureIssue: "SRIMessageSignatureIssue", UnencodedDigestIssue: "UnencodedDigestIssue", ConnectionAllowlistIssue: "ConnectionAllowlistIssue", UserReidentificationIssue: "UserReidentificationIssue", PermissionElementIssue: "PermissionElementIssue", PerformanceIssue: "PerformanceIssue", SelectivePermissionsInterventionIssue: "SelectivePermissionsInterventionIssue", EmailVerificationRequestIssue: "EmailVerificationRequestIssue"});
97
98
  inspectorBackend.registerEvent("Audits.issueAdded", ["issue"]);
98
99
  inspectorBackend.registerEnum("Audits.GetEncodedResponseRequestEncoding", {Webp: "webp", Jpeg: "jpeg", Png: "png"});
99
100
  inspectorBackend.registerCommand("Audits.getEncodedResponse", [{"name": "requestId", "type": "string", "optional": false, "description": "Identifier of the network request to get content for.", "typeRef": "Network.RequestId"}, {"name": "encoding", "type": "string", "optional": false, "description": "The encoding to use.", "typeRef": "Audits.GetEncodedResponseRequestEncoding"}, {"name": "quality", "type": "number", "optional": true, "description": "The quality of the encoding (0-1). (defaults to 1)", "typeRef": null}, {"name": "sizeOnly", "type": "boolean", "optional": true, "description": "Whether to only return the size information (defaults to false).", "typeRef": null}], ["body", "originalSize", "encodedSize"], "Returns the response body and size if it were re-encoded with the specified settings. Only applies to images.");
@@ -126,6 +127,7 @@ inspectorBackend.registerType("Audits.BounceTrackingIssueDetails", [{"name": "tr
126
127
  inspectorBackend.registerType("Audits.CookieDeprecationMetadataIssueDetails", [{"name": "allowedSites", "type": "array", "optional": false, "description": "", "typeRef": "string"}, {"name": "optOutPercentage", "type": "number", "optional": false, "description": "", "typeRef": null}, {"name": "isOptOutTopLevel", "type": "boolean", "optional": false, "description": "", "typeRef": null}, {"name": "operation", "type": "string", "optional": false, "description": "", "typeRef": "Audits.CookieOperation"}]);
127
128
  inspectorBackend.registerType("Audits.FederatedAuthRequestIssueDetails", [{"name": "federatedAuthRequestIssueReason", "type": "string", "optional": false, "description": "", "typeRef": "Audits.FederatedAuthRequestIssueReason"}]);
128
129
  inspectorBackend.registerType("Audits.FederatedAuthUserInfoRequestIssueDetails", [{"name": "federatedAuthUserInfoRequestIssueReason", "type": "string", "optional": false, "description": "", "typeRef": "Audits.FederatedAuthUserInfoRequestIssueReason"}]);
130
+ inspectorBackend.registerType("Audits.EmailVerificationRequestIssueDetails", [{"name": "emailVerificationRequestIssueReason", "type": "string", "optional": false, "description": "", "typeRef": "Audits.EmailVerificationRequestIssueReason"}]);
129
131
  inspectorBackend.registerType("Audits.ClientHintIssueDetails", [{"name": "sourceCodeLocation", "type": "object", "optional": false, "description": "", "typeRef": "Audits.SourceCodeLocation"}, {"name": "clientHintIssueReason", "type": "string", "optional": false, "description": "", "typeRef": "Audits.ClientHintIssueReason"}]);
130
132
  inspectorBackend.registerType("Audits.FailedRequestInfo", [{"name": "url", "type": "string", "optional": false, "description": "The URL that failed to load.", "typeRef": null}, {"name": "failureMessage", "type": "string", "optional": false, "description": "The failure message for the failed request.", "typeRef": null}, {"name": "requestId", "type": "string", "optional": true, "description": "", "typeRef": "Network.RequestId"}]);
131
133
  inspectorBackend.registerType("Audits.PartitioningBlobURLIssueDetails", [{"name": "url", "type": "string", "optional": false, "description": "The BlobURL that failed to load.", "typeRef": null}, {"name": "partitioningBlobURLInfo", "type": "string", "optional": false, "description": "Additional information about the Partitioning Blob URL issue.", "typeRef": "Audits.PartitioningBlobURLInfo"}]);
@@ -135,7 +137,7 @@ inspectorBackend.registerType("Audits.PropertyRuleIssueDetails", [{"name": "sour
135
137
  inspectorBackend.registerType("Audits.UserReidentificationIssueDetails", [{"name": "type", "type": "string", "optional": false, "description": "", "typeRef": "Audits.UserReidentificationIssueType"}, {"name": "request", "type": "object", "optional": true, "description": "Applies to BlockedFrameNavigation and BlockedSubresource issue types.", "typeRef": "Audits.AffectedRequest"}, {"name": "sourceCodeLocation", "type": "object", "optional": true, "description": "Applies to NoisedCanvasReadback issue type.", "typeRef": "Audits.SourceCodeLocation"}]);
136
138
  inspectorBackend.registerType("Audits.PermissionElementIssueDetails", [{"name": "issueType", "type": "string", "optional": false, "description": "", "typeRef": "Audits.PermissionElementIssueType"}, {"name": "type", "type": "string", "optional": true, "description": "The value of the type attribute.", "typeRef": null}, {"name": "nodeId", "type": "number", "optional": true, "description": "The node ID of the <permission> element.", "typeRef": "DOM.BackendNodeId"}, {"name": "isWarning", "type": "boolean", "optional": true, "description": "True if the issue is a warning, false if it is an error.", "typeRef": null}, {"name": "permissionName", "type": "string", "optional": true, "description": "Fields for message construction: Used for messages that reference a specific permission name", "typeRef": null}, {"name": "occluderNodeInfo", "type": "string", "optional": true, "description": "Used for messages about occlusion", "typeRef": null}, {"name": "occluderParentNodeInfo", "type": "string", "optional": true, "description": "Used for messages about occluder's parent", "typeRef": null}, {"name": "disableReason", "type": "string", "optional": true, "description": "Used for messages about activation disabled reason", "typeRef": null}]);
137
139
  inspectorBackend.registerType("Audits.SelectivePermissionsInterventionIssueDetails", [{"name": "apiName", "type": "string", "optional": false, "description": "Which API was intervened on.", "typeRef": null}, {"name": "adAncestry", "type": "object", "optional": false, "description": "Why the ad script using the API is considered an ad.", "typeRef": "Network.AdAncestry"}, {"name": "stackTrace", "type": "object", "optional": true, "description": "The stack trace at the time of the intervention.", "typeRef": "Runtime.StackTrace"}]);
138
- inspectorBackend.registerType("Audits.InspectorIssueDetails", [{"name": "cookieIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieIssueDetails"}, {"name": "mixedContentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.MixedContentIssueDetails"}, {"name": "blockedByResponseIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BlockedByResponseIssueDetails"}, {"name": "heavyAdIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.HeavyAdIssueDetails"}, {"name": "contentSecurityPolicyIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ContentSecurityPolicyIssueDetails"}, {"name": "sharedArrayBufferIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedArrayBufferIssueDetails"}, {"name": "corsIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CorsIssueDetails"}, {"name": "attributionReportingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.AttributionReportingIssueDetails"}, {"name": "quirksModeIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.QuirksModeIssueDetails"}, {"name": "partitioningBlobURLIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PartitioningBlobURLIssueDetails"}, {"name": "navigatorUserAgentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.NavigatorUserAgentIssueDetails"}, {"name": "genericIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.GenericIssueDetails"}, {"name": "deprecationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.DeprecationIssueDetails"}, {"name": "clientHintIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ClientHintIssueDetails"}, {"name": "federatedAuthRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthRequestIssueDetails"}, {"name": "bounceTrackingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BounceTrackingIssueDetails"}, {"name": "cookieDeprecationMetadataIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieDeprecationMetadataIssueDetails"}, {"name": "stylesheetLoadingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.StylesheetLoadingIssueDetails"}, {"name": "propertyRuleIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PropertyRuleIssueDetails"}, {"name": "federatedAuthUserInfoRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthUserInfoRequestIssueDetails"}, {"name": "sharedDictionaryIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedDictionaryIssueDetails"}, {"name": "elementAccessibilityIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ElementAccessibilityIssueDetails"}, {"name": "sriMessageSignatureIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SRIMessageSignatureIssueDetails"}, {"name": "unencodedDigestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UnencodedDigestIssueDetails"}, {"name": "connectionAllowlistIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ConnectionAllowlistIssueDetails"}, {"name": "userReidentificationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UserReidentificationIssueDetails"}, {"name": "permissionElementIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PermissionElementIssueDetails"}, {"name": "performanceIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PerformanceIssueDetails"}, {"name": "selectivePermissionsInterventionIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SelectivePermissionsInterventionIssueDetails"}]);
140
+ inspectorBackend.registerType("Audits.InspectorIssueDetails", [{"name": "cookieIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieIssueDetails"}, {"name": "mixedContentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.MixedContentIssueDetails"}, {"name": "blockedByResponseIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BlockedByResponseIssueDetails"}, {"name": "heavyAdIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.HeavyAdIssueDetails"}, {"name": "contentSecurityPolicyIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ContentSecurityPolicyIssueDetails"}, {"name": "sharedArrayBufferIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedArrayBufferIssueDetails"}, {"name": "corsIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CorsIssueDetails"}, {"name": "attributionReportingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.AttributionReportingIssueDetails"}, {"name": "quirksModeIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.QuirksModeIssueDetails"}, {"name": "partitioningBlobURLIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PartitioningBlobURLIssueDetails"}, {"name": "navigatorUserAgentIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.NavigatorUserAgentIssueDetails"}, {"name": "genericIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.GenericIssueDetails"}, {"name": "deprecationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.DeprecationIssueDetails"}, {"name": "clientHintIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ClientHintIssueDetails"}, {"name": "federatedAuthRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthRequestIssueDetails"}, {"name": "bounceTrackingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.BounceTrackingIssueDetails"}, {"name": "cookieDeprecationMetadataIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.CookieDeprecationMetadataIssueDetails"}, {"name": "stylesheetLoadingIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.StylesheetLoadingIssueDetails"}, {"name": "propertyRuleIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PropertyRuleIssueDetails"}, {"name": "federatedAuthUserInfoRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.FederatedAuthUserInfoRequestIssueDetails"}, {"name": "sharedDictionaryIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SharedDictionaryIssueDetails"}, {"name": "elementAccessibilityIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ElementAccessibilityIssueDetails"}, {"name": "sriMessageSignatureIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SRIMessageSignatureIssueDetails"}, {"name": "unencodedDigestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UnencodedDigestIssueDetails"}, {"name": "connectionAllowlistIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.ConnectionAllowlistIssueDetails"}, {"name": "userReidentificationIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.UserReidentificationIssueDetails"}, {"name": "permissionElementIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PermissionElementIssueDetails"}, {"name": "performanceIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.PerformanceIssueDetails"}, {"name": "selectivePermissionsInterventionIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.SelectivePermissionsInterventionIssueDetails"}, {"name": "emailVerificationRequestIssueDetails", "type": "object", "optional": true, "description": "", "typeRef": "Audits.EmailVerificationRequestIssueDetails"}]);
139
141
  inspectorBackend.registerType("Audits.InspectorIssue", [{"name": "code", "type": "string", "optional": false, "description": "", "typeRef": "Audits.InspectorIssueCode"}, {"name": "details", "type": "object", "optional": false, "description": "", "typeRef": "Audits.InspectorIssueDetails"}, {"name": "issueId", "type": "string", "optional": true, "description": "A unique id for this issue. May be omitted if no other entity (e.g. exception, CDP message, etc.) is referencing this issue.", "typeRef": "Audits.IssueId"}]);
140
142
 
141
143
  // Autofill.
@@ -807,7 +809,7 @@ inspectorBackend.registerEnum("Network.ContentSecurityPolicySource", {HTTP: "HTT
807
809
  inspectorBackend.registerEnum("Network.ReportStatus", {Queued: "Queued", Pending: "Pending", MarkedForRemoval: "MarkedForRemoval", Success: "Success"});
808
810
  inspectorBackend.registerEnum("Network.DeviceBoundSessionWithUsageUsage", {NotInScope: "NotInScope", InScopeRefreshNotYetNeeded: "InScopeRefreshNotYetNeeded", InScopeRefreshNotAllowed: "InScopeRefreshNotAllowed", ProactiveRefreshNotPossible: "ProactiveRefreshNotPossible", ProactiveRefreshAttempted: "ProactiveRefreshAttempted", Deferred: "Deferred"});
809
811
  inspectorBackend.registerEnum("Network.DeviceBoundSessionUrlRuleRuleType", {Exclude: "Exclude", Include: "Include"});
810
- inspectorBackend.registerEnum("Network.DeviceBoundSessionFetchResult", {Success: "Success", KeyError: "KeyError", SigningError: "SigningError", TransientSigningError: "TransientSigningError", ServerRequestedTermination: "ServerRequestedTermination", InvalidSessionId: "InvalidSessionId", InvalidChallenge: "InvalidChallenge", TooManyChallenges: "TooManyChallenges", InvalidFetcherUrl: "InvalidFetcherUrl", InvalidRefreshUrl: "InvalidRefreshUrl", TransientHttpError: "TransientHttpError", ScopeOriginSameSiteMismatch: "ScopeOriginSameSiteMismatch", RefreshUrlSameSiteMismatch: "RefreshUrlSameSiteMismatch", MismatchedSessionId: "MismatchedSessionId", MissingScope: "MissingScope", NoCredentials: "NoCredentials", SubdomainRegistrationWellKnownUnavailable: "SubdomainRegistrationWellKnownUnavailable", SubdomainRegistrationUnauthorized: "SubdomainRegistrationUnauthorized", SubdomainRegistrationWellKnownMalformed: "SubdomainRegistrationWellKnownMalformed", SessionProviderWellKnownUnavailable: "SessionProviderWellKnownUnavailable", RelyingPartyWellKnownUnavailable: "RelyingPartyWellKnownUnavailable", FederatedKeyThumbprintMismatch: "FederatedKeyThumbprintMismatch", InvalidFederatedSessionUrl: "InvalidFederatedSessionUrl", InvalidFederatedKey: "InvalidFederatedKey", TooManyRelyingOriginLabels: "TooManyRelyingOriginLabels", BoundCookieSetForbidden: "BoundCookieSetForbidden", NetError: "NetError", ProxyError: "ProxyError", EmptySessionConfig: "EmptySessionConfig", InvalidCredentialsConfig: "InvalidCredentialsConfig", InvalidCredentialsType: "InvalidCredentialsType", InvalidCredentialsEmptyName: "InvalidCredentialsEmptyName", InvalidCredentialsCookie: "InvalidCredentialsCookie", PersistentHttpError: "PersistentHttpError", RegistrationAttemptedChallenge: "RegistrationAttemptedChallenge", InvalidScopeOrigin: "InvalidScopeOrigin", ScopeOriginContainsPath: "ScopeOriginContainsPath", RefreshInitiatorNotString: "RefreshInitiatorNotString", RefreshInitiatorInvalidHostPattern: "RefreshInitiatorInvalidHostPattern", InvalidScopeSpecification: "InvalidScopeSpecification", MissingScopeSpecificationType: "MissingScopeSpecificationType", EmptyScopeSpecificationDomain: "EmptyScopeSpecificationDomain", EmptyScopeSpecificationPath: "EmptyScopeSpecificationPath", InvalidScopeSpecificationType: "InvalidScopeSpecificationType", InvalidScopeIncludeSite: "InvalidScopeIncludeSite", MissingScopeIncludeSite: "MissingScopeIncludeSite", FederatedNotAuthorizedByProvider: "FederatedNotAuthorizedByProvider", FederatedNotAuthorizedByRelyingParty: "FederatedNotAuthorizedByRelyingParty", SessionProviderWellKnownMalformed: "SessionProviderWellKnownMalformed", SessionProviderWellKnownHasProviderOrigin: "SessionProviderWellKnownHasProviderOrigin", RelyingPartyWellKnownMalformed: "RelyingPartyWellKnownMalformed", RelyingPartyWellKnownHasRelyingOrigins: "RelyingPartyWellKnownHasRelyingOrigins", InvalidFederatedSessionProviderSessionMissing: "InvalidFederatedSessionProviderSessionMissing", InvalidFederatedSessionWrongProviderOrigin: "InvalidFederatedSessionWrongProviderOrigin", InvalidCredentialsCookieCreationTime: "InvalidCredentialsCookieCreationTime", InvalidCredentialsCookieName: "InvalidCredentialsCookieName", InvalidCredentialsCookieParsing: "InvalidCredentialsCookieParsing", InvalidCredentialsCookieUnpermittedAttribute: "InvalidCredentialsCookieUnpermittedAttribute", InvalidCredentialsCookieInvalidDomain: "InvalidCredentialsCookieInvalidDomain", InvalidCredentialsCookiePrefix: "InvalidCredentialsCookiePrefix", InvalidScopeRulePath: "InvalidScopeRulePath", InvalidScopeRuleHostPattern: "InvalidScopeRuleHostPattern", ScopeRuleOriginScopedHostPatternMismatch: "ScopeRuleOriginScopedHostPatternMismatch", ScopeRuleSiteScopedHostPatternMismatch: "ScopeRuleSiteScopedHostPatternMismatch", SigningQuotaExceeded: "SigningQuotaExceeded", InvalidConfigJson: "InvalidConfigJson", InvalidFederatedSessionProviderFailedToRestoreKey: "InvalidFederatedSessionProviderFailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", SessionDeletedDuringRefresh: "SessionDeletedDuringRefresh"});
812
+ inspectorBackend.registerEnum("Network.DeviceBoundSessionFetchResult", {Success: "Success", KeyError: "KeyError", SigningError: "SigningError", TransientSigningError: "TransientSigningError", ServerRequestedTermination: "ServerRequestedTermination", InvalidSessionId: "InvalidSessionId", InvalidChallenge: "InvalidChallenge", TooManyChallenges: "TooManyChallenges", InvalidFetcherUrl: "InvalidFetcherUrl", InvalidRefreshUrl: "InvalidRefreshUrl", TransientHttpError: "TransientHttpError", ScopeOriginSameSiteMismatch: "ScopeOriginSameSiteMismatch", RefreshUrlSameSiteMismatch: "RefreshUrlSameSiteMismatch", MismatchedSessionId: "MismatchedSessionId", MissingScope: "MissingScope", NoCredentials: "NoCredentials", SubdomainRegistrationWellKnownUnavailable: "SubdomainRegistrationWellKnownUnavailable", SubdomainRegistrationUnauthorized: "SubdomainRegistrationUnauthorized", SubdomainRegistrationWellKnownMalformed: "SubdomainRegistrationWellKnownMalformed", SessionProviderWellKnownUnavailable: "SessionProviderWellKnownUnavailable", RelyingPartyWellKnownUnavailable: "RelyingPartyWellKnownUnavailable", FederatedKeyThumbprintMismatch: "FederatedKeyThumbprintMismatch", InvalidFederatedSessionUrl: "InvalidFederatedSessionUrl", InvalidFederatedKey: "InvalidFederatedKey", TooManyRelyingOriginLabels: "TooManyRelyingOriginLabels", BoundCookieSetForbidden: "BoundCookieSetForbidden", NetError: "NetError", ProxyError: "ProxyError", EmptySessionConfig: "EmptySessionConfig", InvalidCredentialsConfig: "InvalidCredentialsConfig", InvalidCredentialsType: "InvalidCredentialsType", InvalidCredentialsEmptyName: "InvalidCredentialsEmptyName", InvalidCredentialsCookie: "InvalidCredentialsCookie", PersistentHttpError: "PersistentHttpError", RegistrationAttemptedChallenge: "RegistrationAttemptedChallenge", InvalidScopeOrigin: "InvalidScopeOrigin", ScopeOriginContainsPath: "ScopeOriginContainsPath", RefreshInitiatorNotString: "RefreshInitiatorNotString", RefreshInitiatorInvalidHostPattern: "RefreshInitiatorInvalidHostPattern", InvalidScopeSpecification: "InvalidScopeSpecification", MissingScopeSpecificationType: "MissingScopeSpecificationType", EmptyScopeSpecificationDomain: "EmptyScopeSpecificationDomain", EmptyScopeSpecificationPath: "EmptyScopeSpecificationPath", InvalidScopeSpecificationType: "InvalidScopeSpecificationType", InvalidScopeIncludeSite: "InvalidScopeIncludeSite", MissingScopeIncludeSite: "MissingScopeIncludeSite", FederatedNotAuthorizedByProvider: "FederatedNotAuthorizedByProvider", FederatedNotAuthorizedByRelyingParty: "FederatedNotAuthorizedByRelyingParty", SessionProviderWellKnownMalformed: "SessionProviderWellKnownMalformed", SessionProviderWellKnownHasProviderOrigin: "SessionProviderWellKnownHasProviderOrigin", RelyingPartyWellKnownMalformed: "RelyingPartyWellKnownMalformed", RelyingPartyWellKnownHasRelyingOrigins: "RelyingPartyWellKnownHasRelyingOrigins", InvalidFederatedSessionProviderSessionMissing: "InvalidFederatedSessionProviderSessionMissing", InvalidFederatedSessionWrongProviderOrigin: "InvalidFederatedSessionWrongProviderOrigin", InvalidCredentialsCookieCreationTime: "InvalidCredentialsCookieCreationTime", InvalidCredentialsCookieName: "InvalidCredentialsCookieName", InvalidCredentialsCookieParsing: "InvalidCredentialsCookieParsing", InvalidCredentialsCookieUnpermittedAttribute: "InvalidCredentialsCookieUnpermittedAttribute", InvalidCredentialsCookieInvalidDomain: "InvalidCredentialsCookieInvalidDomain", InvalidCredentialsCookiePrefix: "InvalidCredentialsCookiePrefix", InvalidScopeRulePath: "InvalidScopeRulePath", InvalidScopeRuleHostPattern: "InvalidScopeRuleHostPattern", ScopeRuleOriginScopedHostPatternMismatch: "ScopeRuleOriginScopedHostPatternMismatch", ScopeRuleSiteScopedHostPatternMismatch: "ScopeRuleSiteScopedHostPatternMismatch", SigningQuotaExceeded: "SigningQuotaExceeded", InvalidConfigJson: "InvalidConfigJson", InvalidFederatedSessionProviderFailedToRestoreKey: "InvalidFederatedSessionProviderFailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", SessionDeletedDuringRefresh: "SessionDeletedDuringRefresh", CrossOriginRegistrationSiteNotIncluded: "CrossOriginRegistrationSiteNotIncluded"});
811
813
  inspectorBackend.registerEnum("Network.RefreshEventDetailsRefreshResult", {Refreshed: "Refreshed", InitializedService: "InitializedService", Unreachable: "Unreachable", ServerError: "ServerError", RefreshQuotaExceeded: "RefreshQuotaExceeded", FatalError: "FatalError", SigningQuotaExceeded: "SigningQuotaExceeded", RefreshedAsWaiter: "RefreshedAsWaiter", TransientSigningError: "TransientSigningError"});
812
814
  inspectorBackend.registerEnum("Network.TerminationEventDetailsDeletionReason", {Expired: "Expired", FailedToRestoreKey: "FailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", StoragePartitionCleared: "StoragePartitionCleared", ClearBrowsingData: "ClearBrowsingData", ServerRequested: "ServerRequested", InvalidSessionParams: "InvalidSessionParams", RefreshFatalError: "RefreshFatalError", DevTools: "DevTools"});
813
815
  inspectorBackend.registerEnum("Network.ChallengeEventDetailsChallengeResult", {Success: "Success", NoSessionId: "NoSessionId", NoSessionMatch: "NoSessionMatch", CantSetBoundCookie: "CantSetBoundCookie"});
@@ -1408,7 +1410,7 @@ inspectorBackend.registerCommand("Target.autoAttachRelated", [{"name": "targetId
1408
1410
  inspectorBackend.registerCommand("Target.setDiscoverTargets", [{"name": "discover", "type": "boolean", "optional": false, "description": "Whether to discover available targets.", "typeRef": null}, {"name": "filter", "type": "array", "optional": true, "description": "Only targets matching filter will be attached. If `discover` is false, `filter` must be omitted or empty.", "typeRef": "Target.TargetFilter"}], [], "Controls whether to discover available targets and notify via `targetCreated/targetInfoChanged/targetDestroyed` events.");
1409
1411
  inspectorBackend.registerCommand("Target.setRemoteLocations", [{"name": "locations", "type": "array", "optional": false, "description": "List of remote locations.", "typeRef": "Target.RemoteLocation"}], [], "Enables target discovery for the specified locations, when `setDiscoverTargets` was set to `true`.");
1410
1412
  inspectorBackend.registerCommand("Target.getDevToolsTarget", [{"name": "targetId", "type": "string", "optional": false, "description": "Page or tab target ID.", "typeRef": "Target.TargetID"}], ["targetId"], "Gets the targetId of the DevTools page target opened for the given target (if any).");
1411
- inspectorBackend.registerCommand("Target.openDevTools", [{"name": "targetId", "type": "string", "optional": false, "description": "This can be the page or tab target ID.", "typeRef": "Target.TargetID"}, {"name": "panelId", "type": "string", "optional": true, "description": "The id of the panel we want DevTools to open initially. Currently supported panels are elements, console, network, sources, resources and performance.", "typeRef": null}], ["targetId"], "Opens a DevTools window for the target.");
1413
+ inspectorBackend.registerCommand("Target.openDevTools", [{"name": "targetId", "type": "string", "optional": false, "description": "This can be the page or tab target ID.", "typeRef": "Target.TargetID"}, {"name": "panelId", "type": "string", "optional": true, "description": "The id of the panel we want DevTools to open initially. Currently supported panels are elements, console, network, sources, resources, timeline, chrome-recorder, heap-profiler, lighthouse, and security.", "typeRef": null}], ["targetId"], "Opens a DevTools window for the target.");
1412
1414
  inspectorBackend.registerType("Target.TargetInfo", [{"name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID"}, {"name": "type", "type": "string", "optional": false, "description": "List of types: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/devtools_agent_host_impl.cc?ss=chromium&q=f:devtools%20-f:out%20%22::kTypeTab%5B%5D%22", "typeRef": null}, {"name": "title", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "url", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "attached", "type": "boolean", "optional": false, "description": "Whether the target has an attached client.", "typeRef": null}, {"name": "parentId", "type": "string", "optional": true, "description": "Id of the parent target, if any. For example, \\\"iframe\\\" target may have a \\\"page\\\" parent.", "typeRef": "Target.TargetID"}, {"name": "openerId", "type": "string", "optional": true, "description": "Opener target Id", "typeRef": "Target.TargetID"}, {"name": "canAccessOpener", "type": "boolean", "optional": false, "description": "Whether the target has access to the originating window.", "typeRef": null}, {"name": "openerFrameId", "type": "string", "optional": true, "description": "Frame id of originating window (is only set if target has an opener).", "typeRef": "Page.FrameId"}, {"name": "parentFrameId", "type": "string", "optional": true, "description": "Id of the parent frame, present for \\\"iframe\\\" and \\\"worker\\\" targets. For nested workers, this is the \\\"ancestor\\\" frame that created the first worker in the nested chain.", "typeRef": "Page.FrameId"}, {"name": "browserContextId", "type": "string", "optional": true, "description": "", "typeRef": "Browser.BrowserContextID"}, {"name": "subtype", "type": "string", "optional": true, "description": "Provides additional details for specific target types. For example, for the type of \\\"page\\\", this may be set to \\\"prerender\\\".", "typeRef": null}, {"name": "embedderData", "type": "object", "optional": true, "description": "Embedder-specific target metadata. This is only set for targets of type \\\"tab\\\".", "typeRef": null}]);
1413
1415
  inspectorBackend.registerType("Target.FilterEntry", [{"name": "exclude", "type": "boolean", "optional": true, "description": "If set, causes exclusion of matching targets from the list.", "typeRef": null}, {"name": "type", "type": "string", "optional": true, "description": "If not present, matches any type.", "typeRef": null}]);
1414
1416
  inspectorBackend.registerType("Target.TargetFilter", [{"name": "TargetFilter", "type": "array", "optional": false, "description": "The entries in TargetFilter are matched sequentially against targets and the first entry that matches determines if the target is included or not, depending on the value of `exclude` field in the entry. If filter is not specified, the one assumed is [{type: \\\"browser\\\", exclude: true}, {type: \\\"tab\\\", exclude: true}, {}] (i.e. include everything but `browser` and `tab`).", "typeRef": "Target.FilterEntry"}]);
@@ -4765,6 +4765,7 @@ export const generatedProperties = [
4765
4765
  "name": "text-emphasis-style"
4766
4766
  },
4767
4767
  {
4768
+ "inherited": true,
4768
4769
  "name": "text-fit"
4769
4770
  },
4770
4771
  {
@@ -1090,6 +1090,7 @@ export namespace Audits {
1090
1090
  WriteErrorNonSecureContext = 'WriteErrorNonSecureContext',
1091
1091
  WriteErrorNonStringIdField = 'WriteErrorNonStringIdField',
1092
1092
  WriteErrorNonStringInMatchDestList = 'WriteErrorNonStringInMatchDestList',
1093
+ WriteErrorInvalidMatchDestList = 'WriteErrorInvalidMatchDestList',
1093
1094
  WriteErrorNonStringMatchField = 'WriteErrorNonStringMatchField',
1094
1095
  WriteErrorNonTokenTypeField = 'WriteErrorNonTokenTypeField',
1095
1096
  WriteErrorRequestAborted = 'WriteErrorRequestAborted',
@@ -1356,6 +1357,40 @@ export namespace Audits {
1356
1357
  NoReturningUserFromFetchedAccounts = 'NoReturningUserFromFetchedAccounts',
1357
1358
  }
1358
1359
 
1360
+ export interface EmailVerificationRequestIssueDetails {
1361
+ emailVerificationRequestIssueReason: EmailVerificationRequestIssueReason;
1362
+ }
1363
+
1364
+ /**
1365
+ * Represents the failure reason when an email verification request fails.
1366
+ * Should be updated alongside EmailVerificationRequestResult in
1367
+ * third_party/blink/public/mojom/devtools/inspector_issue.mojom.
1368
+ */
1369
+ export const enum EmailVerificationRequestIssueReason {
1370
+ InvalidEmail = 'InvalidEmail',
1371
+ DnsFetchFailed = 'DnsFetchFailed',
1372
+ DnsInvalidRecord = 'DnsInvalidRecord',
1373
+ WellKnownHttpNotFound = 'WellKnownHttpNotFound',
1374
+ WellKnownNoResponse = 'WellKnownNoResponse',
1375
+ WellKnownInvalidResponse = 'WellKnownInvalidResponse',
1376
+ WellKnownListEmpty = 'WellKnownListEmpty',
1377
+ WellKnownInvalidContentType = 'WellKnownInvalidContentType',
1378
+ WellKnownMissingIssuanceEndpoint = 'WellKnownMissingIssuanceEndpoint',
1379
+ WellKnownIssuanceEndpointCrossOrigin = 'WellKnownIssuanceEndpointCrossOrigin',
1380
+ WellKnownUnsupportedSigningAlgorithm = 'WellKnownUnsupportedSigningAlgorithm',
1381
+ TokenHttpNotFound = 'TokenHttpNotFound',
1382
+ TokenNoResponse = 'TokenNoResponse',
1383
+ TokenInvalidResponse = 'TokenInvalidResponse',
1384
+ TokenInvalidContentType = 'TokenInvalidContentType',
1385
+ TokenMalformedSdJwt = 'TokenMalformedSdJwt',
1386
+ TokenInvalidSdJwt = 'TokenInvalidSdJwt',
1387
+ KeyBindingSigningFailed = 'KeyBindingSigningFailed',
1388
+ RpOriginIsOpaque = 'RpOriginIsOpaque',
1389
+ WellKnownMissingAccountsEndpoint = 'WellKnownMissingAccountsEndpoint',
1390
+ UserLoggedOut = 'UserLoggedOut',
1391
+ WellKnownAccountsEndpointCrossOrigin = 'WellKnownAccountsEndpointCrossOrigin',
1392
+ }
1393
+
1359
1394
  /**
1360
1395
  * This issue tracks client hints related issues. It's used to deprecate old
1361
1396
  * features, encourage the use of new ones, and provide general guidance.
@@ -1596,6 +1631,7 @@ export namespace Audits {
1596
1631
  PermissionElementIssue = 'PermissionElementIssue',
1597
1632
  PerformanceIssue = 'PerformanceIssue',
1598
1633
  SelectivePermissionsInterventionIssue = 'SelectivePermissionsInterventionIssue',
1634
+ EmailVerificationRequestIssue = 'EmailVerificationRequestIssue',
1599
1635
  }
1600
1636
 
1601
1637
  /**
@@ -1636,6 +1672,7 @@ export namespace Audits {
1636
1672
  permissionElementIssueDetails?: PermissionElementIssueDetails;
1637
1673
  performanceIssueDetails?: PerformanceIssueDetails;
1638
1674
  selectivePermissionsInterventionIssueDetails?: SelectivePermissionsInterventionIssueDetails;
1675
+ emailVerificationRequestIssueDetails?: EmailVerificationRequestIssueDetails;
1639
1676
  }
1640
1677
 
1641
1678
  /**
@@ -11900,6 +11937,7 @@ export namespace Network {
11900
11937
  InvalidFederatedSessionProviderFailedToRestoreKey = 'InvalidFederatedSessionProviderFailedToRestoreKey',
11901
11938
  FailedToUnwrapKey = 'FailedToUnwrapKey',
11902
11939
  SessionDeletedDuringRefresh = 'SessionDeletedDuringRefresh',
11940
+ CrossOriginRegistrationSiteNotIncluded = 'CrossOriginRegistrationSiteNotIncluded',
11903
11941
  }
11904
11942
 
11905
11943
  /**
@@ -19430,8 +19468,8 @@ export namespace Target {
19430
19468
  targetId: TargetID;
19431
19469
  /**
19432
19470
  * The id of the panel we want DevTools to open initially. Currently
19433
- * supported panels are elements, console, network, sources, resources
19434
- * and performance.
19471
+ * supported panels are elements, console, network, sources, resources,
19472
+ * timeline, chrome-recorder, heap-profiler, lighthouse, and security.
19435
19473
  */
19436
19474
  panelId?: string;
19437
19475
  }
@@ -23,7 +23,6 @@ import {
23
23
  ResponseType,
24
24
  type UserQuery
25
25
  } from './agents/AiAgent.js';
26
- import {BreakpointDebuggerAgent} from './agents/BreakpointDebuggerAgent.js';
27
26
  import {ContextSelectionAgent} from './agents/ContextSelectionAgent.js';
28
27
  import {FileAgent, FileContext} from './agents/FileAgent.js';
29
28
  import {NetworkAgent, RequestContext} from './agents/NetworkAgent.js';
@@ -374,13 +373,6 @@ export class AiConversation {
374
373
  this.#agent = new PerformanceAgent(options);
375
374
  break;
376
375
  }
377
- case ConversationType.BREAKPOINT: {
378
- const breakpointAgentEnabled = Greendev.Prototypes.instance().isEnabled('breakpointDebuggerAgent');
379
- if (breakpointAgentEnabled) {
380
- this.#agent = new BreakpointDebuggerAgent(options);
381
- }
382
- break;
383
- }
384
376
  case ConversationType.ACCESSIBILITY: {
385
377
  this.#agent = new AccessibilityAgent(options);
386
378
  break;
@@ -13,7 +13,6 @@ export const enum ConversationType {
13
13
  FILE = 'drjones-file',
14
14
  NETWORK = 'drjones-network-request',
15
15
  PERFORMANCE = 'drjones-performance-full',
16
- BREAKPOINT = 'breakpoint',
17
16
  ACCESSIBILITY = 'accessibility',
18
17
  STORAGE = 'storage',
19
18
  }
@@ -62,3 +62,12 @@ export function isGeminiBranding(): boolean {
62
62
  export function getIconName(): string {
63
63
  return isGeminiBranding() ? 'spark' : 'smart-assistant';
64
64
  }
65
+
66
+ export function isSameOrigin(url1: Platform.DevToolsPath.UrlString, url2: Platform.DevToolsPath.UrlString): boolean {
67
+ if (url1.startsWith('data:') || url2.startsWith('data:')) {
68
+ return url1 === url2;
69
+ }
70
+ const origin1 = Common.ParsedURL.ParsedURL.extractOrigin(url1);
71
+ const origin2 = Common.ParsedURL.ParsedURL.extractOrigin(url2);
72
+ return origin1 !== '' && origin1 === origin2;
73
+ }
@@ -4,9 +4,11 @@
4
4
 
5
5
  import * as Host from '../../../core/host/host.js';
6
6
  import * as i18n from '../../../core/i18n/i18n.js';
7
+ import type * as Platform from '../../../core/platform/platform.js';
7
8
  import * as Root from '../../../core/root/root.js';
8
9
  import * as SDK from '../../../core/sdk/sdk.js';
9
10
  import type * as LHModel from '../../lighthouse/lighthouse.js';
11
+ import {isSameOrigin} from '../AiUtils.js';
10
12
  import {ChangeManager} from '../ChangeManager.js';
11
13
  import {LighthouseFormatter} from '../data_formatters/LighthouseFormatter.js';
12
14
  import {debugLog} from '../debug.js';
@@ -29,25 +31,6 @@ import {
29
31
  JavascriptExecutor
30
32
  } from './ExecuteJavascript.js';
31
33
 
32
- /**
33
- * The subset of computed CSS properties relevant to accessibility audits.
34
- * These are used to filter the Computed Styles widget in the AI Chat panel to keep it focused and minimal.
35
- */
36
- const ACCESSIBILITY_CSS_PROPERTIES = [
37
- 'color',
38
- 'background-color',
39
- 'display',
40
- 'visibility',
41
- 'opacity',
42
- 'clip',
43
- 'clip-path',
44
- 'font-size',
45
- 'font-weight',
46
- 'line-height',
47
- 'letter-spacing',
48
- 'text-transform',
49
- ];
50
-
51
34
  /**
52
35
  * WARNING: preamble defined in code is only used when userTier is
53
36
  * TESTERS. Otherwise, a server-side preamble is used (see
@@ -241,9 +224,14 @@ export class AccessibilityAgent extends AiAgent<LHModel.ReporterTypes.ReportJSON
241
224
  return null;
242
225
  }
243
226
 
244
- const resourceTreeModel = target.model(SDK.ResourceTreeModel.ResourceTreeModel);
245
- const mainFrameId = resourceTreeModel?.mainFrame?.id;
246
- if (node.frameId() !== mainFrameId) {
227
+ const mainDocument = domModel.existingDocument();
228
+ if (!mainDocument) {
229
+ return null;
230
+ }
231
+ const mainDocumentURL = mainDocument.documentURL;
232
+ const nodeDocumentURL = node.ownerDocument?.documentURL ?? '' as Platform.DevToolsPath.UrlString;
233
+
234
+ if (!isSameOrigin(mainDocumentURL, nodeDocumentURL)) {
247
235
  return null;
248
236
  }
249
237
 
@@ -486,20 +474,13 @@ export class AccessibilityAgent extends AiAgent<LHModel.ReporterTypes.ReportJSON
486
474
  };
487
475
 
488
476
  const widgets: AiWidget[] = [];
489
- const cssModel = node.domModel().cssModel();
490
- const styles = await cssModel.getComputedStyle(node.id);
491
- const matchedStyles = await cssModel.getMatchedStyles(node.id);
492
- if (styles && matchedStyles) {
493
- widgets.push({
494
- name: 'COMPUTED_STYLES',
495
- data: {
496
- computedStyles: styles,
497
- backendNodeId: node.backendNodeId(),
498
- matchedCascade: matchedStyles,
499
- properties: ACCESSIBILITY_CSS_PROPERTIES,
500
- },
501
- });
502
- }
477
+ const snapshot = await node.takeSnapshot();
478
+ widgets.push({
479
+ name: 'DOM_TREE',
480
+ data: {
481
+ root: snapshot,
482
+ },
483
+ });
503
484
 
504
485
  return {
505
486
  result: JSON.stringify(result, null, 2),
@@ -6,7 +6,6 @@ import * as Host from '../../../core/host/host.js';
6
6
  import * as Root from '../../../core/root/root.js';
7
7
  import type * as SDK from '../../../core/sdk/sdk.js';
8
8
  import type * as Protocol from '../../../generated/protocol.js';
9
- import * as Greendev from '../../greendev/greendev.js';
10
9
  import type * as LHModel from '../../lighthouse/lighthouse.js';
11
10
  import type * as TextUtils from '../../text_utils/text_utils.js';
12
11
  import type * as Trace from '../../trace/trace.js';
@@ -330,10 +329,24 @@ export interface LighthouseReportAiWidget {
330
329
  };
331
330
  }
332
331
 
333
- // This type will grow as we add more widgets.
334
- export type AiWidget =
335
- ComputedStyleAiWidget|CoreVitalsAiWidget|StylePropertiesAiWidget|DomTreeAiWidget|PerformanceTraceAiWidget|
336
- PerfInsightAiWidget|TimelineRangeSummaryAiWidget|BottomUpTreeAiWidget|SourceFileAiWidget|LighthouseReportAiWidget;
332
+ export interface TimelineEventSummaryAiWidget {
333
+ name: 'TIMELINE_EVENT_SUMMARY';
334
+ data: {
335
+ event: Trace.Types.Events.Event,
336
+ parsedTrace: Trace.TraceModel.ParsedTrace,
337
+ };
338
+ }
339
+
340
+ export interface NetworkRequestGeneralHeadersAiWidget {
341
+ name: 'NETWORK_REQUEST_GENERAL_HEADERS';
342
+ data: {
343
+ request: SDK.NetworkRequest.NetworkRequest,
344
+ };
345
+ }
346
+
347
+ export type AiWidget = ComputedStyleAiWidget|CoreVitalsAiWidget|StylePropertiesAiWidget|DomTreeAiWidget|
348
+ PerformanceTraceAiWidget|PerfInsightAiWidget|TimelineRangeSummaryAiWidget|BottomUpTreeAiWidget|SourceFileAiWidget|
349
+ LighthouseReportAiWidget|TimelineEventSummaryAiWidget|NetworkRequestGeneralHeadersAiWidget;
337
350
 
338
351
  export type FunctionCallHandlerResult<Result> = {
339
352
  requiresApproval: true,
@@ -675,11 +688,7 @@ export abstract class AiAgent<T> {
675
688
 
676
689
  yield* this.handleContextDetails(options.selected);
677
690
 
678
- const breakpointAgentEnabled = Greendev.Prototypes.instance().isEnabled('breakpointDebuggerAgent');
679
- const isBreakpointDebuggerAgent = this.constructor.name === 'BreakpointDebuggerAgent';
680
- const finalMaxSteps = (isBreakpointDebuggerAgent && breakpointAgentEnabled) ? 1000 : MAX_STEPS;
681
-
682
- for (let i = 0; i < finalMaxSteps; i++) {
691
+ for (let i = 0; i < MAX_STEPS; i++) {
683
692
  yield {
684
693
  type: ResponseType.QUERYING,
685
694
  };
@@ -769,6 +778,11 @@ export abstract class AiAgent<T> {
769
778
  },
770
779
  );
771
780
 
781
+ if ('result' in result && result.result === 'BLOCKED_CROSS_ORIGIN') {
782
+ yield this.#createErrorResponse(ErrorType.CROSS_ORIGIN);
783
+ break;
784
+ }
785
+
772
786
  if (options.signal?.aborted) {
773
787
  yield this.#createErrorResponse(ErrorType.ABORT);
774
788
  break;
@@ -909,6 +923,16 @@ export abstract class AiAgent<T> {
909
923
  };
910
924
  }
911
925
 
926
+ // Re-check allowed origin after the approval await to prevent a TOCTOU (Time-of-Check
927
+ // to Time-of-Use) race condition where the page might have navigated cross-origin
928
+ // while the user was confirming the action.
929
+ const allowedOriginResult = this.#allowedOrigin?.();
930
+ if (allowedOriginResult && 'blocked' in allowedOriginResult) {
931
+ return {
932
+ result: 'BLOCKED_CROSS_ORIGIN',
933
+ };
934
+ }
935
+
912
936
  result = await call.handler(args, {
913
937
  ...options,
914
938
  approved: true,
@@ -221,6 +221,12 @@ export class ContextSelectionAgent extends AiAgent<never> {
221
221
  return {
222
222
  context: new RequestContext(request, calculator),
223
223
  description: 'User selected a network request',
224
+ widgets: [{
225
+ name: 'NETWORK_REQUEST_GENERAL_HEADERS',
226
+ data: {
227
+ request,
228
+ },
229
+ }],
224
230
  };
225
231
  }
226
232
 
@@ -393,8 +393,6 @@ export class GreenDevAgent extends AiAgent<string> {
393
393
  override preamble = preamble;
394
394
 
395
395
  get clientFeature(): Host.AidaClient.ClientFeature {
396
- // Reuse CHROME_NETWORK_AGENT similar to how we reuse CHROME_FILE_AGENT
397
- // in BreakpointDebuggerAgent.ts.
398
396
  return Host.AidaClient.ClientFeature.CHROME_NETWORK_AGENT;
399
397
  }
400
398