chrome-devtools-frontend 1.0.1025631 → 1.0.1026160

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.
@@ -366,6 +366,7 @@ export const resourceTypes = {
366
366
  TextTrack: new ResourceType('texttrack', i18nLazyString(UIStrings.texttrack), resourceCategories.Other, true),
367
367
  XHR: new ResourceType('xhr', i18n.i18n.lockedLazyString('XHR'), resourceCategories.XHR, true),
368
368
  Fetch: new ResourceType('fetch', i18nLazyString(UIStrings.fetch), resourceCategories.XHR, true),
369
+ Prefetch: new ResourceType('prefetch', i18n.i18n.lockedLazyString('Prefetch'), resourceCategories.Document, true),
369
370
  EventSource: new ResourceType('eventsource', i18nLazyString(UIStrings.eventsource), resourceCategories.XHR, true),
370
371
  WebSocket: new ResourceType('websocket', i18nLazyString(UIStrings.websocket), resourceCategories.WebSocket, false),
371
372
  // TODO(yoichio): Consider creating new category WT or WS/WT with WebSocket.
@@ -344,6 +344,10 @@ export class DOMNode {
344
344
  return this.#pseudoElements.get(DOMNode.PseudoElementNames.Marker)?.at(-1);
345
345
  }
346
346
 
347
+ backdropPseudoElement(): DOMNode|undefined {
348
+ return this.#pseudoElements.get(DOMNode.PseudoElementNames.Backdrop)?.at(-1);
349
+ }
350
+
347
351
  pageTransitionPseudoElements(): DOMNode[] {
348
352
  return [
349
353
  ...this.#pseudoElements.get(DOMNode.PseudoElementNames.PageTransition) || [],
@@ -982,6 +986,7 @@ export namespace DOMNode {
982
986
  PageTransitionImageWrapper = 'page-transition-image-wrapper',
983
987
  PageTransitionOutgoingImage = 'page-transition-outgoing-image',
984
988
  PageTransitionIncomingImage = 'page-transition-incoming-image',
989
+ Backdrop = 'backdrop',
985
990
  }
986
991
 
987
992
  // TODO(crbug.com/1167717): Make this a const enum again
@@ -147,19 +147,22 @@ async function invokeLH(action: string, args: any): Promise<unknown> {
147
147
  };
148
148
 
149
149
  if (action === 'snapshot') {
150
+ // TODO: Remove `configContext` once Lighthouse roll removes it
150
151
  // @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
151
- return await self.runLighthouseSnapshot({config, page, configContext});
152
+ return await self.runLighthouseSnapshot({config, page, configContext, flags});
152
153
  }
153
154
 
154
155
  if (action === 'startTimespan') {
156
+ // TODO: Remove `configContext` once Lighthouse roll removes it
155
157
  // @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
156
- const timespan = await self.startLighthouseTimespan({config, page, configContext});
158
+ const timespan = await self.startLighthouseTimespan({config, page, configContext, flags});
157
159
  endTimespan = timespan.endTimespan;
158
160
  return;
159
161
  }
160
162
 
163
+ // TODO: Remove `configContext` once Lighthouse roll removes it
161
164
  // @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
162
- return await self.runLighthouseNavigation(url, {config, page, configContext});
165
+ return await self.runLighthouseNavigation(url, {config, page, configContext, flags});
163
166
  } catch (err) {
164
167
  return ({
165
168
  fatal: true,
@@ -65,7 +65,7 @@ inspectorBackend.registerEnum("Audits.SharedArrayBufferIssueType", {TransferIssu
65
65
  inspectorBackend.registerEnum("Audits.TwaQualityEnforcementViolationType", {KHttpError: "kHttpError", KUnavailableOffline: "kUnavailableOffline", KDigitalAssetLinks: "kDigitalAssetLinks"});
66
66
  inspectorBackend.registerEnum("Audits.AttributionReportingIssueType", {PermissionPolicyDisabled: "PermissionPolicyDisabled", AttributionSourceUntrustworthyOrigin: "AttributionSourceUntrustworthyOrigin", AttributionUntrustworthyOrigin: "AttributionUntrustworthyOrigin", InvalidHeader: "InvalidHeader"});
67
67
  inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {CrossOriginPortalPostMessageError: "CrossOriginPortalPostMessageError"});
68
- inspectorBackend.registerEnum("Audits.DeprecationIssueType", {AuthorizationCoveredByWildcard: "AuthorizationCoveredByWildcard", CanRequestURLHTTPContainingNewline: "CanRequestURLHTTPContainingNewline", ChromeLoadTimesConnectionInfo: "ChromeLoadTimesConnectionInfo", ChromeLoadTimesFirstPaintAfterLoadTime: "ChromeLoadTimesFirstPaintAfterLoadTime", ChromeLoadTimesWasAlternateProtocolAvailable: "ChromeLoadTimesWasAlternateProtocolAvailable", CookieWithTruncatingChar: "CookieWithTruncatingChar", CrossOriginAccessBasedOnDocumentDomain: "CrossOriginAccessBasedOnDocumentDomain", CrossOriginWindowAlert: "CrossOriginWindowAlert", CrossOriginWindowConfirm: "CrossOriginWindowConfirm", CSSSelectorInternalMediaControlsOverlayCastButton: "CSSSelectorInternalMediaControlsOverlayCastButton", DeprecationExample: "DeprecationExample", DocumentDomainSettingWithoutOriginAgentClusterHeader: "DocumentDomainSettingWithoutOriginAgentClusterHeader", EventPath: "EventPath", GeolocationInsecureOrigin: "GeolocationInsecureOrigin", GeolocationInsecureOriginDeprecatedNotRemoved: "GeolocationInsecureOriginDeprecatedNotRemoved", GetUserMediaInsecureOrigin: "GetUserMediaInsecureOrigin", HostCandidateAttributeGetter: "HostCandidateAttributeGetter", IdentityInCanMakePaymentEvent: "IdentityInCanMakePaymentEvent", InsecurePrivateNetworkSubresourceRequest: "InsecurePrivateNetworkSubresourceRequest", LegacyConstraintGoogIPv6: "LegacyConstraintGoogIPv6", LocalCSSFileExtensionRejected: "LocalCSSFileExtensionRejected", MediaSourceAbortRemove: "MediaSourceAbortRemove", MediaSourceDurationTruncatingBuffered: "MediaSourceDurationTruncatingBuffered", NoSysexWebMIDIWithoutPermission: "NoSysexWebMIDIWithoutPermission", NotificationInsecureOrigin: "NotificationInsecureOrigin", NotificationPermissionRequestedIframe: "NotificationPermissionRequestedIframe", ObsoleteWebRtcCipherSuite: "ObsoleteWebRtcCipherSuite", OpenWebDatabaseInsecureContext: "OpenWebDatabaseInsecureContext", PictureSourceSrc: "PictureSourceSrc", PrefixedCancelAnimationFrame: "PrefixedCancelAnimationFrame", PrefixedRequestAnimationFrame: "PrefixedRequestAnimationFrame", PrefixedStorageInfo: "PrefixedStorageInfo", PrefixedVideoDisplayingFullscreen: "PrefixedVideoDisplayingFullscreen", PrefixedVideoEnterFullscreen: "PrefixedVideoEnterFullscreen", PrefixedVideoEnterFullScreen: "PrefixedVideoEnterFullScreen", PrefixedVideoExitFullscreen: "PrefixedVideoExitFullscreen", PrefixedVideoExitFullScreen: "PrefixedVideoExitFullScreen", PrefixedVideoSupportsFullscreen: "PrefixedVideoSupportsFullscreen", RangeExpand: "RangeExpand", RequestedSubresourceWithEmbeddedCredentials: "RequestedSubresourceWithEmbeddedCredentials", RTCConstraintEnableDtlsSrtpFalse: "RTCConstraintEnableDtlsSrtpFalse", RTCConstraintEnableDtlsSrtpTrue: "RTCConstraintEnableDtlsSrtpTrue", RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics: "RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics", RTCPeerConnectionSdpSemanticsPlanB: "RTCPeerConnectionSdpSemanticsPlanB", RtcpMuxPolicyNegotiate: "RtcpMuxPolicyNegotiate", SharedArrayBufferConstructedWithoutIsolation: "SharedArrayBufferConstructedWithoutIsolation", TextToSpeech_DisallowedByAutoplay: "TextToSpeech_DisallowedByAutoplay", V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "V8SharedArrayBufferConstructedInExtensionWithoutIsolation", XHRJSONEncodingDetection: "XHRJSONEncodingDetection", XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: "XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload", XRSupportsSession: "XRSupportsSession"});
68
+ inspectorBackend.registerEnum("Audits.DeprecationIssueType", {AuthorizationCoveredByWildcard: "AuthorizationCoveredByWildcard", CanRequestURLHTTPContainingNewline: "CanRequestURLHTTPContainingNewline", ChromeLoadTimesConnectionInfo: "ChromeLoadTimesConnectionInfo", ChromeLoadTimesFirstPaintAfterLoadTime: "ChromeLoadTimesFirstPaintAfterLoadTime", ChromeLoadTimesWasAlternateProtocolAvailable: "ChromeLoadTimesWasAlternateProtocolAvailable", CookieWithTruncatingChar: "CookieWithTruncatingChar", CrossOriginAccessBasedOnDocumentDomain: "CrossOriginAccessBasedOnDocumentDomain", CrossOriginWindowAlert: "CrossOriginWindowAlert", CrossOriginWindowConfirm: "CrossOriginWindowConfirm", CSSSelectorInternalMediaControlsOverlayCastButton: "CSSSelectorInternalMediaControlsOverlayCastButton", DeprecationExample: "DeprecationExample", DocumentDomainSettingWithoutOriginAgentClusterHeader: "DocumentDomainSettingWithoutOriginAgentClusterHeader", EventPath: "EventPath", ExpectCTHeader: "ExpectCTHeader", GeolocationInsecureOrigin: "GeolocationInsecureOrigin", GeolocationInsecureOriginDeprecatedNotRemoved: "GeolocationInsecureOriginDeprecatedNotRemoved", GetUserMediaInsecureOrigin: "GetUserMediaInsecureOrigin", HostCandidateAttributeGetter: "HostCandidateAttributeGetter", IdentityInCanMakePaymentEvent: "IdentityInCanMakePaymentEvent", InsecurePrivateNetworkSubresourceRequest: "InsecurePrivateNetworkSubresourceRequest", LegacyConstraintGoogIPv6: "LegacyConstraintGoogIPv6", LocalCSSFileExtensionRejected: "LocalCSSFileExtensionRejected", MediaSourceAbortRemove: "MediaSourceAbortRemove", MediaSourceDurationTruncatingBuffered: "MediaSourceDurationTruncatingBuffered", NoSysexWebMIDIWithoutPermission: "NoSysexWebMIDIWithoutPermission", NotificationInsecureOrigin: "NotificationInsecureOrigin", NotificationPermissionRequestedIframe: "NotificationPermissionRequestedIframe", ObsoleteWebRtcCipherSuite: "ObsoleteWebRtcCipherSuite", OpenWebDatabaseInsecureContext: "OpenWebDatabaseInsecureContext", PictureSourceSrc: "PictureSourceSrc", PrefixedCancelAnimationFrame: "PrefixedCancelAnimationFrame", PrefixedRequestAnimationFrame: "PrefixedRequestAnimationFrame", PrefixedStorageInfo: "PrefixedStorageInfo", PrefixedVideoDisplayingFullscreen: "PrefixedVideoDisplayingFullscreen", PrefixedVideoEnterFullscreen: "PrefixedVideoEnterFullscreen", PrefixedVideoEnterFullScreen: "PrefixedVideoEnterFullScreen", PrefixedVideoExitFullscreen: "PrefixedVideoExitFullscreen", PrefixedVideoExitFullScreen: "PrefixedVideoExitFullScreen", PrefixedVideoSupportsFullscreen: "PrefixedVideoSupportsFullscreen", RangeExpand: "RangeExpand", RequestedSubresourceWithEmbeddedCredentials: "RequestedSubresourceWithEmbeddedCredentials", RTCConstraintEnableDtlsSrtpFalse: "RTCConstraintEnableDtlsSrtpFalse", RTCConstraintEnableDtlsSrtpTrue: "RTCConstraintEnableDtlsSrtpTrue", RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics: "RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics", RTCPeerConnectionSdpSemanticsPlanB: "RTCPeerConnectionSdpSemanticsPlanB", RtcpMuxPolicyNegotiate: "RtcpMuxPolicyNegotiate", SharedArrayBufferConstructedWithoutIsolation: "SharedArrayBufferConstructedWithoutIsolation", TextToSpeech_DisallowedByAutoplay: "TextToSpeech_DisallowedByAutoplay", V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "V8SharedArrayBufferConstructedInExtensionWithoutIsolation", XHRJSONEncodingDetection: "XHRJSONEncodingDetection", XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: "XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload", XRSupportsSession: "XRSupportsSession"});
69
69
  inspectorBackend.registerEnum("Audits.ClientHintIssueReason", {MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML"});
70
70
  inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", {ApprovalDeclined: "ApprovalDeclined", TooManyRequests: "TooManyRequests", ManifestListHttpNotFound: "ManifestListHttpNotFound", ManifestListNoResponse: "ManifestListNoResponse", ManifestListInvalidResponse: "ManifestListInvalidResponse", ManifestNotInManifestList: "ManifestNotInManifestList", ManifestListTooBig: "ManifestListTooBig", ManifestHttpNotFound: "ManifestHttpNotFound", ManifestNoResponse: "ManifestNoResponse", ManifestInvalidResponse: "ManifestInvalidResponse", ClientMetadataHttpNotFound: "ClientMetadataHttpNotFound", ClientMetadataNoResponse: "ClientMetadataNoResponse", ClientMetadataInvalidResponse: "ClientMetadataInvalidResponse", ClientMetadataMissingPrivacyPolicyUrl: "ClientMetadataMissingPrivacyPolicyUrl", DisabledInSettings: "DisabledInSettings", ErrorFetchingSignin: "ErrorFetchingSignin", InvalidSigninResponse: "InvalidSigninResponse", AccountsHttpNotFound: "AccountsHttpNotFound", AccountsNoResponse: "AccountsNoResponse", AccountsInvalidResponse: "AccountsInvalidResponse", IdTokenHttpNotFound: "IdTokenHttpNotFound", IdTokenNoResponse: "IdTokenNoResponse", IdTokenInvalidResponse: "IdTokenInvalidResponse", IdTokenInvalidRequest: "IdTokenInvalidRequest", ErrorIdToken: "ErrorIdToken", Canceled: "Canceled"});
71
71
  inspectorBackend.registerEnum("Audits.InspectorIssueCode", {CookieIssue: "CookieIssue", MixedContentIssue: "MixedContentIssue", BlockedByResponseIssue: "BlockedByResponseIssue", HeavyAdIssue: "HeavyAdIssue", ContentSecurityPolicyIssue: "ContentSecurityPolicyIssue", SharedArrayBufferIssue: "SharedArrayBufferIssue", TrustedWebActivityIssue: "TrustedWebActivityIssue", LowTextContrastIssue: "LowTextContrastIssue", CorsIssue: "CorsIssue", AttributionReportingIssue: "AttributionReportingIssue", QuirksModeIssue: "QuirksModeIssue", NavigatorUserAgentIssue: "NavigatorUserAgentIssue", GenericIssue: "GenericIssue", DeprecationIssue: "DeprecationIssue", ClientHintIssue: "ClientHintIssue", FederatedAuthRequestIssue: "FederatedAuthRequestIssue"});
@@ -418,7 +418,7 @@ inspectorBackend.registerCommand("Memory.getBrowserSamplingProfile", [], ["profi
418
418
  inspectorBackend.registerCommand("Memory.getSamplingProfile", [], ["profile"]);
419
419
 
420
420
  // Network.
421
- inspectorBackend.registerEnum("Network.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Media: "Media", Font: "Font", Script: "Script", TextTrack: "TextTrack", XHR: "XHR", Fetch: "Fetch", EventSource: "EventSource", WebSocket: "WebSocket", Manifest: "Manifest", SignedExchange: "SignedExchange", Ping: "Ping", CSPViolationReport: "CSPViolationReport", Preflight: "Preflight", Other: "Other"});
421
+ inspectorBackend.registerEnum("Network.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Media: "Media", Font: "Font", Script: "Script", TextTrack: "TextTrack", XHR: "XHR", Fetch: "Fetch", Prefetch: "Prefetch", EventSource: "EventSource", WebSocket: "WebSocket", Manifest: "Manifest", SignedExchange: "SignedExchange", Ping: "Ping", CSPViolationReport: "CSPViolationReport", Preflight: "Preflight", Other: "Other"});
422
422
  inspectorBackend.registerEnum("Network.ErrorReason", {Failed: "Failed", Aborted: "Aborted", TimedOut: "TimedOut", AccessDenied: "AccessDenied", ConnectionClosed: "ConnectionClosed", ConnectionReset: "ConnectionReset", ConnectionRefused: "ConnectionRefused", ConnectionAborted: "ConnectionAborted", ConnectionFailed: "ConnectionFailed", NameNotResolved: "NameNotResolved", InternetDisconnected: "InternetDisconnected", AddressUnreachable: "AddressUnreachable", BlockedByClient: "BlockedByClient", BlockedByResponse: "BlockedByResponse"});
423
423
  inspectorBackend.registerEnum("Network.ConnectionType", {None: "none", Cellular2g: "cellular2g", Cellular3g: "cellular3g", Cellular4g: "cellular4g", Bluetooth: "bluetooth", Ethernet: "ethernet", Wifi: "wifi", Wimax: "wimax", Other: "other"});
424
424
  inspectorBackend.registerEnum("Network.CookieSameSite", {Strict: "Strict", Lax: "Lax", None: "None"});
@@ -554,7 +554,7 @@ inspectorBackend.registerEnum("Page.AdFrameExplanation", {ParentIsAd: "ParentIsA
554
554
  inspectorBackend.registerEnum("Page.SecureContextType", {Secure: "Secure", SecureLocalhost: "SecureLocalhost", InsecureScheme: "InsecureScheme", InsecureAncestor: "InsecureAncestor"});
555
555
  inspectorBackend.registerEnum("Page.CrossOriginIsolatedContextType", {Isolated: "Isolated", NotIsolated: "NotIsolated", NotIsolatedFeatureDisabled: "NotIsolatedFeatureDisabled"});
556
556
  inspectorBackend.registerEnum("Page.GatedAPIFeatures", {SharedArrayBuffers: "SharedArrayBuffers", SharedArrayBuffersTransferAllowed: "SharedArrayBuffersTransferAllowed", PerformanceMeasureMemory: "PerformanceMeasureMemory", PerformanceProfile: "PerformanceProfile"});
557
- inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AmbientLightSensor: "ambient-light-sensor", AttributionReporting: "attribution-reporting", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFull: "ch-ua-full", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaReduced: "ch-ua-reduced", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", CrossOriginIsolated: "cross-origin-isolated", DirectSockets: "direct-sockets", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FederatedCredentials: "federated-credentials", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LocalFonts: "local-fonts", Magnetometer: "magnetometer", Microphone: "microphone", Midi: "midi", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PublickeyCredentialsGet: "publickey-credentials-get", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedAutofill: "shared-autofill", StorageAccessAPI: "storage-access-api", SyncXhr: "sync-xhr", TrustTokenRedemption: "trust-token-redemption", Usb: "usb", VerticalScroll: "vertical-scroll", WebShare: "web-share", WindowPlacement: "window-placement", XrSpatialTracking: "xr-spatial-tracking"});
557
+ inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AmbientLightSensor: "ambient-light-sensor", AttributionReporting: "attribution-reporting", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFull: "ch-ua-full", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaReduced: "ch-ua-reduced", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", CrossOriginIsolated: "cross-origin-isolated", DirectSockets: "direct-sockets", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FederatedCredentials: "federated-credentials", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LocalFonts: "local-fonts", Magnetometer: "magnetometer", Microphone: "microphone", Midi: "midi", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PublickeyCredentialsGet: "publickey-credentials-get", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedAutofill: "shared-autofill", SharedStorage: "shared-storage", StorageAccessAPI: "storage-access-api", SyncXhr: "sync-xhr", TrustTokenRedemption: "trust-token-redemption", Usb: "usb", VerticalScroll: "vertical-scroll", WebShare: "web-share", WindowPlacement: "window-placement", XrSpatialTracking: "xr-spatial-tracking"});
558
558
  inspectorBackend.registerEnum("Page.PermissionsPolicyBlockReason", {Header: "Header", IframeAttribute: "IframeAttribute", InFencedFrameTree: "InFencedFrameTree", InIsolatedApp: "InIsolatedApp"});
559
559
  inspectorBackend.registerEnum("Page.OriginTrialTokenStatus", {Success: "Success", NotSupported: "NotSupported", Insecure: "Insecure", Expired: "Expired", WrongOrigin: "WrongOrigin", InvalidSignature: "InvalidSignature", Malformed: "Malformed", WrongVersion: "WrongVersion", FeatureDisabled: "FeatureDisabled", TokenDisabled: "TokenDisabled", FeatureDisabledForUser: "FeatureDisabledForUser", UnknownTrial: "UnknownTrial"});
560
560
  inspectorBackend.registerEnum("Page.OriginTrialStatus", {Enabled: "Enabled", ValidTokenNotProvided: "ValidTokenNotProvided", OSNotSupported: "OSNotSupported", TrialNotAllowed: "TrialNotAllowed"});
@@ -872,6 +872,8 @@ inspectorBackend.registerCommand("Debugger.enable", [{"name": "maxScriptsCacheSi
872
872
  inspectorBackend.registerCommand("Debugger.evaluateOnCallFrame", [{"name": "callFrameId", "type": "string", "optional": false}, {"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "silent", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "throwOnSideEffect", "type": "boolean", "optional": true}, {"name": "timeout", "type": "number", "optional": true}], ["result", "exceptionDetails"]);
873
873
  inspectorBackend.registerCommand("Debugger.getPossibleBreakpoints", [{"name": "start", "type": "object", "optional": false}, {"name": "end", "type": "object", "optional": true}, {"name": "restrictToFunction", "type": "boolean", "optional": true}], ["locations"]);
874
874
  inspectorBackend.registerCommand("Debugger.getScriptSource", [{"name": "scriptId", "type": "string", "optional": false}], ["scriptSource", "bytecode"]);
875
+ inspectorBackend.registerCommand("Debugger.disassembleWasmModule", [{"name": "scriptId", "type": "string", "optional": false}], ["streamId", "totalNumberOfLines", "functionBodyOffsets", "chunk"]);
876
+ inspectorBackend.registerCommand("Debugger.nextWasmDisassemblyChunk", [{"name": "streamId", "type": "string", "optional": false}], ["chunk"]);
875
877
  inspectorBackend.registerCommand("Debugger.getWasmBytecode", [{"name": "scriptId", "type": "string", "optional": false}], ["bytecode"]);
876
878
  inspectorBackend.registerCommand("Debugger.getStackTrace", [{"name": "stackTraceId", "type": "object", "optional": false}], ["stackTrace"]);
877
879
  inspectorBackend.registerCommand("Debugger.pause", [], []);
@@ -344,6 +344,12 @@ export const generatedProperties = [
344
344
  ],
345
345
  "name": "anchor-name"
346
346
  },
347
+ {
348
+ "keywords": [
349
+ "none"
350
+ ],
351
+ "name": "anchor-scroll"
352
+ },
347
353
  {
348
354
  "longhands": [
349
355
  "animation-duration",
@@ -3567,6 +3573,11 @@ export const generatedPropertyValues = {
3567
3573
  "none"
3568
3574
  ]
3569
3575
  },
3576
+ "anchor-scroll": {
3577
+ "values": [
3578
+ "none"
3579
+ ]
3580
+ },
3570
3581
  "animation-direction": {
3571
3582
  "values": [
3572
3583
  "normal",
@@ -3952,6 +3952,20 @@ export namespace ProtocolMapping {
3952
3952
  paramsType: [Protocol.Debugger.GetScriptSourceRequest];
3953
3953
  returnType: Protocol.Debugger.GetScriptSourceResponse;
3954
3954
  };
3955
+ 'Debugger.disassembleWasmModule': {
3956
+ paramsType: [Protocol.Debugger.DisassembleWasmModuleRequest];
3957
+ returnType: Protocol.Debugger.DisassembleWasmModuleResponse;
3958
+ };
3959
+ /**
3960
+ * Disassemble the next chunk of lines for the module corresponding to the
3961
+ * stream. If disassembly is complete, this API will invalidate the streamId
3962
+ * and return an empty chunk. Any subsequent calls for the now invalid stream
3963
+ * will return errors.
3964
+ */
3965
+ 'Debugger.nextWasmDisassemblyChunk': {
3966
+ paramsType: [Protocol.Debugger.NextWasmDisassemblyChunkRequest];
3967
+ returnType: Protocol.Debugger.NextWasmDisassemblyChunkResponse;
3968
+ };
3955
3969
  /**
3956
3970
  * This command is deprecated. Use getScriptSource instead.
3957
3971
  */
@@ -3510,6 +3510,16 @@ declare namespace ProtocolProxyApi {
3510
3510
  */
3511
3511
  invoke_getScriptSource(params: Protocol.Debugger.GetScriptSourceRequest): Promise<Protocol.Debugger.GetScriptSourceResponse>;
3512
3512
 
3513
+ invoke_disassembleWasmModule(params: Protocol.Debugger.DisassembleWasmModuleRequest): Promise<Protocol.Debugger.DisassembleWasmModuleResponse>;
3514
+
3515
+ /**
3516
+ * Disassemble the next chunk of lines for the module corresponding to the
3517
+ * stream. If disassembly is complete, this API will invalidate the streamId
3518
+ * and return an empty chunk. Any subsequent calls for the now invalid stream
3519
+ * will return errors.
3520
+ */
3521
+ invoke_nextWasmDisassemblyChunk(params: Protocol.Debugger.NextWasmDisassemblyChunkRequest): Promise<Protocol.Debugger.NextWasmDisassemblyChunkResponse>;
3522
+
3513
3523
  /**
3514
3524
  * This command is deprecated. Use getScriptSource instead.
3515
3525
  */
@@ -1026,6 +1026,7 @@ export namespace Audits {
1026
1026
  DeprecationExample = 'DeprecationExample',
1027
1027
  DocumentDomainSettingWithoutOriginAgentClusterHeader = 'DocumentDomainSettingWithoutOriginAgentClusterHeader',
1028
1028
  EventPath = 'EventPath',
1029
+ ExpectCTHeader = 'ExpectCTHeader',
1029
1030
  GeolocationInsecureOrigin = 'GeolocationInsecureOrigin',
1030
1031
  GeolocationInsecureOriginDeprecatedNotRemoved = 'GeolocationInsecureOriginDeprecatedNotRemoved',
1031
1032
  GetUserMediaInsecureOrigin = 'GetUserMediaInsecureOrigin',
@@ -7049,6 +7050,7 @@ export namespace Network {
7049
7050
  TextTrack = 'TextTrack',
7050
7051
  XHR = 'XHR',
7051
7052
  Fetch = 'Fetch',
7053
+ Prefetch = 'Prefetch',
7052
7054
  EventSource = 'EventSource',
7053
7055
  WebSocket = 'WebSocket',
7054
7056
  Manifest = 'Manifest',
@@ -7420,6 +7422,16 @@ export namespace Network {
7420
7422
  * Whether the request complied with Certificate Transparency policy
7421
7423
  */
7422
7424
  certificateTransparencyCompliance: CertificateTransparencyCompliance;
7425
+ /**
7426
+ * The signature algorithm used by the server in the TLS server signature,
7427
+ * represented as a TLS SignatureScheme code point. Omitted if not
7428
+ * applicable or not known.
7429
+ */
7430
+ serverSignatureAlgorithm?: integer;
7431
+ /**
7432
+ * Whether the connection used Encrypted ClientHello
7433
+ */
7434
+ encryptedClientHello: boolean;
7423
7435
  }
7424
7436
 
7425
7437
  /**
@@ -10309,6 +10321,7 @@ export namespace Page {
10309
10321
  ScreenWakeLock = 'screen-wake-lock',
10310
10322
  Serial = 'serial',
10311
10323
  SharedAutofill = 'shared-autofill',
10324
+ SharedStorage = 'shared-storage',
10312
10325
  StorageAccessAPI = 'storage-access-api',
10313
10326
  SyncXhr = 'sync-xhr',
10314
10327
  TrustTokenRedemption = 'trust-token-redemption',
@@ -14943,6 +14956,17 @@ export namespace Debugger {
14943
14956
  type?: BreakLocationType;
14944
14957
  }
14945
14958
 
14959
+ export interface WasmDisassemblyChunk {
14960
+ /**
14961
+ * The next chunk of disassembled lines.
14962
+ */
14963
+ lines: string[];
14964
+ /**
14965
+ * The bytecode offsets describing the start of each line.
14966
+ */
14967
+ bytecodeOffsets: integer[];
14968
+ }
14969
+
14946
14970
  /**
14947
14971
  * Enum of possible script languages.
14948
14972
  */
@@ -15094,6 +15118,45 @@ export namespace Debugger {
15094
15118
  bytecode?: binary;
15095
15119
  }
15096
15120
 
15121
+ export interface DisassembleWasmModuleRequest {
15122
+ /**
15123
+ * Id of the script to disassemble
15124
+ */
15125
+ scriptId: Runtime.ScriptId;
15126
+ }
15127
+
15128
+ export interface DisassembleWasmModuleResponse extends ProtocolResponseWithError {
15129
+ /**
15130
+ * For large modules, return a stream from which additional chunks of
15131
+ * disassembly can be read successively.
15132
+ */
15133
+ streamId?: string;
15134
+ /**
15135
+ * The total number of lines in the disassembly text.
15136
+ */
15137
+ totalNumberOfLines: integer;
15138
+ /**
15139
+ * The offsets of all function bodies plus one additional entry pointing
15140
+ * one by past the end of the last function.
15141
+ */
15142
+ functionBodyOffsets: integer[];
15143
+ /**
15144
+ * The first chunk of disassembly.
15145
+ */
15146
+ chunk: WasmDisassemblyChunk;
15147
+ }
15148
+
15149
+ export interface NextWasmDisassemblyChunkRequest {
15150
+ streamId: string;
15151
+ }
15152
+
15153
+ export interface NextWasmDisassemblyChunkResponse extends ProtocolResponseWithError {
15154
+ /**
15155
+ * The next chunk of disassembly.
15156
+ */
15157
+ chunk: WasmDisassemblyChunk;
15158
+ }
15159
+
15097
15160
  export interface GetWasmBytecodeRequest {
15098
15161
  /**
15099
15162
  * Id of the Wasm script to get source for.
@@ -846,7 +846,7 @@ export const NativeFunctions = [
846
846
  {
847
847
  name: 'addEventListener',
848
848
  signatures: [['type','listener','?options']],
849
- receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCPeerConnection','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
849
+ receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MIDIAccess','MIDIInput','MIDIOutput','MIDIPort','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCIceTransport','RTCPeerConnection','RTCSctpTransport','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
850
850
  },
851
851
  {
852
852
  name: 'addEventListener',
@@ -856,7 +856,7 @@ export const NativeFunctions = [
856
856
  {
857
857
  name: 'removeEventListener',
858
858
  signatures: [['type','listener','?options']],
859
- receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCPeerConnection','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
859
+ receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MIDIAccess','MIDIInput','MIDIOutput','MIDIPort','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCIceTransport','RTCPeerConnection','RTCSctpTransport','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
860
860
  },
861
861
  {
862
862
  name: 'removeEventListener',
@@ -973,13 +973,13 @@ export const NativeFunctions = [
973
973
  },
974
974
  {
975
975
  name: 'close',
976
- signatures: [['?code','?reason']],
977
- receivers: ['WebSocket']
976
+ signatures: [['?returnValue']],
977
+ receivers: ['HTMLDialogElement']
978
978
  },
979
979
  {
980
980
  name: 'close',
981
- signatures: [['?returnValue']],
982
- receivers: ['HTMLDialogElement']
981
+ signatures: [['?code','?reason']],
982
+ receivers: ['WebSocket']
983
983
  },
984
984
  {
985
985
  name: 'close',
@@ -2281,6 +2281,10 @@ export const NativeFunctions = [
2281
2281
  name: 'webkitMatchesSelector',
2282
2282
  signatures: [['selectors']]
2283
2283
  },
2284
+ {
2285
+ name: 'setFormValue',
2286
+ signatures: [['value','?state']]
2287
+ },
2284
2288
  {
2285
2289
  name: 'initEvent',
2286
2290
  signatures: [['type','?bubbles','?cancelable']]
@@ -2498,6 +2502,11 @@ export const NativeFunctions = [
2498
2502
  name: 'toDataURL',
2499
2503
  signatures: [['?type','?quality']]
2500
2504
  },
2505
+ {
2506
+ name: 'show',
2507
+ signatures: [['?detailsPromise']],
2508
+ receivers: ['PaymentRequest']
2509
+ },
2501
2510
  {
2502
2511
  name: 'requestSubmit',
2503
2512
  signatures: [['?submitter']]
@@ -2608,6 +2617,14 @@ export const NativeFunctions = [
2608
2617
  name: 'insertCell',
2609
2618
  signatures: [['?index']]
2610
2619
  },
2620
+ {
2621
+ name: 'cancelVideoFrameCallback',
2622
+ signatures: [['handle']]
2623
+ },
2624
+ {
2625
+ name: 'requestVideoFrameCallback',
2626
+ signatures: [['callback']]
2627
+ },
2611
2628
  {
2612
2629
  name: 'back',
2613
2630
  signatures: [['?options']],
@@ -2801,6 +2818,31 @@ export const NativeFunctions = [
2801
2818
  signatures: [['?type']],
2802
2819
  receivers: ['WakeLock']
2803
2820
  },
2821
+ {
2822
+ name: 'send',
2823
+ signatures: [['data','?timestamp']],
2824
+ receivers: ['MIDIOutput']
2825
+ },
2826
+ {
2827
+ name: 'send',
2828
+ signatures: [['data']],
2829
+ receivers: ['RTCDataChannel','WebSocket']
2830
+ },
2831
+ {
2832
+ name: 'send',
2833
+ signatures: [['?body']],
2834
+ receivers: ['XMLHttpRequest']
2835
+ },
2836
+ {
2837
+ name: 'send',
2838
+ signatures: [['command']],
2839
+ receivers: ['InspectorOverlayHost']
2840
+ },
2841
+ {
2842
+ name: 'send',
2843
+ signatures: [['message'],['data']],
2844
+ receivers: ['PresentationConnection']
2845
+ },
2804
2846
  {
2805
2847
  name: 'decodingInfo',
2806
2848
  signatures: [['configuration']]
@@ -2861,7 +2903,7 @@ export const NativeFunctions = [
2861
2903
  },
2862
2904
  {
2863
2905
  name: 'addSourceBuffer',
2864
- signatures: [['type'],['config']]
2906
+ signatures: [['type']]
2865
2907
  },
2866
2908
  {
2867
2909
  name: 'endOfStream',
@@ -2869,7 +2911,7 @@ export const NativeFunctions = [
2869
2911
  },
2870
2912
  {
2871
2913
  name: 'removeSourceBuffer',
2872
- signatures: [['sourceBuffer'],['buffer']]
2914
+ signatures: [['sourceBuffer']]
2873
2915
  },
2874
2916
  {
2875
2917
  name: 'setLiveSeekableRange',
@@ -2950,10 +2992,28 @@ export const NativeFunctions = [
2950
2992
  name: 'setNamedItemNS',
2951
2993
  signatures: [['attr']]
2952
2994
  },
2995
+ {
2996
+ name: 'disable',
2997
+ signatures: [['cap']],
2998
+ receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
2999
+ },
3000
+ {
3001
+ name: 'enable',
3002
+ signatures: [['cap']],
3003
+ receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
3004
+ },
3005
+ {
3006
+ name: 'setHeaderValue',
3007
+ signatures: [['value']]
3008
+ },
2953
3009
  {
2954
3010
  name: 'canShare',
2955
3011
  signatures: [['?data']]
2956
3012
  },
3013
+ {
3014
+ name: 'requestMIDIAccess',
3015
+ signatures: [['?options']]
3016
+ },
2957
3017
  {
2958
3018
  name: 'requestMediaKeySystemAccess',
2959
3019
  signatures: [['keySystem','supportedConfigurations']]
@@ -3097,11 +3157,6 @@ export const NativeFunctions = [
3097
3157
  name: 'addPath',
3098
3158
  signatures: [['path','?transform']]
3099
3159
  },
3100
- {
3101
- name: 'show',
3102
- signatures: [['?detailsPromise']],
3103
- receivers: ['PaymentRequest']
3104
- },
3105
3160
  {
3106
3161
  name: 'updateWith',
3107
3162
  signatures: [['detailsPromise']]
@@ -3176,29 +3231,9 @@ export const NativeFunctions = [
3176
3231
  signatures: [['tones','?duration','?interToneGap']]
3177
3232
  },
3178
3233
  {
3179
- name: 'send',
3180
- signatures: [['data']],
3181
- receivers: ['RTCDataChannel','WebSocket']
3182
- },
3183
- {
3184
- name: 'send',
3185
- signatures: [['?body']],
3186
- receivers: ['XMLHttpRequest']
3187
- },
3188
- {
3189
- name: 'send',
3190
- signatures: [['command']],
3191
- receivers: ['InspectorOverlayHost']
3192
- },
3193
- {
3194
- name: 'send',
3195
- signatures: [['message'],['data']],
3196
- receivers: ['PresentationConnection']
3197
- },
3198
- {
3199
- name: 'send',
3200
- signatures: [['data','?timestamp']],
3201
- receivers: ['MIDIOutput']
3234
+ name: 'getMetadata',
3235
+ signatures: [['successCallback','?errorCallback']],
3236
+ receivers: ['Entry']
3202
3237
  },
3203
3238
  {
3204
3239
  name: 'addIceCandidate',
@@ -4522,11 +4557,6 @@ export const NativeFunctions = [
4522
4557
  name: 'detachShader',
4523
4558
  signatures: [['program','shader']]
4524
4559
  },
4525
- {
4526
- name: 'disable',
4527
- signatures: [['cap']],
4528
- receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
4529
- },
4530
4560
  {
4531
4561
  name: 'disableVertexAttribArray',
4532
4562
  signatures: [['index']]
@@ -4539,11 +4569,6 @@ export const NativeFunctions = [
4539
4569
  name: 'drawElements',
4540
4570
  signatures: [['mode','count','type','offset']]
4541
4571
  },
4542
- {
4543
- name: 'enable',
4544
- signatures: [['cap']],
4545
- receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
4546
- },
4547
4572
  {
4548
4573
  name: 'enableVertexAttribArray',
4549
4574
  signatures: [['index']]
@@ -4925,6 +4950,10 @@ export const NativeFunctions = [
4925
4950
  name: 'setTimeout',
4926
4951
  signatures: [['handler','?timeout','...arguments']]
4927
4952
  },
4953
+ {
4954
+ name: 'structuredClone',
4955
+ signatures: [['value','?options']]
4956
+ },
4928
4957
  {
4929
4958
  name: 'addModule',
4930
4959
  signatures: [['moduleURL','?options']],
@@ -5886,6 +5915,10 @@ export const NativeFunctions = [
5886
5915
  name: 'registerProperty',
5887
5916
  signatures: [['definition']]
5888
5917
  },
5918
+ {
5919
+ name: 'ContentVisibilityAutoStateChangedEvent',
5920
+ signatures: [['type','?eventInitDict']]
5921
+ },
5889
5922
  {
5890
5923
  name: 'timeout',
5891
5924
  signatures: [['milliseconds']]
@@ -6912,11 +6945,6 @@ export const NativeFunctions = [
6912
6945
  signatures: [['successCallback','?errorCallback']],
6913
6946
  receivers: ['DirectoryEntry']
6914
6947
  },
6915
- {
6916
- name: 'getMetadata',
6917
- signatures: [['successCallback','?errorCallback']],
6918
- receivers: ['Entry']
6919
- },
6920
6948
  {
6921
6949
  name: 'copyTo',
6922
6950
  signatures: [['parent','name']],
@@ -7523,10 +7551,6 @@ export const NativeFunctions = [
7523
7551
  name: 'InstallEvent',
7524
7552
  signatures: [['type','?eventInitDict']]
7525
7553
  },
7526
- {
7527
- name: 'setHeaderValue',
7528
- signatures: [['value']]
7529
- },
7530
7554
  {
7531
7555
  name: 'BarcodeDetector',
7532
7556
  signatures: [['?barcodeDetectorOptions']]
@@ -7587,14 +7611,6 @@ export const NativeFunctions = [
7587
7611
  name: 'compareComponent',
7588
7612
  signatures: [['component','left','right']]
7589
7613
  },
7590
- {
7591
- name: 'requestVideoFrameCallback',
7592
- signatures: [['callback']]
7593
- },
7594
- {
7595
- name: 'cancelVideoFrameCallback',
7596
- signatures: [['handle']]
7597
- },
7598
7614
  {
7599
7615
  name: 'VirtualKeyboardGeometryChangeEvent',
7600
7616
  signatures: [['type']]
@@ -8103,10 +8119,6 @@ export const NativeFunctions = [
8103
8119
  name: 'MIDIMessageEvent',
8104
8120
  signatures: [['type','?eventInitDict']]
8105
8121
  },
8106
- {
8107
- name: 'requestMIDIAccess',
8108
- signatures: [['?options']]
8109
- },
8110
8122
  {
8111
8123
  name: 'CloseEvent',
8112
8124
  signatures: [['type','?eventInitDict']]
@@ -641,6 +641,40 @@ export class RemoteObject extends SDK.RemoteObject.RemoteObject {
641
641
  }
642
642
  }
643
643
 
644
+ // Resolve the frame's function name using the name associated with the opening
645
+ // paren that starts the scope. If there is no name associated with the scope
646
+ // start or if the function scope does not start with a left paren (e.g., arrow
647
+ // function with one parameter), the resolution returns null.
648
+ export async function resolveFrameFunctionName(frame: SDK.DebuggerModel.CallFrame): Promise<string|null> {
649
+ const script = frame.script;
650
+ const scope = frame.localScope();
651
+ if (!scope || !script) {
652
+ return null;
653
+ }
654
+ const startLocation = scope.startLocation();
655
+ if (!startLocation) {
656
+ return null;
657
+ }
658
+ const {content} = await script.requestContent();
659
+ if (!content) {
660
+ return null;
661
+ }
662
+
663
+ const text = new TextUtils.Text.Text(content);
664
+ const openRange = new TextUtils.TextRange.TextRange(
665
+ startLocation.lineNumber, startLocation.columnNumber, startLocation.lineNumber, startLocation.columnNumber + 1);
666
+ if (text.extract(openRange) !== '(') {
667
+ return null;
668
+ }
669
+
670
+ const sourceMap = Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().sourceMapForScript(script);
671
+ if (!sourceMap) {
672
+ return null;
673
+ }
674
+ const entry = sourceMap.findEntry(startLocation.lineNumber, startLocation.columnNumber);
675
+ return entry?.name ?? null;
676
+ }
677
+
644
678
  // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
645
679
  // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any
646
680
  let _scopeResolvedForTest: (...arg0: any[]) => void = function(): void {};
@@ -1181,32 +1181,17 @@ export class ElementsTreeOutline extends
1181
1181
  })
1182
1182
  .then(() => {
1183
1183
  if (treeElement.node().nodeName() === 'BODY') {
1184
- void this.createTopLayerContainer(treeElement);
1184
+ this.createTopLayerContainer(treeElement);
1185
1185
  }
1186
1186
  });
1187
1187
  }
1188
1188
 
1189
- async createTopLayerContainer(bodyElement: ElementsTreeElement): Promise<void> {
1189
+ createTopLayerContainer(bodyElement: ElementsTreeElement): void {
1190
1190
  if (!this.topLayerContainer) {
1191
1191
  this.topLayerContainer = new TopLayerContainer(bodyElement);
1192
1192
  }
1193
1193
  this.topLayerContainer.updateBody(bodyElement);
1194
- await this.updateTopLayerContainer();
1195
- }
1196
-
1197
- async updateTopLayerContainer(): Promise<void> {
1198
- if (this.topLayerContainer) {
1199
- const bodyElement = this.topLayerContainer.bodyElement;
1200
- if (!bodyElement.children().includes(this.topLayerContainer) && !this.topLayerContainer.parent &&
1201
- !this.topLayerContainer.treeOutline) {
1202
- bodyElement.insertChild(this.topLayerContainer, bodyElement.childCount() - 1);
1203
- }
1204
- this.topLayerContainer.removeChildren();
1205
- const topLayerElementsExists = await this.topLayerContainer.addTopLayerElementsAsChildren();
1206
- if (!topLayerElementsExists) {
1207
- bodyElement.removeChild(this.topLayerContainer);
1208
- }
1209
- }
1194
+ void this.topLayerContainer.throttledUpdateTopLayerElements();
1210
1195
  }
1211
1196
 
1212
1197
  private createElementTreeElement(node: SDK.DOMModel.DOMNode, isClosingTag?: boolean): ElementsTreeElement {
@@ -1280,6 +1265,11 @@ export class ElementsTreeOutline extends
1280
1265
  visibleChildren.push(afterPseudoElement);
1281
1266
  }
1282
1267
 
1268
+ const backdropPseudoElement = node.backdropPseudoElement();
1269
+ if (backdropPseudoElement) {
1270
+ visibleChildren.push(backdropPseudoElement);
1271
+ }
1272
+
1283
1273
  return visibleChildren;
1284
1274
  }
1285
1275
 
@@ -1463,8 +1453,8 @@ export class ElementsTreeOutline extends
1463
1453
  }
1464
1454
  }
1465
1455
 
1466
- private async topLayerElementsChanged(): Promise<void> {
1467
- await this.updateTopLayerContainer();
1456
+ private topLayerElementsChanged(): void {
1457
+ void this.topLayerContainer?.throttledUpdateTopLayerElements();
1468
1458
  }
1469
1459
 
1470
1460
  private static treeOutlineSymbol = Symbol('treeOutline');
@@ -1,6 +1,7 @@
1
1
  // Copyright 2022 The Chromium Authors. All rights reserved.
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
+ import * as Common from '../../core/common/common.js';
4
5
  import * as i18n from '../../core/i18n/i18n.js';
5
6
  import * as SDK from '../../core/sdk/sdk.js';
6
7
  import * as IconButton from '../../ui/components/icon_button/icon_button.js';
@@ -26,6 +27,8 @@ export class TopLayerContainer extends UI.TreeOutline.TreeElement {
26
27
  domModel: SDK.DOMModel.DOMModel;
27
28
  currentTopLayerElements: Set<ElementsTreeElement>;
28
29
  bodyElement: ElementsTreeElement;
30
+ topLayerUpdateThrottler: Common.Throttler.Throttler;
31
+ #inserted = false;
29
32
 
30
33
  constructor(bodyElement: ElementsTreeElement) {
31
34
  super('#top-layer');
@@ -33,39 +36,64 @@ export class TopLayerContainer extends UI.TreeOutline.TreeElement {
33
36
  this.domModel = bodyElement.node().domModel();
34
37
  this.treeOutline = null;
35
38
  this.currentTopLayerElements = new Set();
39
+ this.topLayerUpdateThrottler = new Common.Throttler.Throttler(1);
36
40
  }
37
41
 
38
42
  updateBody(bodyElement: ElementsTreeElement): void {
43
+ if (this.bodyElement !== bodyElement) {
44
+ this.#inserted = false;
45
+ }
39
46
  this.bodyElement = bodyElement;
40
47
  }
41
48
 
42
- async addTopLayerElementsAsChildren(): Promise<boolean> {
49
+ async throttledUpdateTopLayerElements(): Promise<void> {
50
+ await this.topLayerUpdateThrottler.schedule(() => this.updateTopLayerElements());
51
+ }
52
+
53
+ async updateTopLayerElements(): Promise<void> {
54
+ this.removeChildren();
43
55
  this.removeCurrentTopLayerElementsAdorners();
44
56
  this.currentTopLayerElements = new Set();
57
+
45
58
  const newTopLayerElementsIDs = await this.domModel.getTopLayerElements();
46
- if (newTopLayerElementsIDs === null) {
47
- return false;
59
+ if (!newTopLayerElementsIDs || newTopLayerElementsIDs.length === 0) {
60
+ this.hidden = true;
61
+ return;
48
62
  }
63
+
49
64
  let topLayerElementIndex = 0;
50
- if (newTopLayerElementsIDs) {
51
- for (const elementID of newTopLayerElementsIDs) {
52
- const topLayerDOMNode = this.domModel.idToDOMNode.get(elementID);
53
- // Will need to add support for backdrop in the future.
54
- if (topLayerDOMNode && topLayerDOMNode.nodeName() !== '::backdrop') {
55
- topLayerElementIndex++;
56
- const topLayerElementShortcut = new SDK.DOMModel.DOMNodeShortcut(
57
- this.domModel.target(), topLayerDOMNode.backendNodeId(), 0, topLayerDOMNode.nodeName());
58
- const topLayerTreeElement = this.treeOutline?.treeElementByNode.get(topLayerDOMNode);
59
- const topLayerElementRepresentation = new ElementsTreeOutline.ShortcutTreeElement(topLayerElementShortcut);
60
- if (topLayerTreeElement && !this.currentTopLayerElements.has(topLayerTreeElement)) {
61
- this.appendChild(topLayerElementRepresentation);
62
- this.addTopLayerAdorner(topLayerTreeElement, topLayerElementRepresentation, topLayerElementIndex);
63
- this.currentTopLayerElements.add(topLayerTreeElement);
64
- }
65
+ for (let i = 0; i < newTopLayerElementsIDs.length; i++) {
66
+ const topLayerDOMNode = this.domModel.idToDOMNode.get(newTopLayerElementsIDs[i]);
67
+ if (topLayerDOMNode && topLayerDOMNode.nodeName() !== '::backdrop') {
68
+ const topLayerElementShortcut = new SDK.DOMModel.DOMNodeShortcut(
69
+ this.domModel.target(), topLayerDOMNode.backendNodeId(), 0, topLayerDOMNode.nodeName());
70
+ const topLayerElementRepresentation = new ElementsTreeOutline.ShortcutTreeElement(topLayerElementShortcut);
71
+ const topLayerTreeElement = this.bodyElement.treeOutline?.treeElementByNode.get(topLayerDOMNode);
72
+ if (!topLayerTreeElement) {
73
+ continue;
74
+ }
75
+
76
+ topLayerElementIndex++;
77
+ this.addTopLayerAdorner(topLayerTreeElement, topLayerElementRepresentation, topLayerElementIndex);
78
+ this.currentTopLayerElements.add(topLayerTreeElement);
79
+ this.appendChild(topLayerElementRepresentation);
80
+ // Add the element's backdrop if previous top layer element is a backdrop.
81
+ const previousTopLayerDOMNode =
82
+ (i > 0) ? this.domModel.idToDOMNode.get(newTopLayerElementsIDs[i - 1]) : undefined;
83
+ if (previousTopLayerDOMNode && previousTopLayerDOMNode.nodeName() === '::backdrop') {
84
+ const backdropElementShortcut = new SDK.DOMModel.DOMNodeShortcut(
85
+ this.domModel.target(), previousTopLayerDOMNode.backendNodeId(), 0, previousTopLayerDOMNode.nodeName());
86
+ const backdropElementRepresentation = new ElementsTreeOutline.ShortcutTreeElement(backdropElementShortcut);
87
+ topLayerElementRepresentation.appendChild(backdropElementRepresentation);
65
88
  }
66
89
  }
67
90
  }
68
- return topLayerElementIndex > 0;
91
+
92
+ this.hidden = topLayerElementIndex <= 0;
93
+ if (!this.hidden && !this.#inserted) {
94
+ this.bodyElement.insertChild(this, this.bodyElement.childCount() - 1);
95
+ this.#inserted = true;
96
+ }
69
97
  }
70
98
 
71
99
  private removeCurrentTopLayerElementsAdorners(): void {
@@ -28,7 +28,7 @@
28
28
  }
29
29
 
30
30
  .adorner-reveal {
31
- margin: 3px;
31
+ margin: 0 3px;
32
32
  }
33
33
 
34
34
  .adorner-with-icon {
@@ -1043,8 +1043,7 @@ export class NetworkRequestNode extends NetworkNode {
1043
1043
  const secondIconElement = document.createElement('img');
1044
1044
  secondIconElement.classList.add('icon');
1045
1045
  secondIconElement.alt = i18nString(UIStrings.webBundleInnerRequest);
1046
- secondIconElement.src = 'Images/ic_file_webbundle_inner_request.svg';
1047
- new URL('../../Images/ic_file_webbundle_inner_request.svg', import.meta.url).toString();
1046
+ secondIconElement.src = new URL('../../Images/ic_file_webbundle_inner_request.svg', import.meta.url).toString();
1048
1047
 
1049
1048
  const networkManager = SDK.NetworkManager.NetworkManager.forRequest(this.requestInternal);
1050
1049
  if (webBundleInnerRequestInfo.bundleRequestId && networkManager) {
@@ -34,6 +34,7 @@ import * as Platform from '../../core/platform/platform.js';
34
34
  import * as SDK from '../../core/sdk/sdk.js';
35
35
  import * as Bindings from '../../models/bindings/bindings.js';
36
36
  import * as Persistence from '../../models/persistence/persistence.js';
37
+ import * as SourceMapScopes from '../../models/source_map_scopes/source_map_scopes.js';
37
38
  import * as Workspace from '../../models/workspace/workspace.js';
38
39
  import * as UI from '../../ui/legacy/legacy.js';
39
40
 
@@ -106,6 +107,7 @@ let callstackSidebarPaneInstance: CallStackSidebarPane;
106
107
  export class CallStackSidebarPane extends UI.View.SimpleView implements UI.ContextFlavorListener.ContextFlavorListener,
107
108
  UI.ListControl.ListDelegate<Item> {
108
109
  private readonly ignoreListMessageElement: Element;
110
+ private readonly ignoreListCheckboxElement: HTMLInputElement;
109
111
  private readonly notPausedMessageElement: HTMLElement;
110
112
  private readonly callFrameWarningsElement: HTMLElement;
111
113
  private readonly items: UI.ListModel.ListModel<Item>;
@@ -118,18 +120,20 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
118
120
  private readonly updateItemThrottler: Common.Throttler.Throttler;
119
121
  private readonly scheduledForUpdateItems: Set<Item>;
120
122
  private muteActivateItem?: boolean;
123
+ private lastDebuggerModel: SDK.DebuggerModel.DebuggerModel|null = null;
121
124
 
122
125
  private constructor() {
123
126
  super(i18nString(UIStrings.callStack), true);
124
127
 
125
- this.ignoreListMessageElement = this.createIgnoreListMessageElement();
128
+ ({element: this.ignoreListMessageElement, checkbox: this.ignoreListCheckboxElement} =
129
+ this.createIgnoreListMessageElementAndCheckbox());
126
130
  this.contentElement.appendChild(this.ignoreListMessageElement);
127
131
 
128
132
  this.notPausedMessageElement = this.contentElement.createChild('div', 'gray-info-message');
129
133
  this.notPausedMessageElement.textContent = i18nString(UIStrings.notPaused);
130
134
  this.notPausedMessageElement.tabIndex = -1;
131
135
 
132
- this.callFrameWarningsElement = this.contentElement.createChild('div', 'ignore-listed-message');
136
+ this.callFrameWarningsElement = this.contentElement.createChild('div', 'call-frame-warnings-message');
133
137
  const icon = UI.Icon.Icon.create('smallicon-warning', 'call-frame-warning-icon');
134
138
  this.callFrameWarningsElement.appendChild(icon);
135
139
  this.callFrameWarningsElement.appendChild(document.createTextNode(i18nString(UIStrings.callFrameWarnings)));
@@ -178,6 +182,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
178
182
 
179
183
  flavorChanged(_object: Object|null): void {
180
184
  this.showIgnoreListed = false;
185
+ this.ignoreListCheckboxElement.checked = false;
181
186
  this.maxAsyncStackChainDepth = defaultMaxAsyncStackChainDepth;
182
187
  this.update();
183
188
  }
@@ -186,6 +191,24 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
186
191
  this.update();
187
192
  }
188
193
 
194
+ private setSourceMapSubscription(debuggerModel: SDK.DebuggerModel.DebuggerModel|null): void {
195
+ // Shortcut for the case when we are listening to the same model.
196
+ if (this.lastDebuggerModel === debuggerModel) {
197
+ return;
198
+ }
199
+
200
+ if (this.lastDebuggerModel) {
201
+ this.lastDebuggerModel.sourceMapManager().removeEventListener(
202
+ SDK.SourceMapManager.Events.SourceMapAttached, this.debugInfoAttached, this);
203
+ }
204
+
205
+ this.lastDebuggerModel = debuggerModel;
206
+ if (this.lastDebuggerModel) {
207
+ this.lastDebuggerModel.sourceMapManager().addEventListener(
208
+ SDK.SourceMapManager.Events.SourceMapAttached, this.debugInfoAttached, this);
209
+ }
210
+ }
211
+
189
212
  private update(): void {
190
213
  void this.updateThrottler.schedule(() => this.doUpdate());
191
214
  }
@@ -202,6 +225,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
202
225
  this.showMoreMessageElement.classList.add('hidden');
203
226
  this.items.replaceAll([]);
204
227
  UI.Context.Context.instance().setFlavor(SDK.DebuggerModel.CallFrame, null);
228
+ this.setSourceMapSubscription(null);
205
229
  return;
206
230
  }
207
231
 
@@ -227,6 +251,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
227
251
  }
228
252
 
229
253
  let debuggerModel = details.debuggerModel;
254
+ this.setSourceMapSubscription(debuggerModel);
230
255
  let asyncStackTraceId = details.asyncStackTraceId;
231
256
  let asyncStackTrace: Protocol.Runtime.StackTrace|undefined|null = details.asyncStackTrace;
232
257
  let previousStackTrace: Protocol.Runtime.CallFrame[]|SDK.DebuggerModel.CallFrame[] = details.callFrames;
@@ -256,6 +281,9 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
256
281
  }
257
282
  this.showMoreMessageElement.classList.toggle('hidden', !asyncStackTrace);
258
283
  this.items.replaceAll(items);
284
+ for (const item of this.items) {
285
+ this.refreshItem(item);
286
+ }
259
287
  if (this.maxAsyncStackChainDepth === defaultMaxAsyncStackChainDepth) {
260
288
  this.list.selectNextItem(true /* canWrap */, false /* center */);
261
289
  const selectedItem = this.list.selectedItem();
@@ -283,6 +311,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
283
311
  }
284
312
  this.ignoreListMessageElement.classList.toggle('hidden', true);
285
313
  } else {
314
+ this.showIgnoreListed = this.ignoreListCheckboxElement.checked;
286
315
  const itemsSet = new Set<Item>(items);
287
316
  let hasIgnoreListed = false;
288
317
  for (let i = 0; i < this.items.length; ++i) {
@@ -292,7 +321,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
292
321
  }
293
322
  hasIgnoreListed = hasIgnoreListed || item.isIgnoreListed;
294
323
  }
295
- this.ignoreListMessageElement.classList.toggle('hidden', this.showIgnoreListed || !hasIgnoreListed);
324
+ this.ignoreListMessageElement.classList.toggle('hidden', !hasIgnoreListed);
296
325
  }
297
326
  delete this.muteActivateItem;
298
327
  });
@@ -365,24 +394,24 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
365
394
  return true;
366
395
  }
367
396
 
368
- private createIgnoreListMessageElement(): Element {
397
+ private createIgnoreListMessageElementAndCheckbox(): {element: Element, checkbox: HTMLInputElement} {
369
398
  const element = document.createElement('div');
370
399
  element.classList.add('ignore-listed-message');
371
- element.createChild('span');
372
- const showAllLink = element.createChild('span', 'link');
373
- showAllLink.textContent = i18nString(UIStrings.showIgnorelistedFrames);
374
- UI.ARIAUtils.markAsLink(showAllLink);
375
- showAllLink.tabIndex = 0;
400
+ const label = element.createChild('label');
401
+ label.classList.add('ignore-listed-message-label');
402
+ const checkbox = label.createChild('input') as HTMLInputElement;
403
+ checkbox.tabIndex = 0;
404
+ checkbox.type = 'checkbox';
405
+ checkbox.classList.add('ignore-listed-checkbox');
406
+ label.append(i18nString(UIStrings.showIgnorelistedFrames));
376
407
  const showAll = (): void => {
377
- this.showIgnoreListed = true;
408
+ this.showIgnoreListed = checkbox.checked;
378
409
  for (const item of this.items) {
379
410
  this.refreshItem(item);
380
411
  }
381
- this.ignoreListMessageElement.classList.toggle('hidden', true);
382
412
  };
383
- showAllLink.addEventListener('click', showAll);
384
- showAllLink.addEventListener('keydown', event => event.key === 'Enter' && showAll());
385
- return element;
413
+ checkbox.addEventListener('click', showAll);
414
+ return {element, checkbox};
386
415
  }
387
416
 
388
417
  private createShowMoreMessageElement(): Element {
@@ -572,7 +601,8 @@ export class Item {
572
601
  static async createForDebuggerCallFrame(
573
602
  frame: SDK.DebuggerModel.CallFrame, locationPool: Bindings.LiveLocation.LiveLocationPool,
574
603
  updateDelegate: (arg0: Item) => void): Promise<Item> {
575
- const item = new Item(UI.UIUtils.beautifyFunctionName(frame.functionName), updateDelegate);
604
+ const name = await SourceMapScopes.NamesResolver.resolveFrameFunctionName(frame) ?? frame.functionName;
605
+ const item = new Item(UI.UIUtils.beautifyFunctionName(name), updateDelegate);
576
606
  await Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(
577
607
  frame.location(), item.update.bind(item), locationPool);
578
608
  return item;
@@ -4,7 +4,7 @@
4
4
  * found in the LICENSE file.
5
5
  */
6
6
 
7
- .ignore-listed-message {
7
+ .call-frame-warnings-message {
8
8
  --override-ignore-message-background-color: #ffffc2;
9
9
 
10
10
  text-align: center;
@@ -14,6 +14,16 @@
14
14
  background-color: var(--override-ignore-message-background-color);
15
15
  }
16
16
 
17
+ .ignore-listed-message {
18
+ padding: 1px;
19
+ }
20
+
21
+ .ignore-listed-message-label {
22
+ color: var(--color-text-secondary);
23
+ align-items: center;
24
+ display: flex;
25
+ }
26
+
17
27
  .-theme-with-dark-background .ignore-listed-message,
18
28
  :host-context(.-theme-with-dark-background) .ignore-listed-message {
19
29
  --override-ignore-message-background-color: rgb(72 72 0);
@@ -23,14 +33,6 @@
23
33
  margin-left: 5px;
24
34
  }
25
35
 
26
- .ignore-listed-message > .link {
27
- margin-left: 5px;
28
- }
29
-
30
- .ignore-listed-message > .link:focus {
31
- outline-width: unset;
32
- }
33
-
34
36
  .show-more-message {
35
37
  text-align: center;
36
38
  font-style: italic;
@@ -80,6 +82,10 @@
80
82
  background-color: var(--legacy-focus-bg-color);
81
83
  }
82
84
 
85
+ .ignore-listed-checkbox:focus-visible {
86
+ outline-width: unset;
87
+ }
88
+
83
89
  .call-frame-item:not(.async-header):hover {
84
90
  background-color: var(--color-background-elevation-1);
85
91
  }
@@ -10,6 +10,12 @@
10
10
  opacity: 0%;
11
11
  }
12
12
 
13
+ :host-context(.-theme-with-dark-background) .watch-expression-delete-button {
14
+ /* This is a workaround due to a sprite with hardcoded color.
15
+ It should no longer be necessary after we update icons. */
16
+ filter: brightness(1.5);
17
+ }
18
+
13
19
  .right-aligned {
14
20
  right: 16px;
15
21
  }
package/package.json CHANGED
@@ -55,5 +55,5 @@
55
55
  "unittest": "scripts/test/run_unittests.py --no-text-coverage",
56
56
  "watch": "vpython third_party/node/node.py --output scripts/watch_build.js"
57
57
  },
58
- "version": "1.0.1025631"
58
+ "version": "1.0.1026160"
59
59
  }