chrome-devtools-frontend 1.0.1665921 → 1.0.1666631
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 +109 -60
- package/front_end/core/host/GcaClient.ts +3 -3
- package/front_end/core/host/UserMetrics.ts +1 -12
- package/front_end/core/sdk/NetworkRequest.ts +10 -55
- package/front_end/entrypoints/main/MainImpl.ts +0 -10
- package/front_end/foundation/Universe.ts +16 -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/data_formatters/PerformanceTraceFormatter.ts +21 -5
- 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/panels/application/DOMStorageItemsView.ts +1 -2
- package/front_end/panels/application/KeyValueStorageItemsView.ts +12 -0
- package/front_end/panels/elements/StylePropertiesSection.ts +25 -9
- package/front_end/panels/elements/StylesSidebarPane.ts +48 -0
- 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/lighthouse/LighthouseController.ts +1 -6
- package/front_end/panels/sources/breakpointEditDialog.css +2 -2
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +1 -2
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Selective
|
|
1
|
+
# Selective permissions intervention
|
|
2
2
|
|
|
3
|
-
The Selective Permissions Intervention blocks calls to privacy-sensitive APIs when they are called from ad scripts
|
|
3
|
+
The Selective Permissions Intervention blocks calls to privacy-sensitive APIs when they are called from ad scripts to align the permission grant with the user’s intent. The particular API that was blocked, the call-stack that triggered the intervention, and why the script that called the API is considered ad-related is shown below.
|
|
4
4
|
|
|
5
5
|
Note that Chrome considers any script with a URL that matches a rule in the [filterlist](ChromeFilterlistRepository) as ad script, and the matching rule is shown in the Ad Ancestry section. In addition, any script loaded while an ad script is in the JavaScript stack will also be considered an ad script by Chrome and is also shown in Ad Ancestry.
|
|
6
6
|
|
|
7
|
-
If you believe this intervention
|
|
7
|
+
If you believe this intervention was in error (e.g., this call would occur even when loading the page with an ad blocker enabled), then [file a bug](SelectivePermissionsInterventionIssue).
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
SharedArrayBuffers (SABs) can be used to construct high-resolution timers. High-resolution timers simplify Spectre attacks on cross-origin resources.
|
|
4
4
|
|
|
5
|
-
To mitigate security risks across browsers, SharedArrayBuffers are gated behind cross-origin isolated contexts starting with Chrome 92 (July 2021). To continue using SharedArrayBuffers,
|
|
5
|
+
To mitigate security risks across browsers, SharedArrayBuffers are gated behind cross-origin isolated contexts starting with Chrome 92 (July 2021). To continue using SharedArrayBuffers, ensure that this page opts-into cross-origin isolation by setting Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy appropriately.
|
|
6
6
|
|
|
7
7
|
Note that for each iframe, only the first issue is reported for performance reasons.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
# Found a matching dictionary, but the dictionary can
|
|
1
|
+
# Found a matching dictionary, but the dictionary can’t be used for the cross origin no-cors request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
# Can
|
|
1
|
+
# Can’t decode the response because the header of dictionary compressed stream wasn’t set correctly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
# Can
|
|
1
|
+
# Can’t register the cross origin response fetched by a no-cors request as as a dictionary
|
|
@@ -1 +1 @@
|
|
|
1
|
-
#
|
|
1
|
+
# compression dictionary is disabled by settings
|
package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
#
|
|
1
|
+
# compression dictionary transport feature is disabled
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
enable chrome://flags/#enable-compression-dictionary-transport
|
|
@@ -1 +1 @@
|
|
|
1
|
-
# `Use-As-Dictionary` HTTP response header
|
|
1
|
+
# `Use-As-Dictionary` HTTP response header isn’t a valid Structured Field Value
|
package/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# Can
|
|
1
|
+
# Can’t register the response of the navigation request as a dictionary
|
|
2
2
|
|
|
3
|
-
Navigation responses
|
|
3
|
+
Navigation responses aren’t usable as compression dictionaries.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# A `signature` header
|
|
1
|
+
# A `signature` header isn’t formatted as a Structured Field Dictionary
|
|
2
2
|
|
|
3
|
-
Responses
|
|
4
|
-
[Dictionary](sfDictionary) containing one or more signatures. Each member
|
|
3
|
+
Responses’ [`signature`](signatureHeader) header should be formatted as a
|
|
4
|
+
[Dictionary](sfDictionary) containing one or more signatures. Each member’s key
|
|
5
5
|
is a label for the signature which maps it to the relevant metadata defined in
|
|
6
|
-
a [`signature-input`](signatureInputHeader) header. Each member
|
|
6
|
+
a [`signature-input`](signatureInputHeader) header. Each member’s value is a
|
|
7
7
|
[Byte Sequence](sfByteSequence) containing the signature itself.
|
|
8
8
|
|
|
9
9
|
For example, the following header contains a single Ed25519 signature labeled
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# A `signature-input` header
|
|
1
|
+
# A `signature-input` header isn’t formatted as a Structured Field Dictionary
|
|
2
2
|
|
|
3
|
-
Responses
|
|
3
|
+
Responses’ [`signature-input`](signatureInputHeader) header should be formatted
|
|
4
4
|
as a [Dictionary](sfDictionary) containing metadata regarding one or more
|
|
5
|
-
signatures. Each member
|
|
5
|
+
signatures. Each member’s key is a label for the metadata which maps it to the
|
|
6
6
|
relevant signature defined in a [`signature`](signatureHeader) header. Each
|
|
7
|
-
member
|
|
7
|
+
member’s value is an [Inner List](sfInnerList) containing a set of components
|
|
8
8
|
over which a signature is generated. The list may have one or more parameters.
|
|
9
9
|
|
|
10
10
|
For example, the following header contains metadata for a signature labeled
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# A `signature-input` header was specified without an accompanying `signature` header
|
|
1
|
+
# A `signature-input` header was specified without an accompanying `signature` header
|
|
2
2
|
|
|
3
3
|
[`signature-input`](signatureInputHeader) headers specify metadata that allows
|
|
4
4
|
verification of signatures delivered with a response. If no
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# A `signature` header was specified without an accompanying `signature-input` header
|
|
1
|
+
# A `signature` header was specified without an accompanying `signature-input` header
|
|
2
2
|
|
|
3
3
|
[`signature`](signatureHeader) headers specify signatures which can be verified
|
|
4
|
-
against a given response. Verification
|
|
4
|
+
against a given response. Verification can’t proceed, however, in the absence of a
|
|
5
5
|
[`signature-input`](signatureInputHeader) header which defines relevant metadata
|
|
6
6
|
which allows servers and clients to agree on the exact message which is being
|
|
7
7
|
signed. Both headers must be present for verification to proceed.
|
package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# A `signature` header contains a signature which
|
|
1
|
+
# A `signature` header contains a signature which can’t be verified
|
|
2
2
|
|
|
3
3
|
This browser can only verify Ed25519 signatures, which are 512 bits long. The
|
|
4
|
-
signature delivered with this response
|
|
4
|
+
signature delivered with this response doesn’t match that length.
|
|
5
5
|
|
|
6
6
|
For example, the following header contains a valid Ed25519 signature labeled
|
|
7
7
|
"label":
|
package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# A `signature` header member
|
|
1
|
+
# A `signature` header member’s value isn’t a Byte Sequence
|
|
2
2
|
|
|
3
|
-
Responses
|
|
4
|
-
[Dictionary](sfDictionary) containing one or more signatures. Each member
|
|
3
|
+
Responses’ [`signature`](signatureHeader) header should be formatted as a
|
|
4
|
+
[Dictionary](sfDictionary) containing one or more signatures. Each member’s key
|
|
5
5
|
is a label for the signature which maps it to the relevant metadata defined in
|
|
6
|
-
a [`signature-input`](signatureInputHeader) header. Each member
|
|
6
|
+
a [`signature-input`](signatureInputHeader) header. Each member’s value is a
|
|
7
7
|
[Byte Sequence](sfByteSequence) containing the signature itself.
|
|
8
8
|
|
|
9
9
|
For example, the following header contains a single Ed25519 signature labeled
|
package/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# A `signature` header member
|
|
1
|
+
# A `signature` header member’s value is parameterized
|
|
2
2
|
|
|
3
|
-
Responses
|
|
4
|
-
[Dictionary](sfDictionary) containing one or more signatures. Each member
|
|
3
|
+
Responses’ [`signature`](signatureHeader) header should be formatted as a
|
|
4
|
+
[Dictionary](sfDictionary) containing one or more signatures. Each member’s key
|
|
5
5
|
is a label for the signature which maps it to the relevant metadata defined in a
|
|
6
|
-
[`signature-input`](signatureInputHeader) header. Each member
|
|
6
|
+
[`signature-input`](signatureInputHeader) header. Each member’s value is a
|
|
7
7
|
[Byte Sequence](sfByteSequence) containing the signature itself, with no
|
|
8
8
|
additional parameters specified.
|
|
9
9
|
|
package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# A `signature-input` header member
|
|
1
|
+
# A `signature-input` header member’s value contains an unknown component
|
|
2
2
|
|
|
3
3
|
The metadata delivered via [`signature-input`](signatureInputHeader) can only
|
|
4
4
|
contain a limited set of components in the list it specifies. The known
|
package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# A `signature-input` header
|
|
1
|
+
# A `signature-input` header’s component isn’t a string
|
|
2
2
|
|
|
3
|
-
Responses
|
|
3
|
+
Responses’ [`signature-input`](signatureInputHeader) header’s members’ values
|
|
4
4
|
are [Inner Lists](sfInnerList) whose contents are each strings. Perhaps you
|
|
5
5
|
forgot double-quotes around a component?
|
|
6
6
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Invalid parameter on a derived component in a `signature-input` header
|
|
1
|
+
# Invalid parameter on a derived component in a `signature-input` header
|
|
2
2
|
|
|
3
3
|
Derived components must be specified as deriving from the request, using the
|
|
4
4
|
[`req` parameter](componentParameterReq). No other parameter may be specified.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Invalid parameter on a header component in a `signature-input` header
|
|
1
|
+
# Invalid parameter on a header component in a `signature-input` header
|
|
2
2
|
|
|
3
3
|
The header [`unencoded-digest`](unencodedDigestHeader) must be specified as
|
|
4
4
|
being strictly serialized in the signature base, using the
|
package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Invalid parameter on the list of components in a `signature-input` header
|
|
1
|
+
# Invalid parameter on the list of components in a `signature-input` header
|
|
2
2
|
|
|
3
|
-
The `signature-input` header
|
|
3
|
+
The `signature-input` header’s [Inner Lists](sfInnerList) must be specified with the
|
|
4
4
|
[`keyid` and `type` parameters](signatureParameters). The following parameters may
|
|
5
5
|
also be specified:
|
|
6
6
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Invalid `keyid` value in a `signature-input` header
|
|
1
|
+
# Invalid `keyid` value in a `signature-input` header
|
|
2
2
|
|
|
3
|
-
The key specified in a [`signature-input`](signatureInputHeader) header
|
|
4
|
-
[`keyid` parameter](signatureParameters)
|
|
5
|
-
256 bit sequence, and therefore
|
|
3
|
+
The key specified in a [`signature-input`](signatureInputHeader) header’s
|
|
4
|
+
[`keyid` parameter](signatureParameters) isn’t a base64-encoded
|
|
5
|
+
256 bit sequence, and therefore can’t be decoded as an Ed25519 public key.
|
|
6
6
|
|
|
7
|
-
Note that the `keyid` parameter
|
|
7
|
+
Note that the `keyid` parameter’s value is a string, not a
|
|
8
8
|
[Byte Sequence](sfByteSequence). For example:
|
|
9
9
|
|
|
10
10
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Label mismatch between `signature` and `signature-input` headers
|
|
1
|
+
# Label mismatch between `signature` and `signature-input` headers
|
|
2
2
|
|
|
3
3
|
A [`signature`](signatureHeader) header specifies a signature whose label does
|
|
4
4
|
not appear in a corresponding [`signature-input`](signatureInputHeader) header.
|
|
5
|
-
Without a `signature-input` header
|
|
6
|
-
the signature
|
|
5
|
+
Without a `signature-input` header’s definition of the signature’s metadata,
|
|
6
|
+
the signature can’t be verified.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Missing a required parameter on the list of components in a `signature-input` header
|
|
1
|
+
# Missing a required parameter on the list of components in a `signature-input` header
|
|
2
2
|
|
|
3
|
-
The [`signature-input`][signatureInputHeader] header
|
|
3
|
+
The [`signature-input`][signatureInputHeader] header’s [Inner Lists](sfInnerList)
|
|
4
4
|
must be specified with both the [`keyid` and `type` parameters](signatureParameters).
|
|
5
5
|
|
|
6
6
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Missing a required component in a `signature-input` header
|
|
1
|
+
# Missing a required component in a `signature-input` header
|
|
2
2
|
|
|
3
|
-
The [`signature-input`](signatureInputHeader) header
|
|
3
|
+
The [`signature-input`](signatureInputHeader) header’s
|
|
4
4
|
[Inner Lists](sfInnerList) must contain the string "`unencoded-digest`" with an
|
|
5
5
|
`sf` parameter:
|
|
6
6
|
|
package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# A `signature-input` header has a member whose value
|
|
1
|
+
# A `signature-input` header has a member whose value isn’t an Inner List
|
|
2
2
|
|
|
3
|
-
The value of each member of a [`signature-input`](signatureInputHeader) header
|
|
3
|
+
The value of each member of a [`signature-input`](signatureInputHeader) header’s
|
|
4
4
|
[Dictionary][sfDictionary] must be an [Inner List](sfInnerList) containing the
|
|
5
5
|
set of components over which a signature is generated.
|
|
6
6
|
|
package/front_end/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Integrity verification failed
|
|
1
|
+
# Integrity verification failed
|
|
2
2
|
|
|
3
3
|
The signature associated with a response could be successfully verified, but the
|
|
4
4
|
public keys asserted in the [`signature-input`](signatureInputHeader)
|
|
5
|
-
header
|
|
6
|
-
assertions made by the request
|
|
5
|
+
header’s [`keyid` parameter](signatureParameters) don’t match the integrity
|
|
6
|
+
assertions made by the request’s initiator. Verification failed.
|
|
7
7
|
|
|
8
|
-
The following are the keys specified by the request
|
|
8
|
+
The following are the keys specified by the request’s initiator:
|
|
9
9
|
|
|
10
10
|
{PLACEHOLDER_integrityAssertions}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# Signature verification failed: the signature provided
|
|
1
|
+
# Signature verification failed: the signature provided isn’t an Ed25519 signature
|
|
2
2
|
|
|
3
|
-
The signature specified in a [`signature`](signatureHeader) header
|
|
4
|
-
base64-encoded 512 bit
|
|
3
|
+
The signature specified in a [`signature`](signatureHeader) header isn’t a
|
|
4
|
+
base64-encoded 512 bit Byte Sequence, and can therefore not be verified as an
|
|
5
5
|
Ed25519 signature.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Signature verification failed: the signature is expired
|
|
1
|
+
# Signature verification failed: the signature is expired
|
|
2
2
|
|
|
3
3
|
The [`expires` parameter](signatureParameters) specified in a
|
|
4
4
|
[`signature-input`](signatureInputHeader) header is a UNIX timestamp
|
|
5
5
|
representing a time in the past. The signature has therefore expired, and
|
|
6
|
-
verification
|
|
6
|
+
verification isn’t possible.
|
package/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Signature verification failed
|
|
1
|
+
# Signature verification failed
|
|
2
2
|
|
|
3
3
|
The public key specified in the [`signature-input`](signatureInputHeader)
|
|
4
|
-
header
|
|
4
|
+
header’s [`keyid` parameter](signatureParameters) doesn’t match the signature
|
|
5
5
|
specified in the [`signature`](signatureHeader) header. Verification failed.
|
|
6
6
|
|
|
7
7
|
The following is the signature base over which the verification attempt was made:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
# Define @import rules at the top of the stylesheet
|
|
2
2
|
|
|
3
|
-
An @import rule was ignored because it wasn
|
|
3
|
+
An @import rule was ignored because it wasn’t defined at the top of the stylesheet. Such rules must appear at the top,
|
|
4
4
|
before any style declaration and any other at-rule with the exception of @charset and @layer.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
# Interactive element inside of a <summary> element
|
|
2
2
|
|
|
3
|
-
An interactive element was found within a `<summary>` element. These elements
|
|
3
|
+
An interactive element was found within a `<summary>` element. These elements won’t consistently be accessible to people navigating by keyboard or using assistive technology.
|
package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# An `unencoded-digest` header contains a digest with an incorrect length
|
|
1
|
+
# An `unencoded-digest` header contains a digest with an incorrect length
|
|
2
2
|
|
|
3
3
|
[`unencoded-digest`](unencodedDigestHeader) headers contain SHA2 digests of a
|
|
4
|
-
response
|
|
4
|
+
response’s body. The digest delivered with this response isn’t the correct
|
|
5
5
|
length for the algorithm specified. SHA-256 digests should be 256 bits long,
|
|
6
6
|
SHA-512 digests 512 bits long. For example, if the body was "Hello, world.", the
|
|
7
7
|
following might be an appropriate header:
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# An `unencoded-digest` header contains a digest with an invalid type
|
|
1
|
+
# An `unencoded-digest` header contains a digest with an invalid type
|
|
2
2
|
|
|
3
3
|
[`unencoded-digest`](unencodedDigestHeader) headers must be formatted as a
|
|
4
|
-
[Dictionary](sfDictionary), wherein each member
|
|
4
|
+
[Dictionary](sfDictionary), wherein each member’s label specifies the hashing
|
|
5
5
|
algorithm, and the value is a [Byte Sequence](sfByteSequence) containing the
|
|
6
6
|
digest. The digest delivered with this response did not deliver the digest as a
|
|
7
|
-
|
|
7
|
+
Byte Sequence.
|
|
8
8
|
|
|
9
9
|
For example, if the body was "Hello, world.":
|
|
10
10
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# An `unencoded-digest` header
|
|
1
|
+
# An `unencoded-digest` header can’t be parsed
|
|
2
2
|
|
|
3
3
|
[`unencoded-digest`](unencodedDigestHeader) headers must be formatted as a
|
|
4
|
-
[Dictionary](sfDictionary), wherein each member
|
|
4
|
+
[Dictionary](sfDictionary), wherein each member’s label specifies the hashing
|
|
5
5
|
algorithm, and the value is a [Byte Sequence](sfByteSequence) containing the
|
|
6
6
|
digest. The digest delivered with this response did not format the response
|
|
7
7
|
correctly.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# An `unencoded-digest` header contains a digest with an invalid algorithm
|
|
1
|
+
# An `unencoded-digest` header contains a digest with an invalid algorithm
|
|
2
2
|
|
|
3
3
|
[`unencoded-digest`](unencodedDigestHeader) headers support only two hashing
|
|
4
4
|
algorithms, SHA-256, and SHA-512. The digests delivered with this response
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Copyright 2021 The Chromium Authors
|
|
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
|
-
/* eslint-disable @devtools/no-imperative-dom-api */
|
|
5
4
|
|
|
6
5
|
/*
|
|
7
6
|
* Copyright (C) 2008 Nokia Inc. All rights reserved.
|
|
@@ -104,7 +103,7 @@ export class DOMStorageItemsView extends KeyValueStorageItemsView {
|
|
|
104
103
|
Common.EventTarget.removeEventListeners(this.eventListeners);
|
|
105
104
|
this.domStorage = domStorage;
|
|
106
105
|
const storageKind = domStorage.isLocalStorage ? 'local-storage-data' : 'session-storage-data';
|
|
107
|
-
this.
|
|
106
|
+
this.jslog = `${VisualLogging.pane().context(storageKind)}`;
|
|
108
107
|
if (domStorage.storageKey) {
|
|
109
108
|
this.toolbar?.setStorageKey(domStorage.storageKey);
|
|
110
109
|
}
|
|
@@ -436,6 +436,18 @@ export abstract class KeyValueStorageItemsView extends UI.Widget.VBox {
|
|
|
436
436
|
}
|
|
437
437
|
}
|
|
438
438
|
|
|
439
|
+
protected set jslog(jslog: string|undefined) {
|
|
440
|
+
if (this.#jslog === jslog) {
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
this.#jslog = jslog;
|
|
444
|
+
this.performUpdate();
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
protected get jslog(): string|undefined {
|
|
448
|
+
return this.#jslog;
|
|
449
|
+
}
|
|
450
|
+
|
|
439
451
|
set editable(editable: boolean) {
|
|
440
452
|
this.#editable = editable;
|
|
441
453
|
this.performUpdate();
|
|
@@ -275,7 +275,7 @@ export class StylePropertiesSection {
|
|
|
275
275
|
this.selectorElement.classList.add('selector');
|
|
276
276
|
this.selectorElement.textContent = headerText;
|
|
277
277
|
selectorContainer.appendChild(this.selectorElement);
|
|
278
|
-
this.selectorElement.addEventListener('mouseenter', this.onMouseEnterSelector
|
|
278
|
+
this.selectorElement.addEventListener('mouseenter', () => this.onMouseEnterSelector(), false);
|
|
279
279
|
this.selectorElement.addEventListener('mouseleave', this.onMouseOutSelector.bind(this), false);
|
|
280
280
|
this.#specificityTooltips = selectorContainer.createChild('span');
|
|
281
281
|
|
|
@@ -679,23 +679,35 @@ export class StylePropertiesSection {
|
|
|
679
679
|
SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight(SDK.TargetManager.TargetManager.instance());
|
|
680
680
|
}
|
|
681
681
|
|
|
682
|
-
private onMouseEnterSelector(): void {
|
|
682
|
+
private onMouseEnterSelector(ruleOrSelector?: SDK.CSSRule.CSSStyleRule|string): void {
|
|
683
683
|
if (this.hoverTimer) {
|
|
684
684
|
clearTimeout(this.hoverTimer);
|
|
685
685
|
}
|
|
686
|
-
this.hoverTimer = window.setTimeout(this.highlight.bind(this), 300);
|
|
686
|
+
this.hoverTimer = window.setTimeout(this.highlight.bind(this, undefined, ruleOrSelector), 300);
|
|
687
687
|
}
|
|
688
688
|
|
|
689
|
-
|
|
689
|
+
/**
|
|
690
|
+
* Highlights the DOM node associated with this style section in the page overlay.
|
|
691
|
+
* Use `ruleOrSelector` to highlight elements matching a specific parent/ancestor
|
|
692
|
+
* rule or selector, or omit it to use the selector of the rule displayed in this section.
|
|
693
|
+
*
|
|
694
|
+
* @param mode Highlight mode (defaults to `'all'`).
|
|
695
|
+
* @param ruleOrSelector Parent selector string, parent rule, or `undefined`.
|
|
696
|
+
*/
|
|
697
|
+
highlight(mode: string|undefined = 'all', ruleOrSelector?: SDK.CSSRule.CSSStyleRule|string): void {
|
|
690
698
|
SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight(SDK.TargetManager.TargetManager.instance());
|
|
691
699
|
const node = this.stylesContainer.node();
|
|
692
700
|
if (!node) {
|
|
693
701
|
return;
|
|
694
702
|
}
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
703
|
+
let selectorList: string|undefined;
|
|
704
|
+
if (typeof ruleOrSelector === 'string') {
|
|
705
|
+
selectorList = ruleOrSelector;
|
|
706
|
+
} else if (ruleOrSelector instanceof SDK.CSSRule.CSSStyleRule) {
|
|
707
|
+
selectorList = ruleOrSelector.selectorText();
|
|
708
|
+
} else if (this.styleInternal.parentRule instanceof SDK.CSSRule.CSSStyleRule) {
|
|
709
|
+
selectorList = this.styleInternal.parentRule.selectorText();
|
|
710
|
+
}
|
|
699
711
|
node.domModel().overlayModel().highlightInOverlay({node, selectorList}, mode);
|
|
700
712
|
}
|
|
701
713
|
|
|
@@ -1140,6 +1152,8 @@ export class StylePropertiesSection {
|
|
|
1140
1152
|
}
|
|
1141
1153
|
|
|
1142
1154
|
const selectorElement = container.createChild('span', 'selector');
|
|
1155
|
+
selectorElement.addEventListener('mouseenter', () => this.onMouseEnterSelector(parentRule), false);
|
|
1156
|
+
selectorElement.addEventListener('mouseleave', this.onMouseOutSelector.bind(this), false);
|
|
1143
1157
|
const specificityContainer = container.createChild('span');
|
|
1144
1158
|
this.renderSelectorsToElement(parentRule.selectors, matchingSelectors, this.elementToSelectorIndex,
|
|
1145
1159
|
selectorElement, specificityContainer);
|
|
@@ -1150,6 +1164,8 @@ export class StylePropertiesSection {
|
|
|
1150
1164
|
}
|
|
1151
1165
|
|
|
1152
1166
|
const nestingElement = document.createElement('div');
|
|
1167
|
+
nestingElement.addEventListener('mouseenter', () => this.onMouseEnterSelector(nestingSelector), false);
|
|
1168
|
+
nestingElement.addEventListener('mouseleave', this.onMouseOutSelector.bind(this), false);
|
|
1153
1169
|
nestingElement.textContent = `${nestingSelector} {`;
|
|
1154
1170
|
return nestingElement;
|
|
1155
1171
|
}
|
|
@@ -1502,7 +1518,7 @@ export class StylePropertiesSection {
|
|
|
1502
1518
|
}
|
|
1503
1519
|
|
|
1504
1520
|
markSelectorHighlights(): void {
|
|
1505
|
-
const selectors = this.
|
|
1521
|
+
const selectors = this.element.getElementsByClassName('simple-selector');
|
|
1506
1522
|
const regex = this.stylesContainer.filterRegex();
|
|
1507
1523
|
for (let i = 0; i < selectors.length; ++i) {
|
|
1508
1524
|
const selectorMatchesFilter = regex?.test(selectors[i].textContent || '');
|
|
@@ -235,6 +235,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
|
|
|
235
235
|
#shouldRenderLazily = false;
|
|
236
236
|
#lazyRenderObserver?: IntersectionObserver;
|
|
237
237
|
#lazyRenderCallbacks = new WeakMap<Element, () => void>();
|
|
238
|
+
#elementsForSyncViewportCheck: Element[] = [];
|
|
238
239
|
#updateId = 0;
|
|
239
240
|
|
|
240
241
|
constructor(computedStyleModel: ComputedStyle.ComputedStyleModel.ComputedStyleModel) {
|
|
@@ -990,6 +991,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
|
|
|
990
991
|
|
|
991
992
|
const focusedIndex = this.focusedSectionIndex();
|
|
992
993
|
|
|
994
|
+
this.#elementsForSyncViewportCheck = [];
|
|
993
995
|
this.linkifier.reset();
|
|
994
996
|
const prevSections = this.sectionBlocks.map(block => block.sections).flat();
|
|
995
997
|
|
|
@@ -1047,6 +1049,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
|
|
|
1047
1049
|
}
|
|
1048
1050
|
|
|
1049
1051
|
this.sectionsContainer.contentElement.appendChild(fragment);
|
|
1052
|
+
this.#performSyncViewportCheck();
|
|
1050
1053
|
|
|
1051
1054
|
if (elementToFocus) {
|
|
1052
1055
|
elementToFocus.focus();
|
|
@@ -1655,9 +1658,54 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
|
|
|
1655
1658
|
}, {rootMargin: '100px'});
|
|
1656
1659
|
}
|
|
1657
1660
|
this.#lazyRenderCallbacks.set(element, callback);
|
|
1661
|
+
this.#elementsForSyncViewportCheck.push(element);
|
|
1658
1662
|
this.#lazyRenderObserver.observe(element);
|
|
1659
1663
|
}
|
|
1660
1664
|
|
|
1665
|
+
#performSyncViewportCheck(): void {
|
|
1666
|
+
if (!this.#shouldRenderLazily || this.#elementsForSyncViewportCheck.length === 0) {
|
|
1667
|
+
this.#elementsForSyncViewportCheck = [];
|
|
1668
|
+
return;
|
|
1669
|
+
}
|
|
1670
|
+
const scrollContainer = this.contentElement.parentElement;
|
|
1671
|
+
if (!scrollContainer) {
|
|
1672
|
+
this.#elementsForSyncViewportCheck = [];
|
|
1673
|
+
return;
|
|
1674
|
+
}
|
|
1675
|
+
const {top, bottom} = scrollContainer.getBoundingClientRect();
|
|
1676
|
+
if (bottom === top) {
|
|
1677
|
+
this.#elementsForSyncViewportCheck = [];
|
|
1678
|
+
return;
|
|
1679
|
+
}
|
|
1680
|
+
// Expand the bounding calculation by ±100px to accurately match the {rootMargin: '100px'}
|
|
1681
|
+
// option configured on the IntersectionObserver in trackForLazyRendering.
|
|
1682
|
+
const viewportTop = top - 100;
|
|
1683
|
+
const viewportBottom = bottom + 100;
|
|
1684
|
+
|
|
1685
|
+
const visibleElements: Element[] = [];
|
|
1686
|
+
for (const element of this.#elementsForSyncViewportCheck) {
|
|
1687
|
+
if (!element.isConnected || !this.#lazyRenderCallbacks.has(element)) {
|
|
1688
|
+
continue;
|
|
1689
|
+
}
|
|
1690
|
+
const rect = element.getBoundingClientRect();
|
|
1691
|
+
if (rect.top > viewportBottom) {
|
|
1692
|
+
break;
|
|
1693
|
+
}
|
|
1694
|
+
if (rect.bottom >= viewportTop) {
|
|
1695
|
+
visibleElements.push(element);
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
this.#elementsForSyncViewportCheck = [];
|
|
1699
|
+
|
|
1700
|
+
for (const element of visibleElements) {
|
|
1701
|
+
const callback = this.#lazyRenderCallbacks.get(element);
|
|
1702
|
+
if (callback) {
|
|
1703
|
+
callback();
|
|
1704
|
+
this.untrackForLazyRendering(element);
|
|
1705
|
+
}
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1661
1709
|
shouldRenderLazily(): boolean {
|
|
1662
1710
|
return this.#shouldRenderLazily;
|
|
1663
1711
|
}
|
|
@@ -460,7 +460,6 @@ export class DeviceModeToolbar extends UI.Widget.Widget {
|
|
|
460
460
|
this.showMediaInspectorSetting.addChangeListener(this.requestUpdate, this);
|
|
461
461
|
this.showRulersSetting = Common.Settings.Settings.instance().moduleSetting('emulation.show-rulers');
|
|
462
462
|
this.showRulersSetting.addChangeListener(this.requestUpdate, this);
|
|
463
|
-
|
|
464
463
|
this.showDeviceScaleFactorSetting =
|
|
465
464
|
Common.Settings.Settings.instance().createSetting('emulation.show-device-scale-factor', false);
|
|
466
465
|
this.showDeviceScaleFactorSetting.addChangeListener(this.requestUpdate, this);
|