chrome-devtools-frontend 1.0.1573331 → 1.0.1575174

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/AUTHORS +1 -0
  2. package/docs/contributing/settings-experiments-features.md +5 -2
  3. package/front_end/Images/src/account-tree.svg +10 -1
  4. package/front_end/Images/src/arrow-right-circle.svg +2 -7
  5. package/front_end/Images/src/center-focus-weak.svg +3 -1
  6. package/front_end/Images/src/dog-paw.svg +10 -3
  7. package/front_end/Images/src/group.svg +3 -1
  8. package/front_end/Images/src/home.svg +3 -1
  9. package/front_end/Images/src/spark-info.svg +3 -3
  10. package/front_end/Images/src/spark.svg +2 -9
  11. package/front_end/core/common/Settings.ts +1 -1
  12. package/front_end/core/host/InspectorFrontendHostAPI.ts +5 -1
  13. package/front_end/core/host/InspectorFrontendHostStub.ts +10 -0
  14. package/front_end/core/host/UserMetrics.ts +15 -0
  15. package/front_end/core/root/Runtime.ts +119 -39
  16. package/front_end/core/sdk/AnimationModel.ts +0 -6
  17. package/front_end/devtools_compatibility.js +16 -1
  18. package/front_end/entrypoints/main/GlobalAiButton.ts +18 -3
  19. package/front_end/entrypoints/main/MainImpl.ts +13 -1
  20. package/front_end/generated/InspectorBackendCommands.ts +6 -4
  21. package/front_end/generated/SupportedCSSProperties.js +17 -4
  22. package/front_end/generated/protocol-mapping.d.ts +2 -0
  23. package/front_end/generated/protocol-proxy-api.d.ts +2 -0
  24. package/front_end/generated/protocol.ts +37 -7
  25. package/front_end/models/ai_assistance/AiUtils.ts +8 -0
  26. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +3 -3
  27. package/front_end/models/ai_assistance/agents/StylingAgent.ts +5 -4
  28. package/front_end/models/issues_manager/CorsIssue.ts +1 -44
  29. package/front_end/models/logs/NetworkLog.ts +0 -9
  30. package/front_end/models/stack_trace/StackTrace.ts +40 -0
  31. package/front_end/panels/ai_assistance/PatchWidget.ts +2 -1
  32. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +34 -13
  33. package/front_end/panels/ai_assistance/components/ChatInput.ts +24 -2
  34. package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -1
  35. package/front_end/panels/ai_assistance/components/ChatView.ts +20 -3
  36. package/front_end/panels/ai_assistance/components/chatView.css +20 -0
  37. package/front_end/panels/common/AiCodeCompletionTeaser.ts +3 -1
  38. package/front_end/panels/common/AiCodeGenerationUpgradeDialog.ts +32 -16
  39. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
  40. package/front_end/panels/console/ConsoleFormat.ts +31 -2
  41. package/front_end/panels/console/ConsoleInsightTeaser.ts +8 -2
  42. package/front_end/panels/elements/ElementsTreeElement.ts +47 -1
  43. package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
  44. package/front_end/panels/issues/CorsIssueDetailsView.ts +0 -46
  45. package/front_end/panels/network/NetworkDataGridNode.ts +3 -1
  46. package/front_end/panels/profiler/HeapDetachedElementsView.ts +0 -5
  47. package/front_end/panels/profiler/HeapProfileView.ts +0 -6
  48. package/front_end/panels/profiler/HeapSnapshotView.ts +0 -14
  49. package/front_end/panels/settings/AISettingsTab.ts +1 -1
  50. package/front_end/panels/settings/SettingsScreen.ts +12 -6
  51. package/front_end/panels/settings/settings-meta.ts +1 -0
  52. package/front_end/panels/sources/NavigatorView.ts +3 -1
  53. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -1
  54. package/front_end/panels/whats_new/ReleaseNoteText.ts +11 -11
  55. package/front_end/panels/whats_new/resources/WNDT.md +6 -6
  56. package/front_end/third_party/chromium/README.chromium +1 -1
  57. package/front_end/third_party/puppeteer/README.chromium +2 -2
  58. package/front_end/third_party/puppeteer/package/README.md +5 -0
  59. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts +6 -1
  60. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts.map +1 -1
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.js +5 -1
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.js.map +1 -1
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +3 -0
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +53 -55
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +2 -0
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +25 -0
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts +7 -1
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +3 -0
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -0
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +2 -0
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  81. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  82. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  88. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +7 -1
  89. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21 -8
  90. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts +6 -1
  91. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts.map +1 -1
  92. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.js +5 -1
  93. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.js.map +1 -1
  94. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +3 -0
  95. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +54 -56
  97. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  98. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +2 -0
  99. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +25 -0
  101. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts +7 -1
  103. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  104. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +3 -0
  105. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  107. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -0
  108. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +2 -0
  111. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/types.d.ts +7 -1
  118. package/front_end/third_party/puppeteer/package/package.json +5 -5
  119. package/front_end/third_party/puppeteer/package/src/api/HTTPResponse.ts +7 -2
  120. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +62 -71
  121. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +29 -0
  122. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +12 -1
  123. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +2 -0
  124. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +2 -0
  125. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  126. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  127. package/front_end/ui/components/buttons/Button.ts +26 -14
  128. package/front_end/ui/components/buttons/FloatingButton.ts +7 -3
  129. package/front_end/ui/components/buttons/floatingButton.css +44 -0
  130. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  131. package/mcp/HostBindings.ts +6 -0
  132. package/package.json +3 -2
@@ -245,7 +245,7 @@ inspectorBackend.registerCommand("CSS.forcePseudoState", [{"name": "nodeId", "ty
245
245
  inspectorBackend.registerCommand("CSS.forceStartingStyle", [{"name": "nodeId", "type": "number", "optional": false, "description": "The element id for which to force the starting-style state.", "typeRef": "DOM.NodeId"}, {"name": "forced", "type": "boolean", "optional": false, "description": "Boolean indicating if this is on or off.", "typeRef": null}], [], "Ensures that the given node is in its starting-style state.");
246
246
  inspectorBackend.registerCommand("CSS.getBackgroundColors", [{"name": "nodeId", "type": "number", "optional": false, "description": "Id of the node to get background colors for.", "typeRef": "DOM.NodeId"}], ["backgroundColors", "computedFontSize", "computedFontWeight"], "");
247
247
  inspectorBackend.registerCommand("CSS.getComputedStyleForNode", [{"name": "nodeId", "type": "number", "optional": false, "description": "", "typeRef": "DOM.NodeId"}], ["computedStyle", "extraFields"], "Returns the computed style for a DOM node identified by `nodeId`.");
248
- inspectorBackend.registerCommand("CSS.resolveValues", [{"name": "values", "type": "array", "optional": false, "description": "Cascade-dependent keywords (revert/revert-layer) do not work.", "typeRef": "string"}, {"name": "nodeId", "type": "number", "optional": false, "description": "Id of the node in whose context the expression is evaluated", "typeRef": "DOM.NodeId"}, {"name": "propertyName", "type": "string", "optional": true, "description": "Only longhands and custom property names are accepted.", "typeRef": null}, {"name": "pseudoType", "type": "string", "optional": true, "description": "Pseudo element type, only works for pseudo elements that generate elements in the tree, such as ::before and ::after.", "typeRef": "DOM.PseudoType"}, {"name": "pseudoIdentifier", "type": "string", "optional": true, "description": "Pseudo element custom ident.", "typeRef": null}], ["results"], "Resolve the specified values in the context of the provided element. For example, a value of '1em' is evaluated according to the computed 'font-size' of the element and a value 'calc(1px + 2px)' will be resolved to '3px'. If the `propertyName` was specified the `values` are resolved as if they were property's declaration. If a value cannot be parsed according to the provided property syntax, the value is parsed using combined syntax as if null `propertyName` was provided. If the value cannot be resolved even then, return the provided value without any changes.");
248
+ inspectorBackend.registerCommand("CSS.resolveValues", [{"name": "values", "type": "array", "optional": false, "description": "Cascade-dependent keywords (revert/revert-layer) do not work.", "typeRef": "string"}, {"name": "nodeId", "type": "number", "optional": false, "description": "Id of the node in whose context the expression is evaluated", "typeRef": "DOM.NodeId"}, {"name": "propertyName", "type": "string", "optional": true, "description": "Only longhands and custom property names are accepted.", "typeRef": null}, {"name": "pseudoType", "type": "string", "optional": true, "description": "Pseudo element type, only works for pseudo elements that generate elements in the tree, such as ::before and ::after.", "typeRef": "DOM.PseudoType"}, {"name": "pseudoIdentifier", "type": "string", "optional": true, "description": "Pseudo element custom ident.", "typeRef": null}], ["results"], "Resolve the specified values in the context of the provided element. For example, a value of '1em' is evaluated according to the computed 'font-size' of the element and a value 'calc(1px + 2px)' will be resolved to '3px'. If the `propertyName` was specified the `values` are resolved as if they were property's declaration. If a value cannot be parsed according to the provided property syntax, the value is parsed using combined syntax as if null `propertyName` was provided. If the value cannot be resolved even then, return the provided value without any changes. Note: this function currently does not resolve CSS random() function, it returns unmodified random() function parts.`");
249
249
  inspectorBackend.registerCommand("CSS.getLonghandProperties", [{"name": "shorthandName", "type": "string", "optional": false, "description": "", "typeRef": null}, {"name": "value", "type": "string", "optional": false, "description": "", "typeRef": null}], ["longhandProperties"], "");
250
250
  inspectorBackend.registerCommand("CSS.getInlineStylesForNode", [{"name": "nodeId", "type": "number", "optional": false, "description": "", "typeRef": "DOM.NodeId"}], ["inlineStyle", "attributesStyle"], "Returns the styles defined inline (explicitly in the \"style\" attribute and implicitly, using DOM attributes) for a DOM node identified by `nodeId`.");
251
251
  inspectorBackend.registerCommand("CSS.getAnimatedStylesForNode", [{"name": "nodeId", "type": "number", "optional": false, "description": "", "typeRef": "DOM.NodeId"}], ["animationStyles", "transitionsStyle", "inherited"], "Returns the styles coming from animations & transitions including the animation & transition styles coming from inheritance chain.");
@@ -766,7 +766,7 @@ inspectorBackend.registerEnum("Network.RenderBlockingBehavior", {Blocking: "Bloc
766
766
  inspectorBackend.registerEnum("Network.RequestReferrerPolicy", {UnsafeUrl: "unsafe-url", NoReferrerWhenDowngrade: "no-referrer-when-downgrade", NoReferrer: "no-referrer", Origin: "origin", OriginWhenCrossOrigin: "origin-when-cross-origin", SameOrigin: "same-origin", StrictOrigin: "strict-origin", StrictOriginWhenCrossOrigin: "strict-origin-when-cross-origin"});
767
767
  inspectorBackend.registerEnum("Network.CertificateTransparencyCompliance", {Unknown: "unknown", NotCompliant: "not-compliant", Compliant: "compliant"});
768
768
  inspectorBackend.registerEnum("Network.BlockedReason", {Other: "other", Csp: "csp", MixedContent: "mixed-content", Origin: "origin", Inspector: "inspector", Integrity: "integrity", SubresourceFilter: "subresource-filter", ContentType: "content-type", CoepFrameResourceNeedsCoepHeader: "coep-frame-resource-needs-coep-header", CoopSandboxedIframeCannotNavigateToCoopPage: "coop-sandboxed-iframe-cannot-navigate-to-coop-page", CorpNotSameOrigin: "corp-not-same-origin", CorpNotSameOriginAfterDefaultedToSameOriginByCoep: "corp-not-same-origin-after-defaulted-to-same-origin-by-coep", CorpNotSameOriginAfterDefaultedToSameOriginByDip: "corp-not-same-origin-after-defaulted-to-same-origin-by-dip", CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip: "corp-not-same-origin-after-defaulted-to-same-origin-by-coep-and-dip", CorpNotSameSite: "corp-not-same-site", SriMessageSignatureMismatch: "sri-message-signature-mismatch"});
769
- inspectorBackend.registerEnum("Network.CorsError", {DisallowedByMode: "DisallowedByMode", InvalidResponse: "InvalidResponse", WildcardOriginNotAllowed: "WildcardOriginNotAllowed", MissingAllowOriginHeader: "MissingAllowOriginHeader", MultipleAllowOriginValues: "MultipleAllowOriginValues", InvalidAllowOriginValue: "InvalidAllowOriginValue", AllowOriginMismatch: "AllowOriginMismatch", InvalidAllowCredentials: "InvalidAllowCredentials", CorsDisabledScheme: "CorsDisabledScheme", PreflightInvalidStatus: "PreflightInvalidStatus", PreflightDisallowedRedirect: "PreflightDisallowedRedirect", PreflightWildcardOriginNotAllowed: "PreflightWildcardOriginNotAllowed", PreflightMissingAllowOriginHeader: "PreflightMissingAllowOriginHeader", PreflightMultipleAllowOriginValues: "PreflightMultipleAllowOriginValues", PreflightInvalidAllowOriginValue: "PreflightInvalidAllowOriginValue", PreflightAllowOriginMismatch: "PreflightAllowOriginMismatch", PreflightInvalidAllowCredentials: "PreflightInvalidAllowCredentials", PreflightMissingAllowExternal: "PreflightMissingAllowExternal", PreflightInvalidAllowExternal: "PreflightInvalidAllowExternal", PreflightMissingAllowPrivateNetwork: "PreflightMissingAllowPrivateNetwork", PreflightInvalidAllowPrivateNetwork: "PreflightInvalidAllowPrivateNetwork", InvalidAllowMethodsPreflightResponse: "InvalidAllowMethodsPreflightResponse", InvalidAllowHeadersPreflightResponse: "InvalidAllowHeadersPreflightResponse", MethodDisallowedByPreflightResponse: "MethodDisallowedByPreflightResponse", HeaderDisallowedByPreflightResponse: "HeaderDisallowedByPreflightResponse", RedirectContainsCredentials: "RedirectContainsCredentials", InsecurePrivateNetwork: "InsecurePrivateNetwork", InvalidPrivateNetworkAccess: "InvalidPrivateNetworkAccess", UnexpectedPrivateNetworkAccess: "UnexpectedPrivateNetworkAccess", NoCorsRedirectModeNotFollow: "NoCorsRedirectModeNotFollow", PreflightMissingPrivateNetworkAccessId: "PreflightMissingPrivateNetworkAccessId", PreflightMissingPrivateNetworkAccessName: "PreflightMissingPrivateNetworkAccessName", PrivateNetworkAccessPermissionUnavailable: "PrivateNetworkAccessPermissionUnavailable", PrivateNetworkAccessPermissionDenied: "PrivateNetworkAccessPermissionDenied", LocalNetworkAccessPermissionDenied: "LocalNetworkAccessPermissionDenied"});
769
+ inspectorBackend.registerEnum("Network.CorsError", {DisallowedByMode: "DisallowedByMode", InvalidResponse: "InvalidResponse", WildcardOriginNotAllowed: "WildcardOriginNotAllowed", MissingAllowOriginHeader: "MissingAllowOriginHeader", MultipleAllowOriginValues: "MultipleAllowOriginValues", InvalidAllowOriginValue: "InvalidAllowOriginValue", AllowOriginMismatch: "AllowOriginMismatch", InvalidAllowCredentials: "InvalidAllowCredentials", CorsDisabledScheme: "CorsDisabledScheme", PreflightInvalidStatus: "PreflightInvalidStatus", PreflightDisallowedRedirect: "PreflightDisallowedRedirect", PreflightWildcardOriginNotAllowed: "PreflightWildcardOriginNotAllowed", PreflightMissingAllowOriginHeader: "PreflightMissingAllowOriginHeader", PreflightMultipleAllowOriginValues: "PreflightMultipleAllowOriginValues", PreflightInvalidAllowOriginValue: "PreflightInvalidAllowOriginValue", PreflightAllowOriginMismatch: "PreflightAllowOriginMismatch", PreflightInvalidAllowCredentials: "PreflightInvalidAllowCredentials", PreflightMissingAllowExternal: "PreflightMissingAllowExternal", PreflightInvalidAllowExternal: "PreflightInvalidAllowExternal", InvalidAllowMethodsPreflightResponse: "InvalidAllowMethodsPreflightResponse", InvalidAllowHeadersPreflightResponse: "InvalidAllowHeadersPreflightResponse", MethodDisallowedByPreflightResponse: "MethodDisallowedByPreflightResponse", HeaderDisallowedByPreflightResponse: "HeaderDisallowedByPreflightResponse", RedirectContainsCredentials: "RedirectContainsCredentials", InsecurePrivateNetwork: "InsecurePrivateNetwork", InvalidPrivateNetworkAccess: "InvalidPrivateNetworkAccess", NoCorsRedirectModeNotFollow: "NoCorsRedirectModeNotFollow", LocalNetworkAccessPermissionDenied: "LocalNetworkAccessPermissionDenied"});
770
770
  inspectorBackend.registerEnum("Network.ServiceWorkerResponseSource", {CacheStorage: "cache-storage", HttpCache: "http-cache", FallbackCode: "fallback-code", Network: "network"});
771
771
  inspectorBackend.registerEnum("Network.TrustTokenParamsRefreshPolicy", {UseCached: "UseCached", Refresh: "Refresh"});
772
772
  inspectorBackend.registerEnum("Network.TrustTokenOperationType", {Issuance: "Issuance", Redemption: "Redemption", Signing: "Signing"});
@@ -788,6 +788,7 @@ inspectorBackend.registerEnum("Network.CrossOriginOpenerPolicyValue", {SameOrigi
788
788
  inspectorBackend.registerEnum("Network.CrossOriginEmbedderPolicyValue", {None: "None", Credentialless: "Credentialless", RequireCorp: "RequireCorp"});
789
789
  inspectorBackend.registerEnum("Network.ContentSecurityPolicySource", {HTTP: "HTTP", Meta: "Meta"});
790
790
  inspectorBackend.registerEnum("Network.ReportStatus", {Queued: "Queued", Pending: "Pending", MarkedForRemoval: "MarkedForRemoval", Success: "Success"});
791
+ inspectorBackend.registerEnum("Network.DeviceBoundSessionWithUsageUsage", {NotInScope: "NotInScope", InScopeRefreshNotYetNeeded: "InScopeRefreshNotYetNeeded", InScopeRefreshNotAllowed: "InScopeRefreshNotAllowed", ProactiveRefreshNotPossible: "ProactiveRefreshNotPossible", ProactiveRefreshAttempted: "ProactiveRefreshAttempted", Deferred: "Deferred"});
791
792
  inspectorBackend.registerEnum("Network.DeviceBoundSessionUrlRuleRuleType", {Exclude: "Exclude", Include: "Include"});
792
793
  inspectorBackend.registerEnum("Network.DeviceBoundSessionFetchResult", {Success: "Success", KeyError: "KeyError", SigningError: "SigningError", ServerRequestedTermination: "ServerRequestedTermination", InvalidSessionId: "InvalidSessionId", InvalidChallenge: "InvalidChallenge", TooManyChallenges: "TooManyChallenges", InvalidFetcherUrl: "InvalidFetcherUrl", InvalidRefreshUrl: "InvalidRefreshUrl", TransientHttpError: "TransientHttpError", ScopeOriginSameSiteMismatch: "ScopeOriginSameSiteMismatch", RefreshUrlSameSiteMismatch: "RefreshUrlSameSiteMismatch", MismatchedSessionId: "MismatchedSessionId", MissingScope: "MissingScope", NoCredentials: "NoCredentials", SubdomainRegistrationWellKnownUnavailable: "SubdomainRegistrationWellKnownUnavailable", SubdomainRegistrationUnauthorized: "SubdomainRegistrationUnauthorized", SubdomainRegistrationWellKnownMalformed: "SubdomainRegistrationWellKnownMalformed", SessionProviderWellKnownUnavailable: "SessionProviderWellKnownUnavailable", RelyingPartyWellKnownUnavailable: "RelyingPartyWellKnownUnavailable", FederatedKeyThumbprintMismatch: "FederatedKeyThumbprintMismatch", InvalidFederatedSessionUrl: "InvalidFederatedSessionUrl", InvalidFederatedKey: "InvalidFederatedKey", TooManyRelyingOriginLabels: "TooManyRelyingOriginLabels", BoundCookieSetForbidden: "BoundCookieSetForbidden", NetError: "NetError", ProxyError: "ProxyError", EmptySessionConfig: "EmptySessionConfig", InvalidCredentialsConfig: "InvalidCredentialsConfig", InvalidCredentialsType: "InvalidCredentialsType", InvalidCredentialsEmptyName: "InvalidCredentialsEmptyName", InvalidCredentialsCookie: "InvalidCredentialsCookie", PersistentHttpError: "PersistentHttpError", RegistrationAttemptedChallenge: "RegistrationAttemptedChallenge", InvalidScopeOrigin: "InvalidScopeOrigin", ScopeOriginContainsPath: "ScopeOriginContainsPath", RefreshInitiatorNotString: "RefreshInitiatorNotString", RefreshInitiatorInvalidHostPattern: "RefreshInitiatorInvalidHostPattern", InvalidScopeSpecification: "InvalidScopeSpecification", MissingScopeSpecificationType: "MissingScopeSpecificationType", EmptyScopeSpecificationDomain: "EmptyScopeSpecificationDomain", EmptyScopeSpecificationPath: "EmptyScopeSpecificationPath", InvalidScopeSpecificationType: "InvalidScopeSpecificationType", InvalidScopeIncludeSite: "InvalidScopeIncludeSite", MissingScopeIncludeSite: "MissingScopeIncludeSite", FederatedNotAuthorizedByProvider: "FederatedNotAuthorizedByProvider", FederatedNotAuthorizedByRelyingParty: "FederatedNotAuthorizedByRelyingParty", SessionProviderWellKnownMalformed: "SessionProviderWellKnownMalformed", SessionProviderWellKnownHasProviderOrigin: "SessionProviderWellKnownHasProviderOrigin", RelyingPartyWellKnownMalformed: "RelyingPartyWellKnownMalformed", RelyingPartyWellKnownHasRelyingOrigins: "RelyingPartyWellKnownHasRelyingOrigins", InvalidFederatedSessionProviderSessionMissing: "InvalidFederatedSessionProviderSessionMissing", InvalidFederatedSessionWrongProviderOrigin: "InvalidFederatedSessionWrongProviderOrigin", InvalidCredentialsCookieCreationTime: "InvalidCredentialsCookieCreationTime", InvalidCredentialsCookieName: "InvalidCredentialsCookieName", InvalidCredentialsCookieParsing: "InvalidCredentialsCookieParsing", InvalidCredentialsCookieUnpermittedAttribute: "InvalidCredentialsCookieUnpermittedAttribute", InvalidCredentialsCookieInvalidDomain: "InvalidCredentialsCookieInvalidDomain", InvalidCredentialsCookiePrefix: "InvalidCredentialsCookiePrefix", InvalidScopeRulePath: "InvalidScopeRulePath", InvalidScopeRuleHostPattern: "InvalidScopeRuleHostPattern", ScopeRuleOriginScopedHostPatternMismatch: "ScopeRuleOriginScopedHostPatternMismatch", ScopeRuleSiteScopedHostPatternMismatch: "ScopeRuleSiteScopedHostPatternMismatch", SigningQuotaExceeded: "SigningQuotaExceeded", InvalidConfigJson: "InvalidConfigJson", InvalidFederatedSessionProviderFailedToRestoreKey: "InvalidFederatedSessionProviderFailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", SessionDeletedDuringRefresh: "SessionDeletedDuringRefresh"});
793
794
  inspectorBackend.registerEnum("Network.RefreshEventDetailsRefreshResult", {Refreshed: "Refreshed", InitializedService: "InitializedService", Unreachable: "Unreachable", ServerError: "ServerError", RefreshQuotaExceeded: "RefreshQuotaExceeded", FatalError: "FatalError", SigningQuotaExceeded: "SigningQuotaExceeded"});
@@ -827,7 +828,7 @@ inspectorBackend.registerEvent("Network.directUDPSocketAborted", ["identifier",
827
828
  inspectorBackend.registerEvent("Network.directUDPSocketClosed", ["identifier", "timestamp"]);
828
829
  inspectorBackend.registerEvent("Network.directUDPSocketChunkSent", ["identifier", "message", "timestamp"]);
829
830
  inspectorBackend.registerEvent("Network.directUDPSocketChunkReceived", ["identifier", "message", "timestamp"]);
830
- inspectorBackend.registerEvent("Network.requestWillBeSentExtraInfo", ["requestId", "associatedCookies", "headers", "connectTiming", "clientSecurityState", "siteHasCookieInOtherPartition", "appliedNetworkConditionsId"]);
831
+ inspectorBackend.registerEvent("Network.requestWillBeSentExtraInfo", ["requestId", "associatedCookies", "headers", "connectTiming", "deviceBoundSessionUsages", "clientSecurityState", "siteHasCookieInOtherPartition", "appliedNetworkConditionsId"]);
831
832
  inspectorBackend.registerEvent("Network.responseReceivedExtraInfo", ["requestId", "blockedCookies", "headers", "resourceIPAddressSpace", "statusCode", "headersText", "cookiePartitionKey", "cookiePartitionKeyOpaque", "exemptedCookies"]);
832
833
  inspectorBackend.registerEvent("Network.responseReceivedEarlyHints", ["requestId", "headers"]);
833
834
  inspectorBackend.registerEnum("Network.TrustTokenOperationDoneEventStatus", {Ok: "Ok", InvalidArgument: "InvalidArgument", MissingIssuerKeys: "MissingIssuerKeys", FailedPrecondition: "FailedPrecondition", ResourceExhausted: "ResourceExhausted", AlreadyExists: "AlreadyExists", ResourceLimited: "ResourceLimited", Unauthorized: "Unauthorized", BadResponse: "BadResponse", InternalError: "InternalError", UnknownError: "UnknownError", FulfilledLocally: "FulfilledLocally", SiteIssuerLimit: "SiteIssuerLimit"});
@@ -919,6 +920,7 @@ inspectorBackend.registerType("Network.SecurityIsolationStatus", [{"name": "coop
919
920
  inspectorBackend.registerType("Network.ReportingApiReport", [{"name": "id", "type": "string", "optional": false, "description": "", "typeRef": "Network.ReportId"}, {"name": "initiatorUrl", "type": "string", "optional": false, "description": "The URL of the document that triggered the report.", "typeRef": null}, {"name": "destination", "type": "string", "optional": false, "description": "The name of the endpoint group that should be used to deliver the report.", "typeRef": null}, {"name": "type", "type": "string", "optional": false, "description": "The type of the report (specifies the set of data that is contained in the report body).", "typeRef": null}, {"name": "timestamp", "type": "number", "optional": false, "description": "When the report was generated.", "typeRef": "Network.TimeSinceEpoch"}, {"name": "depth", "type": "number", "optional": false, "description": "How many uploads deep the related request was.", "typeRef": null}, {"name": "completedAttempts", "type": "number", "optional": false, "description": "The number of delivery attempts made so far, not including an active attempt.", "typeRef": null}, {"name": "body", "type": "object", "optional": false, "description": "", "typeRef": null}, {"name": "status", "type": "string", "optional": false, "description": "", "typeRef": "Network.ReportStatus"}]);
920
921
  inspectorBackend.registerType("Network.ReportingApiEndpoint", [{"name": "url", "type": "string", "optional": false, "description": "The URL of the endpoint to which reports may be delivered.", "typeRef": null}, {"name": "groupName", "type": "string", "optional": false, "description": "Name of the endpoint group.", "typeRef": null}]);
921
922
  inspectorBackend.registerType("Network.DeviceBoundSessionKey", [{"name": "site", "type": "string", "optional": false, "description": "The site the session is set up for.", "typeRef": null}, {"name": "id", "type": "string", "optional": false, "description": "The id of the session.", "typeRef": null}]);
923
+ inspectorBackend.registerType("Network.DeviceBoundSessionWithUsage", [{"name": "sessionKey", "type": "object", "optional": false, "description": "The key for the session.", "typeRef": "Network.DeviceBoundSessionKey"}, {"name": "usage", "type": "string", "optional": false, "description": "How the session was used (or not used).", "typeRef": null}]);
922
924
  inspectorBackend.registerType("Network.DeviceBoundSessionCookieCraving", [{"name": "name", "type": "string", "optional": false, "description": "The name of the craving.", "typeRef": null}, {"name": "domain", "type": "string", "optional": false, "description": "The domain of the craving.", "typeRef": null}, {"name": "path", "type": "string", "optional": false, "description": "The path of the craving.", "typeRef": null}, {"name": "secure", "type": "boolean", "optional": false, "description": "The `Secure` attribute of the craving attributes.", "typeRef": null}, {"name": "httpOnly", "type": "boolean", "optional": false, "description": "The `HttpOnly` attribute of the craving attributes.", "typeRef": null}, {"name": "sameSite", "type": "string", "optional": true, "description": "The `SameSite` attribute of the craving attributes.", "typeRef": "Network.CookieSameSite"}]);
923
925
  inspectorBackend.registerType("Network.DeviceBoundSessionUrlRule", [{"name": "ruleType", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::rule_type`.", "typeRef": null}, {"name": "hostPattern", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::host_pattern`.", "typeRef": null}, {"name": "pathPrefix", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::path_prefix`.", "typeRef": null}]);
924
926
  inspectorBackend.registerType("Network.DeviceBoundSessionInclusionRules", [{"name": "origin", "type": "string", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::origin_`.", "typeRef": null}, {"name": "includeSite", "type": "boolean", "optional": false, "description": "Whether the whole site is included. See comments on `net::device_bound_sessions::SessionInclusionRules::include_site_` for more details; this boolean is true if that value is populated.", "typeRef": null}, {"name": "urlRules", "type": "array", "optional": false, "description": "See comments on `net::device_bound_sessions::SessionInclusionRules::url_rules_`.", "typeRef": "Network.DeviceBoundSessionUrlRule"}]);
@@ -1366,7 +1368,7 @@ inspectorBackend.registerCommand("Target.closeTarget", [{"name": "targetId", "ty
1366
1368
  inspectorBackend.registerCommand("Target.exposeDevToolsProtocol", [{"name": "targetId", "type": "string", "optional": false, "description": "", "typeRef": "Target.TargetID"}, {"name": "bindingName", "type": "string", "optional": true, "description": "Binding name, 'cdp' if not specified.", "typeRef": null}, {"name": "inheritPermissions", "type": "boolean", "optional": true, "description": "If true, inherits the current root session's permissions (default: false).", "typeRef": null}], [], "Inject object to the target's main frame that provides a communication channel with browser target. Injected object will be available as `window[bindingName]`. The object has the following API: - `binding.send(json)` - a method to send messages over the remote debugging protocol - `binding.onmessage = json => handleMessage(json)` - a callback that will be called for the protocol notifications and command responses.");
1367
1369
  inspectorBackend.registerCommand("Target.createBrowserContext", [{"name": "disposeOnDetach", "type": "boolean", "optional": true, "description": "If specified, disposes this context when debugging session disconnects.", "typeRef": null}, {"name": "proxyServer", "type": "string", "optional": true, "description": "Proxy server, similar to the one passed to --proxy-server", "typeRef": null}, {"name": "proxyBypassList", "type": "string", "optional": true, "description": "Proxy bypass list, similar to the one passed to --proxy-bypass-list", "typeRef": null}, {"name": "originsWithUniversalNetworkAccess", "type": "array", "optional": true, "description": "An optional list of origins to grant unlimited cross-origin access to. Parts of the URL other than those constituting origin are ignored.", "typeRef": "string"}], ["browserContextId"], "Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than one.");
1368
1370
  inspectorBackend.registerCommand("Target.getBrowserContexts", [], ["browserContextIds", "defaultBrowserContextId"], "Returns all browser contexts created with `Target.createBrowserContext` method.");
1369
- inspectorBackend.registerCommand("Target.createTarget", [{"name": "url", "type": "string", "optional": false, "description": "The initial URL the page will be navigated to. An empty string indicates about:blank.", "typeRef": null}, {"name": "left", "type": "number", "optional": true, "description": "Frame left origin in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "top", "type": "number", "optional": true, "description": "Frame top origin in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "width", "type": "number", "optional": true, "description": "Frame width in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "height", "type": "number", "optional": true, "description": "Frame height in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "windowState", "type": "string", "optional": true, "description": "Frame window state (requires newWindow to be true or headless shell). Default is normal.", "typeRef": "Target.WindowState"}, {"name": "browserContextId", "type": "string", "optional": true, "description": "The browser context to create the page in.", "typeRef": "Browser.BrowserContextID"}, {"name": "enableBeginFrameControl", "type": "boolean", "optional": true, "description": "Whether BeginFrames for this target will be controlled via DevTools (headless shell only, not supported on MacOS yet, false by default).", "typeRef": null}, {"name": "newWindow", "type": "boolean", "optional": true, "description": "Whether to create a new Window or Tab (false by default, not supported by headless shell).", "typeRef": null}, {"name": "background", "type": "boolean", "optional": true, "description": "Whether to create the target in background or foreground (false by default, not supported by headless shell).", "typeRef": null}, {"name": "forTab", "type": "boolean", "optional": true, "description": "Whether to create the target of type \\\"tab\\\".", "typeRef": null}, {"name": "hidden", "type": "boolean", "optional": true, "description": "Whether to create a hidden target. The hidden target is observable via protocol, but not present in the tab UI strip. Cannot be created with `forTab: true`, `newWindow: true` or `background: false`. The life-time of the tab is limited to the life-time of the session.", "typeRef": null}], ["targetId"], "Creates a new page.");
1371
+ inspectorBackend.registerCommand("Target.createTarget", [{"name": "url", "type": "string", "optional": false, "description": "The initial URL the page will be navigated to. An empty string indicates about:blank.", "typeRef": null}, {"name": "left", "type": "number", "optional": true, "description": "Frame left origin in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "top", "type": "number", "optional": true, "description": "Frame top origin in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "width", "type": "number", "optional": true, "description": "Frame width in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "height", "type": "number", "optional": true, "description": "Frame height in DIP (requires newWindow to be true or headless shell).", "typeRef": null}, {"name": "windowState", "type": "string", "optional": true, "description": "Frame window state (requires newWindow to be true or headless shell). Default is normal.", "typeRef": "Target.WindowState"}, {"name": "browserContextId", "type": "string", "optional": true, "description": "The browser context to create the page in.", "typeRef": "Browser.BrowserContextID"}, {"name": "enableBeginFrameControl", "type": "boolean", "optional": true, "description": "Whether BeginFrames for this target will be controlled via DevTools (headless shell only, not supported on MacOS yet, false by default).", "typeRef": null}, {"name": "newWindow", "type": "boolean", "optional": true, "description": "Whether to create a new Window or Tab (false by default, not supported by headless shell).", "typeRef": null}, {"name": "background", "type": "boolean", "optional": true, "description": "Whether to create the target in background or foreground (false by default, not supported by headless shell).", "typeRef": null}, {"name": "forTab", "type": "boolean", "optional": true, "description": "Whether to create the target of type \\\"tab\\\".", "typeRef": null}, {"name": "hidden", "type": "boolean", "optional": true, "description": "Whether to create a hidden target. The hidden target is observable via protocol, but not present in the tab UI strip. Cannot be created with `forTab: true`, `newWindow: true` or `background: false`. The life-time of the tab is limited to the life-time of the session.", "typeRef": null}, {"name": "focus", "type": "boolean", "optional": true, "description": "If specified, the option is used to determine if the new target should be focused or not. By default, the focus behavior depends on the value of the background field. For example, background=false and focus=false will result in the target tab being opened but the browser window remain unchanged (if it was in the background, it will remain in the background) and background=false with focus=undefined will result in the window being focused. Using background: true and focus: true is not supported and will result in an error.", "typeRef": null}], ["targetId"], "Creates a new page.");
1370
1372
  inspectorBackend.registerCommand("Target.detachFromTarget", [{"name": "sessionId", "type": "string", "optional": true, "description": "Session to detach.", "typeRef": "Target.SessionID"}, {"name": "targetId", "type": "string", "optional": true, "description": "Deprecated.", "typeRef": "Target.TargetID"}], [], "Detaches session with given id.");
1371
1373
  inspectorBackend.registerCommand("Target.disposeBrowserContext", [{"name": "browserContextId", "type": "string", "optional": false, "description": "", "typeRef": "Browser.BrowserContextID"}], [], "Deletes a BrowserContext. All the belonging pages will be closed without calling their beforeunload hooks.");
1372
1374
  inspectorBackend.registerCommand("Target.getTargetInfo", [{"name": "targetId", "type": "string", "optional": true, "description": "", "typeRef": "Target.TargetID"}], ["targetInfo"], "Returns information about a target.");
@@ -775,6 +775,7 @@ export const generatedProperties = [
775
775
  "view-transition-class",
776
776
  "view-transition-group",
777
777
  "view-transition-name",
778
+ "view-transition-scope",
778
779
  "visibility",
779
780
  "white-space-collapse",
780
781
  "widows",
@@ -1845,8 +1846,7 @@ export const generatedProperties = [
1845
1846
  "style",
1846
1847
  "paint",
1847
1848
  "inline-size",
1848
- "block-size",
1849
- "view-transition"
1849
+ "block-size"
1850
1850
  ],
1851
1851
  "name": "contain"
1852
1852
  },
@@ -4804,6 +4804,14 @@ export const generatedProperties = [
4804
4804
  ],
4805
4805
  "name": "view-transition-name"
4806
4806
  },
4807
+ {
4808
+ "inherited": false,
4809
+ "keywords": [
4810
+ "none",
4811
+ "auto"
4812
+ ],
4813
+ "name": "view-transition-scope"
4814
+ },
4807
4815
  {
4808
4816
  "inherited": true,
4809
4817
  "keywords": [
@@ -5557,8 +5565,7 @@ export const generatedPropertyValues = {
5557
5565
  "style",
5558
5566
  "paint",
5559
5567
  "inline-size",
5560
- "block-size",
5561
- "view-transition"
5568
+ "block-size"
5562
5569
  ]
5563
5570
  },
5564
5571
  "contain-intrinsic-height": {
@@ -7154,6 +7161,12 @@ export const generatedPropertyValues = {
7154
7161
  "auto"
7155
7162
  ]
7156
7163
  },
7164
+ "view-transition-scope": {
7165
+ "values": [
7166
+ "none",
7167
+ "auto"
7168
+ ]
7169
+ },
7157
7170
  "visibility": {
7158
7171
  "values": [
7159
7172
  "visible",
@@ -1452,6 +1452,8 @@ export namespace ProtocolMapping {
1452
1452
  * to the provided property syntax, the value is parsed using combined
1453
1453
  * syntax as if null `propertyName` was provided. If the value cannot be
1454
1454
  * resolved even then, return the provided value without any changes.
1455
+ * Note: this function currently does not resolve CSS random() function,
1456
+ * it returns unmodified random() function parts.`
1455
1457
  */
1456
1458
  'CSS.resolveValues': {
1457
1459
  paramsType: [Protocol.CSS.ResolveValuesRequest];
@@ -767,6 +767,8 @@ declare namespace ProtocolProxyApi {
767
767
  * to the provided property syntax, the value is parsed using combined
768
768
  * syntax as if null `propertyName` was provided. If the value cannot be
769
769
  * resolved even then, return the provided value without any changes.
770
+ * Note: this function currently does not resolve CSS random() function,
771
+ * it returns unmodified random() function parts.`
770
772
  */
771
773
  invoke_resolveValues(params: Protocol.CSS.ResolveValuesRequest): Promise<Protocol.CSS.ResolveValuesResponse>;
772
774
 
@@ -10255,8 +10255,6 @@ export namespace Network {
10255
10255
  PreflightInvalidAllowCredentials = 'PreflightInvalidAllowCredentials',
10256
10256
  PreflightMissingAllowExternal = 'PreflightMissingAllowExternal',
10257
10257
  PreflightInvalidAllowExternal = 'PreflightInvalidAllowExternal',
10258
- PreflightMissingAllowPrivateNetwork = 'PreflightMissingAllowPrivateNetwork',
10259
- PreflightInvalidAllowPrivateNetwork = 'PreflightInvalidAllowPrivateNetwork',
10260
10258
  InvalidAllowMethodsPreflightResponse = 'InvalidAllowMethodsPreflightResponse',
10261
10259
  InvalidAllowHeadersPreflightResponse = 'InvalidAllowHeadersPreflightResponse',
10262
10260
  MethodDisallowedByPreflightResponse = 'MethodDisallowedByPreflightResponse',
@@ -10264,12 +10262,7 @@ export namespace Network {
10264
10262
  RedirectContainsCredentials = 'RedirectContainsCredentials',
10265
10263
  InsecurePrivateNetwork = 'InsecurePrivateNetwork',
10266
10264
  InvalidPrivateNetworkAccess = 'InvalidPrivateNetworkAccess',
10267
- UnexpectedPrivateNetworkAccess = 'UnexpectedPrivateNetworkAccess',
10268
10265
  NoCorsRedirectModeNotFollow = 'NoCorsRedirectModeNotFollow',
10269
- PreflightMissingPrivateNetworkAccessId = 'PreflightMissingPrivateNetworkAccessId',
10270
- PreflightMissingPrivateNetworkAccessName = 'PreflightMissingPrivateNetworkAccessName',
10271
- PrivateNetworkAccessPermissionUnavailable = 'PrivateNetworkAccessPermissionUnavailable',
10272
- PrivateNetworkAccessPermissionDenied = 'PrivateNetworkAccessPermissionDenied',
10273
10266
  LocalNetworkAccessPermissionDenied = 'LocalNetworkAccessPermissionDenied',
10274
10267
  }
10275
10268
 
@@ -11362,6 +11355,29 @@ export namespace Network {
11362
11355
  id: string;
11363
11356
  }
11364
11357
 
11358
+ export const enum DeviceBoundSessionWithUsageUsage {
11359
+ NotInScope = 'NotInScope',
11360
+ InScopeRefreshNotYetNeeded = 'InScopeRefreshNotYetNeeded',
11361
+ InScopeRefreshNotAllowed = 'InScopeRefreshNotAllowed',
11362
+ ProactiveRefreshNotPossible = 'ProactiveRefreshNotPossible',
11363
+ ProactiveRefreshAttempted = 'ProactiveRefreshAttempted',
11364
+ Deferred = 'Deferred',
11365
+ }
11366
+
11367
+ /**
11368
+ * How a device bound session was used during a request.
11369
+ */
11370
+ export interface DeviceBoundSessionWithUsage {
11371
+ /**
11372
+ * The key for the session.
11373
+ */
11374
+ sessionKey: DeviceBoundSessionKey;
11375
+ /**
11376
+ * How the session was used (or not used).
11377
+ */
11378
+ usage: DeviceBoundSessionWithUsageUsage;
11379
+ }
11380
+
11365
11381
  /**
11366
11382
  * A device bound session's cookie craving.
11367
11383
  */
@@ -12878,6 +12894,10 @@ export namespace Network {
12878
12894
  * Connection timing information for the request.
12879
12895
  */
12880
12896
  connectTiming: ConnectTiming;
12897
+ /**
12898
+ * How the request site's device bound sessions were used during this request.
12899
+ */
12900
+ deviceBoundSessionUsages?: DeviceBoundSessionWithUsage[];
12881
12901
  /**
12882
12902
  * The client security state set for the request.
12883
12903
  */
@@ -18822,6 +18842,16 @@ export namespace Target {
18822
18842
  * `background: false`. The life-time of the tab is limited to the life-time of the session.
18823
18843
  */
18824
18844
  hidden?: boolean;
18845
+ /**
18846
+ * If specified, the option is used to determine if the new target should
18847
+ * be focused or not. By default, the focus behavior depends on the
18848
+ * value of the background field. For example, background=false and focus=false
18849
+ * will result in the target tab being opened but the browser window remain
18850
+ * unchanged (if it was in the background, it will remain in the background)
18851
+ * and background=false with focus=undefined will result in the window being focused.
18852
+ * Using background: true and focus: true is not supported and will result in an error.
18853
+ */
18854
+ focus?: boolean;
18825
18855
  }
18826
18856
 
18827
18857
  export interface CreateTargetResponse extends ProtocolResponseWithError {
@@ -54,3 +54,11 @@ export function getDisabledReasons(aidaAvailability: Host.AidaClient.AidaAccessP
54
54
  reasons.push(...Common.Settings.Settings.instance().moduleSetting('ai-assistance-enabled').disabledReasons());
55
55
  return reasons;
56
56
  }
57
+
58
+ export function isGeminiBranding(): boolean {
59
+ return !!Root.Runtime.hostConfig.devToolsGeminiRebranding?.enabled;
60
+ }
61
+
62
+ export function getIconName(): string {
63
+ return isGeminiBranding() ? 'spark' : 'smart-assistant';
64
+ }
@@ -57,7 +57,7 @@ Content:
57
57
  "function_declarations": [
58
58
  {
59
59
  "name": "getStyles",
60
- "description": "Get computed and source styles for one or multiple elements on the inspected page for multiple elements at once by uid.\n\n**CRITICAL** Use selectors to refer to elements in the text output. Do not use uids.\n**CRITICAL** Always provide the explanation argument to explain what and why you query.",
60
+ "description": "Get computed and source styles for one or multiple elements on the inspected page for multiple elements at once by uid.\n\n**CRITICAL** An element uid is a number, not a selector.\n**CRITICAL** Use selectors to refer to elements in the text output. Do not use uids.\n**CRITICAL** Always provide the explanation argument to explain what and why you query.",
61
61
  "parameters": {
62
62
  "type": 6,
63
63
  "description": "",
@@ -70,9 +70,9 @@ Content:
70
70
  },
71
71
  "elements": {
72
72
  "type": 5,
73
- "description": "A list of element uids to get data for",
73
+ "description": "A list of element uids to get data for. These are numbers, not selectors.",
74
74
  "items": {
75
- "type": 1,
75
+ "type": 3,
76
76
  "description": "An element uid."
77
77
  },
78
78
  "nullable": false
@@ -279,13 +279,14 @@ export class StylingAgent extends AiAgent<SDK.DOMModel.DOMNode> {
279
279
  });
280
280
 
281
281
  this.declareFunction<{
282
- elements: string[],
282
+ elements: number[],
283
283
  styleProperties: string[],
284
284
  explanation: string,
285
285
  }>('getStyles', {
286
286
  description:
287
287
  `Get computed and source styles for one or multiple elements on the inspected page for multiple elements at once by uid.
288
288
 
289
+ **CRITICAL** An element uid is a number, not a selector.
289
290
  **CRITICAL** Use selectors to refer to elements in the text output. Do not use uids.
290
291
  **CRITICAL** Always provide the explanation argument to explain what and why you query.`,
291
292
  parameters: {
@@ -300,8 +301,8 @@ export class StylingAgent extends AiAgent<SDK.DOMModel.DOMNode> {
300
301
  },
301
302
  elements: {
302
303
  type: Host.AidaClient.ParametersTypes.ARRAY,
303
- description: 'A list of element uids to get data for',
304
- items: {type: Host.AidaClient.ParametersTypes.STRING, description: `An element uid.`},
304
+ description: 'A list of element uids to get data for. These are numbers, not selectors.',
305
+ items: {type: Host.AidaClient.ParametersTypes.INTEGER, description: `An element uid.`},
305
306
  nullable: false,
306
307
  },
307
308
  styleProperties: {
@@ -605,7 +606,7 @@ const data = {
605
606
  return this.context?.getItem() ?? null;
606
607
  }
607
608
 
608
- async getStyles(elements: string[], properties: string[]): Promise<FunctionCallHandlerResult<unknown>> {
609
+ async getStyles(elements: number[], properties: string[]): Promise<FunctionCallHandlerResult<unknown>> {
609
610
  const result:
610
611
  Record<string, {computed: Record<string, string|undefined>, authored: Record<string, string|undefined>}> = {};
611
612
  for (const uid of elements) {
@@ -44,12 +44,6 @@ export const enum IssueCode {
44
44
  PREFLIGHT_INVALID_ALLOW_EXTERNAL = 'CorsIssue::PreflightInvalidAllowExternal',
45
45
  NO_CORS_REDIRECT_MODE_NOT_FOLLOW = 'CorsIssue::NoCorsRedirectModeNotFollow',
46
46
  INVALID_PRIVATE_NETWORK_ACCESS = 'CorsIssue::InvalidPrivateNetworkAccess',
47
- UNEXPECTED_PRIVATE_NETWORK_ACCESS = 'CorsIssue::UnexpectedPrivateNetworkAccess',
48
- PREFLIGHT_ALLOW_PRIVATE_NETWORK_ERROR = 'CorsIssue::PreflightAllowPrivateNetworkError',
49
- PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_ID = 'CorsIssue::PreflightMissingPrivateNetworkAccessId',
50
- PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_NAME = 'CorsIssue::PreflightMissingPrivateNetworkAccessName',
51
- PRIVATE_NETWORK_ACCESS_PERMISSION_UNAVAILABLE = 'CorsIssue::PrivateNetworkAccessPermissionUnavailable',
52
- PRIVATE_NETWORK_ACCESS_PERMISSION_DENIED = 'CorsIssue::PrivateNetworkAccessPermissionDenied',
53
47
  LOCAL_NETWORK_ACCESS_PERMISSION_DENIED = 'CorsIssue::LocalNetworkAccessPermissionDenied',
54
48
  }
55
49
 
@@ -97,19 +91,6 @@ function getIssueCode(details: Protocol.Audits.CorsIssueDetails): IssueCode {
97
91
  return IssueCode.NO_CORS_REDIRECT_MODE_NOT_FOLLOW;
98
92
  case Protocol.Network.CorsError.InvalidPrivateNetworkAccess:
99
93
  return IssueCode.INVALID_PRIVATE_NETWORK_ACCESS;
100
- case Protocol.Network.CorsError.UnexpectedPrivateNetworkAccess:
101
- return IssueCode.UNEXPECTED_PRIVATE_NETWORK_ACCESS;
102
- case Protocol.Network.CorsError.PreflightMissingAllowPrivateNetwork:
103
- case Protocol.Network.CorsError.PreflightInvalidAllowPrivateNetwork:
104
- return IssueCode.PREFLIGHT_ALLOW_PRIVATE_NETWORK_ERROR;
105
- case Protocol.Network.CorsError.PreflightMissingPrivateNetworkAccessId:
106
- return IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_ID;
107
- case Protocol.Network.CorsError.PreflightMissingPrivateNetworkAccessName:
108
- return IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_NAME;
109
- case Protocol.Network.CorsError.PrivateNetworkAccessPermissionUnavailable:
110
- return IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_UNAVAILABLE;
111
- case Protocol.Network.CorsError.PrivateNetworkAccessPermissionDenied:
112
- return IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_DENIED;
113
94
  case Protocol.Network.CorsError.LocalNetworkAccessPermissionDenied:
114
95
  return IssueCode.LOCAL_NETWORK_ACCESS_PERMISSION_DENIED;
115
96
  }
@@ -136,14 +117,6 @@ export class CorsIssue extends Issue<Protocol.Audits.CorsIssueDetails, IssueCode
136
117
  linkTitle: i18nString(UIStrings.corsPrivateNetworkAccess),
137
118
  }],
138
119
  };
139
- case IssueCode.PREFLIGHT_ALLOW_PRIVATE_NETWORK_ERROR:
140
- return {
141
- file: 'corsPreflightAllowPrivateNetworkError.md',
142
- links: [{
143
- link: 'https://developer.chrome.com/blog/private-network-access-update',
144
- linkTitle: i18nString(UIStrings.corsPrivateNetworkAccess),
145
- }],
146
- };
147
120
  case IssueCode.INVALID_HEADER_VALUES:
148
121
  return {
149
122
  file: 'corsInvalidHeaderValues.md',
@@ -232,17 +205,6 @@ export class CorsIssue extends Issue<Protocol.Audits.CorsIssueDetails, IssueCode
232
205
  linkTitle: i18nString(UIStrings.CORS),
233
206
  }],
234
207
  };
235
- // TODO(1462857): Change the link after we have a blog post for PNA
236
- // permission prompt.
237
- case IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_ID:
238
- case IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_NAME:
239
- return {
240
- file: 'corsPrivateNetworkPermissionDenied.md',
241
- links: [{
242
- link: 'https://developer.chrome.com/blog/private-network-access-update',
243
- linkTitle: i18nString(UIStrings.corsPrivateNetworkAccess),
244
- }],
245
- };
246
208
  case IssueCode.LOCAL_NETWORK_ACCESS_PERMISSION_DENIED:
247
209
  return {
248
210
  file: 'corsLocalNetworkAccessPermissionDenied.md',
@@ -254,9 +216,6 @@ export class CorsIssue extends Issue<Protocol.Audits.CorsIssueDetails, IssueCode
254
216
  case IssueCode.PREFLIGHT_MISSING_ALLOW_EXTERNAL:
255
217
  case IssueCode.PREFLIGHT_INVALID_ALLOW_EXTERNAL:
256
218
  case IssueCode.INVALID_PRIVATE_NETWORK_ACCESS:
257
- case IssueCode.UNEXPECTED_PRIVATE_NETWORK_ACCESS:
258
- case IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_UNAVAILABLE:
259
- case IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_DENIED:
260
219
  return null;
261
220
  }
262
221
  }
@@ -267,9 +226,7 @@ export class CorsIssue extends Issue<Protocol.Audits.CorsIssueDetails, IssueCode
267
226
 
268
227
  getKind(): IssueKind {
269
228
  if (this.details().isWarning &&
270
- (this.details().corsErrorStatus.corsError === Protocol.Network.CorsError.InsecurePrivateNetwork ||
271
- this.details().corsErrorStatus.corsError === Protocol.Network.CorsError.PreflightMissingAllowPrivateNetwork ||
272
- this.details().corsErrorStatus.corsError === Protocol.Network.CorsError.PreflightInvalidAllowPrivateNetwork)) {
229
+ this.details().corsErrorStatus.corsError === Protocol.Network.CorsError.InsecurePrivateNetwork) {
273
230
  return IssueKind.BREAKING_CHANGE;
274
231
  }
275
232
  return IssueKind.PAGE_ERROR;
@@ -469,15 +469,6 @@ export class NetworkLog extends Common.ObjectWrapper.ObjectWrapper<EventTypes> i
469
469
  return;
470
470
  }
471
471
 
472
- // This is only triggered in an edge case in which Chrome reports 2 preflight requests. The
473
- // first preflight gets aborted and should not be shown in DevTools.
474
- // (see https://crbug.com/1290390 for details)
475
- if (request.isPreflightRequest() &&
476
- request.corsErrorStatus()?.corsError === Protocol.Network.CorsError.UnexpectedPrivateNetworkAccess) {
477
- this.removeRequest(request);
478
- return;
479
- }
480
-
481
472
  this.dispatchEventToListeners(Events.RequestUpdated, {request});
482
473
  }
483
474
 
@@ -62,3 +62,43 @@ export const enum Events {
62
62
  export interface EventTypes {
63
63
  [Events.UPDATED]: void;
64
64
  }
65
+
66
+ /**
67
+ * A small wrapper around a DebuggableFrame usable as a UI.Context flavor.
68
+ * This is necessary as Frame and DebuggableFrame are updated in place, but
69
+ * for UI.Context we need a new instance.
70
+ */
71
+ export class DebuggableFrameFlavor implements DebuggableFrame {
72
+ static #last?: DebuggableFrameFlavor;
73
+
74
+ readonly url?: string;
75
+ readonly uiSourceCode?: Workspace.UISourceCode.UISourceCode;
76
+ readonly name?: string;
77
+ readonly line: number;
78
+ readonly column: number;
79
+ readonly missingDebugInfo?: MissingDebugInfo;
80
+ readonly sdkFrame: SDK.DebuggerModel.CallFrame;
81
+
82
+ private constructor(frame: DebuggableFrame) {
83
+ this.url = frame.url;
84
+ this.uiSourceCode = frame.uiSourceCode;
85
+ this.name = frame.name;
86
+ this.line = frame.line;
87
+ this.column = frame.column;
88
+ this.missingDebugInfo = frame.missingDebugInfo;
89
+ this.sdkFrame = frame.sdkFrame;
90
+ }
91
+
92
+ /** @returns the same instance of DebuggableFrameFlavor for repeated calls with the same (i.e. deep equal) DebuggableFrame */
93
+ static for(frame: DebuggableFrame): DebuggableFrameFlavor {
94
+ function equals(a: DebuggableFrame, b: DebuggableFrame): boolean {
95
+ return a.url === b.url && a.uiSourceCode === b.uiSourceCode && a.name === b.name && a.line === b.line &&
96
+ a.column === b.column && a.sdkFrame === b.sdkFrame;
97
+ }
98
+
99
+ if (!DebuggableFrameFlavor.#last || !equals(DebuggableFrameFlavor.#last, frame)) {
100
+ DebuggableFrameFlavor.#last = new DebuggableFrameFlavor(frame);
101
+ }
102
+ return DebuggableFrameFlavor.#last;
103
+ }
104
+ }
@@ -556,8 +556,9 @@ export class PatchWidget extends UI.Widget.Widget {
556
556
  return true;
557
557
  }
558
558
 
559
+ const iconName = AiAssistanceModel.AiUtils.getIconName();
559
560
  const result = await PanelCommon.FreDialog.show({
560
- header: {iconName: 'smart-assistant', text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
561
+ header: {iconName, text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
561
562
  reminderItems: [
562
563
  {
563
564
  iconName: 'psychiatry',