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.
- package/.agents/skills/devtools-testing-guidance/SKILL.md +4 -0
- package/.agents/skills/migrate-chromium-test/SKILL.md +63 -48
- package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +14 -5
- package/.agents/skills/ui-eng-vision-logic-consolidator/SKILL.md +11 -2
- package/.agents/skills/ui-eng-vision-orchestrator/SKILL.md +46 -9
- package/.agents/skills/ui-eng-vision-test-scaffolder/SKILL.md +20 -1
- package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +9 -0
- package/front_end/core/host/AidaClient.ts +115 -64
- package/front_end/core/host/GcaClient.ts +3 -3
- package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -0
- package/front_end/core/host/InspectorFrontendHostStub.ts +3 -3
- package/front_end/core/host/UserMetrics.ts +50 -13
- package/front_end/core/sdk/CSSMatchedStyles.ts +2 -5
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +12 -0
- package/front_end/core/sdk/Connections.ts +1 -1
- package/front_end/core/sdk/DOMModel.test.api.ts +104 -0
- package/front_end/core/sdk/DOMModel.ts +23 -11
- package/front_end/core/sdk/DebuggerModel.ts +9 -9
- package/front_end/core/sdk/IsolateManager.ts +1 -1
- package/front_end/core/sdk/NetworkManager.ts +105 -4
- package/front_end/core/sdk/NetworkRequest.ts +10 -55
- package/front_end/core/sdk/OverlayModel.ts +15 -14
- package/front_end/core/sdk/RemoteObject.ts +1 -1
- package/front_end/devtools_compatibility.js +1 -0
- package/front_end/entrypoints/main/MainImpl.ts +5 -12
- package/front_end/entrypoints/main/SimpleApp.ts +9 -3
- package/front_end/foundation/Universe.ts +22 -0
- package/front_end/generated/InspectorBackendCommands.ts +2 -2
- package/front_end/generated/protocol.ts +2 -1
- package/front_end/models/ai_assistance/agents/AiAgent.ts +22 -13
- package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +23 -10
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +21 -5
- package/front_end/models/computed_style/ComputedStyleModel.ts +4 -7
- package/front_end/models/crux-manager/CrUXManager.ts +4 -0
- package/front_end/models/extensions/ExtensionAPI.ts +3 -3
- package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +2 -2
- package/front_end/models/issues_manager/CookieIssue.ts +6 -127
- package/front_end/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +2 -2
- package/front_end/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +3 -3
- package/front_end/models/issues_manager/descriptions/CoepCorpNotSameSite.md +2 -2
- package/front_end/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/CompatibilityModeQuirks.md +1 -1
- package/front_end/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +2 -2
- package/front_end/models/issues_manager/descriptions/LowTextContrast.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +3 -3
- package/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +3 -3
- package/front_end/models/issues_manager/descriptions/bounceTrackingMitigations.md +1 -1
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowlistItemType.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidHeader.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidUrlPattern.md +3 -3
- package/front_end/models/issues_manager/descriptions/connectionAllowlistItemNotInnerList.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistMoreThanOneList.md +2 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistReportingEndpointNotToken.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieCrossSiteRedirectDowngrade.md +3 -3
- package/front_end/models/issues_manager/descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludePortMismatch.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutSet.md +1 -1
- package/front_end/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutRead.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsDisabledScheme.md +2 -2
- package/front_end/models/issues_manager/descriptions/corsDisallowedByMode.md +2 -2
- package/front_end/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsInvalidHeaderValues.md +3 -3
- package/front_end/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +1 -1
- package/front_end/models/issues_manager/descriptions/corsOriginMismatch.md +3 -3
- package/front_end/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +2 -2
- package/front_end/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +3 -3
- package/front_end/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +4 -3
- package/front_end/models/issues_manager/descriptions/cspEvalViolation.md +4 -4
- package/front_end/models/issues_manager/descriptions/cspInlineViolation.md +2 -2
- package/front_end/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +2 -2
- package/front_end/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +4 -4
- package/front_end/models/issues_manager/descriptions/cspURLViolation.md +4 -4
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsEmptyList.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestAccountsNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestEmailVerificationWellKnownNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestInvalidEmail.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestJwksHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestJwksInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidAudience.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidIssuedAt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidNonce.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidSdHash.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbInvalidTyp.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingAud.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingCnf.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingIat.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingNonce.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbMissingSdHash.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationKbSignatureFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmail.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmailVerified.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidHolderKey.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuedAt.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuer.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtJwksMissingKeys.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingCnf.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingEmail.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIat.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIss.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtSignatureFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenVerificationSdJwtUnsupportedHeaderAlg.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestUserLoggedOut.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -1
- package/front_end/models/issues_manager/descriptions/fetchingPartitionedBlobURL.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingIdError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +2 -2
- package/front_end/models/issues_manager/descriptions/genericFormLabelForNameError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormModelContextMissingToolName.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormModelContextParameterMissingName.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericFormModelContextRequiredParameterMissingName.md +1 -1
- package/front_end/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +2 -2
- package/front_end/models/issues_manager/descriptions/heavyAd.md +1 -1
- package/front_end/models/issues_manager/descriptions/lazyLoadImageZeroSize.md +1 -1
- package/front_end/models/issues_manager/descriptions/navigatingPartitionedBlobURL.md +3 -3
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +1 -1
- package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +2 -2
- package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +1 -1
- package/front_end/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +1 -1
- package/front_end/models/issues_manager/descriptions/selectivePermissionsIntervention.md +3 -3
- package/front_end/models/issues_manager/descriptions/sharedArrayBuffer.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorExpiredResponse.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +2 -2
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriInvalidSignatureHeader.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriInvalidSignatureInputHeader.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriMissingSignatureHeader.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriMissingSignatureInputHeader.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderKeyIdLength.md +5 -5
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingLabel.md +3 -3
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueMissingComponents.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +4 -4
- package/front_end/models/issues_manager/descriptions/sriValidationFailedInvalidLength.md +3 -3
- package/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureExpired.md +2 -2
- package/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md +2 -2
- package/front_end/models/issues_manager/descriptions/stylesheetLateImport.md +1 -1
- package/front_end/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +1 -1
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md +2 -2
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestType.md +3 -3
- package/front_end/models/issues_manager/descriptions/unencodedDigestMalformedDictionary.md +2 -2
- package/front_end/models/issues_manager/descriptions/unencodedDigestUnknownAlgorithm.md +1 -1
- package/front_end/models/live-metrics/LiveMetrics.ts +59 -19
- package/front_end/models/live-metrics/web-vitals-injected/README.md +1 -1
- package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +6 -1
- package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +11 -3
- package/front_end/models/logs/LogManager.ts +1 -1
- package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +1 -1
- package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +6 -7
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +13 -14
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +15 -7
- package/front_end/panels/application/BackgroundServiceView.ts +18 -20
- package/front_end/panels/application/DOMStorageItemsView.ts +1 -2
- package/front_end/panels/application/KeyValueStorageItemsView.ts +12 -0
- package/front_end/panels/autofill/AutofillView.ts +17 -17
- package/front_end/panels/autofill/autofillView.css +7 -8
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +31 -31
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +15 -15
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +12 -12
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +27 -27
- package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +14 -6
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +14 -6
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +13 -6
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
- package/front_end/panels/console/ConsoleInsightTeaser.ts +13 -6
- package/front_end/panels/console/ConsoleView.ts +6 -6
- package/front_end/panels/console_counters/WarningErrorCounter.ts +4 -4
- package/front_end/panels/coverage/CoverageModel.ts +11 -1
- package/front_end/panels/elements/StylePropertiesSection.ts +59 -10
- package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +18 -7
- package/front_end/panels/elements/StylesSidebarPane.ts +48 -0
- package/front_end/panels/emulation/AdvancedApp.ts +18 -8
- package/front_end/panels/emulation/DeviceModeToolbar.ts +0 -1
- package/front_end/panels/emulation/DeviceModeView.ts +289 -164
- package/front_end/panels/emulation/MediaQueryInspector.ts +10 -6
- package/front_end/panels/emulation/deviceModeView.css +1 -0
- package/front_end/panels/event_listeners/EventListenersView.ts +8 -8
- package/front_end/panels/explain/components/ConsoleInsight.ts +15 -7
- package/front_end/panels/lighthouse/LighthouseController.ts +1 -6
- package/front_end/panels/network/NetworkLogView.ts +13 -14
- package/front_end/panels/screencast/ScreencastApp.ts +12 -6
- package/front_end/panels/screencast/ScreencastView.ts +37 -11
- package/front_end/panels/sensors/locationsSettingsTab.css +4 -0
- package/front_end/panels/settings/AISettingsTab.ts +13 -6
- package/front_end/panels/sources/DebuggerPlugin.ts +13 -2
- package/front_end/panels/sources/breakpointEditDialog.css +2 -2
- package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -1
- package/front_end/panels/timeline/components/cpuThrottlingSelector.css +4 -0
- package/front_end/panels/timeline/components/liveMetricsView.css +28 -0
- package/front_end/panels/timeline/timeline-meta.ts +13 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/menus/menu.css +4 -0
- package/front_end/ui/components/menus/menuItem.css +4 -0
- package/front_end/ui/components/menus/selectMenu.css +4 -0
- package/front_end/ui/components/menus/selectMenuButton.css +4 -0
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +21 -10
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +23 -12
- package/front_end/ui/components/text_editor/config.ts +7 -0
- package/front_end/ui/legacy/AppProvider.ts +2 -1
- package/front_end/ui/legacy/RootView.ts +8 -1
- package/front_end/ui/legacy/UniverseRequestEvent.ts +19 -0
- package/front_end/ui/legacy/Widget.ts +49 -6
- package/front_end/ui/legacy/inspectorCommon.css +1 -1
- package/front_end/ui/legacy/legacy.ts +2 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
- package/package.json +1 -2
- package/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +0 -8
- package/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +0 -8
- 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
|
|
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
|
-
|
|
341
|
-
|
|
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
|
-
|
|
349
|
-
|
|
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 =
|
|
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 =>
|
|
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
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
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.
|
|
1980
|
+
return i18nString(UIStrings.sameSiteStrict);
|
|
2008
1981
|
case Protocol.Network.CookieBlockedReason.SchemefulSameSiteLax:
|
|
2009
|
-
return i18nString(UIStrings.
|
|
1982
|
+
return i18nString(UIStrings.sameSiteLax);
|
|
2010
1983
|
case Protocol.Network.CookieBlockedReason.SchemefulSameSiteUnspecifiedTreatedAsLax:
|
|
2011
|
-
return i18nString(UIStrings.
|
|
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
|
-
|
|
2055
|
-
|
|
2056
|
-
);
|
|
2016
|
+
return i18nString(UIStrings.blockedReasonSameSiteStrictLax, {
|
|
2017
|
+
PH1: 'SameSite=Strict',
|
|
2018
|
+
});
|
|
2057
2019
|
case Protocol.Network.SetCookieBlockedReason.SchemefulSameSiteLax:
|
|
2058
|
-
return i18nString(
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
);
|
|
2020
|
+
return i18nString(UIStrings.blockedReasonSameSiteStrictLax, {
|
|
2021
|
+
PH1: 'SameSite=Lax',
|
|
2022
|
+
});
|
|
2062
2023
|
case Protocol.Network.SetCookieBlockedReason.SchemefulSameSiteUnspecifiedTreatedAsLax:
|
|
2063
|
-
return i18nString(UIStrings.
|
|
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
|
|
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 =
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
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 ===
|
|
490
|
-
this.#hideHighlightTimeout =
|
|
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 =
|
|
498
|
-
|
|
499
|
-
|
|
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
|
-
|
|
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",
|
|
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
|
+
}
|