chrome-devtools-frontend 1.0.1669021 → 1.0.1672557

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 (302) hide show
  1. package/.agents/skills/fixing-skipped-tests/SKILL.md +6 -6
  2. package/.agents/skills/gerrit-cli/SKILL.md +4 -10
  3. package/.agents/skills/gerrit-cli/references/commands.md +45 -2
  4. package/.agents/skills/gerrit-cli/references/workflows.md +7 -0
  5. package/.agents/skills/gerrit-cli/scripts/import_upstream.py +34 -152
  6. package/config/typescript/tsconfig.eslint.json +1 -1
  7. package/docs/contributing/settings-experiments-features.md +2 -8
  8. package/docs/ecosystem/automatic_workspace_folders.md +0 -19
  9. package/eslint.config.mjs +5 -5
  10. package/front_end/core/common/Lazy.ts +3 -3
  11. package/front_end/core/common/SettingRegistration.ts +0 -7
  12. package/front_end/core/common/Settings.ts +0 -38
  13. package/front_end/core/host/UserMetrics.ts +187 -953
  14. package/front_end/core/host/UserMetricsEnums.ts +949 -0
  15. package/front_end/core/root/Runtime.ts +21 -138
  16. package/front_end/core/sdk/CSSMetadata.ts +70 -65
  17. package/front_end/core/sdk/CategorizedBreakpoint.ts +0 -1
  18. package/front_end/core/sdk/ChildTargetManager.ts +0 -2
  19. package/front_end/core/sdk/EmulationModel.ts +0 -2
  20. package/front_end/core/sdk/EventBreakpointsModel.ts +0 -4
  21. package/front_end/core/sdk/NetworkManager.ts +0 -3
  22. package/front_end/core/sdk/PageResourceLoader.ts +9 -9
  23. package/front_end/core/sdk/RehydratingConnection.ts +52 -4
  24. package/front_end/core/sdk/Target.ts +0 -4
  25. package/front_end/devtools_compatibility.js +886 -0
  26. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +7 -6
  27. package/front_end/entrypoints/main/ExecutionContextSelector.ts +0 -1
  28. package/front_end/entrypoints/main/MainImpl.ts +18 -22
  29. package/front_end/foundation/Universe.ts +7 -2
  30. package/front_end/generated/InspectorBackendCommands.ts +3 -10
  31. package/front_end/generated/{SupportedCSSProperties.js → SupportedCSSProperties.ts} +16 -0
  32. package/front_end/generated/protocol-mapping.d.ts +0 -42
  33. package/front_end/generated/protocol-proxy-api.d.ts +0 -38
  34. package/front_end/generated/protocol.ts +9 -169
  35. package/front_end/models/ai_assistance/AiAgent2.ts +11 -3
  36. package/front_end/models/ai_assistance/AiConversation.ts +1 -0
  37. package/front_end/models/ai_assistance/AiHistoryStorage.ts +8 -5
  38. package/front_end/models/ai_assistance/AiSetting.ts +108 -0
  39. package/front_end/models/ai_assistance/AiUtils.ts +47 -0
  40. package/front_end/models/ai_assistance/ChangeManager.ts +1 -0
  41. package/front_end/models/ai_assistance/ExtensionScope.ts +3 -12
  42. package/front_end/models/ai_assistance/agents/AiAgent.ts +11 -18
  43. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +3 -0
  44. package/front_end/models/ai_assistance/agents/ExecuteJavascript.ts +42 -17
  45. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +1 -1
  46. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +3 -2
  47. package/front_end/models/ai_assistance/agents/StorageAgent.ts +253 -155
  48. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -2
  49. package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
  50. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +12 -6
  51. package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +3 -1
  52. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +1 -0
  53. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +4 -3
  54. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +1 -1
  55. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +1 -0
  56. package/front_end/models/ai_assistance/injected.ts +1 -0
  57. package/front_end/models/ai_assistance/performance/AICallTree.ts +1 -0
  58. package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
  59. package/front_end/models/ai_assistance/skills/SkillRegistry.ts +2 -0
  60. package/front_end/models/ai_assistance/skills/performance.md +10 -0
  61. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +52 -5
  62. package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +4 -4
  63. package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +4 -4
  64. package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +5 -4
  65. package/front_end/models/ai_assistance/tools/GetStyles.ts +5 -4
  66. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +5 -4
  67. package/front_end/models/ai_assistance/tools/README.md +1 -1
  68. package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +63 -0
  69. package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +5 -5
  70. package/front_end/models/ai_assistance/tools/Tool.ts +118 -24
  71. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +2 -0
  72. package/front_end/models/badges/UserBadges.ts +2 -0
  73. package/front_end/models/bindings/NetworkProject.ts +5 -0
  74. package/front_end/models/bindings/ResourceScriptMapping.ts +2 -0
  75. package/front_end/models/bindings/ResourceUtils.ts +3 -0
  76. package/front_end/models/crux-manager/CrUXManager.ts +1 -0
  77. package/front_end/models/emulation/DeviceModeModel.ts +140 -7
  78. package/front_end/models/emulation/EmulatedDevices.ts +246 -793
  79. package/front_end/models/issues_manager/IssuesManager.ts +10 -2
  80. package/front_end/models/live-metrics/LiveMetrics.ts +41 -9
  81. package/front_end/models/logs/LogManager.ts +8 -5
  82. package/front_end/models/logs/NetworkLog.ts +1 -0
  83. package/front_end/models/persistence/IsolatedFileSystemManager.ts +21 -3
  84. package/front_end/models/persistence/NetworkPersistenceManager.ts +6 -0
  85. package/front_end/models/project_settings/ProjectSettingsModel.ts +8 -12
  86. package/front_end/models/trace/Processor.ts +42 -10
  87. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +12 -19
  88. package/front_end/models/trace/handlers/MetaHandler.ts +38 -5
  89. package/front_end/models/trace/insights/CLSCulprits.ts +1 -2
  90. package/front_end/models/trace/insights/CharacterSet.ts +1 -1
  91. package/front_end/models/trace/insights/Common.ts +21 -2
  92. package/front_end/models/trace/insights/DocumentLatency.ts +1 -1
  93. package/front_end/models/trace/insights/LCPBreakdown.ts +7 -6
  94. package/front_end/models/trace/insights/LCPDiscovery.ts +1 -1
  95. package/front_end/models/trace/insights/ModernHTTP.ts +7 -3
  96. package/front_end/models/trace/insights/NetworkDependencyTree.ts +1 -1
  97. package/front_end/models/trace/insights/RenderBlocking.ts +1 -1
  98. package/front_end/models/trace/insights/ThirdParties.ts +5 -2
  99. package/front_end/models/trace/insights/types.ts +11 -6
  100. package/front_end/models/trace/types/Configuration.ts +5 -0
  101. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +3 -1
  102. package/front_end/models/workspace/IgnoreListManager.ts +2 -0
  103. package/front_end/models/workspace/UISourceCode.ts +2 -0
  104. package/front_end/models/workspace_diff/WorkspaceDiff.ts +4 -0
  105. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +22 -22
  106. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +0 -7
  107. package/front_end/panels/ai_assistance/components/ChatInput.ts +4 -0
  108. package/front_end/panels/ai_assistance/components/ChatMessage.ts +79 -34
  109. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +1 -2
  110. package/front_end/panels/ai_assistance/components/walkthroughView.css +1 -1
  111. package/front_end/panels/application/ApplicationPanelSidebar.ts +9 -106
  112. package/front_end/panels/application/ApplicationPanelTreeElement.ts +1 -1
  113. package/front_end/panels/application/application.ts +0 -10
  114. package/front_end/panels/application/components/components.ts +0 -4
  115. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +0 -5
  116. package/front_end/panels/browser_debugger/EventListenerBreakpointsSidebarPane.ts +6 -12
  117. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +5 -3
  118. package/front_end/panels/console/ConsoleFormat.ts +2 -62
  119. package/front_end/panels/console/ConsoleViewMessage.ts +14 -7
  120. package/front_end/panels/elements/ElementsTreeElement.ts +1 -2
  121. package/front_end/panels/emulation/AdvancedApp.ts +1 -2
  122. package/front_end/panels/emulation/DeviceModeToolbar.ts +83 -69
  123. package/front_end/panels/emulation/DeviceModeView.ts +4 -134
  124. package/front_end/panels/emulation/DeviceModeWrapper.ts +52 -69
  125. package/front_end/panels/emulation/MediaQueryInspector.ts +2 -2
  126. package/front_end/panels/emulation/emulation-meta.ts +12 -12
  127. package/front_end/panels/issues/IssuesPane.ts +3 -1
  128. package/front_end/panels/lighthouse/LighthouseController.ts +6 -0
  129. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +17 -21
  130. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +206 -126
  131. package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +1 -1
  132. package/front_end/panels/mobile_throttling/CalibrationController.ts +1 -1
  133. package/front_end/panels/mobile_throttling/MobileThrottlingSelector.ts +3 -3
  134. package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +6 -6
  135. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +14 -12
  136. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +13 -13
  137. package/front_end/panels/mobile_throttling/ThrottlingPresets.ts +10 -10
  138. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +28 -28
  139. package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +6 -6
  140. package/front_end/panels/network/RequestHeadersView.ts +1 -1
  141. package/front_end/panels/network/ResourceChunkView.ts +243 -144
  142. package/front_end/panels/network/ResourceDirectSocketChunkView.ts +52 -29
  143. package/front_end/panels/network/ResourceWebSocketFrameView.ts +21 -35
  144. package/front_end/panels/network/resourceChunkView.css +41 -36
  145. package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +21 -12
  146. package/front_end/panels/profiler/profiler.ts +4 -0
  147. package/front_end/panels/recorder/RecorderPanel.ts +6 -14
  148. package/front_end/panels/sensors/LocationsSettingsTab.ts +7 -7
  149. package/front_end/panels/settings/AISettingsTab.ts +75 -31
  150. package/front_end/panels/settings/SettingsScreen.ts +8 -13
  151. package/front_end/panels/settings/components/SyncSection.ts +3 -4
  152. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +650 -18
  153. package/front_end/panels/settings/emulation/devicesSettingsTab.css +18 -0
  154. package/front_end/panels/settings/settings-meta.ts +0 -1
  155. package/front_end/panels/sources/CategorizedBreakpointL10n.ts +0 -2
  156. package/front_end/panels/sources/DebuggerPausedMessage.ts +11 -5
  157. package/front_end/panels/sources/DebuggerPlugin.ts +1 -1
  158. package/front_end/panels/sources/EditingLocationHistoryManager.ts +12 -9
  159. package/front_end/panels/sources/SourcesPanel.ts +19 -17
  160. package/front_end/panels/sources/SourcesView.ts +191 -96
  161. package/front_end/panels/sources/TabbedEditorContainer.ts +3 -4
  162. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +2 -5
  163. package/front_end/panels/timeline/TimelinePanel.ts +2 -0
  164. package/front_end/panels/timeline/TimelineUIUtils.ts +15 -0
  165. package/front_end/panels/timeline/components/CWVMetrics.ts +16 -3
  166. package/front_end/panels/timeline/components/cwvMetrics.css +4 -0
  167. package/front_end/panels/timeline/components/liveMetricsView.css +0 -17
  168. package/front_end/panels/timeline/components/metricValueStyles.css +17 -0
  169. package/front_end/panels/timeline/timeline-meta.ts +3 -5
  170. package/front_end/third_party/chromium/README.chromium +1 -1
  171. package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
  172. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  173. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  174. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
  175. package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
  176. package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
  177. package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
  178. package/front_end/third_party/codemirror.next/chunk/legacy.js +1 -1
  179. package/front_end/third_party/codemirror.next/chunk/less.js +1 -1
  180. package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
  181. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
  182. package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
  183. package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
  184. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  185. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  186. package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
  187. package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
  188. package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
  189. package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
  190. package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
  191. package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
  192. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  193. package/front_end/third_party/codemirror.next/chunk/wast.js.map +1 -1
  194. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
  195. package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
  196. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +1332 -193
  197. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  198. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  199. package/front_end/third_party/puppeteer/README.chromium +2 -2
  200. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +64 -15
  201. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +65 -16
  202. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +50 -7
  203. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
  205. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.d.ts +2 -1
  206. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  207. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js +5 -5
  208. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  209. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts +2 -1
  210. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts.map +1 -1
  211. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js +8 -6
  212. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js.map +1 -1
  213. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Dialog.d.ts.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Dialog.js +3 -0
  215. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Dialog.js.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
  217. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +16 -1
  218. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
  219. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.d.ts +5 -1
  220. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.d.ts.map +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js +11 -6
  222. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js.map +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Dialog.d.ts.map +1 -1
  224. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Dialog.js +5 -0
  225. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Dialog.js.map +1 -1
  226. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js +10 -0
  228. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +4 -3
  230. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
  231. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts +27 -2
  232. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts.map +1 -1
  233. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js +12 -1
  234. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js.map +1 -1
  235. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts +2 -2
  236. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts.map +1 -1
  237. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js +2 -2
  238. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js.map +1 -1
  239. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  240. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js +2 -0
  241. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js.map +1 -1
  242. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts +2 -1
  243. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
  244. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js +5 -4
  245. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js.map +1 -1
  246. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  247. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  248. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  250. package/front_end/third_party/puppeteer/package/lib/types.d.ts +64 -15
  251. package/front_end/third_party/puppeteer/package/package.json +2 -2
  252. package/front_end/third_party/puppeteer/package/src/api/Page.ts +50 -7
  253. package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +9 -7
  254. package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +9 -6
  255. package/front_end/third_party/puppeteer/package/src/bidi/Dialog.ts +4 -0
  256. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +24 -1
  257. package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +11 -6
  258. package/front_end/third_party/puppeteer/package/src/cdp/Dialog.ts +7 -0
  259. package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +11 -0
  260. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +7 -3
  261. package/front_end/third_party/puppeteer/package/src/common/Debug.ts +30 -5
  262. package/front_end/third_party/puppeteer/package/src/common/util.ts +2 -2
  263. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +2 -0
  264. package/front_end/third_party/puppeteer/package/src/node/ScreenRecorder.ts +6 -4
  265. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  266. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  267. package/front_end/tsconfig.compatibility.json +2 -1
  268. package/front_end/tsconfig.json +1 -1
  269. package/front_end/ui/components/icon_button/IconButton.ts +1 -1
  270. package/front_end/ui/components/issue_counter/IssueCounter.ts +1 -1
  271. package/front_end/ui/components/settings/SettingCheckbox.ts +4 -7
  272. package/front_end/ui/components/settings/settings.ts +1 -2
  273. package/front_end/ui/legacy/Treeoutline.ts +52 -30
  274. package/front_end/ui/legacy/components/object_ui/CSSStyleSanitizer.ts +74 -0
  275. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +6 -1
  276. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +47 -54
  277. package/front_end/ui/legacy/components/object_ui/object_ui.ts +2 -0
  278. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +5 -27
  279. package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +10 -12
  280. package/front_end/ui/settings/SettingUIRegistration.ts +0 -8
  281. package/front_end/ui/visual_logging/KnownContextValues.ts +37 -0
  282. package/inspector_overlay/tsconfig.json +8 -2
  283. package/package.json +3 -2
  284. package/.agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py +0 -47
  285. package/front_end/core/sdk/CSSModel.test.api.ts +0 -102
  286. package/front_end/core/sdk/DOMModel.test.api.ts +0 -104
  287. package/front_end/foundation/Universe.test.api.ts +0 -73
  288. package/front_end/panels/application/SharedStorageEventsView.ts +0 -128
  289. package/front_end/panels/application/SharedStorageItemsView.ts +0 -179
  290. package/front_end/panels/application/SharedStorageListTreeElement.ts +0 -65
  291. package/front_end/panels/application/SharedStorageModel.ts +0 -249
  292. package/front_end/panels/application/SharedStorageTreeElement.ts +0 -40
  293. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +0 -191
  294. package/front_end/panels/application/components/SharedStorageMetadataView.ts +0 -133
  295. package/front_end/panels/application/components/sharedStorageAccessGrid.css +0 -29
  296. package/front_end/panels/application/components/sharedStorageMetadataView.css +0 -29
  297. package/front_end/panels/application/sharedStorageEventsView.css +0 -9
  298. package/front_end/panels/network/OriginalResourceChunkView.ts +0 -340
  299. package/front_end/panels/network/originalResourceChunkView.css +0 -49
  300. package/front_end/ui/components/settings/SettingDeprecationWarning.ts +0 -47
  301. package/front_end/ui/components/settings/settingDeprecationWarning.css +0 -14
  302. /package/front_end/generated/{ARIAProperties.js → ARIAProperties.ts} +0 -0
@@ -80,13 +80,6 @@ import type {ResourcesPanel} from './ResourcesPanel.js';
80
80
  import resourcesSidebarStyles from './resourcesSidebar.css.js';
81
81
  import {ServiceWorkerCacheTreeElement} from './ServiceWorkerCacheTreeElement.js';
82
82
  import {ServiceWorkersView} from './ServiceWorkersView.js';
83
- import {SharedStorageListTreeElement} from './SharedStorageListTreeElement.js';
84
- import {
85
- Events as SharedStorageModelEvents,
86
- type SharedStorageForOrigin,
87
- SharedStorageModel,
88
- } from './SharedStorageModel.js';
89
- import {SharedStorageTreeElement} from './SharedStorageTreeElement.js';
90
83
  import {StorageBucketsTreeParentElement} from './StorageBucketsTreeElement.js';
91
84
  import {StorageView} from './StorageView.js';
92
85
  import {TrustTokensTreeElement} from './TrustTokensTreeElement.js';
@@ -322,20 +315,6 @@ function nameForExtensionStorageArea(storageArea: Protocol.Extensions.StorageAre
322
315
  }
323
316
  }
324
317
 
325
- export namespace SharedStorageTreeElementDispatcher {
326
- export const enum Events {
327
- SHARED_STORAGE_TREE_ELEMENT_ADDED = 'SharedStorageTreeElementAdded',
328
- }
329
-
330
- export interface SharedStorageTreeElementAddedEvent {
331
- origin: string;
332
- }
333
-
334
- export interface EventTypes {
335
- [Events.SHARED_STORAGE_TREE_ELEMENT_ADDED]: SharedStorageTreeElementAddedEvent;
336
- }
337
- }
338
-
339
318
  export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.TargetManager.Observer {
340
319
  panel: ResourcesPanel;
341
320
  private readonly sidebarTree: UI.TreeOutline.TreeOutlineInShadow;
@@ -348,7 +327,6 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
348
327
  cookieListTreeElement: ExpandableApplicationPanelTreeElement;
349
328
  trustTokensTreeElement: TrustTokensTreeElement;
350
329
  cacheStorageListTreeElement: ServiceWorkerCacheTreeElement;
351
- sharedStorageListTreeElement: SharedStorageListTreeElement;
352
330
  storageBucketsTreeElement: StorageBucketsTreeParentElement|undefined;
353
331
  private backForwardCacheListTreeElement?: BackForwardCacheTreeElement;
354
332
  backgroundFetchTreeElement: BackgroundServiceTreeElement;
@@ -369,13 +347,10 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
369
347
  private extensionIdToStorageTreeParentElement: Map<string, ExtensionStorageTreeParentElement>;
370
348
  private extensionStorageModels: ExtensionStorageModel[];
371
349
  private extensionStorageTreeElements: Map<string, ExtensionStorageTreeElement>;
372
- private sharedStorageTreeElements: Map<string, SharedStorageTreeElement>;
373
350
  private domains: Record<string, boolean>;
374
351
  // Holds main frame target.
375
352
  private target?: SDK.Target.Target;
376
353
  private previousHoveredElement?: FrameTreeElement;
377
- readonly sharedStorageTreeElementDispatcher:
378
- Common.ObjectWrapper.ObjectWrapper<SharedStorageTreeElementDispatcher.EventTypes>;
379
354
 
380
355
  constructor(panel: ResourcesPanel) {
381
356
  super();
@@ -481,9 +456,6 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
481
456
  this.trustTokensTreeElement = new TrustTokensTreeElement(panel);
482
457
  storageTreeElement.appendChild(this.trustTokensTreeElement);
483
458
 
484
- this.sharedStorageListTreeElement = new SharedStorageListTreeElement(panel);
485
- storageTreeElement.appendChild(this.sharedStorageListTreeElement);
486
-
487
459
  this.cacheStorageListTreeElement = new ServiceWorkerCacheTreeElement(panel);
488
460
  storageTreeElement.appendChild(this.cacheStorageListTreeElement);
489
461
 
@@ -540,7 +512,6 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
540
512
  this.extensionIdToStorageTreeParentElement = new Map();
541
513
  this.extensionStorageTreeElements = new Map();
542
514
  this.extensionStorageModels = [];
543
- this.sharedStorageTreeElements = new Map();
544
515
  this.domains = {};
545
516
 
546
517
  this.sidebarTree.contentElement.addEventListener('mousemove', this.onmousemove.bind(this), false);
@@ -576,24 +547,12 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
576
547
  modelRemoved: (model: IndexedDBModel) => this.indexedDBModelRemoved(model),
577
548
  },
578
549
  {scoped: true});
579
- SDK.TargetManager.TargetManager.instance().observeModels(
580
- SharedStorageModel, {
581
- modelAdded: (model: SharedStorageModel) => this.sharedStorageModelAdded(model).catch(err => {
582
- console.error(err);
583
- }),
584
- modelRemoved: (model: SharedStorageModel) => this.sharedStorageModelRemoved(model),
585
- },
586
- {scoped: true});
587
550
  SDK.TargetManager.TargetManager.instance().observeModels(
588
551
  SDK.StorageBucketsModel.StorageBucketsModel, {
589
552
  modelAdded: (model: SDK.StorageBucketsModel.StorageBucketsModel) => this.storageBucketsModelAdded(model),
590
553
  modelRemoved: (model: SDK.StorageBucketsModel.StorageBucketsModel) => this.storageBucketsModelRemoved(model),
591
554
  },
592
555
  {scoped: true});
593
-
594
- this.sharedStorageTreeElementDispatcher =
595
- new Common.ObjectWrapper.ObjectWrapper<SharedStorageTreeElementDispatcher.EventTypes>();
596
-
597
556
  this.contentElement.style.contain = 'layout style';
598
557
  }
599
558
 
@@ -708,27 +667,6 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
708
667
  private indexedDBModelRemoved(model: IndexedDBModel): void {
709
668
  this.indexedDBListTreeElement.removeIndexedDBForModel(model);
710
669
  }
711
-
712
- private async sharedStorageModelAdded(model: SharedStorageModel): Promise<void> {
713
- await model.enable();
714
- for (const storage of model.storages()) {
715
- await this.addSharedStorage(storage);
716
- }
717
- model.addEventListener(SharedStorageModelEvents.SHARED_STORAGE_ADDED, this.sharedStorageAdded, this);
718
- model.addEventListener(SharedStorageModelEvents.SHARED_STORAGE_REMOVED, this.sharedStorageRemoved, this);
719
- model.addEventListener(SharedStorageModelEvents.SHARED_STORAGE_ACCESS, this.sharedStorageAccess, this);
720
- }
721
-
722
- private sharedStorageModelRemoved(model: SharedStorageModel): void {
723
- model.disable();
724
- for (const storage of model.storages()) {
725
- this.removeSharedStorage(storage);
726
- }
727
- model.removeEventListener(SharedStorageModelEvents.SHARED_STORAGE_ADDED, this.sharedStorageAdded, this);
728
- model.removeEventListener(SharedStorageModelEvents.SHARED_STORAGE_REMOVED, this.sharedStorageRemoved, this);
729
- model.removeEventListener(SharedStorageModelEvents.SHARED_STORAGE_ACCESS, this.sharedStorageAccess, this);
730
- }
731
-
732
670
  private storageBucketsModelAdded(model: SDK.StorageBucketsModel.StorageBucketsModel): void {
733
671
  model.enable();
734
672
  }
@@ -787,6 +725,15 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
787
725
 
788
726
  if (frame.isOutermostFrame()) {
789
727
  this.reset();
728
+ const selectedElement = this.sidebarTree.selectedTreeElement;
729
+ if (selectedElement instanceof ExpandableApplicationPanelTreeElement) {
730
+ // Only update AI Assistance storage context for expandable category headers,
731
+ // as all other tree elements are re-rendered on reset.
732
+ const item = selectedElement.createGenericStorageAiContext();
733
+ if (item) {
734
+ UI.Context.Context.instance().setFlavor(AiAssistance.StorageItem.StorageItem, item);
735
+ }
736
+ }
790
737
  }
791
738
  this.addCookieDocument(frame);
792
739
  }
@@ -962,50 +909,6 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
962
909
  this.extensionStorageTreeElements.delete(extensionStorage.key);
963
910
  }
964
911
 
965
- private async sharedStorageAdded(event: Common.EventTarget.EventTargetEvent<SharedStorageForOrigin>): Promise<void> {
966
- await this.addSharedStorage(event.data);
967
- }
968
-
969
- private async addSharedStorage(sharedStorage: SharedStorageForOrigin): Promise<void> {
970
- const sharedStorageTreeElement = await SharedStorageTreeElement.createElement(this.panel, sharedStorage);
971
-
972
- // A tree element for `sharedStorage.securityOrigin` may have been added while we were waiting for `sharedStorageTreeElement` to be created.
973
- if (this.sharedStorageTreeElements.has(sharedStorage.securityOrigin)) {
974
- return;
975
- }
976
- this.sharedStorageTreeElements.set(sharedStorage.securityOrigin, sharedStorageTreeElement);
977
- this.sharedStorageListTreeElement.appendChild(sharedStorageTreeElement);
978
- this.sharedStorageTreeElementDispatcher.dispatchEventToListeners(
979
- SharedStorageTreeElementDispatcher.Events.SHARED_STORAGE_TREE_ELEMENT_ADDED,
980
- {origin: sharedStorage.securityOrigin});
981
- }
982
-
983
- private sharedStorageRemoved(event: Common.EventTarget.EventTargetEvent<SharedStorageForOrigin>): void {
984
- this.removeSharedStorage(event.data);
985
- }
986
-
987
- private removeSharedStorage(sharedStorage: SharedStorageForOrigin): void {
988
- const treeElement = this.sharedStorageTreeElements.get(sharedStorage.securityOrigin);
989
- if (!treeElement) {
990
- return;
991
- }
992
- const wasSelected = treeElement.selected;
993
- const parentListTreeElement = treeElement.parent;
994
- if (parentListTreeElement) {
995
- parentListTreeElement.removeChild(treeElement);
996
- parentListTreeElement.setExpandable(parentListTreeElement.childCount() > 0);
997
- if (wasSelected) {
998
- parentListTreeElement.select();
999
- }
1000
- }
1001
- this.sharedStorageTreeElements.delete(sharedStorage.securityOrigin);
1002
- }
1003
-
1004
- private sharedStorageAccess(event: Common.EventTarget.EventTargetEvent<Protocol.Storage.SharedStorageAccessedEvent>):
1005
- void {
1006
- this.sharedStorageListTreeElement.addEvent(event.data);
1007
- }
1008
-
1009
912
  async showResource(resource: SDK.Resource.Resource, line?: number, column?: number): Promise<void> {
1010
913
  await this.resourcesSection.revealResource(resource, line, column);
1011
914
  }
@@ -133,7 +133,7 @@ export class ExpandableApplicationPanelTreeElement extends ApplicationPanelTreeE
133
133
  this.categoryDescription = categoryDescription;
134
134
  }
135
135
 
136
- protected createGenericStorageAiContext(): AiAssistance.StorageItem.StorageItem|null {
136
+ createGenericStorageAiContext(): AiAssistance.StorageItem.StorageItem|null {
137
137
  const target = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
138
138
  const mainPageOrigin =
139
139
  target?.inspectedURL() ? Common.ParsedURL.ParsedURL.extractOrigin(target.inspectedURL()) : '';
@@ -31,11 +31,6 @@ import * as ServiceWorkerCacheTreeElement from './ServiceWorkerCacheTreeElement.
31
31
  import * as ServiceWorkerCacheViews from './ServiceWorkerCacheViews.js';
32
32
  import * as ServiceWorkersView from './ServiceWorkersView.js';
33
33
  import * as ServiceWorkerUpdateCycleView from './ServiceWorkerUpdateCycleView.js';
34
- import * as SharedStorageEventsView from './SharedStorageEventsView.js';
35
- import * as SharedStorageItemsView from './SharedStorageItemsView.js';
36
- import * as SharedStorageListTreeElement from './SharedStorageListTreeElement.js';
37
- import * as SharedStorageModel from './SharedStorageModel.js';
38
- import * as SharedStorageTreeElement from './SharedStorageTreeElement.js';
39
34
  import * as StorageBucketsTreeElement from './StorageBucketsTreeElement.js';
40
35
  import * as StorageItemsToolbar from './StorageItemsToolbar.js';
41
36
  import * as StorageView from './StorageView.js';
@@ -74,11 +69,6 @@ export {
74
69
  ServiceWorkerCacheViews,
75
70
  ServiceWorkersView,
76
71
  ServiceWorkerUpdateCycleView,
77
- SharedStorageEventsView,
78
- SharedStorageItemsView,
79
- SharedStorageListTreeElement,
80
- SharedStorageModel,
81
- SharedStorageTreeElement,
82
72
  StorageBucketsTreeElement,
83
73
  StorageItemsToolbar,
84
74
  StorageView,
@@ -11,8 +11,6 @@ import * as PermissionsPolicySection from './PermissionsPolicySection.js';
11
11
  import * as ProtocolHandlersView from './ProtocolHandlersView.js';
12
12
  import * as ReportsGrid from './ReportsGrid.js';
13
13
  import * as ServiceWorkerRouterView from './ServiceWorkerRouterView.js';
14
- import * as SharedStorageAccessGrid from './SharedStorageAccessGrid.js';
15
- import * as SharedStorageMetadataView from './SharedStorageMetadataView.js';
16
14
  import * as StorageMetadataView from './StorageMetadataView.js';
17
15
  import * as TrustTokensView from './TrustTokensView.js';
18
16
 
@@ -26,8 +24,6 @@ export {
26
24
  ProtocolHandlersView,
27
25
  ReportsGrid,
28
26
  ServiceWorkerRouterView,
29
- SharedStorageAccessGrid,
30
- SharedStorageMetadataView,
31
27
  StorageMetadataView,
32
28
  TrustTokensView,
33
29
  };
@@ -89,10 +89,6 @@ const UIStrings = {
89
89
  * @description Category of event listener breakpoints for script events.
90
90
  */
91
91
  script: 'Script',
92
- /**
93
- * @description Category of event listener breakpoints for shared storage worklet events.
94
- */
95
- sharedStorageWorklet: 'Shared storage worklet',
96
92
  /**
97
93
  * @description Category of event listener breakpoints for timer events.
98
94
  */
@@ -386,7 +382,6 @@ const LOCALIZED_CATEGORIES: Record<SDK.CategorizedBreakpoint.Category, () => Pla
386
382
  [SDK.CategorizedBreakpoint.Category.PICTURE_IN_PICTURE]: i18nLazyString(UIStrings.pictureinpicture),
387
383
  [SDK.CategorizedBreakpoint.Category.POINTER]: i18nLazyString(UIStrings.pointer),
388
384
  [SDK.CategorizedBreakpoint.Category.SCRIPT]: i18nLazyString(UIStrings.script),
389
- [SDK.CategorizedBreakpoint.Category.SHARED_STORAGE_WORKLET]: i18nLazyString(UIStrings.sharedStorageWorklet),
390
385
  [SDK.CategorizedBreakpoint.Category.TIMER]: i18nLazyString(UIStrings.timer),
391
386
  [SDK.CategorizedBreakpoint.Category.TOUCH]: i18nLazyString(UIStrings.touch),
392
387
  [SDK.CategorizedBreakpoint.Category.TRUSTED_TYPE_VIOLATION]: i18nLazyString(UIStrings.trustedTypeViolations),
@@ -7,25 +7,19 @@ import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
7
7
 
8
8
  import {CategorizedBreakpointsSidebarPane} from './CategorizedBreakpointsSidebarPane.js';
9
9
 
10
- let eventListenerBreakpointsSidebarPaneInstance: EventListenerBreakpointsSidebarPane;
11
-
12
10
  export class EventListenerBreakpointsSidebarPane extends CategorizedBreakpointsSidebarPane {
13
- private constructor() {
11
+ readonly #eventBreakpointsManager: SDK.EventBreakpointsModel.EventBreakpointsManager;
12
+
13
+ constructor(eventBreakpointsManager: SDK.EventBreakpointsModel.EventBreakpointsManager) {
14
14
  let breakpoints: SDK.CategorizedBreakpoint.CategorizedBreakpoint[] =
15
15
  SDK.DOMDebuggerModel.DOMDebuggerManager.instance().eventListenerBreakpoints();
16
- const nonDomBreakpoints = SDK.EventBreakpointsModel.EventBreakpointsManager.instance().eventListenerBreakpoints();
16
+ const nonDomBreakpoints = eventBreakpointsManager.eventListenerBreakpoints();
17
17
  breakpoints = breakpoints.concat(nonDomBreakpoints);
18
18
 
19
19
  super(
20
20
  breakpoints, `${VisualLogging.section('sources.event-listener-breakpoints')}`,
21
21
  'sources.event-listener-breakpoints');
22
- }
23
-
24
- static instance(): EventListenerBreakpointsSidebarPane {
25
- if (!eventListenerBreakpointsSidebarPaneInstance) {
26
- eventListenerBreakpointsSidebarPaneInstance = new EventListenerBreakpointsSidebarPane();
27
- }
28
- return eventListenerBreakpointsSidebarPaneInstance;
22
+ this.#eventBreakpointsManager = eventBreakpointsManager;
29
23
  }
30
24
 
31
25
  override getBreakpointFromPausedDetails(details: SDK.DebuggerModel.DebuggerPausedDetails):
@@ -39,6 +33,6 @@ export class EventListenerBreakpointsSidebarPane extends CategorizedBreakpointsS
39
33
  if (domBreakpoint) {
40
34
  return domBreakpoint;
41
35
  }
42
- return SDK.EventBreakpointsModel.EventBreakpointsManager.instance().resolveEventListenerBreakpoint(auxData);
36
+ return this.#eventBreakpointsManager.resolveEventListenerBreakpoint(auxData);
43
37
  }
44
38
  }
@@ -2,6 +2,7 @@
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
+ import * as Common from '../../core/common/common.js';
5
6
  import * as i18n from '../../core/i18n/i18n.js';
6
7
  import * as Root from '../../core/root/root.js';
7
8
  import * as SDK from '../../core/sdk/sdk.js';
@@ -116,10 +117,11 @@ async function loadSourcesModule(): Promise<typeof Sources> {
116
117
  }
117
118
 
118
119
  UI.ViewManager.registerViewExtension({
119
- async loadView() {
120
+ loadView: Common.Lazy.lazy(async universe => {
120
121
  const BrowserDebugger = await loadBrowserDebuggerModule();
121
- return BrowserDebugger.EventListenerBreakpointsSidebarPane.EventListenerBreakpointsSidebarPane.instance();
122
- },
122
+ return new BrowserDebugger.EventListenerBreakpointsSidebarPane.EventListenerBreakpointsSidebarPane(
123
+ universe.eventBreakpointsManager);
124
+ }),
123
125
  id: 'sources.event-listener-breakpoints',
124
126
  location: UI.ViewManager.ViewLocationValues.SOURCES_SIDEBAR_BOTTOM,
125
127
  commandPrompt: i18nLazyString(UIStrings.showEventListenerBreakpoints),
@@ -2,9 +2,8 @@
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
- import * as Common from '../../core/common/common.js';
6
- import type * as Platform from '../../core/platform/platform.js';
7
5
  import type * as SDK from '../../core/sdk/sdk.js';
6
+ import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
8
7
 
9
8
  // VGA color palette
10
9
  const ANSI_COLORS = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'gray'];
@@ -199,65 +198,6 @@ export const format = (fmt: string, args: SDK.RemoteObject.RemoteObject[]): {
199
198
  return {tokens, args: args.slice(argIndex)};
200
199
  };
201
200
 
202
- /**
203
- * This function converts a string into a partial regex string that
204
- * case-insensitively matches it in CSS, even if CSS escapes are used.
205
- *
206
- * @param cssString the target string.
207
- * @returns a partial regex matching the string in CSS.
208
- */
209
- const cssEscapeRegex = (cssString: string): string => {
210
- return [...cssString]
211
- .map(char => {
212
- const charCodes = new Set([char.toLowerCase(), char.toUpperCase()].map(c => c.charCodeAt(0).toString(16)));
213
- const charCodeRegex =
214
- [...charCodes].map(charCode => `\\\\0{0,${6 - charCode.length}}${charCode}[ \\n\\t]?`).join('|');
215
- return `\\\\?(?:${charCodeRegex}|${char})`;
216
- })
217
- .join('');
218
- };
219
-
220
201
  export const updateStyle = (currentStyle: Map<string, {value: string, priority: string}>, styleToAdd: string): void => {
221
- const ALLOWED_PROPERTY_PREFIXES = ['background', 'border', 'color', 'font', 'line', 'margin', 'padding', 'text'];
222
- // We only allow data URLs with the `url()` CSS function.
223
- // The capture group is not intended to grab the whole URL exactly, just enough so we can check the scheme.
224
- // The regex also covers CSS hex-escaped variations of `url()`.
225
- const URL_REGEX = new RegExp(`(?=${cssEscapeRegex('url')}\\(['"]?([^\\)]*))`, 'gi');
226
- // We greedily capture all `image-set()`s to make sure that all of
227
- // them properly use `url()`s to enforce the data URL check later.
228
- const IMAGESET_REGEX = new RegExp(`(?=(${cssEscapeRegex('image-set')}\\(.*))`, 'gi');
229
- const GOOD_IMAGESET_REGEX = /^image-set\((?:(?:(?:url|type)\("[^\\"]*"\)|[\d.]+(?:x|dpi|dpcm|dppx)),?\s*)+\)/i;
230
-
231
- currentStyle.clear();
232
- /* eslint-disable-next-line @devtools/no-imperative-dom-api --
233
- * We're not mutating the DOM here, but just need a temporary
234
- * `<span>` to parse `styleToAdd` into a `CSSStyleDeclaration`.
235
- **/
236
- const buffer = document.createElement('span');
237
- buffer.setAttribute('style', styleToAdd);
238
- for (const property of buffer.style) {
239
- if (!ALLOWED_PROPERTY_PREFIXES.some(
240
- prefix => property.startsWith(prefix) || property.startsWith(`-webkit-${prefix}`))) {
241
- continue;
242
- }
243
-
244
- const value = buffer.style.getPropertyValue(property);
245
- // We make sure every `image-set()` only uses `url()`s for its images.
246
- // If any of them seem malformed, we skip the whole property.
247
- const imageSets = [...value.matchAll(IMAGESET_REGEX)];
248
- if (imageSets.some(match => !GOOD_IMAGESET_REGEX.test(match[1]))) {
249
- continue;
250
- }
251
- // There could be multiple `url()` functions, so we check them all.
252
- // If any of them is not a `data` URL, we skip the whole property.
253
- const potentialUrls = [...value.matchAll(URL_REGEX)].map(match => match[1]);
254
- if (potentialUrls.some(
255
- potentialUrl => !Common.ParsedURL.schemeIs(potentialUrl as Platform.DevToolsPath.UrlString, 'data:'))) {
256
- continue;
257
- }
258
- currentStyle.set(property, {
259
- value,
260
- priority: buffer.style.getPropertyPriority(property),
261
- });
262
- }
202
+ ObjectUI.CSSStyleSanitizer.sanitizeStyle(currentStyle, styleToAdd);
263
203
  };
@@ -880,9 +880,13 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
880
880
  if (includePreview && obj.preview) {
881
881
  renderPreview(true);
882
882
  } else if (obj.type === 'function') {
883
- const functionElement = titleElement.createChild('span');
884
- void ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(obj, functionElement, false);
885
883
  titleElement.classList.add('object-value-function');
884
+ void ObjectUI.ObjectPropertiesSection.formatObjectAsFunction(obj, false).then(t => {
885
+ const fragment = document.createDocumentFragment();
886
+
887
+ render(t, fragment, {host: this});
888
+ titleElement.insertBefore(fragment, titleElement.firstChild);
889
+ });
886
890
  } else if (obj.subtype === 'trustedtype') {
887
891
  titleElement.appendChild(this.formatParameterAsTrustedType(obj));
888
892
  } else {
@@ -923,16 +927,19 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
923
927
  return result;
924
928
 
925
929
  function formatTargetFunction(this: ConsoleViewMessage, targetFunction: SDK.RemoteObject.RemoteObject): void {
926
- const functionElement = document.createElement('span');
927
- const promise = ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(
928
- targetFunction, functionElement, true, includePreview);
929
- result.appendChild(functionElement);
930
+ const promise = ObjectUI.ObjectPropertiesSection.formatObjectAsFunction(targetFunction, true, includePreview);
930
931
  if (targetFunction !== originalFunction) {
931
932
  const note = result.createChild('span', 'object-state-note info-note');
932
933
  UI.Tooltip.Tooltip.install(note, i18nString(UIStrings.functionWasResolvedFromBound));
933
934
  }
934
935
  result.addEventListener('contextmenu', this.contextMenuEventFired.bind(this, originalFunction), false);
935
- void promise.then(() => this.formattedParameterAsFunctionForTest());
936
+ void promise.then(t => {
937
+ const fragment = document.createDocumentFragment();
938
+
939
+ render(t, fragment, {host: this});
940
+ result.insertBefore(fragment, result.firstChild);
941
+ this.formattedParameterAsFunctionForTest();
942
+ });
936
943
  }
937
944
  }
938
945
 
@@ -40,7 +40,6 @@ import * as Common from '../../core/common/common.js';
40
40
  import * as Host from '../../core/host/host.js';
41
41
  import * as i18n from '../../core/i18n/i18n.js';
42
42
  import * as Platform from '../../core/platform/platform.js';
43
- import * as Root from '../../core/root/root.js';
44
43
  import * as SDK from '../../core/sdk/sdk.js';
45
44
  import * as TextUtils from '../../core/text_utils/text_utils.js';
46
45
  import * as Protocol from '../../generated/protocol.js';
@@ -1388,7 +1387,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
1388
1387
  showGridAdorner: Boolean(this.#layout?.isGrid) && !this.isClosingTag(),
1389
1388
  showGridLanesAdorner: Boolean(this.#layout?.isGridLanes) && !this.isClosingTag(),
1390
1389
  showMediaAdorner: this.node().isMediaNode() && !this.isClosingTag(),
1391
- showPopoverAdorner: Boolean(Root.Runtime.hostConfig.devToolsAllowPopoverForcing?.enabled) &&
1390
+ showPopoverAdorner:
1392
1391
  Boolean(this.node().attributes().find(attr => attr.name === 'popover')) && !this.isClosingTag(),
1393
1392
  showTopLayerAdorner: this.node().topLayerIndex() !== -1 && !this.isClosingTag(),
1394
1393
  gridAdornerActive: this.#gridAdornerActive,
@@ -58,8 +58,7 @@ export class AdvancedApp implements UI.App.App {
58
58
 
59
59
  this.inspectedPagePlaceholder = InspectedPagePlaceholder.instance();
60
60
  this.inspectedPagePlaceholder.addEventListener(Events.UPDATE, this.onSetInspectedPageBounds.bind(this), this);
61
- this.deviceModeView =
62
- DeviceModeWrapper.instance({inspectedPagePlaceholder: this.inspectedPagePlaceholder, forceNew: false});
61
+ this.deviceModeView = new DeviceModeWrapper();
63
62
 
64
63
  UI.DockController.DockController.instance().addEventListener(
65
64
  UI.DockController.Events.BEFORE_DOCK_SIDE_CHANGED, this.onBeforeDockSideChange, this);