chrome-devtools-frontend 1.0.1550444 → 1.0.1555174

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 (466) hide show
  1. package/docs/styleguide/ux/components.md +34 -8
  2. package/eslint.config.mjs +7 -0
  3. package/front_end/Images/generate-css-vars.js +8 -4
  4. package/front_end/Images/src/spark.svg +10 -0
  5. package/front_end/core/common/Settings.ts +20 -8
  6. package/front_end/core/host/UserMetrics.ts +3 -1
  7. package/front_end/core/i18n/collect-ui-strings.js +19 -10
  8. package/front_end/core/i18n/generate-locales-js.js +4 -4
  9. package/front_end/core/protocol_client/CDPConnection.ts +1 -0
  10. package/front_end/core/protocol_client/InspectorBackend.ts +5 -1
  11. package/front_end/core/root/Runtime.ts +0 -12
  12. package/front_end/core/sdk/DOMModel.ts +38 -3
  13. package/front_end/core/sdk/DebuggerModel.ts +9 -4
  14. package/front_end/core/sdk/IsolateManager.ts +7 -0
  15. package/front_end/core/sdk/PageResourceLoader.ts +3 -3
  16. package/front_end/core/sdk/RehydratingConnection.ts +5 -2
  17. package/front_end/core/sdk/ResourceTreeModel.ts +0 -1
  18. package/front_end/entrypoints/main/MainImpl.ts +28 -10
  19. package/front_end/generated/SupportedCSSProperties.js +32 -0
  20. package/front_end/models/ai_assistance/AiConversation.ts +94 -4
  21. package/front_end/models/ai_assistance/agents/AiAgent.ts +30 -15
  22. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +179 -41
  23. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +5 -0
  24. package/front_end/models/ai_assistance/agents/StylingAgent.ts +62 -0
  25. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +2 -1
  26. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +1 -7
  27. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +124 -12
  28. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +125 -30
  29. package/front_end/models/ai_assistance/performance/AICallTree.ts +42 -0
  30. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +12 -0
  31. package/front_end/models/issues_manager/Issue.ts +1 -0
  32. package/front_end/models/issues_manager/IssueAggregator.ts +9 -0
  33. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  34. package/front_end/models/issues_manager/PermissionElementIssue.ts +262 -0
  35. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +7 -0
  36. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
  37. package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
  38. package/front_end/models/issues_manager/descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
  39. package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +5 -0
  40. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +5 -0
  41. package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +5 -0
  42. package/front_end/models/issues_manager/descriptions/permissionElementGeolocationDeprecated.md +5 -0
  43. package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
  44. package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +5 -0
  45. package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +5 -0
  46. package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +5 -0
  47. package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +5 -0
  48. package/front_end/models/issues_manager/descriptions/permissionElementLowContrast.md +5 -0
  49. package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +5 -0
  50. package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
  51. package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +6 -0
  52. package/front_end/models/issues_manager/descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
  53. package/front_end/models/issues_manager/descriptions/permissionElementRegistrationFailed.md +5 -0
  54. package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +5 -0
  55. package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +5 -0
  56. package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +5 -0
  57. package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +7 -0
  58. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  59. package/front_end/models/javascript_metadata/NativeFunctions.js +23 -23
  60. package/front_end/models/stack_trace/StackTraceModel.ts +37 -18
  61. package/front_end/models/trace/Processor.ts +14 -15
  62. package/front_end/models/trace/insights/Common.ts +2 -8
  63. package/front_end/models/trace/insights/types.ts +12 -2
  64. package/front_end/models/trace/types/TraceEvents.ts +4 -1
  65. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +28 -6
  66. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +9 -23
  67. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  68. package/front_end/panels/ai_assistance/components/ChatView.ts +78 -2
  69. package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +71 -0
  70. package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +126 -0
  71. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +131 -2
  72. package/front_end/panels/ai_assistance/components/chatView.css +28 -0
  73. package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +33 -0
  74. package/front_end/panels/application/AppManifestView.ts +1007 -521
  75. package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -17
  76. package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +2 -6
  77. package/front_end/panels/application/ExtensionStorageItemsView.ts +3 -5
  78. package/front_end/panels/application/KeyValueStorageItemsView.ts +3 -2
  79. package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
  80. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +133 -118
  81. package/front_end/panels/application/preloading/PreloadingView.ts +46 -45
  82. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +80 -75
  83. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +169 -133
  84. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +74 -93
  85. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +142 -117
  86. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +51 -11
  87. package/front_end/panels/application/preloading/components/components.ts +0 -2
  88. package/front_end/panels/common/Annotation.ts +184 -0
  89. package/front_end/panels/common/AnnotationManager.ts +148 -11
  90. package/front_end/panels/common/ExtensionView.ts +47 -0
  91. package/front_end/panels/common/PersistenceUtils.ts +22 -25
  92. package/front_end/panels/common/annotation.css +40 -0
  93. package/front_end/panels/common/common.ts +1 -0
  94. package/front_end/panels/console/ConsoleInsightTeaser.ts +187 -5
  95. package/front_end/panels/console/ConsolePinPane.ts +437 -217
  96. package/front_end/panels/console/ConsolePrompt.ts +32 -223
  97. package/front_end/panels/console/ConsoleView.ts +67 -66
  98. package/front_end/panels/console/ConsoleViewMessage.ts +8 -3
  99. package/front_end/panels/console/consoleInsightTeaser.css +23 -0
  100. package/front_end/panels/console/consoleView.css +1 -1
  101. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +89 -0
  102. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +2 -2
  103. package/front_end/panels/elements/ComputedStyleWidget.ts +16 -5
  104. package/front_end/panels/elements/ElementsPanel.ts +38 -12
  105. package/front_end/panels/elements/ElementsSidebarPane.ts +1 -3
  106. package/front_end/panels/elements/ElementsTreeElement.ts +313 -353
  107. package/front_end/panels/elements/ElementsTreeOutline.ts +39 -13
  108. package/front_end/panels/elements/StylePropertyTreeElement.ts +15 -14
  109. package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
  110. package/front_end/panels/emulation/MediaQueryInspector.ts +171 -125
  111. package/front_end/panels/explain/components/ConsoleInsight.ts +175 -150
  112. package/front_end/panels/explain/components/consoleInsight.css +348 -347
  113. package/front_end/panels/issues/AffectedPermissionElementsView.ts +46 -0
  114. package/front_end/panels/issues/IssueView.ts +2 -0
  115. package/front_end/panels/issues/IssuesPane.ts +6 -0
  116. package/front_end/panels/layer_viewer/LayerDetailsView.ts +165 -149
  117. package/front_end/panels/layer_viewer/Layers3DView.ts +131 -78
  118. package/front_end/panels/lighthouse/LighthouseStatusView.ts +149 -100
  119. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +90 -64
  120. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +25 -34
  121. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +60 -44
  122. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +170 -151
  123. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +50 -51
  124. package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +0 -13
  125. package/front_end/panels/linear_memory_inspector/components/valueInterpreterSettings.css +20 -18
  126. package/front_end/panels/mobile_throttling/CalibrationController.ts +3 -1
  127. package/front_end/panels/network/NetworkDataGridNode.ts +14 -6
  128. package/front_end/panels/network/NetworkItemView.ts +42 -3
  129. package/front_end/panels/network/NetworkLogView.ts +10 -11
  130. package/front_end/panels/network/NetworkPanel.ts +63 -1
  131. package/front_end/panels/network/RequestInitiatorView.ts +146 -113
  132. package/front_end/panels/network/components/RequestHeaderSection.css +51 -50
  133. package/front_end/panels/network/components/RequestHeaderSection.ts +81 -71
  134. package/front_end/panels/network/components/RequestHeadersView.css +1 -1
  135. package/front_end/panels/network/components/RequestHeadersView.ts +26 -11
  136. package/front_end/panels/network/components/RequestTrustTokensView.css +24 -14
  137. package/front_end/panels/network/components/RequestTrustTokensView.ts +144 -140
  138. package/front_end/panels/profiler/IsolateSelector.ts +2 -1
  139. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +49 -33
  140. package/front_end/panels/recorder/RecorderController.ts +2 -3
  141. package/front_end/panels/recorder/components/ControlButton.ts +68 -34
  142. package/front_end/panels/recorder/components/CreateRecordingView.ts +9 -6
  143. package/front_end/panels/recorder/components/RecordingView.ts +81 -88
  144. package/front_end/panels/recorder/components/ReplaySection.ts +226 -145
  145. package/front_end/panels/recorder/{controllers → components}/SelectorPicker.ts +129 -52
  146. package/front_end/panels/recorder/components/StepEditor.ts +21 -67
  147. package/front_end/panels/recorder/components/StepView.ts +222 -180
  148. package/front_end/panels/recorder/components/TimelineSection.ts +69 -48
  149. package/front_end/panels/recorder/components/components.ts +2 -2
  150. package/front_end/panels/recorder/components/selectorPicker.css +14 -0
  151. package/front_end/panels/recorder/components/stepEditor.css +0 -5
  152. package/front_end/panels/recorder/components/stepView.css +196 -198
  153. package/front_end/panels/recorder/extensions/ExtensionManager.ts +4 -48
  154. package/front_end/panels/recorder/models/ScreenshotUtils.ts +17 -11
  155. package/front_end/panels/security/CookieControlsView.ts +30 -26
  156. package/front_end/panels/settings/components/SyncSection.ts +0 -1
  157. package/front_end/panels/sources/CSSPlugin.ts +3 -3
  158. package/front_end/panels/sources/CallStackSidebarPane.ts +60 -75
  159. package/front_end/panels/sources/SourcesPanel.ts +1 -11
  160. package/front_end/panels/sources/TabbedEditorContainer.ts +11 -8
  161. package/front_end/panels/sources/ThreadsSidebarPane.ts +96 -101
  162. package/front_end/panels/sources/threadsSidebarPane.css +6 -5
  163. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +0 -1
  164. package/front_end/panels/timeline/InteractionsTrackAppender.ts +2 -3
  165. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +23 -33
  166. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +4 -3
  167. package/front_end/panels/timeline/TimelineFlameChartView.ts +12 -0
  168. package/front_end/panels/timeline/TimelinePanel.ts +3 -5
  169. package/front_end/panels/timeline/components/IgnoreListSetting.ts +164 -142
  170. package/front_end/panels/timeline/components/InteractionBreakdown.ts +48 -28
  171. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +18 -23
  172. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +98 -73
  173. package/front_end/panels/timeline/components/Sidebar.ts +16 -7
  174. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +174 -137
  175. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +262 -291
  176. package/front_end/panels/timeline/components/Utils.ts +25 -0
  177. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +210 -146
  178. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +8 -20
  179. package/front_end/panels/timeline/components/insights/Cache.ts +0 -9
  180. package/front_end/panels/timeline/components/insights/Checklist.ts +53 -43
  181. package/front_end/panels/timeline/components/insights/DOMSize.ts +11 -33
  182. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +6 -12
  183. package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +0 -9
  184. package/front_end/panels/timeline/components/insights/EventRef.ts +47 -109
  185. package/front_end/panels/timeline/components/insights/FontDisplay.ts +0 -9
  186. package/front_end/panels/timeline/components/insights/ForcedReflow.ts +0 -9
  187. package/front_end/panels/timeline/components/insights/INPBreakdown.ts +0 -9
  188. package/front_end/panels/timeline/components/insights/ImageDelivery.ts +1 -10
  189. package/front_end/panels/timeline/components/insights/ImageRef.ts +112 -0
  190. package/front_end/panels/timeline/components/insights/InsightRenderer.ts +91 -0
  191. package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +0 -9
  192. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +11 -14
  193. package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +0 -9
  194. package/front_end/panels/timeline/components/insights/ModernHTTP.ts +0 -9
  195. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +6 -21
  196. package/front_end/panels/timeline/components/insights/NodeLink.ts +68 -43
  197. package/front_end/panels/timeline/components/insights/README.md +2 -3
  198. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +0 -9
  199. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +0 -9
  200. package/front_end/panels/timeline/components/insights/ThirdParties.ts +0 -9
  201. package/front_end/panels/timeline/components/insights/Viewport.ts +7 -19
  202. package/front_end/panels/timeline/components/insights/baseInsightComponent.css +5 -0
  203. package/front_end/panels/timeline/components/insights/insights.ts +2 -0
  204. package/front_end/panels/timeline/components/interactionBreakdown.css +15 -13
  205. package/front_end/panels/timeline/components/sidebarInsightsTab.css +50 -48
  206. package/front_end/panels/timeline/enable-easter-egg.js +7 -3
  207. package/front_end/third_party/chromium/README.chromium +1 -1
  208. package/front_end/third_party/puppeteer/README.chromium +2 -2
  209. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  210. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  211. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js +8 -0
  212. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js.map +1 -0
  213. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +87 -0
  214. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  215. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
  217. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js +5 -24
  219. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
  220. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +5 -0
  221. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  222. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts +1 -0
  224. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
  225. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js.map +1 -1
  226. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  227. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  228. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js +42 -0
  229. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  230. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +4 -1
  231. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  232. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +10 -0
  233. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  235. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  236. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js +90 -0
  237. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  238. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +3 -1
  239. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  240. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +3 -2
  241. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  242. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +4 -1
  243. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  244. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +5 -2
  245. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  246. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
  247. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  248. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -2
  249. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  250. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.d.ts.map +1 -1
  251. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js +7 -0
  252. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +1 -1
  254. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  256. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  257. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js +30 -0
  258. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  259. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +5 -2
  260. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +22 -3
  262. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts +1 -1
  264. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
  266. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +4 -6
  268. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  269. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts +2 -2
  270. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  271. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
  272. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
  273. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +2 -0
  274. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  275. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +8 -0
  276. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  277. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  278. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js +8 -3
  279. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js.map +1 -1
  280. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +1 -0
  281. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
  282. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +1 -0
  283. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
  284. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +30 -0
  285. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  286. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +15 -0
  287. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  288. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  289. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts +1 -1
  290. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  291. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -13
  292. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  293. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +5 -3
  294. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  295. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js +17 -0
  296. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js.map +1 -1
  297. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  298. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  299. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  300. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  301. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  302. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  303. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +221 -4
  304. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +182 -95
  305. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  306. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  307. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js +7 -0
  308. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js.map +1 -0
  309. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +87 -0
  310. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  311. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  312. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
  313. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
  314. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js +4 -22
  315. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
  316. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +5 -0
  317. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  318. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  319. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts +1 -0
  320. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
  321. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js.map +1 -1
  322. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  323. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  324. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js +38 -0
  325. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  326. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +4 -1
  327. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  328. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +10 -0
  329. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  330. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  331. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  332. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js +85 -0
  333. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  334. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +3 -1
  335. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  336. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +3 -2
  337. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  338. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +4 -1
  339. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  340. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +5 -2
  341. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  342. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
  343. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  344. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -2
  345. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  346. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.d.ts.map +1 -1
  347. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js +7 -0
  348. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js.map +1 -1
  349. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +1 -1
  350. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  351. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  352. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  353. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js +26 -0
  354. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  355. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +5 -2
  356. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  357. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +22 -3
  358. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  359. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts +1 -1
  360. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  361. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
  362. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  363. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +2 -4
  364. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  365. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts +2 -2
  366. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  367. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +2 -2
  368. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
  369. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +2 -0
  370. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  371. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +8 -0
  372. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  373. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  374. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js +8 -3
  375. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js.map +1 -1
  376. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +1 -0
  377. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
  378. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +1 -0
  379. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
  380. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +31 -1
  381. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
  382. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +15 -0
  383. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  384. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts +1 -1
  385. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  386. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -13
  387. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  388. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +5 -3
  389. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  390. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js +16 -1
  391. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js.map +1 -1
  392. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  393. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  394. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  395. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  396. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  397. package/front_end/third_party/puppeteer/package/lib/types.d.ts +221 -4
  398. package/front_end/third_party/puppeteer/package/package.json +4 -4
  399. package/front_end/third_party/puppeteer/package/src/api/BluetoothEmulation.ts +103 -0
  400. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +96 -1
  401. package/front_end/third_party/puppeteer/package/src/api/DeviceRequestPrompt.ts +2 -10
  402. package/front_end/third_party/puppeteer/package/src/api/Page.ts +6 -0
  403. package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -0
  404. package/front_end/third_party/puppeteer/package/src/bidi/BluetoothEmulation.ts +52 -0
  405. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +15 -0
  406. package/front_end/third_party/puppeteer/package/src/bidi/DeviceRequestPrompt.ts +138 -0
  407. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +7 -3
  408. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +10 -2
  409. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +30 -2
  410. package/front_end/third_party/puppeteer/package/src/bidi/util.ts +8 -0
  411. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +1 -1
  412. package/front_end/third_party/puppeteer/package/src/cdp/BluetoothEmulation.ts +47 -0
  413. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +33 -3
  414. package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +1 -1
  415. package/front_end/third_party/puppeteer/package/src/cdp/DeviceRequestPrompt.ts +3 -8
  416. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +2 -2
  417. package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +9 -4
  418. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +13 -0
  419. package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +8 -3
  420. package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
  421. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +45 -1
  422. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +20 -0
  423. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +5 -17
  424. package/front_end/third_party/puppeteer/package/src/node/LaunchOptions.ts +23 -7
  425. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  426. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  427. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +4 -0
  428. package/front_end/ui/components/annotations/AnnotationRepository.ts +153 -13
  429. package/front_end/ui/components/settings/SettingCheckbox.ts +4 -6
  430. package/front_end/ui/components/snackbars/Snackbars.docs.ts +0 -1
  431. package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +12 -3
  432. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +182 -0
  433. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  434. package/front_end/ui/helpers/OpenInNewTab.ts +5 -1
  435. package/front_end/ui/i18n/i18n.ts +9 -9
  436. package/front_end/ui/kit/icons/Icon.docs.ts +22 -65
  437. package/front_end/ui/kit/kit.ts +1 -0
  438. package/front_end/ui/kit/link/Link.docs.ts +15 -0
  439. package/front_end/ui/kit/link/Link.ts +151 -0
  440. package/front_end/ui/kit/link/link.css +27 -0
  441. package/front_end/ui/legacy/EmptyWidget.ts +6 -0
  442. package/front_end/ui/legacy/Floaty.ts +442 -0
  443. package/front_end/ui/legacy/InspectorView.ts +12 -0
  444. package/front_end/ui/legacy/ReportView.ts +1 -1
  445. package/front_end/ui/legacy/SelectMenu.docs.ts +0 -1
  446. package/front_end/ui/legacy/TabbedPane.ts +150 -65
  447. package/front_end/ui/legacy/Widget.ts +1 -3
  448. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +1 -1
  449. package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +36 -36
  450. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +22 -37
  451. package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +31 -1
  452. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +2 -2
  453. package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -11
  454. package/front_end/ui/legacy/floaty.css +77 -0
  455. package/front_end/ui/legacy/legacy.ts +2 -0
  456. package/front_end/ui/legacy/tabbedPane.css +4 -7
  457. package/front_end/ui/visual_logging/KnownContextValues.ts +7 -0
  458. package/inspector_overlay/loadCSS.rollup.js +5 -4
  459. package/package.json +2 -2
  460. package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +0 -99
  461. package/front_end/panels/recorder/components/SelectButton.ts +0 -304
  462. package/front_end/panels/recorder/controllers/controllers.ts +0 -7
  463. package/front_end/ui/components/chrome_link/ChromeLink.ts +0 -76
  464. package/front_end/ui/components/chrome_link/chromeLink.css +0 -12
  465. package/front_end/ui/components/chrome_link/chrome_link.ts +0 -9
  466. /package/front_end/panels/recorder/components/{selectButton.css → replaySection.css} +0 -0
@@ -281,14 +281,39 @@ Find an exhaustive collection of icons currently used in DevTools [here](https:/
281
281
 
282
282
  #### Developer guidelines
283
283
 
284
- For some frequently used icons e.g. cross-circle, warning-filled etc. colors are auto-set in the component. See full list [here](https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/ui/components/icon_button/icon.css;l=47)
284
+ For some frequently used icons, colors are auto-set in the component. The full list of icons with auto-set colors is:
285
+
286
+ - `warning-filled`
287
+ - `issue-exclamation-filled`
288
+ - `cross-circle`
289
+ - `cross-circle-filled`
290
+ - `issue-cross-filled`
291
+ - `small-status-dot`
292
+ - `issue-text-filled`
293
+ - `large-arrow-right-filled`
294
+ - `code-circle`
295
+ - `file-document`
296
+ - `file-font`
297
+ - `file-script`
298
+ - `file-stylesheet`
299
+ - `file-media`
300
+
301
+ For the definitions, refer to the [icon.css file](https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/ui/kit/icons/icon.css).
302
+
303
+ The default icon size is at 20x20 pixels. There are predefined classes for other sizes, don't deviate from them:
304
+
305
+ * `.extra-small`: 12x12 pixels
306
+ * `.small`: 14x14 pixels
307
+ * `.medium`: 16x16 pixels
308
+ * `.large`: 18x18 pixels
309
+ * `.extra-large`: 20x20 pixels
285
310
 
286
311
  ##### Dos and Don'ts
287
312
 
288
313
  ###### Do
289
314
 
290
315
  * Set class and change color in .css files
291
- * Set one of the predefined classes to change icon size e.g. extra-small for 12px
316
+ * Set one of the predefined classes to change icon size.
292
317
 
293
318
  ###### Don't
294
319
 
@@ -304,11 +329,12 @@ Usage with lit-html:
304
329
  html`<devtools-icon name=${'some-icon-name'}></devtools-icon>`;
305
330
  ```
306
331
 
307
- Usage with the imperative API:
332
+ ### Resources
308
333
 
309
- ```ts
310
- const someIcon = createIcon('some-icon-name', 'some-class');
311
- ```
334
+ * [`devtools-icon`](https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/ui/kit/icons/Icon.ts)
335
+ * [Component Documentation Example](https://chromedevtools.github.io/devtools-frontend/#Icon)
336
+ * [Icon Figma](https://www.figma.com/design/A5iQBBNAe5zPFpJvUzUgW8/Chrome-DevTools-Design-Kit?node-id=4323-3772)
337
+ * [Greenlines](http://go/chrome-devtools:icons-greenlines)
312
338
 
313
339
  ## Context menus
314
340
 
@@ -604,8 +630,8 @@ html`<devtools-card heading="Card with rich heading">
604
630
  ### Resources
605
631
 
606
632
  * [`devtools-card`](https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/ui/kit/cards/Card.ts)
607
- * [Component Documentation Example](https://chromedevtools.github.io/devtools-frontend/)
633
+ * [Component Documentation Example](https://chromedevtools.github.io/devtools-frontend/#Card)
608
634
 
609
635
  * [Cards Figma](https://www.figma.com/design/A5iQBBNAe5zPFpJvUzUgW8/Chrome-DevTools-Design-Kit?node-id=3456-939)
610
636
 
611
- * [Greenlines](go/chrome-devtools:cards-greenlines)
637
+ * [Greenlines](http:/go/chrome-devtools:cards-greenlines)
package/eslint.config.mjs CHANGED
@@ -703,6 +703,13 @@ export default defineConfig([
703
703
  ],
704
704
  },
705
705
  },
706
+ {
707
+ name: 'Front-end docs files',
708
+ files: ['front_end/**/*.docs.ts'],
709
+ rules: {
710
+ 'no-console': 'off',
711
+ },
712
+ },
706
713
  {
707
714
  name: 'TypeScript test files',
708
715
  files: [
@@ -1,9 +1,10 @@
1
1
  // Copyright 2020 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
- const path = require('node:path');
4
+ import * as path from 'node:path';
5
+
6
+ import {writeIfChanged} from '../../scripts/build/ninja/write-if-changed.js';
5
7
 
6
- const {writeIfChanged} = require('../../scripts/build/ninja/write-if-changed.js');
7
8
  const [, , buildTimestamp, targetGenDir, targetName, ...imageSources] = process.argv;
8
9
 
9
10
  /**
@@ -15,7 +16,7 @@ function generateCSSVariableDefinition(fileName) {
15
16
  // We have to remove the `src/` part from any SVG file names for the CSS variables, while
16
17
  // we still use the full URL for the meta.url import. That's because the rollup-plugin-import-meta-assets
17
18
  // rewrites the image URLs to the new location, but doesn't modify the generated CSS variable name
18
- fileName.replace('src\/', '').replace(path.extname(fileName), '')}', 'url(\\"' + new URL('./${
19
+ fileName.replace('src/', '').replace(path.extname(fileName), '')}', 'url(\\"' + new URL('./${
19
20
  fileName}', import.meta.url).toString() + '\\")');`;
20
21
  }
21
22
 
@@ -45,4 +46,7 @@ const tsconfigContent = `{
45
46
  }
46
47
  `;
47
48
 
48
- writeIfChanged(path.join(targetGenDir, `${targetName}-tsconfig.json`), tsconfigContent);
49
+ writeIfChanged(
50
+ path.join(targetGenDir, `${targetName}-tsconfig.json`),
51
+ tsconfigContent,
52
+ );
@@ -0,0 +1,10 @@
1
+ <svg width="14" height="16" viewBox="0 0 14 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_1320_25512)">
3
+ <path d="M7 12.6319C6.94299 12.6319 6.89549 12.6129 6.85749 12.5749C6.81948 12.5369 6.79098 12.4894 6.77198 12.4324C6.61997 11.8338 6.38245 11.259 6.05942 10.708C5.74589 10.1474 5.37536 9.64862 4.94782 9.21158C4.51078 8.77454 4.01199 8.39926 3.45144 8.08573C2.90039 7.7722 2.32559 7.53943 1.72704 7.38742C1.67003 7.36842 1.62253 7.33992 1.58452 7.30191C1.54652 7.26391 1.52752 7.2164 1.52752 7.1594C1.52752 7.10239 1.54652 7.05489 1.58452 7.01689C1.62253 6.97888 1.67003 6.95038 1.72704 6.93138C2.32559 6.77937 2.90039 6.5466 3.45144 6.23307C4.00249 5.91954 4.50128 5.54426 4.94782 5.10722C5.38486 4.67968 5.76014 4.18564 6.07367 3.62509C6.3872 3.06454 6.61997 2.48499 6.77198 1.88644C6.79098 1.82943 6.81948 1.78193 6.85749 1.74392C6.89549 1.70592 6.94299 1.68692 7 1.68692C7.057 1.68692 7.10451 1.70592 7.14251 1.74392C7.18052 1.78193 7.20902 1.82943 7.22802 1.88644C7.38003 2.48499 7.6128 3.06454 7.92633 3.62509C8.23986 4.17614 8.61514 4.67018 9.05218 5.10722C9.48922 5.54426 9.98326 5.91954 10.5343 6.23307C11.0949 6.5466 11.6744 6.77937 12.273 6.93138C12.33 6.95038 12.3775 6.97888 12.4155 7.01689C12.4535 7.05489 12.4725 7.10239 12.4725 7.1594C12.4725 7.2164 12.4535 7.26391 12.4155 7.30191C12.3775 7.33992 12.33 7.36842 12.273 7.38742C11.6744 7.53943 11.0949 7.7722 10.5343 8.08573C9.97376 8.39926 9.47972 8.77454 9.05218 9.21158C8.61514 9.65812 8.23986 10.1569 7.92633 10.708C7.6128 11.259 7.38003 11.8338 7.22802 12.4324C7.20902 12.4894 7.18052 12.5369 7.14251 12.5749C7.10451 12.6129 7.057 12.6319 7 12.6319Z" fill="#0B57D0"/>
4
+ </g>
5
+ <defs>
6
+ <clipPath id="clip0_1320_25512">
7
+ <rect width="14" height="15.1442" fill="white"/>
8
+ </clipPath>
9
+ </defs>
10
+ </svg>
@@ -246,17 +246,29 @@ export interface SettingsBackingStore {
246
246
  clear(): void;
247
247
  }
248
248
 
249
- export const NOOP_STORAGE: SettingsBackingStore = {
250
- register: () => {},
251
- set: () => {},
252
- get: () => Promise.resolve(''),
253
- remove: () => {},
254
- clear: () => {},
255
- };
249
+ export class InMemoryStorage implements SettingsBackingStore {
250
+ #store = new Map();
251
+
252
+ register(_setting: string): void {
253
+ }
254
+ set(key: string, value: string): void {
255
+ this.#store.set(key, value);
256
+ }
257
+ get(key: string): Promise<string> {
258
+ return this.#store.get(key);
259
+ }
260
+ remove(key: string): void {
261
+ this.#store.delete(key);
262
+ }
263
+ clear(): void {
264
+ this.#store.clear();
265
+ }
266
+ }
256
267
 
257
268
  export class SettingsStorage {
258
269
  constructor(
259
- private object: Record<string, string>, private readonly backingStore: SettingsBackingStore = NOOP_STORAGE,
270
+ private object: Record<string, string>,
271
+ private readonly backingStore: SettingsBackingStore = new InMemoryStorage(),
260
272
  private readonly storagePrefix = '') {
261
273
  }
262
274
 
@@ -529,7 +529,9 @@ export enum Action {
529
529
  InsightTeaserGenerationErrored = 194,
530
530
  AiCodeGenerationSuggestionDisplayed = 195,
531
531
  AiCodeGenerationSuggestionAccepted = 196,
532
- MAX_VALUE = 197,
532
+ InsightTeaserModelDownloadStarted = 197,
533
+ InsightTeaserModelDownloadCompleted = 198,
534
+ MAX_VALUE = 199,
533
535
  /* eslint-enable @typescript-eslint/naming-convention */
534
536
  }
535
537
 
@@ -2,15 +2,18 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- const glob = require('glob');
6
- const path = require('node:path');
7
- const yargs = require('yargs');
8
- const {hideBin} = require('yargs/helpers');
5
+ import glob from 'glob';
6
+ import * as path from 'node:path';
7
+ import yargs from 'yargs';
8
+ import {hideBin} from 'yargs/helpers';
9
9
 
10
- const {writeIfChanged} = require('../../../scripts/build/ninja/write-if-changed.js');
11
- const {bakePlaceholders} = require('../../../third_party/i18n/bake-ctc-to-lhl.js');
12
- const {collectAllStringsInDir, createPsuedoLocaleStrings, IGNORED_PATH_COMPONENTS} =
13
- require('../../../third_party/i18n/collect-strings.js');
10
+ import {writeIfChanged} from '../../../scripts/build/ninja/write-if-changed.js';
11
+ import {bakePlaceholders} from '../../../third_party/i18n/bake-ctc-to-lhl.js';
12
+ import {
13
+ collectAllStringsInDir,
14
+ createPsuedoLocaleStrings,
15
+ IGNORED_PATH_COMPONENTS,
16
+ } from '../../../third_party/i18n/collect-strings.js';
14
17
 
15
18
  /** @typedef {import('../../../third_party/i18n/bake-ctc-to-lhl.js').CtcMessage} CtcMessage */
16
19
 
@@ -39,7 +42,9 @@ function convertCtcToLhLAndSave(outputDirectory, locale, strings) {
39
42
 
40
43
  /** @type {Record<string, CtcMessage>} */
41
44
  const sortedCtcStrings = {};
42
- const sortedEntries = Object.entries(strings).sort(([keyA], [keyB]) => keyA.localeCompare(keyB));
45
+ const sortedEntries = Object.entries(strings).sort(
46
+ ([keyA], [keyB]) => keyA.localeCompare(keyB),
47
+ );
43
48
  for (const [key, defn] of sortedEntries) {
44
49
  sortedCtcStrings[key] = defn;
45
50
  }
@@ -73,7 +78,11 @@ for (const directory of inputDirectories) {
73
78
  const outputDirectory = yargsObject['output-directory'];
74
79
  convertCtcToLhLAndSave(outputDirectory, 'en-US', collectedStrings);
75
80
  if (yargsObject['include-en-xl']) {
76
- convertCtcToLhLAndSave(outputDirectory, 'en-XL', createPsuedoLocaleStrings(collectedStrings));
81
+ convertCtcToLhLAndSave(
82
+ outputDirectory,
83
+ 'en-XL',
84
+ createPsuedoLocaleStrings(collectedStrings),
85
+ );
77
86
  }
78
87
 
79
88
  // Write the depfile. This is necessary to properly rebuild en-US.json/en-XL.json
@@ -2,11 +2,11 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- const path = require('node:path');
6
- const yargs = require('yargs');
7
- const {hideBin} = require('yargs/helpers');
5
+ import * as path from 'node:path';
6
+ import yargs from 'yargs';
7
+ import {hideBin} from 'yargs/helpers';
8
8
 
9
- const {writeIfChanged} = require('../../../scripts/build/ninja/write-if-changed.js');
9
+ import {writeIfChanged} from '../../../scripts/build/ninja/write-if-changed.js';
10
10
 
11
11
  const yargsObject = yargs(hideBin(process.argv))
12
12
  .option('target-gen-dir', {
@@ -42,6 +42,7 @@ export enum CDPErrorStatus {
42
42
  SERVER_ERROR = -32000,
43
43
  SESSION_NOT_FOUND = SERVER_ERROR - 1,
44
44
  DEVTOOLS_STUB_ERROR = -32015,
45
+ DEVTOOLS_REHYDRATION_ERROR = -32016,
45
46
  }
46
47
 
47
48
  export interface CDPError {
@@ -638,6 +638,7 @@ export class TargetBase {
638
638
 
639
639
  /** These are not logged as console.error */
640
640
  const IGNORED_ERRORS = new Set<CDPErrorStatus>([
641
+ CDPErrorStatus.DEVTOOLS_REHYDRATION_ERROR,
641
642
  CDPErrorStatus.DEVTOOLS_STUB_ERROR,
642
643
  CDPErrorStatus.SERVER_ERROR,
643
644
  CDPErrorStatus.SESSION_NOT_FOUND,
@@ -694,7 +695,10 @@ class AgentPrototype {
694
695
  if ('result' in response) {
695
696
  return {...response.result, getError: () => undefined};
696
697
  }
697
- return {getError: () => undefined};
698
+ return {
699
+ getError: () => `Command ${method} returned neither result nor an error, params: ${
700
+ JSON.stringify(request, undefined, 2)}`,
701
+ };
698
702
  });
699
703
  }
700
704
  }
@@ -478,16 +478,6 @@ interface AllowPopoverForcing {
478
478
  enabled: boolean;
479
479
  }
480
480
 
481
- interface AiSubmenuPrompts {
482
- enabled: boolean;
483
- featureName?: string;
484
- }
485
-
486
- interface AiDebugWithAi {
487
- enabled: boolean;
488
- featureName?: string;
489
- }
490
-
491
481
  interface GlobalAiButton {
492
482
  enabled: boolean;
493
483
  promotionEnabled: boolean;
@@ -561,7 +551,6 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
561
551
  devToolsFreestyler: HostConfigFreestyler,
562
552
  devToolsGreenDevUi: HostConfigGreenDevUi,
563
553
  devToolsAiAssistanceNetworkAgent: HostConfigAiAssistanceNetworkAgent,
564
- devToolsAiDebugWithAi: AiDebugWithAi,
565
554
  devToolsAiAssistanceFileAgent: HostConfigAiAssistanceFileAgent,
566
555
  devToolsAiAssistancePerformanceAgent: HostConfigAiAssistancePerformanceAgent,
567
556
  devToolsAiCodeCompletion: HostConfigAiCodeCompletion,
@@ -580,7 +569,6 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
580
569
  thirdPartyCookieControls: HostConfigThirdPartyCookieControls,
581
570
  devToolsAiGeneratedTimelineLabels: AiGeneratedTimelineLabels,
582
571
  devToolsAllowPopoverForcing: AllowPopoverForcing,
583
- devToolsAiSubmenuPrompts: AiSubmenuPrompts,
584
572
  devToolsGlobalAiButton: GlobalAiButton,
585
573
  devToolsGdpProfiles: GdpProfiles,
586
574
  devToolsGdpProfilesAvailability: GdpProfilesAvailability,
@@ -32,6 +32,7 @@
32
32
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
33
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
34
  */
35
+ /* eslint-disable @devtools/no-adopted-style-sheets */
35
36
 
36
37
  import type * as ProtocolProxyApi from '../../generated/protocol-proxy-api.js';
37
38
  import * as Protocol from '../../generated/protocol.js';
@@ -160,6 +161,7 @@ export class DOMNode {
160
161
  */
161
162
  detached = false;
162
163
  #retainedNodes?: Set<Protocol.DOM.BackendNodeId>;
164
+ #adoptedStyleSheets: AdoptedStyleSheet[] = [];
163
165
 
164
166
  constructor(domModel: DOMModel) {
165
167
  this.#domModel = domModel;
@@ -206,6 +208,10 @@ export class DOMNode {
206
208
  this.setAttributesPayload(payload.attributes);
207
209
  }
208
210
 
211
+ if (payload.adoptedStyleSheets) {
212
+ this.#adoptedStyleSheets = this.toAdoptedStyleSheets(payload.adoptedStyleSheets);
213
+ }
214
+
209
215
  this.childNodeCountInternal = payload.childNodeCount || 0;
210
216
  if (payload.shadowRoots) {
211
217
  for (let i = 0; i < payload.shadowRoots.length; ++i) {
@@ -827,6 +833,19 @@ export class DOMNode {
827
833
  }
828
834
  }
829
835
 
836
+ private toAdoptedStyleSheets(ids: Protocol.DOM.StyleSheetId[]): AdoptedStyleSheet[] {
837
+ return ids.map(id => (new AdoptedStyleSheet(id, this.#domModel.cssModel())));
838
+ }
839
+
840
+ setAdoptedStyleSheets(ids: Protocol.DOM.StyleSheetId[]): void {
841
+ this.#adoptedStyleSheets = this.toAdoptedStyleSheets(ids);
842
+ this.#domModel.dispatchEventToListeners(Events.AdoptedStyleSheetsModified, this);
843
+ }
844
+
845
+ get adoptedStyleSheetsForNode(): AdoptedStyleSheet[] {
846
+ return this.#adoptedStyleSheets;
847
+ }
848
+
830
849
  setDistributedNodePayloads(payloads: Protocol.DOM.BackendNode[]): void {
831
850
  this.#distributedNodes = [];
832
851
  for (const payload of payloads) {
@@ -1206,6 +1225,11 @@ export class DOMDocument extends DOMNode {
1206
1225
  }
1207
1226
  }
1208
1227
 
1228
+ export class AdoptedStyleSheet {
1229
+ constructor(readonly id: Protocol.DOM.StyleSheetId, readonly cssModel: CSSModel) {
1230
+ }
1231
+ }
1232
+
1209
1233
  export class DOMModel extends SDKModel<EventTypes> {
1210
1234
  agent: ProtocolProxyApi.DOMApi;
1211
1235
  idToDOMNode = new Map<Protocol.DOM.NodeId, DOMNode>();
@@ -1571,6 +1595,14 @@ export class DOMModel extends SDKModel<EventTypes> {
1571
1595
  this.scheduleMutationEvent(node);
1572
1596
  }
1573
1597
 
1598
+ adoptedStyleSheetsModified(parentId: Protocol.DOM.NodeId, styleSheets: Protocol.DOM.StyleSheetId[]): void {
1599
+ const parent = this.idToDOMNode.get(parentId);
1600
+ if (!parent) {
1601
+ return;
1602
+ }
1603
+ parent.setAdoptedStyleSheets(styleSheets);
1604
+ }
1605
+
1574
1606
  scrollableFlagUpdated(nodeId: Protocol.DOM.NodeId, isScrollable: boolean): void {
1575
1607
  const node = this.nodeForId(nodeId);
1576
1608
  if (!node || node.isScrollable() === isScrollable) {
@@ -1776,6 +1808,7 @@ export enum Events {
1776
1808
  TopLayerElementsChanged = 'TopLayerElementsChanged',
1777
1809
  ScrollableFlagUpdated = 'ScrollableFlagUpdated',
1778
1810
  AffectedByStartingStylesFlagUpdated = 'AffectedByStartingStylesFlagUpdated',
1811
+ AdoptedStyleSheetsModified = 'AdoptedStyleSheetsModified',
1779
1812
  /* eslint-enable @typescript-eslint/naming-convention */
1780
1813
  }
1781
1814
 
@@ -1793,6 +1826,7 @@ export interface EventTypes {
1793
1826
  [Events.TopLayerElementsChanged]: void;
1794
1827
  [Events.ScrollableFlagUpdated]: {node: DOMNode};
1795
1828
  [Events.AffectedByStartingStylesFlagUpdated]: {node: DOMNode};
1829
+ [Events.AdoptedStyleSheetsModified]: DOMNode;
1796
1830
  }
1797
1831
 
1798
1832
  class DOMDispatcher implements ProtocolProxyApi.DOMDispatcher {
@@ -1800,9 +1834,6 @@ class DOMDispatcher implements ProtocolProxyApi.DOMDispatcher {
1800
1834
  constructor(domModel: DOMModel) {
1801
1835
  this.#domModel = domModel;
1802
1836
  }
1803
- adoptedStyleSheetsModified(_params: Protocol.DOM.AdoptedStyleSheetsModifiedEvent): void {
1804
- // TODO: implementation
1805
- }
1806
1837
 
1807
1838
  documentUpdated(): void {
1808
1839
  this.#domModel.documentUpdated();
@@ -1816,6 +1847,10 @@ class DOMDispatcher implements ProtocolProxyApi.DOMDispatcher {
1816
1847
  this.#domModel.attributeRemoved(nodeId, name);
1817
1848
  }
1818
1849
 
1850
+ adoptedStyleSheetsModified({nodeId, adoptedStyleSheets}: Protocol.DOM.AdoptedStyleSheetsModifiedEvent): void {
1851
+ this.#domModel.adoptedStyleSheetsModified(nodeId, adoptedStyleSheets);
1852
+ }
1853
+
1819
1854
  inlineStyleInvalidated({nodeIds}: Protocol.DOM.InlineStyleInvalidatedEvent): void {
1820
1855
  this.#domModel.inlineStyleInvalidated(nodeIds);
1821
1856
  }
@@ -942,10 +942,15 @@ export class DebuggerModel extends SDKModel<EventTypes> {
942
942
  * Important: This iterator will not yield the "synchronous" part of the stack trace, only the async parent chain.
943
943
  */
944
944
  async *
945
- iterateAsyncParents(stackTraceOrPausedDetails: Protocol.Runtime.StackTrace|DebuggerPausedDetails):
945
+ iterateAsyncParents(
946
+ stackTraceOrPausedDetails: Protocol.Runtime.StackTrace|
947
+ Pick<DebuggerPausedDetails, 'asyncStackTrace'|'asyncStackTraceId'>):
946
948
  AsyncGenerator<{stackTrace: Protocol.Runtime.StackTrace, target: Target}> {
947
949
  // We make `DebuggerPausedDetails` look like a stack trace. We are only interested in `parent` and `parentId` in any case.
948
- let stackTrace: Protocol.Runtime.StackTrace = stackTraceOrPausedDetails instanceof DebuggerPausedDetails ?
950
+ const isPausedDetails = (details: typeof stackTraceOrPausedDetails):
951
+ details is Pick<DebuggerPausedDetails, 'asyncStackTrace'|'asyncStackTraceId'> =>
952
+ !('parent' in details) && !('parentId' in details);
953
+ let stackTrace: Protocol.Runtime.StackTrace = isPausedDetails(stackTraceOrPausedDetails) ?
949
954
  {
950
955
  callFrames: [],
951
956
  parent: stackTraceOrPausedDetails.asyncStackTrace,
@@ -1507,8 +1512,8 @@ export class DebuggerPausedDetails {
1507
1512
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1508
1513
  auxData: Record<string, any>|undefined;
1509
1514
  breakpointIds: string[];
1510
- asyncStackTrace: Protocol.Runtime.StackTrace|undefined;
1511
- asyncStackTraceId: Protocol.Runtime.StackTraceId|undefined;
1515
+ asyncStackTrace?: Protocol.Runtime.StackTrace;
1516
+ asyncStackTraceId?: Protocol.Runtime.StackTraceId;
1512
1517
  constructor(
1513
1518
  debuggerModel: DebuggerModel,
1514
1519
  callFrames: Protocol.Debugger.CallFrame[],
@@ -49,6 +49,13 @@ export class IsolateManager extends Common.ObjectWrapper.ObjectWrapper<EventType
49
49
  }
50
50
  }
51
51
 
52
+ unobserveIsolates(observer: Observer): void {
53
+ this.#observers.delete(observer);
54
+ if (!this.#observers.size) {
55
+ this.#pollId++;
56
+ }
57
+ }
58
+
52
59
  modelAdded(model: RuntimeModel): void {
53
60
  void this.#modelAdded(model);
54
61
  }
@@ -98,14 +98,14 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
98
98
  #queuedLoads: LoadQueueEntry[] = [];
99
99
  readonly #loadOverride: ((arg0: string) => Promise<{
100
100
  success: boolean,
101
- content: string,
101
+ content: string|Uint8Array<ArrayBuffer>,
102
102
  errorDescription: Host.ResourceLoader.LoadErrorDescription,
103
103
  }>)|null;
104
104
  constructor(
105
105
  targetManager: TargetManager, settings: Common.Settings.Settings, userAgentProvider: UserAgentProvider,
106
106
  loadOverride: ((arg0: string) => Promise<{
107
107
  success: boolean,
108
- content: string,
108
+ content: string|Uint8Array<ArrayBuffer>,
109
109
  errorDescription: Host.ResourceLoader.LoadErrorDescription,
110
110
  }>)|null,
111
111
  maxConcurrentLoads = 500) {
@@ -123,7 +123,7 @@ export class PageResourceLoader extends Common.ObjectWrapper.ObjectWrapper<Event
123
123
  forceNew: boolean,
124
124
  loadOverride: (null|((arg0: string) => Promise<{
125
125
  success: boolean,
126
- content: string,
126
+ content: string|Uint8Array<ArrayBuffer>,
127
127
  errorDescription: Host.ResourceLoader.LoadErrorDescription,
128
128
  }>)),
129
129
  targetManager?: TargetManager,
@@ -27,7 +27,7 @@ import type * as Protocol from '../../generated/protocol.js';
27
27
  import * as Common from '../common/common.js';
28
28
  import * as i18n from '../i18n/i18n.js';
29
29
  import type * as Platform from '../platform/platform.js';
30
- import type * as ProtocolClient from '../protocol_client/protocol_client.js';
30
+ import * as ProtocolClient from '../protocol_client/protocol_client.js';
31
31
  import * as Root from '../root/root.js';
32
32
 
33
33
  import * as EnhancedTraces from './EnhancedTracesParser.js';
@@ -325,7 +325,10 @@ export class RehydratingSession extends RehydratingSessionBase {
325
325
  default:
326
326
  this.sendMessageToFrontend({
327
327
  id: data.id,
328
- result: {},
328
+ error: {
329
+ message: `Command ${data.method} not implemented in RehydratingSession.`,
330
+ code: ProtocolClient.CDPConnection.CDPErrorStatus.DEVTOOLS_STUB_ERROR,
331
+ }
329
332
  });
330
333
  break;
331
334
  }
@@ -105,7 +105,6 @@ export class ResourceTreeModel extends SDKModel<EventTypes> {
105
105
  return null;
106
106
  }
107
107
 
108
- // TODO(crbug.com/445966299): Refactor to use `storageAgent().invoke_getStorageKey()` instead.
109
108
  const response = await this.storageAgent.invoke_getStorageKey({frameId});
110
109
  if (response.getError() === 'Frame tree node for given frame not found') {
111
110
  return null;
@@ -124,11 +124,30 @@ const UIStrings = {
124
124
  * @description Notification shown to the user whenever DevTools receives an external request.
125
125
  */
126
126
  externalRequestReceived: '`DevTools` received an external request',
127
+ /**
128
+ * @description Notification shown to the user whenever DevTools has finished downloading a local AI model.
129
+ */
130
+ aiModelDownloaded: 'AI model downloaded',
127
131
  } as const;
128
132
  const str_ = i18n.i18n.registerUIStrings('entrypoints/main/MainImpl.ts', UIStrings);
129
133
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
130
134
 
131
135
  let loadedPanelCommonModule: typeof PanelCommon|undefined;
136
+
137
+ const WINDOW_LOCAL_STORAGE: Common.Settings.SettingsBackingStore = {
138
+ register(_setting: string): void{},
139
+ async get(setting: string): Promise<string> {
140
+ return window.localStorage.getItem(setting) as unknown as string;
141
+ },
142
+ set(setting: string, value: string): void {
143
+ window.localStorage.setItem(setting, value);
144
+ },
145
+ remove(setting: string): void {
146
+ window.localStorage.removeItem(setting);
147
+ },
148
+ clear: () => window.localStorage.clear(),
149
+ };
150
+
132
151
  export class MainImpl {
133
152
  #readyForTestPromise = Promise.withResolvers<void>();
134
153
  #veStartPromise!: Promise<void>;
@@ -271,15 +290,11 @@ export class MainImpl {
271
290
  storagePrefix = '__bundled__';
272
291
  }
273
292
 
274
- let localStorage;
293
+ let localStorage: Common.Settings.SettingsStorage;
275
294
  if (!Host.InspectorFrontendHost.isUnderTest() && window.localStorage) {
276
- const localbackingStore: Common.Settings.SettingsBackingStore = {
277
- ...Common.Settings.NOOP_STORAGE,
278
- clear: () => window.localStorage.clear(),
279
- };
280
- localStorage = new Common.Settings.SettingsStorage(window.localStorage, localbackingStore, storagePrefix);
295
+ localStorage = new Common.Settings.SettingsStorage(window.localStorage, WINDOW_LOCAL_STORAGE, storagePrefix);
281
296
  } else {
282
- localStorage = new Common.Settings.SettingsStorage({}, Common.Settings.NOOP_STORAGE, storagePrefix);
297
+ localStorage = new Common.Settings.SettingsStorage({}, undefined, storagePrefix);
283
298
  }
284
299
 
285
300
  const hostUnsyncedStorage: Common.Settings.SettingsBackingStore = {
@@ -505,7 +520,10 @@ export class MainImpl {
505
520
  LiveMetrics.LiveMetrics.instance();
506
521
  CrUXManager.CrUXManager.instance();
507
522
 
508
- AiAssistanceModel.BuiltInAi.BuiltInAi.instance();
523
+ const builtInAi = AiAssistanceModel.BuiltInAi.BuiltInAi.instance();
524
+ builtInAi.addEventListener(
525
+ AiAssistanceModel.BuiltInAi.Events.DOWNLOADED_AND_SESSION_CREATED,
526
+ () => Snackbar.Snackbar.Snackbar.show({message: i18nString(UIStrings.aiModelDownloaded)}));
509
527
 
510
528
  new PauseListener();
511
529
 
@@ -809,8 +827,8 @@ export class MainMenuItem implements UI.Toolbar.Provider {
809
827
  readonly #item: UI.Toolbar.ToolbarMenuButton;
810
828
  constructor() {
811
829
  this.#item = new UI.Toolbar.ToolbarMenuButton(
812
- this.#handleContextMenu.bind(this), /* isIconDropdown */ true, /* useSoftMenu */ true, 'main-menu',
813
- 'dots-vertical');
830
+ this.#handleContextMenu.bind(this), /* isIconDropdown */ true,
831
+ /* useSoftMenu */ true, 'main-menu', 'dots-vertical');
814
832
  this.#item.element.classList.add('main-menu');
815
833
  this.#item.setTitle(i18nString(UIStrings.customizeAndControlDevtools));
816
834
  }