chrome-devtools-mcp 1.2.0 → 1.3.0

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.
@@ -10507,6 +10507,18 @@ function requireSemver$1 () {
10507
10507
  const { safeRe: re, t } = requireRe();
10508
10508
  const parseOptions = requireParseOptions();
10509
10509
  const { compareIdentifiers } = requireIdentifiers();
10510
+ const isPrereleaseIdentifier = (prerelease, identifier) => {
10511
+ const identifiers = identifier.split('.');
10512
+ if (identifiers.length > prerelease.length) {
10513
+ return false
10514
+ }
10515
+ for (let i = 0; i < identifiers.length; i++) {
10516
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
10517
+ return false
10518
+ }
10519
+ }
10520
+ return true
10521
+ };
10510
10522
  class SemVer {
10511
10523
  constructor (version, options) {
10512
10524
  options = parseOptions(options);
@@ -10752,8 +10764,9 @@ function requireSemver$1 () {
10752
10764
  if (identifierBase === false) {
10753
10765
  prerelease = [identifier];
10754
10766
  }
10755
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
10756
- if (isNaN(this.prerelease[1])) {
10767
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
10768
+ const prereleaseBase = this.prerelease[identifier.split('.').length];
10769
+ if (isNaN(prereleaseBase)) {
10757
10770
  this.prerelease = prerelease;
10758
10771
  }
10759
10772
  } else {
@@ -11572,10 +11585,10 @@ function requireRange () {
11572
11585
  if (M === '0') {
11573
11586
  if (m === '0') {
11574
11587
  ret = `>=${M}.${m}.${p
11575
- }${z} <${M}.${m}.${+p + 1}-0`;
11588
+ } <${M}.${m}.${+p + 1}-0`;
11576
11589
  } else {
11577
11590
  ret = `>=${M}.${m}.${p
11578
- }${z} <${M}.${+m + 1}.0-0`;
11591
+ } <${M}.${+m + 1}.0-0`;
11579
11592
  }
11580
11593
  } else {
11581
11594
  ret = `>=${M}.${m}.${p
@@ -73114,7 +73127,7 @@ const DELIMITERS = {
73114
73127
  comma: ","};
73115
73128
  const DEFAULT_DELIMITER = DELIMITERS.comma;
73116
73129
  function escapeString(value) {
73117
- return value.replace(/\\/g, `\\\\`).replace(/"/g, `\\"`).replace(/\n/g, `\\n`).replace(/\r/g, `\\r`).replace(/\t/g, `\\t`);
73130
+ return value.replace(/\\/g, `\\\\`).replace(/"/g, `\\"`).replace(/\n/g, `\\n`).replace(/\r/g, `\\r`).replace(/\t/g, `\\t`).replace(/[\u0000-\u001F]/g, (c) => `\\u${c.charCodeAt(0).toString(16).padStart(4, "0")}`);
73118
73131
  }
73119
73132
  function isBooleanOrNullLiteral(token) {
73120
73133
  return token === "true" || token === "false" || token === "null";
@@ -73187,7 +73200,7 @@ function isSafeUnquoted(value, delimiter = DEFAULT_DELIMITER) {
73187
73200
  if (value.includes(":")) return false;
73188
73201
  if (value.includes("\"") || value.includes("\\")) return false;
73189
73202
  if (/[[\]{}]/.test(value)) return false;
73190
- if (/[\n\r\t]/.test(value)) return false;
73203
+ if (/[\u0000-\u001F]/.test(value)) return false;
73191
73204
  if (value.includes(delimiter)) return false;
73192
73205
  if (value.startsWith("-")) return false;
73193
73206
  return true;
@@ -73323,10 +73336,7 @@ function* encodeKeyValuePairLines(key, value, depth, options, siblings, rootLite
73323
73336
  }
73324
73337
  function* encodeArrayLines(key, value, depth, options) {
73325
73338
  if (value.length === 0) {
73326
- yield indentedLine(depth, formatHeader(0, {
73327
- key,
73328
- delimiter: options.delimiter
73329
- }), options.indent);
73339
+ yield indentedLine(depth, key != null ? `${encodeKey(key)}: []` : "[]", options.indent);
73330
73340
  return;
73331
73341
  }
73332
73342
  if (isArrayOfPrimitives(value)) {
@@ -73424,7 +73434,7 @@ function* encodeObjectAsListItemLines(obj, depth, options) {
73424
73434
  }
73425
73435
  const encodedKey = encodeKey(firstKey);
73426
73436
  if (isJsonPrimitive(firstValue)) yield indentedListItem(depth, `${encodedKey}: ${encodePrimitive(firstValue, options.delimiter)}`, options.indent);
73427
- else if (isJsonArray(firstValue)) if (firstValue.length === 0) yield indentedListItem(depth, `${encodedKey}${formatHeader(0, { delimiter: options.delimiter })}`, options.indent);
73437
+ else if (isJsonArray(firstValue)) if (firstValue.length === 0) yield indentedListItem(depth, `${encodedKey}: []`, options.indent);
73428
73438
  else if (isArrayOfPrimitives(firstValue)) yield indentedListItem(depth, `${encodedKey}${encodeInlineArrayLine(firstValue, options.delimiter)}`, options.indent);
73429
73439
  else {
73430
73440
  yield indentedListItem(depth, `${encodedKey}${formatHeader(firstValue.length, { delimiter: options.delimiter })}`, options.indent);
@@ -76810,7 +76820,6 @@ var ExperimentName;
76810
76820
  ExperimentName["ALL"] = "*";
76811
76821
  ExperimentName["PROTOCOL_MONITOR"] = "protocol-monitor";
76812
76822
  ExperimentName["INSTRUMENTATION_BREAKPOINTS"] = "instrumentation-breakpoints";
76813
- ExperimentName["USE_SOURCE_MAP_SCOPES"] = "use-source-map-scopes";
76814
76823
  ExperimentName["DURABLE_MESSAGES"] = "durable-messages";
76815
76824
  ExperimentName["JPEG_XL"] = "jpeg-xl";
76816
76825
  ExperimentName["PLUS_BUTTON"] = "plus-button";
@@ -83483,6 +83492,7 @@ var ClientFeature;
83483
83492
  ClientFeature[ClientFeature["CHROME_ACCESSIBILITY_AGENT"] = 26] = "CHROME_ACCESSIBILITY_AGENT";
83484
83493
  ClientFeature[ClientFeature["CHROME_CONVERSATION_SUMMARY_AGENT"] = 27] = "CHROME_CONVERSATION_SUMMARY_AGENT";
83485
83494
  ClientFeature[ClientFeature["CHROME_STORAGE_AGENT"] = 28] = "CHROME_STORAGE_AGENT";
83495
+ ClientFeature[ClientFeature["CHROME_DEVTOOLS_V2_AGENT"] = 29] = "CHROME_DEVTOOLS_V2_AGENT";
83486
83496
  })(ClientFeature || (ClientFeature = {}));
83487
83497
  var UserTier;
83488
83498
  (function (UserTier) {
@@ -85996,7 +86006,9 @@ var Action;
85996
86006
  Action[Action["AiCodeGenerationRequestTriggeredFromSources"] = 205] = "AiCodeGenerationRequestTriggeredFromSources";
85997
86007
  Action[Action["AiCodeCompletionFreCompletedFromConsole"] = 206] = "AiCodeCompletionFreCompletedFromConsole";
85998
86008
  Action[Action["AiCodeCompletionFreCompletedFromSources"] = 207] = "AiCodeCompletionFreCompletedFromSources";
85999
- Action[Action["MAX_VALUE"] = 208] = "MAX_VALUE";
86009
+ Action[Action["AiAssistanceOpenedFromApplicationPanelFloatingButton"] = 208] = "AiAssistanceOpenedFromApplicationPanelFloatingButton";
86010
+ Action[Action["AiAssistanceOpenedFromApplicationPanel"] = 209] = "AiAssistanceOpenedFromApplicationPanel";
86011
+ Action[Action["MAX_VALUE"] = 210] = "MAX_VALUE";
86000
86012
  })(Action || (Action = {}));
86001
86013
  var PanelCodes;
86002
86014
  (function (PanelCodes) {
@@ -86066,7 +86078,8 @@ var PanelCodes;
86066
86078
  PanelCodes[PanelCodes["developer-resources"] = 66] = "developer-resources";
86067
86079
  PanelCodes[PanelCodes["autofill-view"] = 67] = "autofill-view";
86068
86080
  PanelCodes[PanelCodes["freestyler"] = 68] = "freestyler";
86069
- PanelCodes[PanelCodes["MAX_VALUE"] = 69] = "MAX_VALUE";
86081
+ PanelCodes[PanelCodes["ads"] = 69] = "ads";
86082
+ PanelCodes[PanelCodes["MAX_VALUE"] = 70] = "MAX_VALUE";
86070
86083
  })(PanelCodes || (PanelCodes = {}));
86071
86084
  var MediaTypes;
86072
86085
  (function (MediaTypes) {
@@ -86239,7 +86252,6 @@ var DevtoolsExperiments;
86239
86252
  (function (DevtoolsExperiments) {
86240
86253
  DevtoolsExperiments[DevtoolsExperiments["protocol-monitor"] = 13] = "protocol-monitor";
86241
86254
  DevtoolsExperiments[DevtoolsExperiments["instrumentation-breakpoints"] = 61] = "instrumentation-breakpoints";
86242
- DevtoolsExperiments[DevtoolsExperiments["use-source-map-scopes"] = 76] = "use-source-map-scopes";
86243
86255
  DevtoolsExperiments[DevtoolsExperiments["durable-messages"] = 110] = "durable-messages";
86244
86256
  DevtoolsExperiments[DevtoolsExperiments["jpeg-xl"] = 111] = "jpeg-xl";
86245
86257
  DevtoolsExperiments[DevtoolsExperiments["plus-button"] = 112] = "plus-button";
@@ -86935,7 +86947,7 @@ function registerCommands(inspectorBackend) {
86935
86947
  inspectorBackend.registerCommand("DOM.getContainerForNode", [{ "name": "nodeId", "type": "number", "optional": false, "description": "", "typeRef": "DOM.NodeId" }, { "name": "containerName", "type": "string", "optional": true, "description": "", "typeRef": null }, { "name": "physicalAxes", "type": "string", "optional": true, "description": "", "typeRef": "DOM.PhysicalAxes" }, { "name": "logicalAxes", "type": "string", "optional": true, "description": "", "typeRef": "DOM.LogicalAxes" }, { "name": "queriesScrollState", "type": "boolean", "optional": true, "description": "", "typeRef": null }, { "name": "queriesAnchored", "type": "boolean", "optional": true, "description": "", "typeRef": null }], ["nodeId"], "Returns the query container of the given node based on container query conditions: containerName, physical and logical axes, and whether it queries scroll-state or anchored elements. If no axes are provided and queriesScrollState is false, the style container is returned, which is the direct parent or the closest element with a matching container-name.");
86936
86948
  inspectorBackend.registerCommand("DOM.getQueryingDescendantsForContainer", [{ "name": "nodeId", "type": "number", "optional": false, "description": "Id of the container node to find querying descendants from.", "typeRef": "DOM.NodeId" }], ["nodeIds"], "Returns the descendants of a container query container that have container queries against this container.");
86937
86949
  inspectorBackend.registerCommand("DOM.getAnchorElement", [{ "name": "nodeId", "type": "number", "optional": false, "description": "Id of the positioned element from which to find the anchor.", "typeRef": "DOM.NodeId" }, { "name": "anchorSpecifier", "type": "string", "optional": true, "description": "An optional anchor specifier, as defined in https://www.w3.org/TR/css-anchor-position-1/#anchor-specifier. If not provided, it will return the implicit anchor element for the given positioned element.", "typeRef": null }], ["nodeId"], "Returns the target anchor element of the given anchor query according to https://www.w3.org/TR/css-anchor-position-1/#target.");
86938
- inspectorBackend.registerCommand("DOM.forceShowPopover", [{ "name": "nodeId", "type": "number", "optional": false, "description": "Id of the popover HTMLElement", "typeRef": "DOM.NodeId" }, { "name": "enable", "type": "boolean", "optional": false, "description": "If true, opens the popover and keeps it open. If false, closes the popover if it was previously force-opened.", "typeRef": null }], ["nodeIds"], "When enabling, this API force-opens the popover identified by nodeId and keeps it open until disabled.");
86950
+ inspectorBackend.registerCommand("DOM.forceShowPopover", [{ "name": "nodeId", "type": "number", "optional": false, "description": "Id of the popover HTMLElement", "typeRef": "DOM.NodeId" }, { "name": "enable", "type": "boolean", "optional": false, "description": "If true, opens the popover and keeps it open. If false, closes the popover if it was previously force-opened.", "typeRef": null }, { "name": "invokerNodeId", "type": "number", "optional": true, "description": "Optional ID of the element invoking this popover, used to establish the implicit anchor. If not provided, it will fall back to the first invoker in the document, preferring elements with a popovertarget attribute over those with a commandfor attribute. Note that if there are multiple invokers, this is just an estimate.", "typeRef": "DOM.BackendNodeId" }], ["nodeIds"], "When enabling, this API force-opens the popover identified by nodeId and keeps it open until disabled.");
86939
86951
  inspectorBackend.registerType("DOM.BackendNode", [{ "name": "nodeType", "type": "number", "optional": false, "description": "`Node`'s nodeType.", "typeRef": null }, { "name": "nodeName", "type": "string", "optional": false, "description": "`Node`'s nodeName.", "typeRef": null }, { "name": "backendNodeId", "type": "number", "optional": false, "description": "", "typeRef": "DOM.BackendNodeId" }]);
86940
86952
  inspectorBackend.registerType("DOM.Node", [{ "name": "nodeId", "type": "number", "optional": false, "description": "Node identifier that is passed into the rest of the DOM messages as the `nodeId`. Backend will only push node with given `id` once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client.", "typeRef": "DOM.NodeId" }, { "name": "parentId", "type": "number", "optional": true, "description": "The id of the parent node if any.", "typeRef": "DOM.NodeId" }, { "name": "backendNodeId", "type": "number", "optional": false, "description": "The BackendNodeId for this node.", "typeRef": "DOM.BackendNodeId" }, { "name": "nodeType", "type": "number", "optional": false, "description": "`Node`'s nodeType.", "typeRef": null }, { "name": "nodeName", "type": "string", "optional": false, "description": "`Node`'s nodeName.", "typeRef": null }, { "name": "localName", "type": "string", "optional": false, "description": "`Node`'s localName.", "typeRef": null }, { "name": "nodeValue", "type": "string", "optional": false, "description": "`Node`'s nodeValue.", "typeRef": null }, { "name": "childNodeCount", "type": "number", "optional": true, "description": "Child count for `Container` nodes.", "typeRef": null }, { "name": "children", "type": "array", "optional": true, "description": "Child nodes of this node when requested with children.", "typeRef": "DOM.Node" }, { "name": "attributes", "type": "array", "optional": true, "description": "Attributes of the `Element` node in the form of flat array `[name1, value1, name2, value2]`.", "typeRef": "string" }, { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that `Document` or `FrameOwner` node points to.", "typeRef": null }, { "name": "baseURL", "type": "string", "optional": true, "description": "Base URL that `Document` or `FrameOwner` node uses for URL completion.", "typeRef": null }, { "name": "publicId", "type": "string", "optional": true, "description": "`DocumentType`'s publicId.", "typeRef": null }, { "name": "systemId", "type": "string", "optional": true, "description": "`DocumentType`'s systemId.", "typeRef": null }, { "name": "internalSubset", "type": "string", "optional": true, "description": "`DocumentType`'s internalSubset.", "typeRef": null }, { "name": "xmlVersion", "type": "string", "optional": true, "description": "`Document`'s XML version in case of XML documents.", "typeRef": null }, { "name": "name", "type": "string", "optional": true, "description": "`Attr`'s name.", "typeRef": null }, { "name": "value", "type": "string", "optional": true, "description": "`Attr`'s value.", "typeRef": null }, { "name": "pseudoType", "type": "string", "optional": true, "description": "Pseudo element type for this node.", "typeRef": "DOM.PseudoType" }, { "name": "pseudoIdentifier", "type": "string", "optional": true, "description": "Pseudo element identifier for this node. Only present if there is a valid pseudoType.", "typeRef": null }, { "name": "shadowRootType", "type": "string", "optional": true, "description": "Shadow root type.", "typeRef": "DOM.ShadowRootType" }, { "name": "frameId", "type": "string", "optional": true, "description": "Frame ID for frame owner elements.", "typeRef": "Page.FrameId" }, { "name": "contentDocument", "type": "object", "optional": true, "description": "Content document for frame owner elements.", "typeRef": "DOM.Node" }, { "name": "shadowRoots", "type": "array", "optional": true, "description": "Shadow root list for given element host.", "typeRef": "DOM.Node" }, { "name": "templateContent", "type": "object", "optional": true, "description": "Content document fragment for template elements.", "typeRef": "DOM.Node" }, { "name": "pseudoElements", "type": "array", "optional": true, "description": "Pseudo elements associated with this node.", "typeRef": "DOM.Node" }, { "name": "importedDocument", "type": "object", "optional": true, "description": "Deprecated, as the HTML Imports API has been removed (crbug.com/937746). This property used to return the imported document for the HTMLImport links. The property is always undefined now.", "typeRef": "DOM.Node" }, { "name": "distributedNodes", "type": "array", "optional": true, "description": "Distributed nodes for given insertion point.", "typeRef": "DOM.BackendNode" }, { "name": "isSVG", "type": "boolean", "optional": true, "description": "Whether the node is SVG.", "typeRef": null }, { "name": "compatibilityMode", "type": "string", "optional": true, "description": "", "typeRef": "DOM.CompatibilityMode" }, { "name": "assignedSlot", "type": "object", "optional": true, "description": "", "typeRef": "DOM.BackendNode" }, { "name": "isScrollable", "type": "boolean", "optional": true, "description": "", "typeRef": null }, { "name": "affectedByStartingStyles", "type": "boolean", "optional": true, "description": "", "typeRef": null }, { "name": "adoptedStyleSheets", "type": "array", "optional": true, "description": "", "typeRef": "DOM.StyleSheetId" }, { "name": "adProvenance", "type": "object", "optional": true, "description": "", "typeRef": "Network.AdProvenance" }]);
86941
86953
  inspectorBackend.registerType("DOM.DetachedElementInfo", [{ "name": "treeNode", "type": "object", "optional": false, "description": "", "typeRef": "DOM.Node" }, { "name": "retainedNodeIds", "type": "array", "optional": false, "description": "", "typeRef": "DOM.NodeId" }]);
@@ -87256,7 +87268,7 @@ function registerCommands(inspectorBackend) {
87256
87268
  inspectorBackend.registerEnum("Network.InitiatorType", { Parser: "parser", Script: "script", Preload: "preload", SignedExchange: "SignedExchange", Preflight: "preflight", FedCM: "FedCM", Other: "other" });
87257
87269
  inspectorBackend.registerEnum("Network.SetCookieBlockedReason", { SecureOnly: "SecureOnly", SameSiteStrict: "SameSiteStrict", SameSiteLax: "SameSiteLax", SameSiteUnspecifiedTreatedAsLax: "SameSiteUnspecifiedTreatedAsLax", SameSiteNoneInsecure: "SameSiteNoneInsecure", UserPreferences: "UserPreferences", ThirdPartyPhaseout: "ThirdPartyPhaseout", ThirdPartyBlockedInFirstPartySet: "ThirdPartyBlockedInFirstPartySet", SyntaxError: "SyntaxError", SchemeNotSupported: "SchemeNotSupported", OverwriteSecure: "OverwriteSecure", InvalidDomain: "InvalidDomain", InvalidPrefix: "InvalidPrefix", UnknownError: "UnknownError", SchemefulSameSiteStrict: "SchemefulSameSiteStrict", SchemefulSameSiteLax: "SchemefulSameSiteLax", SchemefulSameSiteUnspecifiedTreatedAsLax: "SchemefulSameSiteUnspecifiedTreatedAsLax", NameValuePairExceedsMaxSize: "NameValuePairExceedsMaxSize", DisallowedCharacter: "DisallowedCharacter", NoCookieContent: "NoCookieContent" });
87258
87270
  inspectorBackend.registerEnum("Network.CookieBlockedReason", { SecureOnly: "SecureOnly", NotOnPath: "NotOnPath", DomainMismatch: "DomainMismatch", SameSiteStrict: "SameSiteStrict", SameSiteLax: "SameSiteLax", SameSiteUnspecifiedTreatedAsLax: "SameSiteUnspecifiedTreatedAsLax", SameSiteNoneInsecure: "SameSiteNoneInsecure", UserPreferences: "UserPreferences", ThirdPartyPhaseout: "ThirdPartyPhaseout", ThirdPartyBlockedInFirstPartySet: "ThirdPartyBlockedInFirstPartySet", UnknownError: "UnknownError", SchemefulSameSiteStrict: "SchemefulSameSiteStrict", SchemefulSameSiteLax: "SchemefulSameSiteLax", SchemefulSameSiteUnspecifiedTreatedAsLax: "SchemefulSameSiteUnspecifiedTreatedAsLax", NameValuePairExceedsMaxSize: "NameValuePairExceedsMaxSize", PortMismatch: "PortMismatch", SchemeMismatch: "SchemeMismatch", AnonymousContext: "AnonymousContext" });
87259
- inspectorBackend.registerEnum("Network.CookieExemptionReason", { None: "None", UserSetting: "UserSetting", TPCDMetadata: "TPCDMetadata", TPCDDeprecationTrial: "TPCDDeprecationTrial", TopLevelTPCDDeprecationTrial: "TopLevelTPCDDeprecationTrial", TPCDHeuristics: "TPCDHeuristics", EnterprisePolicy: "EnterprisePolicy", StorageAccess: "StorageAccess", TopLevelStorageAccess: "TopLevelStorageAccess", Scheme: "Scheme", SameSiteNoneCookiesInSandbox: "SameSiteNoneCookiesInSandbox" });
87271
+ inspectorBackend.registerEnum("Network.CookieExemptionReason", { None: "None", UserSetting: "UserSetting", EnterprisePolicy: "EnterprisePolicy", StorageAccess: "StorageAccess", TopLevelStorageAccess: "TopLevelStorageAccess", Scheme: "Scheme", SameSiteNoneCookiesInSandbox: "SameSiteNoneCookiesInSandbox" });
87260
87272
  inspectorBackend.registerEnum("Network.AuthChallengeSource", { Server: "Server", Proxy: "Proxy" });
87261
87273
  inspectorBackend.registerEnum("Network.AuthChallengeResponseResponse", { Default: "Default", CancelAuth: "CancelAuth", ProvideCredentials: "ProvideCredentials" });
87262
87274
  inspectorBackend.registerEnum("Network.InterceptionStage", { Request: "Request", HeadersReceived: "HeadersReceived" });
@@ -87490,7 +87502,7 @@ function registerCommands(inspectorBackend) {
87490
87502
  inspectorBackend.registerEnum("Page.SecureContextType", { Secure: "Secure", SecureLocalhost: "SecureLocalhost", InsecureScheme: "InsecureScheme", InsecureAncestor: "InsecureAncestor" });
87491
87503
  inspectorBackend.registerEnum("Page.CrossOriginIsolatedContextType", { Isolated: "Isolated", NotIsolated: "NotIsolated", NotIsolatedFeatureDisabled: "NotIsolatedFeatureDisabled" });
87492
87504
  inspectorBackend.registerEnum("Page.GatedAPIFeatures", { SharedArrayBuffers: "SharedArrayBuffers", SharedArrayBuffersTransferAllowed: "SharedArrayBuffersTransferAllowed", PerformanceMeasureMemory: "PerformanceMeasureMemory", PerformanceProfile: "PerformanceProfile" });
87493
- inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", { Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DirectSocketsPrivate: "direct-sockets-private", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Tools: "tools", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking" });
87505
+ inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", { Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Tools: "tools", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", Webnn: "webnn", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking" });
87494
87506
  inspectorBackend.registerEnum("Page.PermissionsPolicyBlockReason", { Header: "Header", IframeAttribute: "IframeAttribute", InFencedFrameTree: "InFencedFrameTree", InIsolatedApp: "InIsolatedApp" });
87495
87507
  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" });
87496
87508
  inspectorBackend.registerEnum("Page.OriginTrialStatus", { Enabled: "Enabled", ValidTokenNotProvided: "ValidTokenNotProvided", OSNotSupported: "OSNotSupported", TrialNotAllowed: "TrialNotAllowed" });
@@ -88268,6 +88280,9 @@ class TargetBase {
88268
88280
  autofillAgent() {
88269
88281
  return this.getAgent('Autofill');
88270
88282
  }
88283
+ adsAgent() {
88284
+ return this.getAgent('Ads');
88285
+ }
88271
88286
  browserAgent() {
88272
88287
  return this.getAgent('Browser');
88273
88288
  }
@@ -90513,6 +90528,8 @@ const generatedProperties = [
90513
90528
  "name": "accent-color"
90514
90529
  },
90515
90530
  {
90531
+ "is_descriptor": true,
90532
+ "is_property": false,
90516
90533
  "name": "additive-symbols"
90517
90534
  },
90518
90535
  {
@@ -91198,6 +91215,8 @@ const generatedProperties = [
91198
91215
  "name": "appearance"
91199
91216
  },
91200
91217
  {
91218
+ "is_descriptor": true,
91219
+ "is_property": false,
91201
91220
  "name": "ascent-override"
91202
91221
  },
91203
91222
  {
@@ -91318,9 +91337,13 @@ const generatedProperties = [
91318
91337
  "name": "background-size"
91319
91338
  },
91320
91339
  {
91340
+ "is_descriptor": true,
91341
+ "is_property": false,
91321
91342
  "name": "base-palette"
91322
91343
  },
91323
91344
  {
91345
+ "is_descriptor": true,
91346
+ "is_property": false,
91324
91347
  "name": "base-url"
91325
91348
  },
91326
91349
  {
@@ -92603,6 +92626,8 @@ const generatedProperties = [
92603
92626
  "name": "d"
92604
92627
  },
92605
92628
  {
92629
+ "is_descriptor": true,
92630
+ "is_property": false,
92606
92631
  "name": "descent-override"
92607
92632
  },
92608
92633
  {
@@ -92683,6 +92708,8 @@ const generatedProperties = [
92683
92708
  "name": "empty-cells"
92684
92709
  },
92685
92710
  {
92711
+ "is_descriptor": true,
92712
+ "is_property": false,
92686
92713
  "name": "fallback"
92687
92714
  },
92688
92715
  {
@@ -92818,14 +92845,18 @@ const generatedProperties = [
92818
92845
  "name": "font"
92819
92846
  },
92820
92847
  {
92848
+ "is_descriptor": true,
92849
+ "is_property": false,
92821
92850
  "name": "font-display"
92822
92851
  },
92823
92852
  {
92824
92853
  "inherited": true,
92854
+ "is_descriptor": true,
92825
92855
  "name": "font-family"
92826
92856
  },
92827
92857
  {
92828
92858
  "inherited": true,
92859
+ "is_descriptor": true,
92829
92860
  "keywords": [
92830
92861
  "normal"
92831
92862
  ],
@@ -92896,6 +92927,7 @@ const generatedProperties = [
92896
92927
  },
92897
92928
  {
92898
92929
  "inherited": true,
92930
+ "is_descriptor": true,
92899
92931
  "keywords": [
92900
92932
  "normal",
92901
92933
  "ultra-condensed",
@@ -92911,6 +92943,7 @@ const generatedProperties = [
92911
92943
  },
92912
92944
  {
92913
92945
  "inherited": true,
92946
+ "is_descriptor": true,
92914
92947
  "keywords": [
92915
92948
  "normal",
92916
92949
  "italic",
@@ -92953,6 +92986,7 @@ const generatedProperties = [
92953
92986
  },
92954
92987
  {
92955
92988
  "inherited": true,
92989
+ "is_descriptor": true,
92956
92990
  "longhands": [
92957
92991
  "font-variant-ligatures",
92958
92992
  "font-variant-caps",
@@ -93052,6 +93086,7 @@ const generatedProperties = [
93052
93086
  },
93053
93087
  {
93054
93088
  "inherited": true,
93089
+ "is_descriptor": true,
93055
93090
  "keywords": [
93056
93091
  "normal"
93057
93092
  ],
@@ -93059,6 +93094,7 @@ const generatedProperties = [
93059
93094
  },
93060
93095
  {
93061
93096
  "inherited": true,
93097
+ "is_descriptor": true,
93062
93098
  "keywords": [
93063
93099
  "normal",
93064
93100
  "bold",
@@ -93237,6 +93273,8 @@ const generatedProperties = [
93237
93273
  "name": "hanging-punctuation"
93238
93274
  },
93239
93275
  {
93276
+ "is_descriptor": true,
93277
+ "is_property": false,
93240
93278
  "name": "hash"
93241
93279
  },
93242
93280
  {
@@ -93249,6 +93287,8 @@ const generatedProperties = [
93249
93287
  "name": "height"
93250
93288
  },
93251
93289
  {
93290
+ "is_descriptor": true,
93291
+ "is_property": false,
93252
93292
  "name": "hostname"
93253
93293
  },
93254
93294
  {
@@ -93298,6 +93338,8 @@ const generatedProperties = [
93298
93338
  "name": "image-rendering"
93299
93339
  },
93300
93340
  {
93341
+ "is_descriptor": true,
93342
+ "is_property": false,
93301
93343
  "name": "inherits"
93302
93344
  },
93303
93345
  {
@@ -93310,6 +93352,8 @@ const generatedProperties = [
93310
93352
  "name": "initial-letter"
93311
93353
  },
93312
93354
  {
93355
+ "is_descriptor": true,
93356
+ "is_property": false,
93313
93357
  "name": "initial-value"
93314
93358
  },
93315
93359
  {
@@ -93438,6 +93482,8 @@ const generatedProperties = [
93438
93482
  "name": "line-clamp"
93439
93483
  },
93440
93484
  {
93485
+ "is_descriptor": true,
93486
+ "is_property": false,
93441
93487
  "name": "line-gap-override"
93442
93488
  },
93443
93489
  {
@@ -93733,9 +93779,13 @@ const generatedProperties = [
93733
93779
  "name": "mix-blend-mode"
93734
93780
  },
93735
93781
  {
93782
+ "is_descriptor": true,
93783
+ "is_property": false,
93736
93784
  "name": "navigation"
93737
93785
  },
93738
93786
  {
93787
+ "is_descriptor": true,
93788
+ "is_property": false,
93739
93789
  "name": "negative"
93740
93790
  },
93741
93791
  {
@@ -93922,6 +93972,8 @@ const generatedProperties = [
93922
93972
  "name": "overlay"
93923
93973
  },
93924
93974
  {
93975
+ "is_descriptor": true,
93976
+ "is_property": false,
93925
93977
  "name": "override-colors"
93926
93978
  },
93927
93979
  {
@@ -93956,6 +94008,8 @@ const generatedProperties = [
93956
94008
  "name": "overscroll-behavior-y"
93957
94009
  },
93958
94010
  {
94011
+ "is_descriptor": true,
94012
+ "is_property": false,
93959
94013
  "name": "pad"
93960
94014
  },
93961
94015
  {
@@ -94030,6 +94084,7 @@ const generatedProperties = [
94030
94084
  "name": "page-break-inside"
94031
94085
  },
94032
94086
  {
94087
+ "is_descriptor": true,
94033
94088
  "keywords": [
94034
94089
  "none",
94035
94090
  "clamp",
@@ -94038,6 +94093,7 @@ const generatedProperties = [
94038
94093
  "name": "page-margin-safety"
94039
94094
  },
94040
94095
  {
94096
+ "is_descriptor": true,
94041
94097
  "name": "page-orientation"
94042
94098
  },
94043
94099
  {
@@ -94057,9 +94113,13 @@ const generatedProperties = [
94057
94113
  "name": "path-length"
94058
94114
  },
94059
94115
  {
94116
+ "is_descriptor": true,
94117
+ "is_property": false,
94060
94118
  "name": "pathname"
94061
94119
  },
94062
94120
  {
94121
+ "is_descriptor": true,
94122
+ "is_property": false,
94063
94123
  "name": "pattern"
94064
94124
  },
94065
94125
  {
@@ -94110,6 +94170,8 @@ const generatedProperties = [
94110
94170
  "name": "pointer-events"
94111
94171
  },
94112
94172
  {
94173
+ "is_descriptor": true,
94174
+ "is_property": false,
94113
94175
  "name": "port"
94114
94176
  },
94115
94177
  {
@@ -94125,7 +94187,8 @@ const generatedProperties = [
94125
94187
  {
94126
94188
  "keywords": [
94127
94189
  "auto",
94128
- "none"
94190
+ "none",
94191
+ "normal"
94129
94192
  ],
94130
94193
  "name": "position-anchor"
94131
94194
  },
@@ -94186,6 +94249,8 @@ const generatedProperties = [
94186
94249
  "name": "position-visibility"
94187
94250
  },
94188
94251
  {
94252
+ "is_descriptor": true,
94253
+ "is_property": false,
94189
94254
  "name": "prefix"
94190
94255
  },
94191
94256
  {
@@ -94197,6 +94262,8 @@ const generatedProperties = [
94197
94262
  "name": "print-color-adjust"
94198
94263
  },
94199
94264
  {
94265
+ "is_descriptor": true,
94266
+ "is_property": false,
94200
94267
  "name": "protocol"
94201
94268
  },
94202
94269
  {
@@ -94211,6 +94278,8 @@ const generatedProperties = [
94211
94278
  "name": "r"
94212
94279
  },
94213
94280
  {
94281
+ "is_descriptor": true,
94282
+ "is_property": false,
94214
94283
  "name": "range"
94215
94284
  },
94216
94285
  {
@@ -94240,6 +94309,8 @@ const generatedProperties = [
94240
94309
  "name": "resize"
94241
94310
  },
94242
94311
  {
94312
+ "is_descriptor": true,
94313
+ "is_property": false,
94243
94314
  "name": "result"
94244
94315
  },
94245
94316
  {
@@ -94739,6 +94810,8 @@ const generatedProperties = [
94739
94810
  "name": "scrollbar-width"
94740
94811
  },
94741
94812
  {
94813
+ "is_descriptor": true,
94814
+ "is_property": false,
94742
94815
  "name": "search"
94743
94816
  },
94744
94817
  {
@@ -94770,6 +94843,8 @@ const generatedProperties = [
94770
94843
  "name": "size"
94771
94844
  },
94772
94845
  {
94846
+ "is_descriptor": true,
94847
+ "is_property": false,
94773
94848
  "name": "size-adjust"
94774
94849
  },
94775
94850
  {
@@ -94785,9 +94860,13 @@ const generatedProperties = [
94785
94860
  "name": "speak"
94786
94861
  },
94787
94862
  {
94863
+ "is_descriptor": true,
94864
+ "is_property": false,
94788
94865
  "name": "speak-as"
94789
94866
  },
94790
94867
  {
94868
+ "is_descriptor": true,
94869
+ "is_property": false,
94791
94870
  "name": "src"
94792
94871
  },
94793
94872
  {
@@ -94845,15 +94924,23 @@ const generatedProperties = [
94845
94924
  "name": "stroke-width"
94846
94925
  },
94847
94926
  {
94927
+ "is_descriptor": true,
94928
+ "is_property": false,
94848
94929
  "name": "suffix"
94849
94930
  },
94850
94931
  {
94932
+ "is_descriptor": true,
94933
+ "is_property": false,
94851
94934
  "name": "symbols"
94852
94935
  },
94853
94936
  {
94937
+ "is_descriptor": true,
94938
+ "is_property": false,
94854
94939
  "name": "syntax"
94855
94940
  },
94856
94941
  {
94942
+ "is_descriptor": true,
94943
+ "is_property": false,
94857
94944
  "name": "system"
94858
94945
  },
94859
94946
  {
@@ -95316,6 +95403,8 @@ const generatedProperties = [
95316
95403
  "name": "trigger-scope"
95317
95404
  },
95318
95405
  {
95406
+ "is_descriptor": true,
95407
+ "is_property": false,
95319
95408
  "name": "types"
95320
95409
  },
95321
95410
  {
@@ -95330,6 +95419,8 @@ const generatedProperties = [
95330
95419
  "name": "unicode-bidi"
95331
95420
  },
95332
95421
  {
95422
+ "is_descriptor": true,
95423
+ "is_property": false,
95333
95424
  "name": "unicode-range"
95334
95425
  },
95335
95426
  {
@@ -97252,7 +97343,8 @@ const generatedPropertyValues = {
97252
97343
  "position-anchor": {
97253
97344
  "values": [
97254
97345
  "auto",
97255
- "none"
97346
+ "none",
97347
+ "normal"
97256
97348
  ]
97257
97349
  },
97258
97350
  "position-area": {
@@ -100428,8 +100520,7 @@ class ColorMatcher extends matcherBase(ColorMatch) {
100428
100520
  if (callee && colorFunc.match(/^(rgba?|hsla?|hwba?|lab|lch|oklab|oklch|color)$/)) {
100429
100521
  const args = ASTUtils.children(node.getChild('ArgList'));
100430
100522
  const colorText = args.length >= 2 ? matching.getComputedTextRange(args[0], args[args.length - 1]) : '';
100431
- const isRelativeColorSyntax = Boolean(colorText.match(/^[^)]*\(\W*from\W+/) && !matching.hasUnresolvedSubstitutions(node) &&
100432
- CSS.supports('color', colorFunc + colorText));
100523
+ const isRelativeColorSyntax = Boolean(colorText.match(/^[^)]*\(\W*from\W+/) && !matching.hasUnresolvedSubstitutions(node));
100433
100524
  if (!isRelativeColorSyntax) {
100434
100525
  return new ColorMatch(text, node);
100435
100526
  }
@@ -102809,6 +102900,7 @@ class CSSFunctionRule extends CSSRule {
102809
102900
  styleSheetId: payload.styleSheetId
102810
102901
  },
102811
102902
  header: styleSheetHeaderForRule(cssModel, payload),
102903
+ originTreeScopeNodeId: payload.originTreeScopeNodeId
102812
102904
  });
102813
102905
  this.#name = new CSSValue(payload.name);
102814
102906
  this.#parameters = payload.parameters.map(({ name }) => name);
@@ -103038,6 +103130,27 @@ function queryMatches(style) {
103038
103130
  }
103039
103131
  return true;
103040
103132
  }
103133
+ function treeScopeDistance(node, property) {
103134
+ if (!property.ownerStyle.parentRule && property.ownerStyle.type !== Type$3.Inline) {
103135
+ return -1;
103136
+ }
103137
+ const root = node.getTreeRoot();
103138
+ const nodeId = property.ownerStyle.parentRule?.treeScope ?? root?.backendNodeId();
103139
+ if (nodeId === undefined) {
103140
+ return -1;
103141
+ }
103142
+ return distanceToTreeScope(node, nodeId);
103143
+ }
103144
+ function distanceToTreeScope(node, treeScope) {
103145
+ let distance = 0;
103146
+ for (let ancestor = node; ancestor; ancestor = ancestor.parentNode) {
103147
+ if (ancestor.backendNodeId() === treeScope) {
103148
+ return distance;
103149
+ }
103150
+ distance++;
103151
+ }
103152
+ return -1;
103153
+ }
103041
103154
  class CSSRegisteredProperty {
103042
103155
  #registration;
103043
103156
  #cssModel;
@@ -103153,7 +103266,9 @@ class CSSMatchedStyles {
103153
103266
  this.#registeredPropertyMap.set(prop.propertyName(), prop);
103154
103267
  }
103155
103268
  for (const rule of this.#functionRules) {
103156
- this.#functionRuleMap.set(rule.functionName().text, rule);
103269
+ const rules = this.#functionRuleMap.get(rule.functionName().text) ?? [];
103270
+ rules.push(rule);
103271
+ this.#functionRuleMap.set(rule.functionName().text, rules);
103157
103272
  }
103158
103273
  }
103159
103274
  async buildMainCascade(inlinePayload, attributesPayload, matchedPayload, inheritedPayload, animationStylesPayload, transitionsStylePayload, inheritedAnimatedPayload) {
@@ -103468,9 +103583,23 @@ class CSSMatchedStyles {
103468
103583
  getRegisteredProperty(name) {
103469
103584
  return this.#registeredPropertyMap.get(name);
103470
103585
  }
103471
- getRegisteredFunction(name) {
103472
- const functionRule = this.#functionRuleMap.get(name);
103473
- return functionRule ? functionRule.nameWithParameters() : undefined;
103586
+ getRegisteredFunction(name, sourceProperty) {
103587
+ const minTreeScopeDistance = treeScopeDistance(this.#node, sourceProperty);
103588
+ const functionRules = this.#functionRuleMap.get(name) ?? [];
103589
+ let result = { treeScopeDistance: -1 };
103590
+ for (const functionRule of functionRules) {
103591
+ if (!functionRule.treeScope) {
103592
+ continue;
103593
+ }
103594
+ const distance = distanceToTreeScope(this.#node, functionRule.treeScope);
103595
+ if (distance === -1 || distance < minTreeScopeDistance) {
103596
+ continue;
103597
+ }
103598
+ if (result.treeScopeDistance === -1 || distance < result.treeScopeDistance) {
103599
+ result = { registeredFunction: functionRule.nameWithParameters(), treeScopeDistance: distance };
103600
+ }
103601
+ }
103602
+ return result;
103474
103603
  }
103475
103604
  functionRules() {
103476
103605
  return this.#functionRules;
@@ -103673,24 +103802,6 @@ class NodeCascade {
103673
103802
  }
103674
103803
  }
103675
103804
  }
103676
- #treeScopeDistance(property) {
103677
- if (!property.ownerStyle.parentRule && property.ownerStyle.type !== Type$3.Inline) {
103678
- return -1;
103679
- }
103680
- const root = this.#node.getTreeRoot();
103681
- const nodeId = property.ownerStyle.parentRule?.treeScope ?? root?.backendNodeId();
103682
- if (nodeId === undefined) {
103683
- return -1;
103684
- }
103685
- let distance = 0;
103686
- for (let ancestor = this.#node; ancestor; ancestor = ancestor.parentNode) {
103687
- if (ancestor.backendNodeId() === nodeId) {
103688
- return distance;
103689
- }
103690
- distance++;
103691
- }
103692
- return -1;
103693
- }
103694
103805
  #needsCascadeContextStep() {
103695
103806
  if (!this.#node.isInShadowTree()) {
103696
103807
  return false;
@@ -103705,7 +103816,8 @@ class NodeCascade {
103705
103816
  const activeProperty = this.activeProperties.get(canonicalName);
103706
103817
  if (activeProperty?.important && !propertyWithHigherSpecificity.important ||
103707
103818
  activeProperty && this.#needsCascadeContextStep() &&
103708
- this.#treeScopeDistance(activeProperty) > this.#treeScopeDistance(propertyWithHigherSpecificity)) {
103819
+ treeScopeDistance(this.#node, activeProperty) >
103820
+ treeScopeDistance(this.#node, propertyWithHigherSpecificity)) {
103709
103821
  this.propertiesState.set(propertyWithHigherSpecificity, "Overloaded" );
103710
103822
  return;
103711
103823
  }
@@ -105664,10 +105776,6 @@ const UIStrings$15 = {
105664
105776
  thisSetcookieWasBlockedBecauseTheNameValuePairExceedsMaxSize: 'This attempt to set a cookie via a `Set-Cookie` header was blocked because the cookie was too large. The combined size of the name and value must be less than or equal to 4096 characters.',
105665
105777
  setcookieHeaderIsIgnoredIn: 'Set-Cookie header is ignored in response from url: {PH1}. The combined size of the name and value must be less than or equal to 4096 characters.',
105666
105778
  exemptionReasonUserSetting: 'This cookie is allowed by user preference.',
105667
- exemptionReasonTPCDMetadata: 'This cookie is allowed by a third-party cookie deprecation trial grace period. Learn more: goo.gle/dt-grace.',
105668
- exemptionReasonTPCDDeprecationTrial: 'This cookie is allowed by third-party cookie deprecation trial. Learn more: goo.gle/ps-dt.',
105669
- exemptionReasonTopLevelTPCDDeprecationTrial: 'This cookie is allowed by top-level third-party cookie deprecation trial. Learn more: goo.gle/ps-dt.',
105670
- exemptionReasonTPCDHeuristics: 'This cookie is allowed by third-party cookie heuristics. Learn more: goo.gle/hbe',
105671
105779
  exemptionReasonEnterprisePolicy: 'This cookie is allowed by Chrome Enterprise policy. Learn more: goo.gle/ce-3pc',
105672
105780
  exemptionReasonStorageAccessAPI: 'This cookie is allowed by the Storage Access API. Learn more: goo.gle/saa',
105673
105781
  exemptionReasonTopLevelStorageAccessAPI: 'This cookie is allowed by the top-level Storage Access API. Learn more: goo.gle/saa-top',
@@ -105774,6 +105882,7 @@ class NetworkRequest extends ObjectWrapper {
105774
105882
  #contentDataProvider;
105775
105883
  #isSameSite = null;
105776
105884
  #wasIntercepted = false;
105885
+ #isImportedHar = false;
105777
105886
  #associatedData = new Map();
105778
105887
  #hasOverriddenContent = false;
105779
105888
  #hasThirdPartyCookiePhaseoutIssue = false;
@@ -106370,6 +106479,12 @@ class NetworkRequest extends ObjectWrapper {
106370
106479
  setWasIntercepted(wasIntercepted) {
106371
106480
  this.#wasIntercepted = wasIntercepted;
106372
106481
  }
106482
+ isImportedHar() {
106483
+ return this.#isImportedHar;
106484
+ }
106485
+ setIsImportedHar(isImportedHar) {
106486
+ this.#isImportedHar = isImportedHar;
106487
+ }
106373
106488
  setEarlyHintsHeaders(headers) {
106374
106489
  this.earlyHintsHeaders = headers;
106375
106490
  }
@@ -111416,22 +111531,20 @@ class SourceMap {
111416
111531
  nameIndex += tokenIter.nextVLQ();
111417
111532
  this.mappings().push(new SourceMapEntry(lineNumber, columnNumber, sourceIndex, sourceURL, sourceLineNumber, sourceColumnNumber, names[nameIndex]));
111418
111533
  }
111419
- if (experiments.isEnabled(ExperimentName.USE_SOURCE_MAP_SCOPES)) {
111420
- if (!this.#scopesInfo) {
111421
- this.#scopesInfo = new SourceMapScopesInfo(this, { scopes: [], ranges: [] });
111422
- }
111423
- if (map.scopes) {
111424
- const { scopes, ranges } = decode(map, { mode: 2 , generatedOffset: { line: baseLineNumber, column: baseColumnNumber } });
111425
- this.#scopesInfo.addOriginalScopes(scopes);
111426
- this.#scopesInfo.addGeneratedRanges(ranges);
111427
- }
111428
- else if (map.x_com_bloomberg_sourcesFunctionMappings) {
111429
- const originalScopes = this.parseBloombergScopes(map);
111430
- this.#scopesInfo.addOriginalScopes(originalScopes);
111431
- }
111432
- else {
111433
- this.#scopesInfo.addOriginalScopes(new Array(map.sources.length).fill(null));
111434
- }
111534
+ if (!this.#scopesInfo) {
111535
+ this.#scopesInfo = new SourceMapScopesInfo(this, { scopes: [], ranges: [] });
111536
+ }
111537
+ if (map.scopes) {
111538
+ const { scopes, ranges } = decode(map, { mode: 2 , generatedOffset: { line: baseLineNumber, column: baseColumnNumber } });
111539
+ this.#scopesInfo.addOriginalScopes(scopes);
111540
+ this.#scopesInfo.addGeneratedRanges(ranges);
111541
+ }
111542
+ else if (map.x_com_bloomberg_sourcesFunctionMappings) {
111543
+ const originalScopes = this.parseBloombergScopes(map);
111544
+ this.#scopesInfo.addOriginalScopes(originalScopes);
111545
+ }
111546
+ else {
111547
+ this.#scopesInfo.addOriginalScopes(new Array(map.sources.length).fill(null));
111435
111548
  }
111436
111549
  }
111437
111550
  parseBloombergScopes(map) {
@@ -118460,6 +118573,10 @@ class DebuggerModel extends SDKModel {
118460
118573
  scriptForId(scriptId) {
118461
118574
  return this.#scripts.get(scriptId) || null;
118462
118575
  }
118576
+ isWasm(scriptId) {
118577
+ const script = this.scriptForId(scriptId);
118578
+ return script ? script.isWasm() : false;
118579
+ }
118463
118580
  scriptsForSourceURL(sourceURL) {
118464
118581
  return this.#scriptsBySourceURL.get(sourceURL) || [];
118465
118582
  }
@@ -118604,10 +118721,10 @@ class DebuggerModel extends SDKModel {
118604
118721
  this.dispatchEventToListeners(Events$5.DiscardedAnonymousScriptSource, script);
118605
118722
  }
118606
118723
  }
118607
- createRawLocation(script, lineNumber, columnNumber, inlineFrameIndex) {
118608
- return this.createRawLocationByScriptId(script.scriptId, lineNumber, columnNumber, inlineFrameIndex);
118724
+ createRawLocation(script, lineNumber, columnNumber) {
118725
+ return this.createRawLocationByScriptId(script.scriptId, lineNumber, columnNumber);
118609
118726
  }
118610
- createRawLocationByURL(sourceURL, lineNumber, columnNumber, inlineFrameIndex) {
118727
+ createRawLocationByURL(sourceURL, lineNumber, columnNumber) {
118611
118728
  for (const script of this.#scriptsBySourceURL.get(sourceURL) || []) {
118612
118729
  if (script.lineOffset > lineNumber ||
118613
118730
  (script.lineOffset === lineNumber && columnNumber !== undefined && script.columnOffset > columnNumber)) {
@@ -118617,12 +118734,12 @@ class DebuggerModel extends SDKModel {
118617
118734
  (script.endLine === lineNumber && columnNumber !== undefined && script.endColumn <= columnNumber)) {
118618
118735
  continue;
118619
118736
  }
118620
- return new Location$2(this, script.scriptId, lineNumber, columnNumber, inlineFrameIndex);
118737
+ return new Location$2(this, script.scriptId, lineNumber, columnNumber);
118621
118738
  }
118622
118739
  return null;
118623
118740
  }
118624
- createRawLocationByScriptId(scriptId, lineNumber, columnNumber, inlineFrameIndex) {
118625
- return new Location$2(this, scriptId, lineNumber, columnNumber, inlineFrameIndex);
118741
+ createRawLocationByScriptId(scriptId, lineNumber, columnNumber) {
118742
+ return new Location$2(this, scriptId, lineNumber, columnNumber);
118626
118743
  }
118627
118744
  createRawLocationsByStackTrace(stackTrace) {
118628
118745
  const rawLocations = [];
@@ -120921,6 +121038,7 @@ class ConsoleMessage {
120921
121038
  #exceptionId = undefined;
120922
121039
  #affectedResources;
120923
121040
  category;
121041
+ exceptionDetails;
120924
121042
  stackFrameWithBreakpoint = null;
120925
121043
  #originatingBreakpointType = null;
120926
121044
  constructor(runtimeModel, source, level, messageText, details) {
@@ -120940,6 +121058,7 @@ class ConsoleMessage {
120940
121058
  this.workerId = details?.workerId;
120941
121059
  this.#affectedResources = details?.affectedResources;
120942
121060
  this.category = details?.category;
121061
+ this.exceptionDetails = details?.exceptionDetails;
120943
121062
  if (!this.#executionContextId && this.#runtimeModel) {
120944
121063
  if (this.scriptId) {
120945
121064
  this.#executionContextId = this.#runtimeModel.executionContextIdForScriptId(this.scriptId);
@@ -120978,6 +121097,7 @@ class ConsoleMessage {
120978
121097
  executionContextId: exceptionDetails.executionContextId,
120979
121098
  scriptId: exceptionDetails.scriptId,
120980
121099
  affectedResources,
121100
+ exceptionDetails,
120981
121101
  };
120982
121102
  return new ConsoleMessage(runtimeModel, "javascript" , "error" , RuntimeModel.simpleTextFromException(exceptionDetails), details);
120983
121103
  }
@@ -123837,7 +123957,7 @@ SDKModel.register(WebAuthnModel, { capabilities: 65536 , autostart: false });
123837
123957
 
123838
123958
  // Copyright 2026 The Chromium Authors
123839
123959
  const CALL_FRAME_REGEX = /^\s*at\s+/;
123840
- function parseRawFramesFromErrorStack(stack) {
123960
+ function parseRawFramesFromErrorStack(stack, resolveURL) {
123841
123961
  const lines = stack.split('\n');
123842
123962
  const firstAtLineIndex = findFramesStartLine(lines);
123843
123963
  const rawFrames = [];
@@ -123877,63 +123997,74 @@ function parseRawFramesFromErrorStack(stack) {
123877
123997
  let promiseIndex;
123878
123998
  let evalOrigin;
123879
123999
  const openParenIndex = lineContent.indexOf(' (');
124000
+ let location = '';
123880
124001
  if (lineContent.endsWith(')') && openParenIndex !== -1) {
123881
124002
  functionName = lineContent.substring(0, openParenIndex).trim();
123882
- let location = lineContent.substring(openParenIndex + 2, lineContent.length - 1);
123883
- if (location.startsWith('eval at ')) {
123884
- isEval = true;
123885
- const commaIndex = location.lastIndexOf(', ');
123886
- let evalOriginStr = location;
123887
- if (commaIndex !== -1) {
123888
- evalOriginStr = location.substring(0, commaIndex);
123889
- location = location.substring(commaIndex + 2);
123890
- }
123891
- else {
123892
- location = '';
123893
- }
123894
- if (evalOriginStr.startsWith('eval at ')) {
123895
- evalOriginStr = evalOriginStr.substring(8);
123896
- }
123897
- const innerOpenParen = evalOriginStr.indexOf(' (');
123898
- let evalFunctionName = evalOriginStr;
123899
- let evalLocation = '';
123900
- if (innerOpenParen !== -1) {
123901
- evalFunctionName = evalOriginStr.substring(0, innerOpenParen).trim();
123902
- evalLocation = evalOriginStr.substring(innerOpenParen + 2, evalOriginStr.length - 1);
123903
- evalOrigin = parseRawFramesFromErrorStack(` at ${evalFunctionName} (${evalLocation})`)?.[0];
123904
- }
123905
- else {
123906
- evalOrigin = parseRawFramesFromErrorStack(` at ${evalFunctionName}`)?.[0];
123907
- }
124003
+ location = lineContent.substring(openParenIndex + 2, lineContent.length - 1);
124004
+ }
124005
+ else if (lineContent.startsWith('(') && lineContent.endsWith(')')) {
124006
+ location = lineContent.substring(1, lineContent.length - 1);
124007
+ }
124008
+ else {
124009
+ location = lineContent;
124010
+ }
124011
+ if (location.startsWith('eval at ')) {
124012
+ isEval = true;
124013
+ const commaIndex = location.lastIndexOf(', ');
124014
+ let evalOriginStr = location;
124015
+ if (commaIndex !== -1) {
124016
+ evalOriginStr = location.substring(0, commaIndex);
124017
+ location = location.substring(commaIndex + 2);
123908
124018
  }
123909
- if (location.startsWith('index ')) {
123910
- promiseIndex = parseInt(location.substring(6), 10);
123911
- url = '';
124019
+ else {
124020
+ location = '';
123912
124021
  }
123913
- else if (location === '<anonymous>' || location === 'native') {
123914
- url = '';
124022
+ if (evalOriginStr.startsWith('eval at ')) {
124023
+ evalOriginStr = evalOriginStr.substring(8);
123915
124024
  }
123916
- else if (location.includes(':wasm-function[')) {
123917
- isWasm = true;
123918
- const wasmMatch = /^(.*):wasm-function\[(\d+)\]:(0x[0-9a-fA-F]+)$/.exec(location);
123919
- if (wasmMatch) {
123920
- url = wasmMatch[1];
123921
- wasmFunctionIndex = parseInt(wasmMatch[2], 10);
123922
- columnNumber = parseInt(wasmMatch[3], 16);
123923
- }
124025
+ const innerOpenParen = evalOriginStr.indexOf(' (');
124026
+ let evalFunctionName = evalOriginStr;
124027
+ let evalLocation = '';
124028
+ if (innerOpenParen !== -1) {
124029
+ evalFunctionName = evalOriginStr.substring(0, innerOpenParen).trim();
124030
+ evalLocation = evalOriginStr.substring(innerOpenParen + 2, evalOriginStr.length - 1);
124031
+ evalOrigin = parseRawFramesFromErrorStack(` at ${evalFunctionName} (${evalLocation})`, resolveURL)?.[0];
123924
124032
  }
123925
124033
  else {
123926
- const splitResult = ParsedURL.splitLineAndColumn(location);
123927
- url = splitResult.url;
123928
- lineNumber = splitResult.lineNumber ?? -1;
123929
- columnNumber = splitResult.columnNumber ?? -1;
124034
+ evalOrigin = parseRawFramesFromErrorStack(` at ${evalFunctionName}`, resolveURL)?.[0];
123930
124035
  }
123931
124036
  }
123932
- else {
123933
- const splitResult = ParsedURL.splitLineAndColumn(lineContent);
123934
- url = splitResult.url;
124037
+ if (location.startsWith('index ')) {
124038
+ promiseIndex = parseInt(location.substring(6), 10);
124039
+ url = '';
124040
+ }
124041
+ else if (location === '<anonymous>' || location === 'native') {
124042
+ url = '';
124043
+ }
124044
+ else if (location.includes(':wasm-function[')) {
124045
+ isWasm = true;
124046
+ const wasmMatch = /^(.*):wasm-function\[(\d+)\]:(0x[0-9a-fA-F]+)$/.exec(location);
124047
+ if (wasmMatch) {
124048
+ url = wasmMatch[1];
124049
+ wasmFunctionIndex = parseInt(wasmMatch[2], 10);
124050
+ columnNumber = parseInt(wasmMatch[3], 16);
124051
+ lineNumber = 0;
124052
+ }
124053
+ }
124054
+ else if (location) {
124055
+ const splitResult = ParsedURL.splitLineAndColumn(location);
123935
124056
  lineNumber = splitResult.lineNumber ?? -1;
123936
124057
  columnNumber = splitResult.columnNumber ?? -1;
124058
+ if (resolveURL && splitResult.url !== '<anonymous>' && splitResult.url !== 'native') {
124059
+ const resolved = resolveURL(splitResult.url);
124060
+ if (!resolved) {
124061
+ return null;
124062
+ }
124063
+ url = resolved;
124064
+ }
124065
+ else {
124066
+ url = splitResult.url;
124067
+ }
123937
124068
  }
123938
124069
  if (functionName) {
123939
124070
  const aliasMatch = /(.*)\s+\[as\s+(.*)\]/.exec(functionName);
@@ -123955,12 +124086,12 @@ function parseRawFramesFromErrorStack(stack) {
123955
124086
  functionName,
123956
124087
  lineNumber,
123957
124088
  columnNumber,
124089
+ isWasm,
123958
124090
  parsedFrameInfo: {
123959
124091
  isAsync,
123960
124092
  isConstructor,
123961
124093
  isEval,
123962
124094
  evalOrigin,
123963
- isWasm,
123964
124095
  wasmModuleName,
123965
124096
  wasmFunctionIndex,
123966
124097
  typeName,
@@ -123984,11 +124115,7 @@ function parseMessage(stack) {
123984
124115
  }
123985
124116
  function augmentRawFramesWithScriptIds(rawFrames, protocolStackTrace) {
123986
124117
  function augmentFrame(rawFrame) {
123987
- const isWasm = rawFrame.parsedFrameInfo?.isWasm;
123988
124118
  const protocolFrame = protocolStackTrace.callFrames.find(frame => {
123989
- if (isWasm) {
123990
- return rawFrame.url === frame.url && rawFrame.columnNumber === frame.columnNumber;
123991
- }
123992
124119
  return rawFrame.url === frame.url && rawFrame.lineNumber === frame.lineNumber &&
123993
124120
  rawFrame.columnNumber === frame.columnNumber;
123994
124121
  });
@@ -124062,7 +124189,9 @@ class FrameImpl {
124062
124189
  column;
124063
124190
  missingDebugInfo;
124064
124191
  rawName;
124065
- constructor(url, uiSourceCode, name, line, column, missingDebugInfo, rawName) {
124192
+ isWasm;
124193
+ isInline;
124194
+ constructor(url, uiSourceCode, name, line, column, missingDebugInfo, rawName, isWasm, isInline) {
124066
124195
  this.url = url;
124067
124196
  this.uiSourceCode = uiSourceCode;
124068
124197
  this.name = name;
@@ -124070,6 +124199,8 @@ class FrameImpl {
124070
124199
  this.column = column;
124071
124200
  this.missingDebugInfo = missingDebugInfo;
124072
124201
  this.rawName = rawName;
124202
+ this.isWasm = isWasm;
124203
+ this.isInline = isInline;
124073
124204
  }
124074
124205
  }
124075
124206
  function createParsedErrorStackFrameImplFromEvalOrigin(evalOrigin, parsedFrameInfo) {
@@ -124142,7 +124273,10 @@ class ParsedErrorStackFrameImpl {
124142
124273
  return this.#evalOrigin;
124143
124274
  }
124144
124275
  get isWasm() {
124145
- return this.#parsedFrameInfo?.isWasm;
124276
+ return this.#frame.isWasm;
124277
+ }
124278
+ get isInline() {
124279
+ return this.#frame.isInline;
124146
124280
  }
124147
124281
  get wasmModuleName() {
124148
124282
  return this.#parsedFrameInfo?.wasmModuleName;
@@ -124212,6 +124346,12 @@ class DebuggableFrameImpl {
124212
124346
  get rawName() {
124213
124347
  return this.#frame.rawName;
124214
124348
  }
124349
+ get isWasm() {
124350
+ return this.#frame.isWasm;
124351
+ }
124352
+ get isInline() {
124353
+ return this.#frame.isInline;
124354
+ }
124215
124355
  get sdkFrame() {
124216
124356
  return this.#sdkFrame;
124217
124357
  }
@@ -124270,9 +124410,9 @@ function parseSourcePositionsFromErrorStack(runtimeModel, stack) {
124270
124410
  }
124271
124411
  continue;
124272
124412
  }
124273
- let url = parseOrScriptMatch(debuggerModel, splitResult.url);
124413
+ let url = parseOrScriptMatch$1(debuggerModel, splitResult.url);
124274
124414
  if (!url && ParsedURL.isRelativeURL(splitResult.url)) {
124275
- url = parseOrScriptMatch(debuggerModel, ParsedURL.completeURL(baseURL, splitResult.url));
124415
+ url = parseOrScriptMatch$1(debuggerModel, ParsedURL.completeURL(baseURL, splitResult.url));
124276
124416
  }
124277
124417
  if (!url) {
124278
124418
  return null;
@@ -124292,7 +124432,7 @@ function parseSourcePositionsFromErrorStack(runtimeModel, stack) {
124292
124432
  }
124293
124433
  return linkInfos;
124294
124434
  }
124295
- function parseOrScriptMatch(debuggerModel, url) {
124435
+ function parseOrScriptMatch$1(debuggerModel, url) {
124296
124436
  if (!url) {
124297
124437
  return null;
124298
124438
  }
@@ -124484,14 +124624,28 @@ class StackTraceModel extends SDKModel {
124484
124624
  return model;
124485
124625
  }
124486
124626
  async createFromProtocolRuntime(stackTrace, rawFramesToUIFrames) {
124627
+ const debuggerModel = this.target().model(DebuggerModel);
124628
+ const syncFrames = stackTrace.callFrames.map((frame) => {
124629
+ const isWasm = debuggerModel?.isWasm(frame.scriptId) ?? false;
124630
+ return { ...frame, isWasm };
124631
+ });
124487
124632
  const [syncFragment, asyncFragments] = await Promise.all([
124488
- this.#createFragment(stackTrace.callFrames, rawFramesToUIFrames),
124633
+ this.#createFragment(syncFrames, rawFramesToUIFrames),
124489
124634
  this.#createAsyncFragments(stackTrace, rawFramesToUIFrames),
124490
124635
  ]);
124491
124636
  return new StackTraceImpl(syncFragment, asyncFragments);
124492
124637
  }
124493
124638
  async createFromErrorStackLikeString(stack, rawFramesToUIFrames, exceptionDetails) {
124494
- const rawFrames = parseRawFramesFromErrorStack(stack);
124639
+ const debuggerModel = this.target().model(DebuggerModel);
124640
+ const baseURL = this.target().inspectedURL();
124641
+ const resolveURL = (url) => {
124642
+ let urlWithScheme = parseOrScriptMatch(debuggerModel, url);
124643
+ if (!urlWithScheme && ParsedURL.isRelativeURL(url)) {
124644
+ urlWithScheme = parseOrScriptMatch(debuggerModel, ParsedURL.completeURL(baseURL, url));
124645
+ }
124646
+ return urlWithScheme;
124647
+ };
124648
+ const rawFrames = parseRawFramesFromErrorStack(stack, resolveURL);
124495
124649
  if (!rawFrames) {
124496
124650
  return null;
124497
124651
  }
@@ -124539,6 +124693,7 @@ class StackTraceModel extends SDKModel {
124539
124693
  functionName: frame.functionName,
124540
124694
  lineNumber: frame.location().lineNumber,
124541
124695
  columnNumber: frame.location().columnNumber,
124696
+ isWasm: frame.script.isWasm(),
124542
124697
  })), rawFramesToUIFrames);
124543
124698
  return new DebuggableFragmentImpl(fragment, pausedDetails.callFrames);
124544
124699
  }
@@ -124551,7 +124706,12 @@ class StackTraceModel extends SDKModel {
124551
124706
  continue;
124552
124707
  }
124553
124708
  const model = _a$4.#modelForTarget(target);
124554
- const asyncFragmentPromise = model.#createFragment(asyncStackTrace.callFrames, rawFramesToUIFrames)
124709
+ const targetDebuggerModel = target.model(DebuggerModel);
124710
+ const asyncFrames = asyncStackTrace.callFrames.map((frame) => {
124711
+ const isWasm = targetDebuggerModel?.isWasm(frame.scriptId) ?? false;
124712
+ return { ...frame, isWasm };
124713
+ });
124714
+ const asyncFragmentPromise = model.#createFragment(asyncFrames, rawFramesToUIFrames)
124555
124715
  .then(fragment => new AsyncFragmentImpl(asyncStackTrace.description ?? '', fragment));
124556
124716
  asyncFragments.push(asyncFragmentPromise);
124557
124717
  }
@@ -124593,7 +124753,9 @@ class StackTraceModel extends SDKModel {
124593
124753
  let i = 0;
124594
124754
  let evalI = 0;
124595
124755
  for (const node of fragment.node.getCallStack()) {
124596
- node.frames = uiFrames[i++].map(frame => new FrameImpl(frame.url, frame.uiSourceCode, frame.name, frame.line, frame.column, frame.missingDebugInfo, node.rawFrame.functionName));
124756
+ const group = uiFrames[i++];
124757
+ node.frames =
124758
+ group.map((frame, index) => new FrameImpl(frame.url, frame.uiSourceCode, frame.name, frame.line, frame.column, frame.missingDebugInfo, node.rawFrame.functionName, node.rawFrame.isWasm, index < group.length - 1));
124597
124759
  if (node.parsedFrameInfo?.evalOrigin) {
124598
124760
  node.evalOrigin = evalOrigins[evalI++];
124599
124761
  }
@@ -124624,13 +124786,34 @@ class StackTraceModel extends SDKModel {
124624
124786
  _a$4 = StackTraceModel;
124625
124787
  async function translateEvalOrigin(rawFrame, rawFramesToUIFrames, target) {
124626
124788
  const uiFrames = await rawFramesToUIFrames([rawFrame], target);
124627
- const frames = uiFrames[0].map(frame => new FrameImpl(frame.url, frame.uiSourceCode, frame.name, frame.line, frame.column, frame.missingDebugInfo, rawFrame.functionName));
124789
+ const group = uiFrames[0];
124790
+ const frames = group.map((frame, index) => new FrameImpl(frame.url, frame.uiSourceCode, frame.name, frame.line, frame.column, frame.missingDebugInfo, rawFrame.functionName, rawFrame.isWasm, index < group.length - 1));
124628
124791
  let parentEvalOrigin;
124629
124792
  if (rawFrame.parsedFrameInfo?.evalOrigin) {
124630
124793
  parentEvalOrigin = await translateEvalOrigin(rawFrame.parsedFrameInfo.evalOrigin, rawFramesToUIFrames, target);
124631
124794
  }
124632
124795
  return new EvalOrigin(frames, parentEvalOrigin);
124633
124796
  }
124797
+ function parseOrScriptMatch(debuggerModel, url) {
124798
+ if (!url) {
124799
+ return null;
124800
+ }
124801
+ if (ParsedURL.isValidUrlString(url)) {
124802
+ return url;
124803
+ }
124804
+ if (debuggerModel.scriptsForSourceURL(url).length) {
124805
+ return url;
124806
+ }
124807
+ try {
124808
+ const fileUrl = new URL(url, 'file://');
124809
+ if (debuggerModel.scriptsForSourceURL(fileUrl.href).length) {
124810
+ return fileUrl.href;
124811
+ }
124812
+ }
124813
+ catch {
124814
+ }
124815
+ return null;
124816
+ }
124634
124817
  SDKModel.register(StackTraceModel, { capabilities: 0 , autostart: false });
124635
124818
 
124636
124819
  // Copyright 2011 The Chromium Authors
@@ -128106,7 +128289,8 @@ class DefaultScriptMapping {
128106
128289
  }
128107
128290
  this.#uiSourceCodeToScript.set(uiSourceCode, script);
128108
128291
  this.#scriptToUISourceCode.set(script, uiSourceCode);
128109
- this.#project.addUISourceCodeWithProvider(uiSourceCode, script, null, 'text/javascript');
128292
+ const mimeType = script.isWasm() ? 'application/wasm' : 'text/javascript';
128293
+ this.#project.addUISourceCodeWithProvider(uiSourceCode, script, null, mimeType);
128110
128294
  void this.#debuggerWorkspaceBinding.updateLocations(script);
128111
128295
  }
128112
128296
  discardedScriptSource(event) {
@@ -128555,6 +128739,7 @@ class SymbolizedErrorObject extends ObjectWrapper {
128555
128739
  message;
128556
128740
  stackTrace;
128557
128741
  cause;
128742
+ #syntaxErrorLocation = null;
128558
128743
  constructor(message, stackTrace, cause) {
128559
128744
  super();
128560
128745
  this.message = message;
@@ -128570,39 +128755,35 @@ class SymbolizedErrorObject extends ObjectWrapper {
128570
128755
  this.cause.dispose();
128571
128756
  }
128572
128757
  }
128573
- #fireUpdated() {
128574
- this.dispatchEventToListeners("UPDATED" );
128575
- }
128576
- }
128577
- class SymbolizedSyntaxError extends ObjectWrapper {
128578
- message;
128579
- #uiLocation = null;
128580
- constructor(message) {
128581
- super();
128582
- this.message = message;
128758
+ get syntaxErrorLocation() {
128759
+ return this.#syntaxErrorLocation;
128583
128760
  }
128584
- get uiLocation() {
128585
- return this.#uiLocation;
128586
- }
128587
- static async fromExceptionDetails(target, debuggerWorkspaceBinding, exceptionDetails) {
128761
+ static async createForSyntaxError(target, debuggerWorkspaceBinding, message, exceptionDetails, stackTrace, cause) {
128588
128762
  const { exception, scriptId, lineNumber, columnNumber } = exceptionDetails;
128589
128763
  if (!exception || exception.subtype !== 'error' || exception.className !== 'SyntaxError') {
128590
- throw new Error('SymbolizedSyntaxError.fromExceptionDetails expects a SyntaxError');
128764
+ throw new Error('SymbolizedErrorObject.createForSyntaxError expects a SyntaxError');
128591
128765
  }
128766
+ const symbolizedError = new SymbolizedErrorObject(message, stackTrace, cause);
128592
128767
  if (!scriptId) {
128593
- return null;
128768
+ return symbolizedError;
128594
128769
  }
128595
- const debuggerModel = target.model(DebuggerModel);
128596
- if (!debuggerModel) {
128597
- return null;
128770
+ const topFrame = exceptionDetails.stackTrace?.callFrames[0];
128771
+ const isProgrammaticThrow = topFrame && topFrame.scriptId === scriptId && topFrame.lineNumber === lineNumber &&
128772
+ topFrame.columnNumber === columnNumber;
128773
+ if (!isProgrammaticThrow) {
128774
+ const debuggerModel = target.model(DebuggerModel);
128775
+ if (debuggerModel) {
128776
+ const rawLocation = debuggerModel.createRawLocationByScriptId(scriptId, lineNumber, columnNumber);
128777
+ await debuggerWorkspaceBinding.createLiveLocation(rawLocation, symbolizedError.#updateSyntaxErrorLocation.bind(symbolizedError), new LiveLocationPool());
128778
+ }
128598
128779
  }
128599
- const rawLocation = debuggerModel.createRawLocationByScriptId(scriptId, lineNumber, columnNumber);
128600
- const symbolizedSyntaxError = new SymbolizedSyntaxError(exception.description || '');
128601
- await debuggerWorkspaceBinding.createLiveLocation(rawLocation, symbolizedSyntaxError.#update.bind(symbolizedSyntaxError), new LiveLocationPool());
128602
- return symbolizedSyntaxError;
128780
+ return symbolizedError;
128603
128781
  }
128604
- async #update(liveLocation) {
128605
- this.#uiLocation = await liveLocation.uiLocation();
128782
+ async #updateSyntaxErrorLocation(liveLocation) {
128783
+ this.#syntaxErrorLocation = await liveLocation.uiLocation();
128784
+ this.dispatchEventToListeners("UPDATED" );
128785
+ }
128786
+ #fireUpdated() {
128606
128787
  this.dispatchEventToListeners("UPDATED" );
128607
128788
  }
128608
128789
  }
@@ -128757,12 +128938,6 @@ class DebuggerWorkspaceBinding {
128757
128938
  ]);
128758
128939
  fetchedExceptionDetails = details;
128759
128940
  causeRemoteObject = causeRemote;
128760
- if (remoteObject.className === 'SyntaxError' && fetchedExceptionDetails) {
128761
- const syntaxError = await SymbolizedSyntaxError.fromExceptionDetails(remoteObject.runtimeModel().target(), this, fetchedExceptionDetails);
128762
- if (syntaxError) {
128763
- return syntaxError;
128764
- }
128765
- }
128766
128941
  }
128767
128942
  else if (remoteObject.type === 'string') {
128768
128943
  errorStack = remoteObject.description || '';
@@ -128785,6 +128960,9 @@ class DebuggerWorkspaceBinding {
128785
128960
  return new UnparsableError(errorStack, cause);
128786
128961
  }
128787
128962
  const message = parseMessage(errorStack);
128963
+ if (remoteObject.subtype === 'error' && remoteObject.className === 'SyntaxError' && fetchedExceptionDetails) {
128964
+ return await SymbolizedErrorObject.createForSyntaxError(remoteObject.runtimeModel().target(), this, message, fetchedExceptionDetails, stackTrace, cause);
128965
+ }
128788
128966
  return new SymbolizedErrorObject(message, stackTrace, cause);
128789
128967
  }
128790
128968
  async createLiveLocation(rawLocation, updateDelegate, locationPool) {
@@ -130924,21 +131102,17 @@ class NetworkRequestFormatter {
130924
131102
  return `${title}\n<binary data>`;
130925
131103
  }
130926
131104
  static formatInitiatorUrl(initiatorUrl, allowedOrigin) {
130927
- try {
130928
- const initiatorOrigin = new URL(initiatorUrl).origin;
130929
- if (initiatorOrigin === allowedOrigin) {
130930
- return initiatorUrl;
130931
- }
130932
- return '<redacted cross-origin initiator URL>';
130933
- }
130934
- catch {
130935
- return '<redacted cross-origin initiator URL>';
131105
+ const initiatorOrigin = ParsedURL.extractOrigin(initiatorUrl);
131106
+ if (initiatorOrigin && initiatorOrigin === allowedOrigin) {
131107
+ return initiatorUrl;
130936
131108
  }
131109
+ return '<redacted cross-origin initiator URL>';
130937
131110
  }
130938
131111
  static formatStatus(status) {
130939
131112
  let responseStatus = '';
130940
131113
  if (status.statusCode) {
130941
- responseStatus = `Response status: ${status.statusCode} ${status.statusText}\n`;
131114
+ const statusText = status.statusText ? ` ${status.statusText}` : '';
131115
+ responseStatus = `Response status: ${status.statusCode}${statusText}\n`;
130942
131116
  }
130943
131117
  const flags = [];
130944
131118
  flags.push(status.finished ? 'finished' : 'pending');
@@ -131019,7 +131193,7 @@ Request initiator chain:\n${this.formatRequestInitiatorChain()}`;
131019
131193
  });
131020
131194
  }
131021
131195
  formatRequestInitiatorChain() {
131022
- const allowedOrigin = new URL(this.#request.url()).origin;
131196
+ const allowedOrigin = ParsedURL.extractOrigin(this.#request.url());
131023
131197
  let initiatorChain = '';
131024
131198
  let lineStart = '- URL: ';
131025
131199
  const graph = NetworkLog.instance().initiatorGraphForRequest(this.#request);
@@ -131553,7 +131727,7 @@ const markerTypeGuards = [
131553
131727
  isMarkDOMContent,
131554
131728
  isMarkLoad,
131555
131729
  isFirstPaint,
131556
- isFirstContentfulPaint,
131730
+ isAnyFirstContentfulPaint,
131557
131731
  isAnyLargestContentfulPaintCandidate,
131558
131732
  isNavigationStart,
131559
131733
  isSoftNavigationStart,
@@ -131563,6 +131737,7 @@ const MarkerName = [
131563
131737
  "MarkLoad" ,
131564
131738
  "firstPaint" ,
131565
131739
  "firstContentfulPaint" ,
131740
+ "SyntheticSoftFirstContentfulPaint" ,
131566
131741
  "largestContentfulPaint::Candidate" ,
131567
131742
  "largestContentfulPaint::CandidateForSoftNavigation" ,
131568
131743
  "navigationStart" ,
@@ -131806,6 +131981,12 @@ function isLayoutInvalidationTracking(event) {
131806
131981
  function isFirstContentfulPaint(event) {
131807
131982
  return event.name === "firstContentfulPaint" ;
131808
131983
  }
131984
+ function isSoftFirstContentfulPaint(event) {
131985
+ return event.name === "SyntheticSoftFirstContentfulPaint" ;
131986
+ }
131987
+ function isAnyFirstContentfulPaint(event) {
131988
+ return event.name === "firstContentfulPaint" || event.name === "SyntheticSoftFirstContentfulPaint" ;
131989
+ }
131809
131990
  function isAnyLargestContentfulPaintCandidate(event) {
131810
131991
  return event.name === "largestContentfulPaint::Candidate" || event.name === "largestContentfulPaint::CandidateForSoftNavigation" ;
131811
131992
  }
@@ -132107,6 +132288,7 @@ var TraceEvents = /*#__PURE__*/Object.freeze({
132107
132288
  isAnimationFrameAsyncEnd: isAnimationFrameAsyncEnd,
132108
132289
  isAnimationFrameAsyncStart: isAnimationFrameAsyncStart,
132109
132290
  isAnimationFramePresentation: isAnimationFramePresentation,
132291
+ isAnyFirstContentfulPaint: isAnyFirstContentfulPaint,
132110
132292
  isAnyLargestContentfulPaintCandidate: isAnyLargestContentfulPaintCandidate,
132111
132293
  isAnyScriptSourceEvent: isAnyScriptSourceEvent,
132112
132294
  isAuctionWorkletDoneWithProcess: isAuctionWorkletDoneWithProcess,
@@ -132223,6 +132405,7 @@ var TraceEvents = /*#__PURE__*/Object.freeze({
132223
132405
  isScrollLayer: isScrollLayer,
132224
132406
  isSelectorStats: isSelectorStats,
132225
132407
  isSetLayerId: isSetLayerId,
132408
+ isSoftFirstContentfulPaint: isSoftFirstContentfulPaint,
132226
132409
  isSoftLargestContentfulPaintCandidate: isSoftLargestContentfulPaintCandidate,
132227
132410
  isSoftNavigationStart: isSoftNavigationStart,
132228
132411
  isStyleInvalidatorInvalidationTracking: isStyleInvalidatorInvalidationTracking,
@@ -132504,6 +132687,18 @@ function timeStampForEventAdjustedByClosestNavigation(event, traceBounds, naviga
132504
132687
  eventTimeStamp = event.ts - navigationForEvent.ts;
132505
132688
  }
132506
132689
  }
132690
+ else if (isSoftFirstContentfulPaint(event) && event.args?.context?.performanceTimelineNavigationId) {
132691
+ const navigationForEvent = softNavigationsById.get(event.args.context.performanceTimelineNavigationId);
132692
+ if (navigationForEvent) {
132693
+ eventTimeStamp = event.ts - navigationForEvent.ts;
132694
+ }
132695
+ }
132696
+ else if (isSoftNavigationStart(event)) {
132697
+ const navigationForEvent = getNavigationForTraceEvent(event, event.args.frame, navigationsByFrameId);
132698
+ if (navigationForEvent) {
132699
+ eventTimeStamp = event.ts - navigationForEvent.ts;
132700
+ }
132701
+ }
132507
132702
  else if (event.args?.data?.navigationId) {
132508
132703
  const navigationForEvent = navigationsByNavigationId.get(event.args.data.navigationId);
132509
132704
  if (navigationForEvent) {
@@ -134660,6 +134855,13 @@ function handleEvent$o(event) {
134660
134855
  }
134661
134856
  async function finalize$H() {
134662
134857
  const { rendererProcessesByFrame } = data$p();
134858
+ const allowedProtocols = [
134859
+ 'blob:',
134860
+ 'file:',
134861
+ 'filesystem:',
134862
+ 'http:',
134863
+ 'https:',
134864
+ ];
134663
134865
  for (const [requestId, request] of requestMap.entries()) {
134664
134866
  if (!request.sendRequests) {
134665
134867
  continue;
@@ -134677,7 +134879,7 @@ async function finalize$H() {
134677
134879
  dur = Micro(nextWillSendRequest.ts - willSendRequest.ts);
134678
134880
  }
134679
134881
  redirects.push({
134680
- url: sendRequest.args.data.url,
134882
+ url: allowedProtocols.some(p => sendRequest.args.data.url.startsWith(p)) ? sendRequest.args.data.url : '',
134681
134883
  priority: sendRequest.args.data.priority,
134682
134884
  requestMethod: sendRequest.args.data.requestMethod,
134683
134885
  ts,
@@ -134743,14 +134945,7 @@ async function finalize$H() {
134743
134945
  lrServerResponseTime = Math.max(0, parseInt(ResponseMsHeader.value, 10));
134744
134946
  }
134745
134947
  }
134746
- const allowedProtocols = [
134747
- 'blob:',
134748
- 'file:',
134749
- 'filesystem:',
134750
- 'http:',
134751
- 'https:',
134752
- ];
134753
- if (!allowedProtocols.some(p => firstSendRequest.args.data.url.startsWith(p))) {
134948
+ if (!allowedProtocols.some(p => finalSendRequest.args.data.url.startsWith(p))) {
134754
134949
  continue;
134755
134950
  }
134756
134951
  const initialPriority = finalSendRequest.args.data.priority;
@@ -134863,7 +135058,10 @@ async function finalize$H() {
134863
135058
  responseHeaders: request.receiveResponse?.args.data.headers ?? null,
134864
135059
  fetchPriorityHint: finalSendRequest.args.data.fetchPriorityHint ?? 'auto',
134865
135060
  initiator: finalSendRequest.args.data.initiator,
134866
- stackTrace: finalSendRequest.args.data.stackTrace,
135061
+ stackTrace: finalSendRequest.args.data.stackTrace?.map(frame => ({
135062
+ ...frame,
135063
+ url: allowedProtocols.some(p => frame.url.startsWith(p)) ? frame.url : '',
135064
+ })),
134867
135065
  timing,
134868
135066
  lrServerResponseTime,
134869
135067
  url,
@@ -137398,6 +137596,25 @@ function handleEvent$b(event) {
137398
137596
  return;
137399
137597
  }
137400
137598
  pageLoadEventsArray.push(event);
137599
+ if (isSoftNavigationStart(event) && event.args?.context?.firstContentfulPaint) {
137600
+ const syntheticSoftFcpEvent = SyntheticEventsManager
137601
+ .registerSyntheticEvent({
137602
+ name: "SyntheticSoftFirstContentfulPaint" ,
137603
+ ph: "R" ,
137604
+ rawSourceEvent: event,
137605
+ pid: event.pid,
137606
+ tid: event.tid,
137607
+ ts: Micro(event.args.context.firstContentfulPaint),
137608
+ cat: event.cat,
137609
+ args: {
137610
+ frame: event.args.frame,
137611
+ context: {
137612
+ ...event.args.context,
137613
+ },
137614
+ },
137615
+ });
137616
+ pageLoadEventsArray.push(syntheticSoftFcpEvent);
137617
+ }
137401
137618
  }
137402
137619
  function storePageLoadMetricAgainstNavigationId(navigation, event) {
137403
137620
  const frameId = getFrameIdForPageLoadEvent(event);
@@ -137413,7 +137630,7 @@ function storePageLoadMetricAgainstNavigationId(navigation, event) {
137413
137630
  if (isNavigationStart(event)) {
137414
137631
  return;
137415
137632
  }
137416
- if (isFirstContentfulPaint(event)) {
137633
+ if (isAnyFirstContentfulPaint(event)) {
137417
137634
  const fcpTime = Micro(event.ts - navigation.ts);
137418
137635
  const classification = scoreClassificationForFirstContentfulPaint(fcpTime);
137419
137636
  const metricScore = { event, metricName: "FCP" , classification, navigation, timing: fcpTime };
@@ -137523,7 +137740,7 @@ function storeMetricScore(frameId, navigation, metricScore) {
137523
137740
  metrics.set(metricScore.metricName, metricScore);
137524
137741
  }
137525
137742
  function getFrameIdForPageLoadEvent(event) {
137526
- if (isFirstContentfulPaint(event) || isInteractiveTime(event) ||
137743
+ if (isAnyFirstContentfulPaint(event) || isInteractiveTime(event) ||
137527
137744
  isAnyLargestContentfulPaintCandidate(event) || isNavigationStart(event) ||
137528
137745
  isSoftNavigationStart(event) || isLayoutShift(event) ||
137529
137746
  isFirstPaint(event)) {
@@ -137539,7 +137756,7 @@ function getFrameIdForPageLoadEvent(event) {
137539
137756
  assertNever(event, `Unexpected event type: ${event}`);
137540
137757
  }
137541
137758
  function getNavigationForPageLoadEvent(event) {
137542
- if (isFirstContentfulPaint(event) || isAnyLargestContentfulPaintCandidate(event) ||
137759
+ if (isAnyFirstContentfulPaint(event) || isAnyLargestContentfulPaintCandidate(event) ||
137543
137760
  isFirstPaint(event)) {
137544
137761
  const { navigationsByNavigationId, softNavigationsById } = data$p();
137545
137762
  let navigation;
@@ -137550,6 +137767,12 @@ function getNavigationForPageLoadEvent(event) {
137550
137767
  return null;
137551
137768
  }
137552
137769
  }
137770
+ else if (isSoftFirstContentfulPaint(event) && event.args.context?.performanceTimelineNavigationId) {
137771
+ navigation = softNavigationsById.get(event.args.context.performanceTimelineNavigationId);
137772
+ if (!navigation) {
137773
+ return null;
137774
+ }
137775
+ }
137553
137776
  else {
137554
137777
  const navigationId = event.args.data?.navigationId;
137555
137778
  if (!navigationId) {
@@ -137667,7 +137890,7 @@ async function finalize$u() {
137667
137890
  const allFinalLCPEvents = gatherFinalLCPEvents();
137668
137891
  const mainFrame = data$p().mainFrameId;
137669
137892
  const allEventsButLCP = pageLoadEventsArray.filter(event => !isAnyLargestContentfulPaintCandidate(event));
137670
- const markerEvents = [...allFinalLCPEvents, ...allEventsButLCP].filter(isMarkerEvent);
137893
+ const markerEvents = [...allEventsButLCP, ...allFinalLCPEvents].filter(isMarkerEvent);
137671
137894
  allMarkerEvents =
137672
137895
  markerEvents.filter(event => getFrameIdForPageLoadEvent(event) === mainFrame).sort((a, b) => a.ts - b.ts);
137673
137896
  }
@@ -148184,10 +148407,12 @@ const UIStrings$r = {
148184
148407
  wasmModuleCacheHit: 'Wasm module cache hit',
148185
148408
  wasmModuleCacheInvalid: 'Wasm module cache invalid',
148186
148409
  frameStartedLoading: 'Frame started loading',
148410
+ softNavigationStart: 'Soft navigation start',
148187
148411
  onloadEvent: 'Onload event',
148188
148412
  domcontentloadedEvent: 'DOMContentLoaded event',
148189
148413
  firstPaint: 'First Paint',
148190
148414
  firstContentfulPaint: 'First Contentful Paint',
148415
+ softFirstContentfulPaint: 'Soft First Contentful Paint',
148191
148416
  largestContentfulPaint: 'Largest Contentful Paint',
148192
148417
  softLargestContentfulPaint: 'Soft Largest Contentful Paint',
148193
148418
  timestamp: 'Timestamp',
@@ -148386,8 +148611,10 @@ function maybeInitSylesMap() {
148386
148611
  ["FrameStartedLoading" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.frameStartedLoading), defaultCategoryStyles.loading, true),
148387
148612
  ["MarkLoad" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.onloadEvent), defaultCategoryStyles.scripting, true),
148388
148613
  ["MarkDOMContent" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.domcontentloadedEvent), defaultCategoryStyles.scripting, true),
148614
+ ["SoftNavigationStart" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.softNavigationStart), defaultCategoryStyles.loading, true),
148389
148615
  ["firstPaint" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.firstPaint), defaultCategoryStyles.painting, true),
148390
148616
  ["firstContentfulPaint" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.firstContentfulPaint), defaultCategoryStyles.rendering, true),
148617
+ ["SyntheticSoftFirstContentfulPaint" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.softFirstContentfulPaint), defaultCategoryStyles.rendering, true),
148391
148618
  ["largestContentfulPaint::Candidate" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.largestContentfulPaint), defaultCategoryStyles.rendering, true),
148392
148619
  ["largestContentfulPaint::CandidateForSoftNavigation" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.softLargestContentfulPaint), defaultCategoryStyles.rendering, true),
148393
148620
  ["TimeStamp" ]: new TimelineRecordStyle(i18nString$c(UIStrings$r.timestamp), defaultCategoryStyles.scripting),
@@ -148493,9 +148720,11 @@ function setTimelineMainEventCategories(categories) {
148493
148720
  function markerDetailsForEvent(event) {
148494
148721
  let title = '';
148495
148722
  let color = 'var(--color-text-primary)';
148496
- if (isFirstContentfulPaint(event)) {
148723
+ if (isAnyFirstContentfulPaint(event)) {
148497
148724
  color = 'var(--sys-color-green-bright)';
148498
- title = "FCP" ;
148725
+ title = (isSoftFirstContentfulPaint(event)) ?
148726
+ "FCP*" :
148727
+ "FCP" ;
148499
148728
  }
148500
148729
  if (isAnyLargestContentfulPaintCandidate(event)) {
148501
148730
  color = 'var(--sys-color-green)';
@@ -153261,10 +153490,14 @@ class Diff {
153261
153490
  removedCount = 0;
153262
153491
  addedSize = 0;
153263
153492
  removedSize = 0;
153264
- deletedIndexes = [];
153265
- addedIndexes = [];
153266
153493
  countDelta;
153267
153494
  sizeDelta;
153495
+ addedIndexes = [];
153496
+ addedIds = [];
153497
+ addedSelfSizes = [];
153498
+ deletedIndexes = [];
153499
+ deletedIds = [];
153500
+ deletedSelfSizes = [];
153268
153501
  constructor(name) {
153269
153502
  this.name = name;
153270
153503
  }
@@ -153584,6 +153817,9 @@ class HeapSnapshotProxy extends HeapSnapshotProxyObject {
153584
153817
  nodeClassKey(snapshotObjectId) {
153585
153818
  return this.callMethodPromise('nodeClassKey', snapshotObjectId);
153586
153819
  }
153820
+ nodeIndexForId(nodeId) {
153821
+ return this.callMethodPromise('nodeIndexForId', nodeId);
153822
+ }
153587
153823
  createEdgesProvider(nodeIndex) {
153588
153824
  return this.callFactoryMethod('createEdgesProvider', HeapSnapshotProviderProxy, nodeIndex);
153589
153825
  }
@@ -153644,6 +153880,9 @@ class HeapSnapshotProxy extends HeapSnapshotProxyObject {
153644
153880
  getRetainingPaths(nodeIndex, maxDepth, maxNodes, maxSiblings) {
153645
153881
  return this.callMethodPromise('getRetainingPaths', nodeIndex, maxDepth, maxNodes, maxSiblings);
153646
153882
  }
153883
+ getDominatorsOf(nodeIndex) {
153884
+ return this.callMethodPromise('getDominatorsOf', nodeIndex);
153885
+ }
153647
153886
  unignoreNodeInRetainersView(nodeIndex) {
153648
153887
  return this.callMethodPromise('unignoreNodeInRetainersView', nodeIndex);
153649
153888
  }
@@ -155911,6 +156150,8 @@ const UIStrings$h = {
155911
156150
  UnloadHandler: "Unload event listeners are deprecated and will be removed.",
155912
156151
  V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.",
155913
156152
  WebBluetoothRemoteCharacteristicWriteValue: "`BluetoothRemoteGATTCharacteristic.writeValue()` is deprecated. Use `writeValueWithResponse()` or `writeValueWithoutResponse()` instead.",
156153
+ WebTransportDatagramDuplexStreamIncomingHighWaterMark: "WebTransportDatagramDuplexStream.incomingHighWaterMark has been renamed to incomingMaxBufferedDatagrams. incomingHighWaterMark will be removed in a future version of Chrome.",
156154
+ WebTransportDatagramDuplexStreamOutgoingHighWaterMark: "WebTransportDatagramDuplexStream.outgoingHighWaterMark has been renamed to outgoingMaxBufferedDatagrams. outgoingHighWaterMark will be removed in a future version of Chrome.",
155914
156155
  XHRJSONEncodingDetection: "UTF-16 is not supported by response json in `XMLHttpRequest`",
155915
156156
  XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: "Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.",
155916
156157
  XSLT: "XSLTProcessor and XSLT Processing Instructions have been deprecated by all browsers. These features will be removed from this browser soon.",
@@ -156061,6 +156302,14 @@ const DEPRECATIONS_METADATA = {
156061
156302
  "WebBluetoothRemoteCharacteristicWriteValue": {
156062
156303
  "chromeStatusFeature": 5088568590598144
156063
156304
  },
156305
+ "WebTransportDatagramDuplexStreamIncomingHighWaterMark": {
156306
+ "chromeStatusFeature": 5143839699501056,
156307
+ "milestone": 156
156308
+ },
156309
+ "WebTransportDatagramDuplexStreamOutgoingHighWaterMark": {
156310
+ "chromeStatusFeature": 5143839699501056,
156311
+ "milestone": 156
156312
+ },
156064
156313
  "XHRJSONEncodingDetection": {
156065
156314
  "milestone": 93
156066
156315
  },
@@ -159048,6 +159297,9 @@ const issueCodeHandlers = new Map([
159048
159297
  SelectivePermissionsInterventionIssue.fromInspectorIssue,
159049
159298
  ],
159050
159299
  ]);
159300
+ function isIssueCodeSupported(code) {
159301
+ return issueCodeHandlers.has(code);
159302
+ }
159051
159303
  function createIssuesFromProtocolIssue(issuesModel, inspectorIssue) {
159052
159304
  const handler = issueCodeHandlers.get(inspectorIssue.code);
159053
159305
  if (handler) {
@@ -159321,7 +159573,8 @@ var mcp = /*#__PURE__*/Object.freeze({
159321
159573
  Target: Target,
159322
159574
  TargetManager: TargetManager,
159323
159575
  TraceEngine: trace,
159324
- createIssuesFromProtocolIssue: createIssuesFromProtocolIssue
159576
+ createIssuesFromProtocolIssue: createIssuesFromProtocolIssue,
159577
+ isIssueCodeSupported: isIssueCodeSupported
159325
159578
  });
159326
159579
 
159327
159580
  /**