chrome-devtools-frontend 1.0.1665921 → 1.0.1667564

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 (312) hide show
  1. package/.agents/skills/devtools-testing-guidance/SKILL.md +4 -0
  2. package/.agents/skills/migrate-chromium-test/SKILL.md +63 -48
  3. package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +14 -5
  4. package/.agents/skills/ui-eng-vision-logic-consolidator/SKILL.md +11 -2
  5. package/.agents/skills/ui-eng-vision-orchestrator/SKILL.md +46 -9
  6. package/.agents/skills/ui-eng-vision-test-scaffolder/SKILL.md +20 -1
  7. package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +9 -0
  8. package/front_end/core/host/AidaClient.ts +115 -64
  9. package/front_end/core/host/GcaClient.ts +3 -3
  10. package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -0
  11. package/front_end/core/host/InspectorFrontendHostStub.ts +3 -3
  12. package/front_end/core/host/UserMetrics.ts +50 -13
  13. package/front_end/core/sdk/CSSMatchedStyles.ts +2 -5
  14. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +12 -0
  15. package/front_end/core/sdk/Connections.ts +1 -1
  16. package/front_end/core/sdk/DOMModel.test.api.ts +104 -0
  17. package/front_end/core/sdk/DOMModel.ts +23 -11
  18. package/front_end/core/sdk/DebuggerModel.ts +9 -9
  19. package/front_end/core/sdk/IsolateManager.ts +1 -1
  20. package/front_end/core/sdk/NetworkManager.ts +105 -4
  21. package/front_end/core/sdk/NetworkRequest.ts +10 -55
  22. package/front_end/core/sdk/OverlayModel.ts +15 -14
  23. package/front_end/core/sdk/RemoteObject.ts +1 -1
  24. package/front_end/devtools_compatibility.js +1 -0
  25. package/front_end/entrypoints/main/MainImpl.ts +5 -12
  26. package/front_end/entrypoints/main/SimpleApp.ts +9 -3
  27. package/front_end/foundation/Universe.ts +22 -0
  28. package/front_end/generated/InspectorBackendCommands.ts +2 -2
  29. package/front_end/generated/protocol.ts +2 -1
  30. package/front_end/models/ai_assistance/agents/AiAgent.ts +22 -13
  31. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +23 -10
  32. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +21 -5
  33. package/front_end/models/computed_style/ComputedStyleModel.ts +4 -7
  34. package/front_end/models/crux-manager/CrUXManager.ts +4 -0
  35. package/front_end/models/extensions/ExtensionAPI.ts +3 -3
  36. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +2 -2
  37. package/front_end/models/issues_manager/CookieIssue.ts +6 -127
  38. package/front_end/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +2 -2
  39. package/front_end/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +3 -3
  40. package/front_end/models/issues_manager/descriptions/CoepCorpNotSameSite.md +2 -2
  41. package/front_end/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +1 -1
  42. package/front_end/models/issues_manager/descriptions/CompatibilityModeQuirks.md +1 -1
  43. package/front_end/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +2 -2
  44. package/front_end/models/issues_manager/descriptions/LowTextContrast.md +1 -1
  45. package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +1 -1
  46. package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +1 -1
  47. package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +1 -1
  48. package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +1 -1
  49. package/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +3 -3
  50. package/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +3 -3
  51. package/front_end/models/issues_manager/descriptions/bounceTrackingMitigations.md +1 -1
  52. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowlistItemType.md +2 -2
  53. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidHeader.md +2 -2
  54. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidUrlPattern.md +3 -3
  55. package/front_end/models/issues_manager/descriptions/connectionAllowlistItemNotInnerList.md +2 -2
  56. package/front_end/models/issues_manager/descriptions/connectionAllowlistMoreThanOneList.md +2 -2
  57. package/front_end/models/issues_manager/descriptions/connectionAllowlistReportingEndpointNotToken.md +1 -1
  58. package/front_end/models/issues_manager/descriptions/cookieCrossSiteRedirectDowngrade.md +3 -3
  59. package/front_end/models/issues_manager/descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +1 -1
  60. package/front_end/models/issues_manager/descriptions/cookieExcludePortMismatch.md +1 -1
  61. package/front_end/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +1 -1
  62. package/front_end/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutSet.md +1 -1
  63. package/front_end/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutRead.md +1 -1
  64. package/front_end/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +1 -1
  65. package/front_end/models/issues_manager/descriptions/corsDisabledScheme.md +2 -2
  66. package/front_end/models/issues_manager/descriptions/corsDisallowedByMode.md +2 -2
  67. package/front_end/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +1 -1
  68. package/front_end/models/issues_manager/descriptions/corsInvalidHeaderValues.md +3 -3
  69. package/front_end/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +1 -1
  70. package/front_end/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +1 -1
  71. package/front_end/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +1 -1
  72. package/front_end/models/issues_manager/descriptions/corsOriginMismatch.md +3 -3
  73. package/front_end/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +2 -2
  74. package/front_end/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +3 -3
  75. package/front_end/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +4 -3
  76. package/front_end/models/issues_manager/descriptions/cspEvalViolation.md +4 -4
  77. package/front_end/models/issues_manager/descriptions/cspInlineViolation.md +2 -2
  78. package/front_end/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +2 -2
  79. package/front_end/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +4 -4
  80. package/front_end/models/issues_manager/descriptions/cspURLViolation.md +4 -4
  81. package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsEmptyList.md +1 -1
  82. package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsHttpNotFound.md +1 -1
  83. package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsInvalidContentType.md +1 -1
  84. package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsInvalidResponse.md +1 -1
  85. package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsNoResponse.md +1 -1
  86. package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md +1 -1
  87. package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -1
  88. package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownHttpNotFound.md +1 -1
  89. package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidContentType.md +1 -1
  90. package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidResponse.md +1 -1
  91. package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownNoResponse.md +1 -1
  92. package/front_end/models/issues_manager/descriptions/emailVerificationRequestInvalidEmail.md +1 -1
  93. package/front_end/models/issues_manager/descriptions/emailVerificationRequestJwksHttpNotFound.md +1 -1
  94. package/front_end/models/issues_manager/descriptions/emailVerificationRequestJwksInvalidResponse.md +1 -1
  95. package/front_end/models/issues_manager/descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -1
  96. package/front_end/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -1
  97. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -1
  98. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -1
  99. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -1
  100. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -1
  101. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -1
  102. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md +1 -1
  103. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidAudience.md +1 -1
  104. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidIssuedAt.md +1 -1
  105. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidNonce.md +1 -1
  106. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidSdHash.md +1 -1
  107. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidTyp.md +1 -1
  108. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingAud.md +1 -1
  109. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingCnf.md +1 -1
  110. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingIat.md +1 -1
  111. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingNonce.md +1 -1
  112. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingSdHash.md +1 -1
  113. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbSignatureFailed.md +1 -1
  114. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmail.md +1 -1
  115. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmailVerified.md +1 -1
  116. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidHolderKey.md +1 -1
  117. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuedAt.md +1 -1
  118. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuer.md +1 -1
  119. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtJwksMissingKeys.md +1 -1
  120. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingCnf.md +1 -1
  121. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingEmail.md +1 -1
  122. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIat.md +1 -1
  123. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIss.md +1 -1
  124. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtSignatureFailed.md +1 -1
  125. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtUnsupportedHeaderAlg.md +1 -1
  126. package/front_end/models/issues_manager/descriptions/emailVerificationRequestUserLoggedOut.md +1 -1
  127. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -1
  128. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -1
  129. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -1
  130. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -1
  131. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -1
  132. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -1
  133. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -1
  134. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -1
  135. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -1
  136. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -1
  137. package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -1
  138. package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -1
  139. package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -1
  140. package/front_end/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -1
  141. package/front_end/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -1
  142. package/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -1
  143. package/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -1
  144. package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -1
  145. package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -1
  146. package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -1
  147. package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -1
  148. package/front_end/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -1
  149. package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -1
  150. package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -1
  151. package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -1
  152. package/front_end/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -1
  153. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -1
  154. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -1
  155. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -1
  156. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -1
  157. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -1
  158. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -1
  159. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -1
  160. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -1
  161. package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -1
  162. package/front_end/models/issues_manager/descriptions/fetchingPartitionedBlobURL.md +2 -2
  163. package/front_end/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingIdError.md +2 -2
  164. package/front_end/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +1 -1
  165. package/front_end/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +1 -1
  166. package/front_end/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +2 -2
  167. package/front_end/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +2 -2
  168. package/front_end/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +1 -1
  169. package/front_end/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +1 -1
  170. package/front_end/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +2 -2
  171. package/front_end/models/issues_manager/descriptions/genericFormLabelForNameError.md +1 -1
  172. package/front_end/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +1 -1
  173. package/front_end/models/issues_manager/descriptions/genericFormModelContextMissingToolName.md +1 -1
  174. package/front_end/models/issues_manager/descriptions/genericFormModelContextParameterMissingName.md +1 -1
  175. package/front_end/models/issues_manager/descriptions/genericFormModelContextRequiredParameterMissingName.md +1 -1
  176. package/front_end/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +2 -2
  177. package/front_end/models/issues_manager/descriptions/heavyAd.md +1 -1
  178. package/front_end/models/issues_manager/descriptions/lazyLoadImageZeroSize.md +1 -1
  179. package/front_end/models/issues_manager/descriptions/navigatingPartitionedBlobURL.md +3 -3
  180. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +1 -1
  181. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +1 -1
  182. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +1 -1
  183. package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +2 -2
  184. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +2 -2
  185. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +2 -2
  186. package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +1 -1
  187. package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +2 -2
  188. package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +2 -2
  189. package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +2 -2
  190. package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +2 -2
  191. package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +1 -1
  192. package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +2 -2
  193. package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +2 -2
  194. package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +2 -2
  195. package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +1 -1
  196. package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +2 -2
  197. package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +1 -1
  198. package/front_end/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +1 -1
  199. package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +1 -1
  200. package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +1 -1
  201. package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +1 -1
  202. package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +1 -1
  203. package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +1 -1
  204. package/front_end/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +1 -1
  205. package/front_end/models/issues_manager/descriptions/selectivePermissionsIntervention.md +3 -3
  206. package/front_end/models/issues_manager/descriptions/sharedArrayBuffer.md +1 -1
  207. package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -1
  208. package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +1 -1
  209. package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -1
  210. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -1
  211. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -1
  212. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorExpiredResponse.md +1 -1
  213. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +2 -2
  214. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -1
  215. package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md +2 -2
  216. package/front_end/models/issues_manager/descriptions/sriInvalidSignatureHeader.md +4 -4
  217. package/front_end/models/issues_manager/descriptions/sriInvalidSignatureInputHeader.md +4 -4
  218. package/front_end/models/issues_manager/descriptions/sriMissingSignatureHeader.md +1 -1
  219. package/front_end/models/issues_manager/descriptions/sriMissingSignatureInputHeader.md +2 -2
  220. package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md +2 -2
  221. package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md +4 -4
  222. package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md +4 -4
  223. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md +1 -1
  224. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md +2 -2
  225. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +1 -1
  226. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +1 -1
  227. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md +2 -2
  228. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderKeyIdLength.md +5 -5
  229. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingLabel.md +3 -3
  230. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +2 -2
  231. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueMissingComponents.md +2 -2
  232. package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +2 -2
  233. package/front_end/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +4 -4
  234. package/front_end/models/issues_manager/descriptions/sriValidationFailedInvalidLength.md +3 -3
  235. package/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureExpired.md +2 -2
  236. package/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md +2 -2
  237. package/front_end/models/issues_manager/descriptions/stylesheetLateImport.md +1 -1
  238. package/front_end/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +1 -1
  239. package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md +2 -2
  240. package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestType.md +3 -3
  241. package/front_end/models/issues_manager/descriptions/unencodedDigestMalformedDictionary.md +2 -2
  242. package/front_end/models/issues_manager/descriptions/unencodedDigestUnknownAlgorithm.md +1 -1
  243. package/front_end/models/live-metrics/LiveMetrics.ts +59 -19
  244. package/front_end/models/live-metrics/web-vitals-injected/README.md +1 -1
  245. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +6 -1
  246. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +11 -3
  247. package/front_end/models/logs/LogManager.ts +1 -1
  248. package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +1 -1
  249. package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +6 -7
  250. package/front_end/models/workspace_diff/WorkspaceDiff.ts +13 -14
  251. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +15 -7
  252. package/front_end/panels/application/BackgroundServiceView.ts +18 -20
  253. package/front_end/panels/application/DOMStorageItemsView.ts +1 -2
  254. package/front_end/panels/application/KeyValueStorageItemsView.ts +12 -0
  255. package/front_end/panels/autofill/AutofillView.ts +17 -17
  256. package/front_end/panels/autofill/autofillView.css +7 -8
  257. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +31 -31
  258. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +15 -15
  259. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +12 -12
  260. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +27 -27
  261. package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +14 -6
  262. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +14 -6
  263. package/front_end/panels/common/AiCodeCompletionTeaser.ts +13 -6
  264. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
  265. package/front_end/panels/console/ConsoleInsightTeaser.ts +13 -6
  266. package/front_end/panels/console/ConsoleView.ts +6 -6
  267. package/front_end/panels/console_counters/WarningErrorCounter.ts +4 -4
  268. package/front_end/panels/coverage/CoverageModel.ts +11 -1
  269. package/front_end/panels/elements/StylePropertiesSection.ts +59 -10
  270. package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +18 -7
  271. package/front_end/panels/elements/StylesSidebarPane.ts +48 -0
  272. package/front_end/panels/emulation/AdvancedApp.ts +18 -8
  273. package/front_end/panels/emulation/DeviceModeToolbar.ts +0 -1
  274. package/front_end/panels/emulation/DeviceModeView.ts +289 -164
  275. package/front_end/panels/emulation/MediaQueryInspector.ts +10 -6
  276. package/front_end/panels/emulation/deviceModeView.css +1 -0
  277. package/front_end/panels/event_listeners/EventListenersView.ts +8 -8
  278. package/front_end/panels/explain/components/ConsoleInsight.ts +15 -7
  279. package/front_end/panels/lighthouse/LighthouseController.ts +1 -6
  280. package/front_end/panels/network/NetworkLogView.ts +13 -14
  281. package/front_end/panels/screencast/ScreencastApp.ts +12 -6
  282. package/front_end/panels/screencast/ScreencastView.ts +37 -11
  283. package/front_end/panels/sensors/locationsSettingsTab.css +4 -0
  284. package/front_end/panels/settings/AISettingsTab.ts +13 -6
  285. package/front_end/panels/sources/DebuggerPlugin.ts +13 -2
  286. package/front_end/panels/sources/breakpointEditDialog.css +2 -2
  287. package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -1
  288. package/front_end/panels/timeline/components/cpuThrottlingSelector.css +4 -0
  289. package/front_end/panels/timeline/components/liveMetricsView.css +28 -0
  290. package/front_end/panels/timeline/timeline-meta.ts +13 -0
  291. package/front_end/third_party/chromium/README.chromium +1 -1
  292. package/front_end/ui/components/menus/menu.css +4 -0
  293. package/front_end/ui/components/menus/menuItem.css +4 -0
  294. package/front_end/ui/components/menus/selectMenu.css +4 -0
  295. package/front_end/ui/components/menus/selectMenuButton.css +4 -0
  296. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +21 -10
  297. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +23 -12
  298. package/front_end/ui/components/text_editor/config.ts +7 -0
  299. package/front_end/ui/legacy/AppProvider.ts +2 -1
  300. package/front_end/ui/legacy/RootView.ts +8 -1
  301. package/front_end/ui/legacy/UniverseRequestEvent.ts +19 -0
  302. package/front_end/ui/legacy/Widget.ts +49 -6
  303. package/front_end/ui/legacy/inspectorCommon.css +1 -1
  304. package/front_end/ui/legacy/legacy.ts +2 -0
  305. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
  306. package/package.json +1 -2
  307. package/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +0 -8
  308. package/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +0 -8
  309. package/front_end/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +0 -8
  310. package/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +0 -8
  311. package/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +0 -8
  312. package/front_end/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +0 -8
@@ -144,7 +144,7 @@ export class DebuggerModel extends SDKModel<EventTypes> {
144
144
  #selectedCallFrame: CallFrame|null = null;
145
145
  #debuggerEnabled = false;
146
146
  #debuggerId: string|null = null;
147
- #skipAllPausesTimeout = 0;
147
+ #skipAllPausesTimeout?: ReturnType<typeof setTimeout>;
148
148
  #beforePausedCallback: ((arg0: DebuggerPausedDetails, stepOver: Location|null) => Promise<boolean>)|null = null;
149
149
  #computeAutoStepRangesCallback: ((arg0: StepMode, arg1: CallFrame) => Promise<Array<{
150
150
  start: Location,
@@ -337,20 +337,20 @@ export class DebuggerModel extends SDKModel<EventTypes> {
337
337
  }
338
338
 
339
339
  private skipAllPauses(skip: boolean): void {
340
- if (this.#skipAllPausesTimeout) {
341
- clearTimeout(this.#skipAllPausesTimeout);
342
- this.#skipAllPausesTimeout = 0;
343
- }
340
+ clearTimeout(this.#skipAllPausesTimeout);
341
+
344
342
  void this.agent.invoke_setSkipAllPauses({skip});
345
343
  }
346
344
 
347
345
  skipAllPausesUntilReloadOrTimeout(timeout: number): void {
348
- if (this.#skipAllPausesTimeout) {
349
- clearTimeout(this.#skipAllPausesTimeout);
350
- }
346
+ clearTimeout(this.#skipAllPausesTimeout);
347
+
351
348
  void this.agent.invoke_setSkipAllPauses({skip: true});
352
349
  // If reload happens before the timeout, the flag will be already unset and the timeout callback won't change anything.
353
- this.#skipAllPausesTimeout = window.setTimeout(this.skipAllPauses.bind(this, false), timeout);
350
+ this.#skipAllPausesTimeout = globalThis.setTimeout(
351
+ this.skipAllPauses.bind(this, false),
352
+ timeout,
353
+ );
354
354
  }
355
355
 
356
356
  private pauseOnExceptionStateChanged(): void {
@@ -121,7 +121,7 @@ export class IsolateManager extends Common.ObjectWrapper.ObjectWrapper<EventType
121
121
  const pollId = this.#pollId;
122
122
  while (pollId === this.#pollId) {
123
123
  await Promise.all(Array.from(this.isolates(), isolate => isolate.update()));
124
- await new Promise(r => window.setTimeout(r, PollIntervalMs));
124
+ await new Promise(r => globalThis.setTimeout(r, PollIntervalMs));
125
125
  }
126
126
  }
127
127
  }
@@ -5,6 +5,7 @@
5
5
  import type * as ProtocolProxyApi from '../../generated/protocol-proxy-api.js';
6
6
  import * as Protocol from '../../generated/protocol.js';
7
7
  import * as Common from '../common/common.js';
8
+ import * as Host from '../host/host.js';
8
9
  import * as i18n from '../i18n/i18n.js';
9
10
  import * as Platform from '../platform/platform.js';
10
11
  import * as Root from '../root/root.js';
@@ -23,6 +24,7 @@ import {
23
24
  type NameValue,
24
25
  NetworkRequest,
25
26
  } from './NetworkRequest.js';
27
+ import {type ExecutionContext, RuntimeModel} from './RuntimeModel.js';
26
28
  import {SDKModel} from './SDKModel.js';
27
29
  import {Capability, type Target} from './Target.js';
28
30
  import {type SDKModelObserver, TargetManager} from './TargetManager.js';
@@ -116,6 +118,22 @@ const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined
116
118
 
117
119
  const requestToManagerMap = new WeakMap<NetworkRequest, NetworkManager>();
118
120
 
121
+ /** Resource types eligible for resend with full fidelity. */
122
+ const FULL_FIDELITY_RESEND_TYPES = new Set([
123
+ Common.ResourceType.resourceTypes.XHR,
124
+ Common.ResourceType.resourceTypes.Fetch,
125
+ Common.ResourceType.resourceTypes.Script,
126
+ Common.ResourceType.resourceTypes.Stylesheet,
127
+ Common.ResourceType.resourceTypes.Image,
128
+ Common.ResourceType.resourceTypes.Media,
129
+ Common.ResourceType.resourceTypes.Font,
130
+ Common.ResourceType.resourceTypes.Wasm,
131
+ Common.ResourceType.resourceTypes.Manifest,
132
+ Common.ResourceType.resourceTypes.TextTrack,
133
+ Common.ResourceType.resourceTypes.SourceMapScript,
134
+ Common.ResourceType.resourceTypes.SourceMapStyleSheet,
135
+ ]);
136
+
119
137
  const CONNECTION_TYPES = new Map([
120
138
  ['2g', Protocol.Network.ConnectionType.Cellular2g],
121
139
  ['3g', Protocol.Network.ConnectionType.Cellular3g],
@@ -193,18 +211,101 @@ export class NetworkManager extends SDKModel<EventTypes> {
193
211
  return requestToManagerMap.get(request) || null;
194
212
  }
195
213
 
196
- static canReplayRequest(request: NetworkRequest): boolean {
197
- return Boolean(requestToManagerMap.get(request)) && Boolean(request.backendRequestId()) && !request.isRedirect() &&
198
- request.resourceType() === Common.ResourceType.resourceTypes.XHR;
214
+ static canResendRequest(request: NetworkRequest): boolean {
215
+ if (!requestToManagerMap.get(request) || !request.backendRequestId() || request.isRedirect()) {
216
+ return false;
217
+ }
218
+ return FULL_FIDELITY_RESEND_TYPES.has(request.resourceType());
199
219
  }
200
220
 
201
221
  static replayRequest(request: NetworkRequest): void {
222
+ void NetworkManager.resendRequest(request);
223
+ }
224
+
225
+ static async resendRequest(request: NetworkRequest): Promise<void> {
202
226
  const manager = requestToManagerMap.get(request);
203
227
  const requestId = request.backendRequestId();
204
228
  if (!manager || !requestId || request.isRedirect()) {
205
229
  return;
206
230
  }
207
- void manager.#networkAgent.invoke_replayXHR({requestId});
231
+
232
+ Host.userMetrics.resendRequest(Host.UserMetrics.resendRequestType(request.resourceType()));
233
+
234
+ // XHR requests use the existing CDP replay mechanism.
235
+ if (request.resourceType() === Common.ResourceType.resourceTypes.XHR) {
236
+ void manager.#networkAgent.invoke_replayXHR({requestId});
237
+ return;
238
+ }
239
+
240
+ // All other eligible types use fetch via Runtime.evaluate.
241
+ const target = manager.target();
242
+ const runtimeModel = target.model(RuntimeModel);
243
+ if (!runtimeModel) {
244
+ return;
245
+ }
246
+
247
+ // Resolve execution context: prefer the frame's default context.
248
+ let executionContext: ExecutionContext|null = null;
249
+ const frameId = request.frameId;
250
+ if (frameId) {
251
+ executionContext = runtimeModel.executionContexts().find(ctx => ctx.frameId === frameId && ctx.isDefault) ?? null;
252
+ }
253
+ const usesFallbackContext = !executionContext;
254
+ if (!executionContext) {
255
+ executionContext = runtimeModel.defaultExecutionContext();
256
+ }
257
+ if (!executionContext) {
258
+ return;
259
+ }
260
+
261
+ if (usesFallbackContext) {
262
+ runtimeModel.target().targetManager().getConsole().warn(
263
+ 'Resend: original execution context unavailable, using top-level context.');
264
+ }
265
+
266
+ // Build the fetch expression.
267
+ const method = request.requestMethod;
268
+ const url = request.url();
269
+ const headers: Array<[string, string]> = [];
270
+ for (const {name, value} of request.requestHeaders()) {
271
+ // Skip HTTP/2+ pseudo-headers (e.g. :authority, :method, :path, :scheme).
272
+ if (name.startsWith(':')) {
273
+ continue;
274
+ }
275
+ // Skip headers the browser sets automatically for fetch.
276
+ const lower = name.toLowerCase();
277
+ if (lower === 'host' || lower === 'connection' || lower === 'content-length' || lower === 'cookie' ||
278
+ lower === 'origin' || lower === 'referer') {
279
+ continue;
280
+ }
281
+ headers.push([name, value]);
282
+ }
283
+
284
+ const body = await request.requestFormData();
285
+ const fetchOptions: {method: string, headers: Array<[string, string]>, credentials: string, body?: string} = {
286
+ method,
287
+ headers,
288
+ credentials: 'include',
289
+ };
290
+ const isGetOrHead = method === 'GET' || method === 'HEAD';
291
+ if (body && !isGetOrHead) {
292
+ fetchOptions.body = body;
293
+ }
294
+
295
+ const expression = `fetch(${JSON.stringify(url)}, ${JSON.stringify(fetchOptions)})`;
296
+ const response = await target.runtimeAgent().invoke_evaluate({
297
+ expression,
298
+ // Use uniqueContextId if available, otherwise fall back to contextId.
299
+ ...(executionContext.uniqueId ? {uniqueContextId: executionContext.uniqueId} : {contextId: executionContext.id}),
300
+ silent: false,
301
+ awaitPromise: true,
302
+ });
303
+
304
+ if (response.getError() || response.exceptionDetails) {
305
+ const errorText = response.getError() || response.exceptionDetails?.exception?.description ||
306
+ response.exceptionDetails?.text || 'Unknown error';
307
+ runtimeModel.target().targetManager().getConsole().error(`Resend failed for ${url}: ${errorText}`);
308
+ }
208
309
  }
209
310
 
210
311
  static async searchInRequest(request: NetworkRequest, query: string, caseSensitive: boolean, isRegex: boolean):
@@ -66,18 +66,6 @@ const UIStrings = {
66
66
  * @description Tooltip to explain why a cookie was blocked.
67
67
  */
68
68
  unknownError: 'An unknown error was encountered when trying to send this cookie.',
69
- /**
70
- * @description Tooltip to explain why a cookie was blocked due to Schemeful Same-Site.
71
- */
72
- schemefulSameSiteStrict: 'This cookie was blocked because it had the "`SameSite=Strict`" attribute but the request was cross-site. This includes top-level navigation requests initiated by other sites. This request is considered cross-site because the URL has a different scheme than the current site.',
73
- /**
74
- * @description Tooltip to explain why a cookie was blocked due to Schemeful Same-Site.
75
- */
76
- schemefulSameSiteLax: 'This cookie was blocked because it had the "`SameSite=Lax`" attribute but the request was cross-site and was not initiated by a top-level navigation. This request is considered cross-site because the URL has a different scheme than the current site.',
77
- /**
78
- * @description Tooltip to explain why a cookie was blocked due to Schemeful Same-Site.
79
- */
80
- schemefulSameSiteUnspecifiedTreatedAsLax: 'This cookie didn’t specify a "`SameSite`" attribute when it was stored, was defaulted to "`SameSite=Lax`", and was blocked because the request was cross-site and was not initiated by a top-level navigation. This request is considered cross-site because the URL has a different scheme than the current site.',
81
69
  /**
82
70
  * @description Tooltip to explain why a cookie was blocked due to exceeding the maximum size.
83
71
  */
@@ -106,15 +94,6 @@ const UIStrings = {
106
94
  * @description Tooltip to explain why a cookie was blocked.
107
95
  */
108
96
  anUnknownErrorWasEncounteredWhenTrying: 'An unknown error was encountered when trying to store this cookie.',
109
- /**
110
- * @description Tooltip to explain why a cookie was blocked due to Schemeful Same-Site.
111
- * @example {SameSite=Strict} PH1
112
- */
113
- thisSetcookieWasBlockedBecauseItHadTheSamesiteStrictLax: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it had the "{PH1}" attribute but came from a cross-site response which was not the response to a top-level navigation. This response is considered cross-site because the URL has a different scheme than the current site.',
114
- /**
115
- * @description Tooltip to explain why a cookie was blocked due to Schemeful Same-Site.
116
- */
117
- thisSetcookieDidntSpecifyASamesite: 'This "`Set-Cookie`" header didn’t specify a "`SameSite`" attribute, was defaulted to "`SameSite=Lax`", and was blocked because it came from a cross-site response which was not the response to a top-level navigation. This response is considered cross-site because the URL has a different scheme than the current site.',
118
97
  /**
119
98
  * @description Tooltip to explain why an attempt to set a cookie via a `Set-Cookie` HTTP header on a request's response was blocked.
120
99
  */
@@ -1991,12 +1970,6 @@ export const cookieBlockedReasonToUiString = function(
1991
1970
  return i18nString(UIStrings.notOnPath);
1992
1971
  case Protocol.Network.CookieBlockedReason.DomainMismatch:
1993
1972
  return i18nString(UIStrings.domainMismatch);
1994
- case Protocol.Network.CookieBlockedReason.SameSiteStrict:
1995
- return i18nString(UIStrings.sameSiteStrict);
1996
- case Protocol.Network.CookieBlockedReason.SameSiteLax:
1997
- return i18nString(UIStrings.sameSiteLax);
1998
- case Protocol.Network.CookieBlockedReason.SameSiteUnspecifiedTreatedAsLax:
1999
- return i18nString(UIStrings.sameSiteUnspecifiedTreatedAsLax);
2000
1973
  case Protocol.Network.CookieBlockedReason.SameSiteNoneInsecure:
2001
1974
  return i18nString(UIStrings.sameSiteNoneInsecure);
2002
1975
  case Protocol.Network.CookieBlockedReason.UserPreferences:
@@ -2004,11 +1977,11 @@ export const cookieBlockedReasonToUiString = function(
2004
1977
  case Protocol.Network.CookieBlockedReason.UnknownError:
2005
1978
  return i18nString(UIStrings.unknownError);
2006
1979
  case Protocol.Network.CookieBlockedReason.SchemefulSameSiteStrict:
2007
- return i18nString(UIStrings.schemefulSameSiteStrict);
1980
+ return i18nString(UIStrings.sameSiteStrict);
2008
1981
  case Protocol.Network.CookieBlockedReason.SchemefulSameSiteLax:
2009
- return i18nString(UIStrings.schemefulSameSiteLax);
1982
+ return i18nString(UIStrings.sameSiteLax);
2010
1983
  case Protocol.Network.CookieBlockedReason.SchemefulSameSiteUnspecifiedTreatedAsLax:
2011
- return i18nString(UIStrings.schemefulSameSiteUnspecifiedTreatedAsLax);
1984
+ return i18nString(UIStrings.sameSiteUnspecifiedTreatedAsLax);
2012
1985
  case Protocol.Network.CookieBlockedReason.NameValuePairExceedsMaxSize:
2013
1986
  return i18nString(UIStrings.nameValuePairExceedsMaxSize);
2014
1987
  case Protocol.Network.CookieBlockedReason.ThirdPartyPhaseout:
@@ -2023,16 +1996,6 @@ export const setCookieBlockedReasonToUiString = function(
2023
1996
  switch (blockedReason) {
2024
1997
  case Protocol.Network.SetCookieBlockedReason.SecureOnly:
2025
1998
  return i18nString(UIStrings.blockedReasonSecureOnly);
2026
- case Protocol.Network.SetCookieBlockedReason.SameSiteStrict:
2027
- return i18nString(UIStrings.blockedReasonSameSiteStrictLax, {
2028
- PH1: 'SameSite=Strict',
2029
- });
2030
- case Protocol.Network.SetCookieBlockedReason.SameSiteLax:
2031
- return i18nString(UIStrings.blockedReasonSameSiteStrictLax, {
2032
- PH1: 'SameSite=Lax',
2033
- });
2034
- case Protocol.Network.SetCookieBlockedReason.SameSiteUnspecifiedTreatedAsLax:
2035
- return i18nString(UIStrings.blockedReasonSameSiteUnspecifiedTreatedAsLax);
2036
1999
  case Protocol.Network.SetCookieBlockedReason.SameSiteNoneInsecure:
2037
2000
  return i18nString(UIStrings.blockedReasonSameSiteNoneInsecure);
2038
2001
  case Protocol.Network.SetCookieBlockedReason.UserPreferences:
@@ -2050,17 +2013,15 @@ export const setCookieBlockedReasonToUiString = function(
2050
2013
  case Protocol.Network.SetCookieBlockedReason.UnknownError:
2051
2014
  return i18nString(UIStrings.anUnknownErrorWasEncounteredWhenTrying);
2052
2015
  case Protocol.Network.SetCookieBlockedReason.SchemefulSameSiteStrict:
2053
- return i18nString(
2054
- UIStrings.thisSetcookieWasBlockedBecauseItHadTheSamesiteStrictLax,
2055
- {PH1: 'SameSite=Strict'},
2056
- );
2016
+ return i18nString(UIStrings.blockedReasonSameSiteStrictLax, {
2017
+ PH1: 'SameSite=Strict',
2018
+ });
2057
2019
  case Protocol.Network.SetCookieBlockedReason.SchemefulSameSiteLax:
2058
- return i18nString(
2059
- UIStrings.thisSetcookieWasBlockedBecauseItHadTheSamesiteStrictLax,
2060
- {PH1: 'SameSite=Lax'},
2061
- );
2020
+ return i18nString(UIStrings.blockedReasonSameSiteStrictLax, {
2021
+ PH1: 'SameSite=Lax',
2022
+ });
2062
2023
  case Protocol.Network.SetCookieBlockedReason.SchemefulSameSiteUnspecifiedTreatedAsLax:
2063
- return i18nString(UIStrings.thisSetcookieDidntSpecifyASamesite);
2024
+ return i18nString(UIStrings.blockedReasonSameSiteUnspecifiedTreatedAsLax);
2064
2025
  case Protocol.Network.SetCookieBlockedReason.NameValuePairExceedsMaxSize:
2065
2026
  return i18nString(
2066
2027
  UIStrings.thisSetcookieWasBlockedBecauseTheNameValuePairExceedsMaxSize,
@@ -2083,9 +2044,6 @@ export const cookieBlockedReasonToAttribute = function(
2083
2044
  return Attribute.PATH;
2084
2045
  case Protocol.Network.CookieBlockedReason.DomainMismatch:
2085
2046
  return Attribute.DOMAIN;
2086
- case Protocol.Network.CookieBlockedReason.SameSiteStrict:
2087
- case Protocol.Network.CookieBlockedReason.SameSiteLax:
2088
- case Protocol.Network.CookieBlockedReason.SameSiteUnspecifiedTreatedAsLax:
2089
2047
  case Protocol.Network.CookieBlockedReason.SameSiteNoneInsecure:
2090
2048
  case Protocol.Network.CookieBlockedReason.SchemefulSameSiteStrict:
2091
2049
  case Protocol.Network.CookieBlockedReason.SchemefulSameSiteLax:
@@ -2107,9 +2065,6 @@ export const setCookieBlockedReasonToAttribute = function(
2107
2065
  case Protocol.Network.SetCookieBlockedReason.SecureOnly:
2108
2066
  case Protocol.Network.SetCookieBlockedReason.OverwriteSecure:
2109
2067
  return Attribute.SECURE;
2110
- case Protocol.Network.SetCookieBlockedReason.SameSiteStrict:
2111
- case Protocol.Network.SetCookieBlockedReason.SameSiteLax:
2112
- case Protocol.Network.SetCookieBlockedReason.SameSiteUnspecifiedTreatedAsLax:
2113
2068
  case Protocol.Network.SetCookieBlockedReason.SameSiteNoneInsecure:
2114
2069
  case Protocol.Network.SetCookieBlockedReason.SchemefulSameSiteStrict:
2115
2070
  case Protocol.Network.SetCookieBlockedReason.SchemefulSameSiteLax:
@@ -86,7 +86,7 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
86
86
  overlayAgent: ProtocolProxyApi.OverlayApi;
87
87
  readonly #debuggerModel: DebuggerModel|null;
88
88
  #inspectModeEnabled = false;
89
- #hideHighlightTimeout: number|null = null;
89
+ #hideHighlightTimeout?: ReturnType<typeof setTimeout>;
90
90
  #defaultHighlighter: Highlighter;
91
91
  #highlighter: Highlighter;
92
92
  #showPaintRectsSetting: Common.Settings.Setting<boolean>;
@@ -331,14 +331,13 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
331
331
  // overlay, so that it is not cleared by the highlight
332
332
  return;
333
333
  }
334
- if (this.#hideHighlightTimeout) {
335
334
  clearTimeout(this.#hideHighlightTimeout);
336
- this.#hideHighlightTimeout = null;
337
- }
338
- const highlightConfig = this.buildHighlightConfig(mode);
339
- if (typeof showInfo !== 'undefined') {
340
- highlightConfig.showInfo = showInfo;
341
- }
335
+ this.#hideHighlightTimeout = undefined;
336
+
337
+ const highlightConfig = this.buildHighlightConfig(mode);
338
+ if (typeof showInfo !== 'undefined') {
339
+ highlightConfig.showInfo = showInfo;
340
+ }
342
341
  this.#highlighter.highlightInOverlay(data, highlightConfig);
343
342
  }
344
343
 
@@ -486,17 +485,19 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
486
485
  }
487
486
 
488
487
  private delayedHideHighlight(delay: number): void {
489
- if (this.#hideHighlightTimeout === null) {
490
- this.#hideHighlightTimeout = window.setTimeout(() => this.highlightInOverlay({clear: true}), delay);
488
+ if (this.#hideHighlightTimeout === undefined) {
489
+ this.#hideHighlightTimeout = globalThis.setTimeout(
490
+ () => this.highlightInOverlay({clear: true}),
491
+ delay,
492
+ );
491
493
  }
492
494
  }
493
495
 
494
496
  highlightFrame(frameId: Protocol.Page.FrameId): void {
495
- if (this.#hideHighlightTimeout) {
496
497
  clearTimeout(this.#hideHighlightTimeout);
497
- this.#hideHighlightTimeout = null;
498
- }
499
- this.#highlighter.highlightFrame(frameId);
498
+ this.#hideHighlightTimeout = undefined;
499
+
500
+ this.#highlighter.highlightFrame(frameId);
500
501
  }
501
502
 
502
503
  showHingeForDualScreen(hinge: Hinge|null): void {
@@ -868,7 +868,7 @@ export class LocalJSONObject extends RemoteObject {
868
868
  Promise<GetPropertiesResult> {
869
869
  function isArrayIndex(name: string): boolean {
870
870
  const index = Number(name) >>> 0;
871
- return String(index) === name;
871
+ return String(index) === name && index < 4294967295;
872
872
  }
873
873
 
874
874
  let properties = this.children();
@@ -445,6 +445,7 @@
445
445
  SyncSetting: 'DevTools.SyncSetting',
446
446
  SwatchActivated: 'DevTools.SwatchActivated',
447
447
  BuiltInAiAvailability: 'DevTools.BuiltInAiAvailability',
448
+ ResendRequest: 'DevTools.ResendRequest',
448
449
  // LINT.ThenChange(/front_end/core/host/InspectorFrontendHostAPI.ts:EnumeratedHistogram)
449
450
  };
450
451
 
@@ -45,7 +45,6 @@ import * as Foundation from '../../foundation/foundation.js';
45
45
  import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
46
46
  import * as Badges from '../../models/badges/badges.js';
47
47
  import * as CrUXManager from '../../models/crux-manager/crux-manager.js';
48
- import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
49
48
  import * as Persistence from '../../models/persistence/persistence.js';
50
49
  import * as Workspace from '../../models/workspace/workspace.js';
51
50
  import * as PanelCommon from '../../panels/common/common.js';
@@ -445,15 +444,6 @@ export class MainImpl {
445
444
  UI.ContextMenu.ContextMenu.installHandler(document);
446
445
  UI.ViewManager.ViewManager.instance({forceNew: true, universe: this.#universe});
447
446
 
448
- // These instances need to be created early so they don't miss any events about requests/issues/etc.
449
- IssuesManager.IssuesManager.IssuesManager.instance({
450
- forceNew: true,
451
- ensureFirst: true,
452
- showThirdPartyIssuesSetting:
453
- IssuesManager.Issue.getShowThirdPartyIssuesSetting(Common.Settings.Settings.instance()),
454
- hideIssueSetting: IssuesManager.IssuesManager.getHideIssueByCodeSetting(),
455
- });
456
-
457
447
  UI.DockController.DockController.instance({forceNew: true, canDock});
458
448
  const targetManager = SDK.TargetManager.TargetManager.instance();
459
449
  targetManager.addEventListener(
@@ -532,7 +522,7 @@ export class MainImpl {
532
522
 
533
523
  async #showAppUI(appProvider: Object): Promise<void> {
534
524
  MainImpl.time('Main._showAppUI');
535
- const app = (appProvider as UI.AppProvider.AppProvider).createApp();
525
+ const app = (appProvider as UI.AppProvider.AppProvider).createApp(this.#universe);
536
526
  // It is important to kick controller lifetime after apps are instantiated.
537
527
  UI.DockController.DockController.instance().initialize();
538
528
  ThemeSupport.ThemeSupport.instance().fetchColorsAndApplyHostTheme();
@@ -866,7 +856,10 @@ export class MainMenuItem implements UI.Toolbar.Provider {
866
856
  const button = this.#item.element;
867
857
 
868
858
  function setDockSide(side: UI.DockController.DockState): void {
869
- void dockController.once(UI.DockController.Events.AFTER_DOCK_SIDE_CHANGED).then(() => button.focus());
859
+ if (dockController.dockSide() !== UI.DockController.DockState.UNDOCKED &&
860
+ side !== UI.DockController.DockState.UNDOCKED) {
861
+ void dockController.once(UI.DockController.Events.AFTER_DOCK_SIDE_CHANGED).then(() => button.focus());
862
+ }
870
863
  dockController.setDockSide(side);
871
864
  contextMenu.discard();
872
865
  }
@@ -2,11 +2,17 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import type * as Foundation from '../../foundation/foundation.js';
5
6
  import * as UI from '../../ui/legacy/legacy.js';
6
7
 
7
8
  export class SimpleApp implements UI.App.App {
9
+ readonly #universe: Foundation.Universe.Universe;
10
+ constructor(universe: Foundation.Universe.Universe) {
11
+ this.#universe = universe;
12
+ }
13
+
8
14
  presentUI(document: Document): void {
9
- const rootView = new UI.RootView.RootView();
15
+ const rootView = new UI.RootView.RootView(this.#universe);
10
16
  UI.InspectorView.InspectorView.instance().show(rootView.element);
11
17
  rootView.attachToDocument(document);
12
18
  rootView.focus();
@@ -14,7 +20,7 @@ export class SimpleApp implements UI.App.App {
14
20
  }
15
21
 
16
22
  export class SimpleAppProvider implements UI.AppProvider.AppProvider {
17
- createApp(): UI.App.App {
18
- return new SimpleApp();
23
+ createApp(universe: Foundation.Universe.Universe): UI.App.App {
24
+ return new SimpleApp(universe);
19
25
  }
20
26
  }
@@ -13,6 +13,7 @@ import * as Bindings from '../models/bindings/bindings.js';
13
13
  import * as Breakpoints from '../models/breakpoints/breakpoints.js';
14
14
  import * as CrUXManager from '../models/crux-manager/crux-manager.js';
15
15
  import * as Emulation from '../models/emulation/emulation.js';
16
+ import * as IssuesManager from '../models/issues_manager/issues_manager.js';
16
17
  import * as JavaScriptMetadata from '../models/javascript_metadata/javascript_metadata.js';
17
18
  import * as LiveMetrics from '../models/live-metrics/live-metrics.js';
18
19
  import * as Logs from '../models/logs/logs.js';
@@ -136,6 +137,7 @@ export class Universe {
136
137
 
137
138
  this.fileSystemWorkspaceBinding =
138
139
  new Persistence.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding(isolatedFileSystemManager, workspace);
140
+ context.set(Persistence.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding, this.fileSystemWorkspaceBinding);
139
141
 
140
142
  const ignoreListManager = new Workspace.IgnoreListManager.IgnoreListManager(settings, targetManager);
141
143
  context.set(Workspace.IgnoreListManager.IgnoreListManager, ignoreListManager);
@@ -191,6 +193,17 @@ export class Universe {
191
193
  const logManager = new Logs.LogManager.LogManager(targetManager, networkLog);
192
194
  context.set(Logs.LogManager.LogManager, logManager);
193
195
 
196
+ const issuesManager = new IssuesManager.IssuesManager.IssuesManager(
197
+ IssuesManager.Issue.getShowThirdPartyIssuesSetting(settings),
198
+ IssuesManager.IssuesManager.getHideIssueByCodeSetting(settings),
199
+ frameManager,
200
+ targetManager,
201
+ workspace,
202
+ debuggerWorkspaceBinding,
203
+ cssWorkspaceBinding,
204
+ );
205
+ context.set(IssuesManager.IssuesManager.IssuesManager, issuesManager);
206
+
194
207
  const javaScriptMetadata = new JavaScriptMetadata.JavaScriptMetadata.JavaScriptMetadataImpl();
195
208
  context.set(JavaScriptMetadata.JavaScriptMetadata.JavaScriptMetadataImpl, javaScriptMetadata);
196
209
 
@@ -204,6 +217,7 @@ export class Universe {
204
217
  context.set(AiAssistance.AiHistoryStorage.AiHistoryStorage, aiHistoryStorage);
205
218
 
206
219
  this.autofillManager = new AutofillManager.AutofillManager.AutofillManager(targetManager, frameManager);
220
+ context.set(AutofillManager.AutofillManager.AutofillManager, this.autofillManager);
207
221
  }
208
222
 
209
223
  get automaticFileSystemManager(): Persistence.AutomaticFileSystemManager.AutomaticFileSystemManager {
@@ -280,6 +294,10 @@ export class Universe {
280
294
  return this.context.get(SDK.IsolateManager.IsolateManager);
281
295
  }
282
296
 
297
+ get issuesManager(): IssuesManager.IssuesManager.IssuesManager {
298
+ return this.context.get(IssuesManager.IssuesManager.IssuesManager);
299
+ }
300
+
283
301
  get networkPersistenceManager(): Persistence.NetworkPersistenceManager.NetworkPersistenceManager {
284
302
  return this.context.get(Persistence.NetworkPersistenceManager.NetworkPersistenceManager);
285
303
  }
@@ -331,4 +349,8 @@ export class Universe {
331
349
  get workspaceDiff(): WorkspaceDiff.WorkspaceDiff.WorkspaceDiffImpl {
332
350
  return this.context.get(WorkspaceDiff.WorkspaceDiff.WorkspaceDiffImpl);
333
351
  }
352
+
353
+ get<T>(ctor: Root.DevToolsContext.ConstructorT<T>): T {
354
+ return this.context.get(ctor);
355
+ }
334
356
  }
@@ -1316,7 +1316,7 @@ inspectorBackend.registerType("SmartCardEmulation.ReaderStateIn", [{"name": "rea
1316
1316
  inspectorBackend.registerType("SmartCardEmulation.ReaderStateOut", [{"name": "reader", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "eventState", "type": "object", "optional": false, "description": "", "typeRef": "SmartCardEmulation.ReaderStateFlags"}, {"name": "eventCount", "type": "number", "optional": false, "description": "", "typeRef": null}, {"name": "atr", "type": "string", "optional": false, "description": "", "typeRef": null}]);
1317
1317
 
1318
1318
  // Storage.
1319
- inspectorBackend.registerEnum("Storage.StorageType", {Cookies: "cookies", File_systems: "file_systems", Indexeddb: "indexeddb", Local_storage: "local_storage", Shader_cache: "shader_cache", Websql: "websql", Service_workers: "service_workers", Cache_storage: "cache_storage", Interest_groups: "interest_groups", Shared_storage: "shared_storage", Storage_buckets: "storage_buckets", All: "all", Other: "other"});
1319
+ inspectorBackend.registerEnum("Storage.StorageType", {Cookies: "cookies", File_systems: "file_systems", Indexeddb: "indexeddb", Local_storage: "local_storage", Shader_cache: "shader_cache", Websql: "websql", Service_workers: "service_workers", Cache_storage: "cache_storage", Shared_storage: "shared_storage", Storage_buckets: "storage_buckets", All: "all", Other: "other"});
1320
1320
  inspectorBackend.registerEnum("Storage.SharedStorageAccessScope", {Window: "window", SharedStorageWorklet: "sharedStorageWorklet", Header: "header"});
1321
1321
  inspectorBackend.registerEnum("Storage.SharedStorageAccessMethod", {AddModule: "addModule", CreateWorklet: "createWorklet", SelectURL: "selectURL", Run: "run", BatchUpdate: "batchUpdate", Set: "set", Append: "append", Delete: "delete", Clear: "clear", Get: "get", Keys: "keys", Values: "values", Entries: "entries", Length: "length", RemainingBudget: "remainingBudget"});
1322
1322
  inspectorBackend.registerEnum("Storage.StorageBucketsDurability", {Relaxed: "relaxed", Strict: "strict"});
@@ -1487,7 +1487,7 @@ inspectorBackend.registerCommand("WebAuthn.removeCredential", [{"name": "authent
1487
1487
  inspectorBackend.registerCommand("WebAuthn.clearCredentials", [{"name": "authenticatorId", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorId"}], [], "Clears all the credentials from the specified device.");
1488
1488
  inspectorBackend.registerCommand("WebAuthn.setUserVerified", [{"name": "authenticatorId", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorId"}, {"name": "isUserVerified", "type": "boolean", "optional": false, "description": "", "typeRef": null}], [], "Sets whether User Verification succeeds or fails for an authenticator. The default is true.");
1489
1489
  inspectorBackend.registerCommand("WebAuthn.setAutomaticPresenceSimulation", [{"name": "authenticatorId", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorId"}, {"name": "enabled", "type": "boolean", "optional": false, "description": "", "typeRef": null}], [], "Sets whether tests of user presence will succeed immediately (if true) or fail to resolve (if false) for an authenticator. The default is true.");
1490
- inspectorBackend.registerCommand("WebAuthn.setCredentialProperties", [{"name": "authenticatorId", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorId"}, {"name": "credentialId", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "backupEligibility", "type": "boolean", "optional": true, "description": "", "typeRef": null}, {"name": "backupState", "type": "boolean", "optional": true, "description": "", "typeRef": null}], [], "Allows setting credential properties. https://w3c.github.io/webauthn/#sctn-automation-set-credential-properties");
1490
+ inspectorBackend.registerCommand("WebAuthn.setCredentialProperties", [{"name": "authenticatorId", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorId"}, {"name": "credentialId", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "backupEligibility", "type": "boolean", "optional": true, "description": "", "typeRef": null}, {"name": "backupState", "type": "boolean", "optional": true, "description": "", "typeRef": null}, {"name": "activeCmtgKeyIndex", "type": "number", "optional": true, "description": "", "typeRef": null}, {"name": "generateCmtgKeyOnNextOperation", "type": "boolean", "optional": true, "description": "", "typeRef": null}], [], "Allows setting credential properties. https://w3c.github.io/webauthn/#sctn-automation-set-credential-properties");
1491
1491
  inspectorBackend.registerType("WebAuthn.VirtualAuthenticatorOptions", [{"name": "protocol", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorProtocol"}, {"name": "ctap2Version", "type": "string", "optional": true, "description": "Defaults to ctap2_0. Ignored if |protocol| == u2f.", "typeRef": "WebAuthn.Ctap2Version"}, {"name": "transport", "type": "string", "optional": false, "description": "", "typeRef": "WebAuthn.AuthenticatorTransport"}, {"name": "hasResidentKey", "type": "boolean", "optional": true, "description": "Defaults to false.", "typeRef": null}, {"name": "hasUserVerification", "type": "boolean", "optional": true, "description": "Defaults to false.", "typeRef": null}, {"name": "hasLargeBlob", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the largeBlob extension. https://w3c.github.io/webauthn#largeBlob Defaults to false.", "typeRef": null}, {"name": "hasCredBlob", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the credBlob extension. https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#sctn-credBlob-extension Defaults to false.", "typeRef": null}, {"name": "hasMinPinLength", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the minPinLength extension. https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-minpinlength-extension Defaults to false.", "typeRef": null}, {"name": "hasPrf", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the prf extension. https://w3c.github.io/webauthn/#prf-extension Defaults to false.", "typeRef": null}, {"name": "hasHmacSecret", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the hmac-secret extension. https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-hmac-secret-extension Defaults to false.", "typeRef": null}, {"name": "hasHmacSecretMc", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the hmac-secret-mc extension. https://fidoalliance.org/specs/fido-v2.2-rd-20241003/fido-client-to-authenticator-protocol-v2.2-rd-20241003.html#sctn-hmac-secret-make-cred-extension Defaults to false.", "typeRef": null}, {"name": "hasCmtgKey", "type": "boolean", "optional": true, "description": "If set to true, the authenticator will support the cmtgKey (Credential Manager Trust Group Key) extension. https://github.com/w3c/webauthn/pull/2377 Defaults to false.", "typeRef": null}, {"name": "automaticPresenceSimulation", "type": "boolean", "optional": true, "description": "If set to true, tests of user presence will succeed immediately. Otherwise, they will not be resolved. Defaults to true.", "typeRef": null}, {"name": "isUserVerified", "type": "boolean", "optional": true, "description": "Sets whether User Verification succeeds or fails for an authenticator. Defaults to false.", "typeRef": null}, {"name": "defaultBackupEligibility", "type": "boolean", "optional": true, "description": "Credentials created by this authenticator will have the backup eligibility (BE) flag set to this value. Defaults to false. https://w3c.github.io/webauthn/#sctn-credential-backup", "typeRef": null}, {"name": "defaultBackupState", "type": "boolean", "optional": true, "description": "Credentials created by this authenticator will have the backup state (BS) flag set to this value. Defaults to false. https://w3c.github.io/webauthn/#sctn-credential-backup", "typeRef": null}]);
1492
1492
  inspectorBackend.registerType("WebAuthn.Credential", [{"name": "credentialId", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "isResidentCredential", "type": "boolean", "optional": false, "description": "", "typeRef": null}, {"name": "rpId", "type": "string", "optional": true, "description": "Relying Party ID the credential is scoped to. Must be set when adding a credential.", "typeRef": null}, {"name": "privateKey", "type": "string", "optional": false, "description": "The ECDSA P-256 private key in PKCS#8 format.", "typeRef": null}, {"name": "userHandle", "type": "string", "optional": true, "description": "An opaque byte sequence with a maximum size of 64 bytes mapping the credential to a specific user.", "typeRef": null}, {"name": "signCount", "type": "number", "optional": false, "description": "Signature counter. This is incremented by one for each successful assertion. See https://w3c.github.io/webauthn/#signature-counter", "typeRef": null}, {"name": "largeBlob", "type": "string", "optional": true, "description": "The large blob associated with the credential. See https://w3c.github.io/webauthn/#sctn-large-blob-extension", "typeRef": null}, {"name": "backupEligibility", "type": "boolean", "optional": true, "description": "Assertions returned by this credential will have the backup eligibility (BE) flag set to this value. Defaults to the authenticator's defaultBackupEligibility value.", "typeRef": null}, {"name": "backupState", "type": "boolean", "optional": true, "description": "Assertions returned by this credential will have the backup state (BS) flag set to this value. Defaults to the authenticator's defaultBackupState value.", "typeRef": null}, {"name": "userName", "type": "string", "optional": true, "description": "The credential's user.name property. Equivalent to empty if not set. https://w3c.github.io/webauthn/#dom-publickeycredentialentity-name", "typeRef": null}, {"name": "userDisplayName", "type": "string", "optional": true, "description": "The credential's user.displayName property. Equivalent to empty if not set. https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-displayname", "typeRef": null}, {"name": "cmtgKeys", "type": "array", "optional": true, "description": "The CMTG keys associated with the credential.", "typeRef": "binary"}, {"name": "activeCmtgKeyIndex", "type": "number", "optional": true, "description": "The 0-based index of the active key in cmtgKeys.", "typeRef": null}, {"name": "generateCmtgKeyOnNextOperation", "type": "boolean", "optional": true, "description": "If true, the authenticator will generate a new CMTG key on the next operation.", "typeRef": null}]);
1493
1493
 
@@ -18270,7 +18270,6 @@ export namespace Storage {
18270
18270
  Websql = 'websql',
18271
18271
  Service_workers = 'service_workers',
18272
18272
  Cache_storage = 'cache_storage',
18273
- Interest_groups = 'interest_groups',
18274
18273
  Shared_storage = 'shared_storage',
18275
18274
  Storage_buckets = 'storage_buckets',
18276
18275
  All = 'all',
@@ -20463,6 +20462,8 @@ export namespace WebAuthn {
20463
20462
  credentialId: binary;
20464
20463
  backupEligibility?: boolean;
20465
20464
  backupState?: boolean;
20465
+ activeCmtgKeyIndex?: integer;
20466
+ generateCmtgKeyOnNextOperation?: boolean;
20466
20467
  }
20467
20468
 
20468
20469
  /**
@@ -798,19 +798,7 @@ export abstract class AiAgent<T> {
798
798
  }
799
799
  } catch (err) {
800
800
  debugLog('Error calling the AIDA API', err);
801
-
802
- let error = ErrorType.UNKNOWN;
803
- if (err instanceof Host.AidaClient.AidaAbortError) {
804
- error = ErrorType.ABORT;
805
- } else if (err instanceof Host.AidaClient.AidaBlockError) {
806
- error = ErrorType.BLOCK;
807
- } else if (err instanceof Host.AidaClient.AidaQuotaError ||
808
- (err instanceof Error && err.message.toLowerCase().includes('quota'))) {
809
- error = ErrorType.QUOTA;
810
- } else if (err instanceof Host.AidaClient.AidaPayloadTooLargeError ||
811
- (err instanceof Error && /payload size exceeds the limit/i.test(err.message))) {
812
- error = ErrorType.PAYLOAD_TOO_LARGE;
813
- }
801
+ const error = aidaErrorToErrorType(err);
814
802
  yield this.#createErrorResponse(error);
815
803
 
816
804
  break;
@@ -1150,3 +1138,24 @@ function sanitizeSuggestions(suggestions: string): [string, ...string[]]|undefin
1150
1138
  }
1151
1139
  return sanitized as [string, ...string[]];
1152
1140
  }
1141
+
1142
+ /**
1143
+ * Maps AIDA-specific client error instances to user-facing ErrorType enums.
1144
+ * This handles AIDA API failure modes such as quota exhaustion or blockages.
1145
+ * Other application-level errors (like CROSS_ORIGIN or MAX_STEPS) are handled separately.
1146
+ */
1147
+ export function aidaErrorToErrorType(err: unknown): ErrorType {
1148
+ if (err instanceof Host.AidaClient.AidaAbortError) {
1149
+ return ErrorType.ABORT;
1150
+ }
1151
+ if (err instanceof Host.AidaClient.AidaBlockError) {
1152
+ return ErrorType.BLOCK;
1153
+ }
1154
+ if (err instanceof Host.AidaClient.AidaQuotaError) {
1155
+ return ErrorType.QUOTA;
1156
+ }
1157
+ if (err instanceof Host.AidaClient.AidaPayloadTooLargeError) {
1158
+ return ErrorType.PAYLOAD_TOO_LARGE;
1159
+ }
1160
+ return ErrorType.UNKNOWN;
1161
+ }