chrome-devtools-frontend 1.0.1616061 → 1.0.1621064

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 (318) hide show
  1. package/AUTHORS +1 -0
  2. package/docs/checklist/README.md +8 -7
  3. package/eslint.config.mjs +7 -0
  4. package/front_end/core/common/Object.ts +11 -2
  5. package/front_end/core/dom_extension/DOMExtension.ts +11 -8
  6. package/front_end/core/host/AidaClient.ts +8 -0
  7. package/front_end/core/host/AidaGcaTranslation.ts +1 -0
  8. package/front_end/core/host/UserMetrics.ts +0 -1
  9. package/front_end/core/platform/api/HostRuntime.ts +2 -2
  10. package/front_end/core/platform/browser/HostRuntime.ts +4 -2
  11. package/front_end/core/platform/node/HostRuntime.ts +2 -2
  12. package/front_end/core/root/ExperimentNames.ts +0 -1
  13. package/front_end/core/sdk/NetworkManager.ts +30 -4
  14. package/front_end/core/sdk/NetworkRequest.ts +2 -10
  15. package/front_end/core/sdk/Resource.ts +2 -1
  16. package/front_end/core/sdk/ServerSentEventsProtocol.ts +1 -1
  17. package/front_end/core/sdk/TraceObject.ts +7 -2
  18. package/front_end/entrypoint_template.html +1 -2
  19. package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +119 -15
  20. package/front_end/entrypoints/greendev_floaty/greendev_floaty.ts +0 -2
  21. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +43 -33
  22. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +2 -1
  23. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotWorkerDispatcher.ts +9 -6
  24. package/front_end/entrypoints/main/MainImpl.ts +0 -2
  25. package/front_end/generated/InspectorBackendCommands.ts +8 -7
  26. package/front_end/generated/SupportedCSSProperties.js +119 -100
  27. package/front_end/generated/protocol-mapping.d.ts +1 -9
  28. package/front_end/generated/protocol-proxy-api.d.ts +1 -9
  29. package/front_end/generated/protocol.ts +24 -1
  30. package/front_end/legacy/legacy-defs.d.ts +1 -1
  31. package/front_end/models/ai_assistance/AiConversation.ts +1 -0
  32. package/front_end/models/ai_assistance/AiHistoryStorage.ts +39 -0
  33. package/front_end/models/ai_assistance/agents/AiAgent.ts +2 -0
  34. package/front_end/models/ai_assistance/agents/ConversationSummaryAgent.ts +28 -16
  35. package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +512 -0
  36. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +112 -145
  37. package/front_end/models/ai_assistance/agents/README.md +0 -5
  38. package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -16
  39. package/front_end/models/ai_assistance/ai_assistance.ts +2 -0
  40. package/front_end/models/ai_code_completion/AiCodeCompletion.ts +19 -1
  41. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +48 -13
  42. package/front_end/models/bindings/SymbolizedError.ts +95 -8
  43. package/front_end/models/emulation/DeviceModeModel.ts +42 -13
  44. package/front_end/models/emulation/EmulatedDevices.ts +1 -1
  45. package/front_end/models/issues_manager/IssuesManager.ts +13 -6
  46. package/front_end/models/issues_manager/IssuesManagerEvents.ts +1 -0
  47. package/front_end/models/javascript_metadata/NativeFunctions.js +2 -2
  48. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +1 -0
  49. package/front_end/models/stack_trace/DetailedErrorStackParser.ts +49 -10
  50. package/front_end/models/stack_trace/ErrorStackParser.ts +18 -0
  51. package/front_end/models/stack_trace/StackTraceModel.ts +5 -1
  52. package/front_end/models/text_utils/ContentData.ts +71 -10
  53. package/front_end/models/trace/types/File.ts +8 -1
  54. package/front_end/models/web_mcp/WebMCPModel.ts +22 -0
  55. package/front_end/models/workspace/UISourceCode.ts +4 -4
  56. package/front_end/panels/accessibility/ARIAAttributesView.ts +4 -4
  57. package/front_end/panels/accessibility/AccessibilitySubPane.ts +3 -2
  58. package/front_end/panels/accessibility/SourceOrderView.ts +4 -4
  59. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  60. package/front_end/panels/ai_assistance/components/ChatInput.ts +66 -0
  61. package/front_end/panels/ai_assistance/components/ChatMessage.ts +144 -21
  62. package/front_end/panels/ai_assistance/components/ChatView.ts +43 -8
  63. package/front_end/panels/ai_assistance/components/ExportForAgentsDialog.ts +1 -0
  64. package/front_end/panels/ai_assistance/components/WalkthroughUtils.ts +74 -0
  65. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +34 -5
  66. package/front_end/panels/ai_assistance/components/chatMessage.css +11 -0
  67. package/front_end/panels/ai_assistance/components/walkthroughView.css +7 -0
  68. package/front_end/panels/application/ApplicationPanelTreeElement.ts +1 -1
  69. package/front_end/panels/application/CookieItemsView.ts +8 -9
  70. package/front_end/panels/application/DOMStorageItemsView.ts +3 -3
  71. package/front_end/panels/application/DeviceBoundSessionsModel.ts +7 -0
  72. package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +21 -0
  73. package/front_end/panels/application/DeviceBoundSessionsView.ts +2 -2
  74. package/front_end/panels/application/ExtensionStorageItemsView.ts +1 -1
  75. package/front_end/panels/application/KeyValueStorageItemsView.ts +32 -14
  76. package/front_end/panels/application/ResourcesPanel.ts +5 -5
  77. package/front_end/panels/application/StorageItemsToolbar.ts +0 -19
  78. package/front_end/panels/application/WebMCPView.ts +285 -86
  79. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +4 -4
  80. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +4 -4
  81. package/front_end/panels/application/webMCPView.css +261 -182
  82. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +9 -5
  83. package/front_end/panels/changes/ChangesSidebar.ts +2 -2
  84. package/front_end/panels/changes/ChangesView.ts +9 -14
  85. package/front_end/panels/console/ConsolePanel.ts +10 -3
  86. package/front_end/panels/console/ConsoleSidebar.ts +5 -5
  87. package/front_end/panels/console/ConsoleView.ts +11 -4
  88. package/front_end/panels/console/ConsoleViewMessage.ts +1 -19
  89. package/front_end/panels/coverage/CoverageView.ts +4 -5
  90. package/front_end/panels/elements/ElementsPanel.ts +9 -12
  91. package/front_end/panels/elements/ElementsSidebarPane.ts +4 -5
  92. package/front_end/panels/elements/ElementsTreeElement.ts +61 -0
  93. package/front_end/panels/elements/ElementsTreeOutline.ts +46 -0
  94. package/front_end/panels/elements/LayersWidget.ts +2 -2
  95. package/front_end/panels/elements/MetricsSidebarPane.ts +5 -4
  96. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  97. package/front_end/panels/elements/StylePropertyTreeElement.ts +11 -6
  98. package/front_end/panels/elements/StylesSidebarPane.ts +4 -1
  99. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +19 -20
  100. package/front_end/panels/elements/components/ElementsBreadcrumbsUtils.ts +29 -29
  101. package/front_end/panels/elements/components/QueryContainer.ts +5 -6
  102. package/front_end/panels/elements/components/components.ts +0 -2
  103. package/front_end/panels/emulation/MediaQueryInspector.ts +4 -7
  104. package/front_end/panels/layer_viewer/LayerDetailsView.ts +4 -7
  105. package/front_end/panels/layer_viewer/Layers3DView.ts +2 -2
  106. package/front_end/panels/lighthouse/LighthouseStartView.ts +2 -2
  107. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +47 -66
  108. package/front_end/panels/network/NetworkConfigView.ts +11 -11
  109. package/front_end/panels/network/RequestConditionsDrawer.ts +6 -4
  110. package/front_end/panels/network/RequestCookiesView.ts +2 -2
  111. package/front_end/panels/network/RequestDeviceBoundSessionsView.ts +2 -2
  112. package/front_end/panels/network/RequestHeadersView.ts +2 -2
  113. package/front_end/panels/network/components/DirectSocketConnectionView.ts +4 -5
  114. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +6 -9
  115. package/front_end/panels/profiler/HeapProfileView.ts +29 -4
  116. package/front_end/panels/profiler/ProfilesPanel.ts +1 -1
  117. package/front_end/panels/protocol_monitor/JSONEditor.css +8 -1
  118. package/front_end/panels/protocol_monitor/JSONEditor.ts +7 -2
  119. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +6 -4
  120. package/front_end/panels/recorder/components/ControlButton.ts +4 -4
  121. package/front_end/panels/recorder/components/StepView.ts +6 -6
  122. package/front_end/panels/search/SearchView.ts +4 -7
  123. package/front_end/panels/sources/DebuggerPausedMessage.ts +18 -22
  124. package/front_end/panels/sources/SourcesView.ts +1 -1
  125. package/front_end/panels/sources/TabbedEditorContainer.ts +2 -2
  126. package/front_end/panels/sources/ThreadsSidebarPane.ts +2 -4
  127. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +24 -20
  128. package/front_end/panels/timeline/StatusDialog.ts +5 -8
  129. package/front_end/panels/timeline/ThirdPartyTreeView.ts +10 -0
  130. package/front_end/panels/timeline/TimelineLoader.ts +3 -4
  131. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +2 -2
  132. package/front_end/panels/timeline/components/TimelineRangeSummaryView.ts +2 -0
  133. package/front_end/panels/timeline/components/TimelineSummary.ts +9 -1
  134. package/front_end/panels/timeline/components/timelineSummary.css +4 -0
  135. package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +2 -2
  136. package/front_end/panels/timeline/thirdPartyTreeView.css +8 -1
  137. package/front_end/panels/web_audio/WebAudioView.ts +5 -4
  138. package/front_end/panels/whats_new/ReleaseNoteText.ts +9 -9
  139. package/front_end/panels/whats_new/resources/WNDT.md +9 -6
  140. package/front_end/third_party/chromium/README.chromium +1 -1
  141. package/front_end/third_party/puppeteer/README.chromium +2 -2
  142. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +41 -2
  143. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
  144. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.d.ts +13 -1
  146. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.d.ts.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.js +21 -1
  148. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.js.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +1 -0
  151. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -1
  152. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +2 -2
  153. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +5 -5
  155. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  157. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +2 -2
  158. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
  159. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +1 -0
  161. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
  162. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.d.ts +1 -1
  163. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.d.ts.map +1 -1
  164. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.js +2 -2
  165. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.js.map +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts +1 -1
  167. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  168. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js +52 -1
  169. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebMCP.d.ts.map +1 -1
  171. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebMCP.js.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +25 -0
  173. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  175. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +2 -2
  177. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  179. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +0 -1
  180. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +2 -2
  182. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +2 -2
  183. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  184. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  186. package/front_end/third_party/puppeteer/package/lib/cjs/third_party/urlpattern-polyfill/urlpattern-polyfill.d.ts +1 -0
  187. package/front_end/third_party/puppeteer/package/lib/cjs/third_party/urlpattern-polyfill/urlpattern-polyfill.js +853 -0
  188. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +91 -11
  189. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +1046 -33
  190. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +41 -2
  191. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
  192. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.d.ts +13 -1
  194. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.d.ts.map +1 -1
  195. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.js +21 -1
  196. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.js.map +1 -1
  197. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +1 -0
  199. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +2 -2
  201. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +5 -5
  203. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  205. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +2 -2
  206. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
  207. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +1 -0
  209. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.d.ts +1 -1
  211. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.d.ts.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.js +2 -2
  213. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.js.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts +1 -1
  215. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js +52 -1
  217. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebMCP.d.ts.map +1 -1
  219. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebMCP.js.map +1 -1
  220. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +25 -0
  221. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  222. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/injected.d.ts +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  224. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +2 -2
  225. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  226. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +0 -1
  228. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +2 -2
  230. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +2 -2
  231. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Mutex.d.ts +2 -2
  232. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  233. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/esm/third_party/urlpattern-polyfill/urlpattern-polyfill.d.ts +1 -0
  235. package/front_end/third_party/puppeteer/package/lib/esm/third_party/urlpattern-polyfill/urlpattern-polyfill.js +805 -0
  236. package/front_end/third_party/puppeteer/package/lib/types.d.ts +91 -11
  237. package/front_end/third_party/puppeteer/package/package.json +3 -2
  238. package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +53 -11
  239. package/front_end/third_party/puppeteer/package/src/api/Extension.ts +29 -1
  240. package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +1 -0
  241. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +6 -0
  242. package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -0
  243. package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +1 -0
  244. package/front_end/third_party/puppeteer/package/src/cdp/Extension.ts +9 -2
  245. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +59 -0
  246. package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +6 -1
  247. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +26 -0
  248. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +2 -0
  249. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +0 -1
  250. package/front_end/third_party/puppeteer/package/src/revisions.ts +2 -2
  251. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  252. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +2 -1
  253. package/front_end/third_party/web-vitals/README.chromium +2 -2
  254. package/front_end/third_party/web-vitals/package/README.md +21 -10
  255. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.js +2 -4
  256. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.js +1 -2
  257. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.d.ts +4 -0
  258. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +44 -39
  259. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +25 -19
  260. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.js +1 -2
  261. package/front_end/third_party/web-vitals/package/dist/modules/lib/doubleRAF.js +1 -1
  262. package/front_end/third_party/web-vitals/package/dist/modules/lib/getActivationStart.js +1 -2
  263. package/front_end/third_party/web-vitals/package/dist/modules/lib/getLoadState.js +16 -18
  264. package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.js +2 -1
  265. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +1 -1
  266. package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.js +1 -1
  267. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/interactionCountPolyfill.d.ts +1 -1
  268. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/interactionCountPolyfill.js +1 -3
  269. package/front_end/third_party/web-vitals/package/dist/modules/lib/whenActivated.js +1 -1
  270. package/front_end/third_party/web-vitals/package/dist/modules/lib/whenIdleOrHidden.js +11 -7
  271. package/front_end/third_party/web-vitals/package/dist/modules/onCLS.js +1 -1
  272. package/front_end/third_party/web-vitals/package/dist/modules/types/inp.d.ts +4 -0
  273. package/front_end/third_party/web-vitals/package/dist/modules/types.d.ts +1 -2
  274. package/front_end/third_party/web-vitals/package/dist/modules/types.js +0 -1
  275. package/front_end/third_party/web-vitals/package/package.json +24 -27
  276. package/front_end/third_party/web-vitals/package/src/attribution/onCLS.ts +2 -7
  277. package/front_end/third_party/web-vitals/package/src/attribution/onFCP.ts +1 -2
  278. package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +49 -43
  279. package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +27 -24
  280. package/front_end/third_party/web-vitals/package/src/attribution/onTTFB.ts +1 -2
  281. package/front_end/third_party/web-vitals/package/src/lib/doubleRAF.ts +1 -1
  282. package/front_end/third_party/web-vitals/package/src/lib/getActivationStart.ts +1 -2
  283. package/front_end/third_party/web-vitals/package/src/lib/getLoadState.ts +21 -20
  284. package/front_end/third_party/web-vitals/package/src/lib/getVisibilityWatcher.ts +2 -3
  285. package/front_end/third_party/web-vitals/package/src/lib/observe.ts +1 -1
  286. package/front_end/third_party/web-vitals/package/src/lib/polyfills/interactionCountPolyfill.ts +2 -4
  287. package/front_end/third_party/web-vitals/package/src/lib/whenActivated.ts +1 -1
  288. package/front_end/third_party/web-vitals/package/src/lib/whenIdleOrHidden.ts +13 -7
  289. package/front_end/third_party/web-vitals/package/src/onCLS.ts +1 -1
  290. package/front_end/third_party/web-vitals/package/src/types/inp.ts +4 -0
  291. package/front_end/third_party/web-vitals/package/src/types.ts +1 -2
  292. package/front_end/third_party/web-vitals/patches/0001-Add-onEachInteraction-to-onINP-options.patch +13 -74
  293. package/front_end/third_party/web-vitals/rebuild.sh +3 -3
  294. package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +0 -1
  295. package/front_end/ui/components/icon_button/iconButton.css +1 -0
  296. package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +6 -6
  297. package/front_end/ui/components/lists/list.css +4 -0
  298. package/front_end/ui/legacy/Dialog.ts +21 -2
  299. package/front_end/ui/legacy/SoftContextMenu.ts +3 -3
  300. package/front_end/ui/legacy/SplitWidget.ts +9 -9
  301. package/front_end/ui/legacy/TabbedPane.ts +12 -12
  302. package/front_end/ui/legacy/View.ts +24 -22
  303. package/front_end/ui/legacy/ViewManager.ts +12 -12
  304. package/front_end/ui/legacy/ViewRegistration.ts +2 -2
  305. package/front_end/ui/legacy/Widget.ts +165 -119
  306. package/front_end/ui/legacy/components/source_frame/ImageView.ts +10 -5
  307. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +9 -6
  308. package/front_end/ui/legacy/components/utils/Linkifier.ts +37 -11
  309. package/front_end/ui/legacy/components/utils/jsUtils.css +1 -0
  310. package/front_end/ui/legacy/inspectorCommon.css +0 -6
  311. package/front_end/ui/lit/render.ts +11 -9
  312. package/front_end/ui/visual_logging/KnownContextValues.ts +36 -0
  313. package/package.json +1 -1
  314. package/front_end/Images/src/dots-circle.svg +0 -10
  315. package/front_end/panels/elements/components/Helper.ts +0 -35
  316. package/front_end/third_party/web-vitals/package/dist/modules/types/polyfills.d.ts +0 -4
  317. package/front_end/third_party/web-vitals/package/dist/modules/types/polyfills.js +0 -16
  318. package/front_end/third_party/web-vitals/package/src/types/polyfills.ts +0 -24
@@ -91,7 +91,7 @@ export interface ViewInput {
91
91
  pageURL: string;
92
92
  }
93
93
 
94
- export const DEFAULT_VIEW = (input: ViewInput, _output: Record<string, never>, target: HTMLElement): void => {
94
+ export const DEFAULT_VIEW = (input: ViewInput, _output: Record<string, never>, target: DocumentFragment): void => {
95
95
  // clang-format off
96
96
  render(html`
97
97
  <devtools-data-grid striped inline>
@@ -146,7 +146,7 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: Record<string, never>, t
146
146
  </tr>
147
147
  `)}
148
148
  </table>
149
- </devtools-data-grid>`, target);
149
+ </devtools-data-grid>`, target, {container: {classes: ['devtools-resources-mismatched-preloading-grid']}});
150
150
  // clang-format on
151
151
  };
152
152
 
@@ -164,12 +164,12 @@ export interface MismatchedPreloadingGridData {
164
164
  type ViewFunction = typeof DEFAULT_VIEW;
165
165
 
166
166
  /** Grid component to show prerendering attempts. **/
167
- export class MismatchedPreloadingGrid extends UI.Widget.Widget {
167
+ export class MismatchedPreloadingGrid extends UI.Widget.Widget<ShadowRoot> {
168
168
  #data: MismatchedPreloadingGridData|null = null;
169
169
  #view: ViewFunction;
170
170
 
171
171
  constructor(element?: HTMLElement, view: typeof DEFAULT_VIEW = DEFAULT_VIEW) {
172
- super(element, {classes: ['devtools-resources-mismatched-preloading-grid'], useShadowDom: true});
172
+ super(element, {useShadowDom: 'pure'});
173
173
  this.#view = view;
174
174
  }
175
175
 
@@ -5,218 +5,297 @@
5
5
  */
6
6
 
7
7
  @scope to (devtools-widget > *) {
8
- .webmcp-view {
9
- height: 100%;
10
- width: 100%;
8
+ .webmcp-view {
9
+ height: 100%;
10
+ width: 100%;
11
+ }
12
+
13
+ .call-log,
14
+ .tool-list {
15
+ height: 100%;
16
+ display: flex;
17
+ flex-direction: column;
18
+ overflow: auto;
19
+ padding: 0;
20
+ }
21
+
22
+ .empty-view-scroller {
23
+ flex: auto;
24
+ }
25
+
26
+ devtools-data-grid {
27
+ flex: auto;
28
+ }
29
+
30
+ .data-grid {
31
+ th {
32
+ height: 26px;
11
33
  }
12
34
 
13
- .call-log,
14
- .tool-list {
15
- height: 100%;
16
- display: flex;
17
- flex-direction: column;
18
- overflow: auto;
19
- padding: 0;
35
+ td {
36
+ vertical-align: middle;
20
37
  }
21
38
 
22
- .empty-view-scroller {
23
- flex: auto;
39
+ tr.status-cancelled {
40
+ color: var(--sys-color-on-surface-light);
24
41
  }
25
42
 
26
- devtools-data-grid {
27
- flex: auto;
43
+ tr.status-error {
44
+ color: var(--sys-color-error);
28
45
  }
29
46
 
30
- .data-grid {
31
- th {
32
- height: 26px;
33
- }
34
-
35
- td {
36
- vertical-align: middle;
37
- }
38
-
39
- tr.status-cancelled {
40
- color: var(--sys-color-on-surface-light);
41
- }
42
-
43
- tr.status-error {
44
- color: var(--sys-color-error);
45
- }
46
-
47
- tr.selected {
48
- background-color: var(--sys-color-tonal-container);
49
- }
50
-
51
- tbody tr.selected.status-error,
52
- tbody tr.selected.status-error.revealed {
53
- background-color: var(--sys-color-error-container);
54
- color: var(--sys-color-error);
55
- }
47
+ tr.selected {
48
+ background-color: var(--sys-color-tonal-container);
56
49
  }
57
50
 
58
- .section-title {
59
- display: flex;
60
- gap: var(--sys-size-2);
61
- background-color: var(--sys-color-surface1);
62
- padding: 0 5px;
63
- line-height: 22px;
64
- overflow: hidden;
65
- align-items: center;
66
- flex: none;
67
- color: var(--sys-color-on-surface);
51
+ tbody tr.selected.status-error,
52
+ tbody tr.selected.status-error.revealed {
53
+ background-color: var(--sys-color-error-container);
54
+ color: var(--sys-color-error);
68
55
  }
69
56
 
70
- .status-cell {
71
- display: flex;
72
- align-items: center;
73
- gap: 4px;
57
+ tbody tr:hover .run-tool-action-button,
58
+ tbody tr:focus-within .run-tool-action-button,
59
+ &:focus-within tbody tr.selected .run-tool-action-button {
60
+ display: flex;
74
61
  }
75
-
76
- .tool-details {
77
- height: 100%;
78
- display: flex;
79
- flex-direction: column;
80
- overflow: hidden;
81
- }
82
-
83
- .tool-details-grid {
84
- display: grid;
85
- grid-template-columns: min-content 1fr;
86
- gap: 0 var(--sys-size-16);
87
- padding: calc(0.5*var(--sys-size-6)) var(--sys-size-8);
88
- align-items: flex-start;
89
- overflow-y: auto;
90
-
91
- .label {
92
- color: var(--sys-color-on-surface-subtle);
93
- white-space: nowrap;
94
- padding: var(--sys-size-6) 0;
95
- }
96
-
97
- .value {
98
- user-select: text;
99
-
100
- &.source-code {
101
- color: var(--sys-color-token-attribute);
102
- }
103
-
104
- padding: var(--sys-size-6) 0;
105
- color: var(--sys-color-on-surface);
106
- overflow-wrap: anywhere;
107
-
108
- &:has(> .stack-preview-container) {
109
- padding: var(--sys-size-4) 0;
110
- }
111
-
112
- &.tool-origin-container {
113
- display: flex;
114
- align-items: center;
115
- gap: var(--sys-size-4);
116
- }
117
-
118
- .tool-origin-node {
119
- display: flex;
120
- align-items: center;
121
- cursor: default;
122
- }
123
- }
124
-
125
- .show-element {
126
- height: 1lh;
127
- }
62
+ }
63
+
64
+ .section-title {
65
+ display: flex;
66
+ gap: var(--sys-size-2);
67
+ background-color: var(--sys-color-surface1);
68
+ padding: 0 var(--sys-size-3);
69
+ line-height: var(--sys-size-10);
70
+ overflow: hidden;
71
+ align-items: center;
72
+ flex: none;
73
+ color: var(--sys-color-on-surface);
74
+ border-bottom: 1px solid var(--sys-color-divider);
75
+
76
+ devtools-button {
77
+ margin: calc(-1 * var(--sys-size-1)) 0;
128
78
  }
129
-
130
- devtools-list {
131
- flex: 1 1 auto;
132
- margin: 0;
133
- padding: var(--sys-size-4);
134
- box-sizing: border-box;
79
+ }
80
+
81
+ .status-cell {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: var(--sys-size-3);
85
+ }
86
+
87
+ .name-cell {
88
+ display: flex;
89
+ gap: var(--sys-size-5);
90
+ align-items: center;
91
+ }
92
+
93
+ .run-tool-action-button {
94
+ display: none;
95
+ width: var(--sys-size-8);
96
+ height: var(--sys-size-8);
97
+ padding: 0;
98
+ border: none;
99
+ background-color: transparent;
100
+ cursor: pointer;
101
+ align-items: center;
102
+ justify-content: center;
103
+ flex-shrink: 0;
104
+
105
+ devtools-icon {
106
+ width: var(--sys-size-7);
107
+ height: var(--sys-size-7);
108
+ color: var(--sys-color-primary);
135
109
  }
136
-
137
- .tool-item {
138
- display: flex;
139
- flex-direction: column;
140
- padding: 8px 0;
141
- gap: 4px;
142
- width: 100%;
143
- box-sizing: border-box;
144
- border-bottom: 1px solid var(--sys-color-divider);
145
- cursor: pointer;
110
+ }
111
+
112
+ .tool-details {
113
+ height: 100%;
114
+ display: flex;
115
+ flex-direction: column;
116
+ overflow: hidden;
117
+ }
118
+
119
+ .tool-details-grid {
120
+ display: grid;
121
+ grid-template-columns: min-content 1fr;
122
+ gap: var(--sys-size-6);
123
+ padding: calc(0.5*var(--sys-size-6)) var(--sys-size-8);
124
+ align-items: flex-start;
125
+ overflow-y: auto;
126
+
127
+ .label {
128
+ color: var(--sys-color-on-surface-subtle);
129
+ white-space: nowrap;
130
+ padding: var(--sys-size-3) 0;
146
131
  }
147
132
 
148
- .tool-item:hover {
149
- background-color: var(--sys-color-state-hover-on-subtle);
150
- }
133
+ .value {
134
+ user-select: text;
151
135
 
152
- .tool-item.selected {
153
- background-color: var(--sys-color-tonal-container);
154
- }
136
+ &.source-code {
137
+ color: var(--sys-color-token-property-special);
138
+ }
155
139
 
156
- .tool-name-container {
157
- display: flex;
158
- justify-content: space-between;
159
- align-items: flex-start;
160
- gap: 8px;
161
- }
140
+ padding: var(--sys-size-3) 0;
141
+ color: var(--sys-color-on-surface);
142
+ overflow-wrap: anywhere;
162
143
 
163
- .tool-name.source-code {
164
- color: var(--sys-color-token-string);
165
- white-space: nowrap;
166
- overflow: hidden;
167
- text-overflow: ellipsis;
168
- min-width: 0;
169
- flex: 1;
170
- }
144
+ &:has(> .stack-preview-container) {
145
+ padding: var(--sys-size-4) 0;
146
+ }
171
147
 
172
- /* stylelint-disable-next-line selector-type-no-unknown */
173
- .tool-name-container icon-button {
174
- flex-shrink: 0;
175
- height: 0;
176
- overflow: visible;
148
+ &.tool-origin-container {
177
149
  display: flex;
178
150
  align-items: center;
179
- }
180
-
181
- .tool-description {
182
- color: var(--sys-color-on-surface);
183
- white-space: nowrap;
184
- overflow: hidden;
185
- text-overflow: ellipsis;
186
- }
187
-
188
- devtools-toolbar-input {
189
- flex-grow: 1;
190
- flex-shrink: 1;
191
- }
151
+ gap: var(--sys-size-4);
152
+ }
192
153
 
193
- .toolbar-text.status-error-text {
194
- color: var(--sys-color-error);
154
+ .tool-origin-node {
155
+ display: flex;
156
+ align-items: center;
157
+ cursor: default;
158
+ }
195
159
  }
196
160
 
197
- .toolbar-text.status-cancelled-text {
198
- color: var(--sys-color-on-surface-light);
161
+ .show-element {
162
+ height: 1lh;
199
163
  }
200
-
201
- .call-details-tabbed-pane {
202
- flex: auto;
203
- border-bottom: 1px solid var(--sys-color-divider);
164
+ }
165
+
166
+ devtools-list {
167
+ flex: 1 1 auto;
168
+ margin: 0;
169
+ padding: var(--sys-size-4) 0;
170
+ box-sizing: border-box;
171
+ }
172
+
173
+ .tool-item {
174
+ display: flex;
175
+ flex-direction: column;
176
+ padding: var(--sys-size-5) var(--sys-size-4);
177
+ gap: var(--sys-size-3);
178
+ width: 100%;
179
+ box-sizing: border-box;
180
+ border-bottom: 1px solid var(--sys-color-divider);
181
+
182
+ &:hover {
183
+ background-color: var(--sys-color-state-hover-on-subtle);
204
184
  }
205
185
 
206
- .call-payload-view {
207
- display: flex;
208
- flex-direction: column;
209
- height: 100%;
186
+ &.selected {
187
+ background-color: var(--sys-color-tonal-container);
210
188
  }
211
-
212
- .call-payload-content {
213
- padding: var(--sys-size-5);
214
- flex: auto;
215
- overflow: auto;
189
+ }
190
+
191
+ .tool-name-container {
192
+ display: flex;
193
+ justify-content: space-between;
194
+ align-items: center;
195
+ gap: var(--sys-size-5);
196
+
197
+ .tool-icons {
198
+ display: flex;
199
+ gap: var(--sys-size-2);
200
+ align-items: center;
216
201
  }
217
-
218
- .payload-value.error-text {
219
- color: var(--sys-color-error);
220
- white-space: pre-wrap;
202
+ /* stylelint-disable-next-line selector-type-no-unknown */
203
+ icon-button {
204
+ flex-shrink: 0;
205
+ display: flex;
206
+ align-items: center;
207
+ cursor: pointer;
221
208
  }
209
+ }
210
+
211
+ .tool-name.source-code {
212
+ color: var(--sys-color-token-property-special);
213
+ white-space: nowrap;
214
+ overflow: hidden;
215
+ text-overflow: ellipsis;
216
+ min-width: 0;
217
+ flex: 1;
218
+ }
219
+
220
+ .tool-description {
221
+ color: var(--sys-color-on-surface);
222
+ white-space: nowrap;
223
+ overflow: hidden;
224
+ text-overflow: ellipsis;
225
+ }
226
+
227
+ devtools-toolbar-input {
228
+ flex-grow: 1;
229
+ flex-shrink: 1;
230
+ }
231
+
232
+ .toolbar-text.status-error-text {
233
+ color: var(--sys-color-error);
234
+ }
235
+
236
+ .toolbar-text.status-cancelled-text {
237
+ color: var(--sys-color-on-surface-light);
238
+ }
239
+
240
+ .call-details-tabbed-pane {
241
+ flex: auto;
242
+ border-bottom: 1px solid var(--sys-color-divider);
243
+ }
244
+
245
+ .call-payload-view {
246
+ display: flex;
247
+ flex-direction: column;
248
+ height: 100%;
249
+ }
250
+
251
+ .call-payload-content {
252
+ padding: var(--sys-size-5);
253
+ flex: auto;
254
+ overflow: auto;
255
+ }
256
+
257
+ .payload-value.error-text {
258
+ color: var(--sys-color-error);
259
+ white-space: pre-wrap;
260
+ }
261
+
262
+ .sidebar-tool-details {
263
+ flex: none;
264
+ border-bottom: 1px solid var(--sys-color-divider);
265
+ }
266
+
267
+ .call-to-action {
268
+ background-color: var(--sys-color-neutral-container);
269
+ padding: 8px;
270
+ border-radius: 5px;
271
+ margin: 4px;
272
+ }
273
+
274
+ .call-to-action-body {
275
+ padding: 6px 0;
276
+ margin-left: 9.5px;
277
+ border-left: 2px solid var(--issue-color-yellow);
278
+ padding-left: 18px;
279
+ line-height: 20px;
280
+ }
281
+
282
+ .call-to-action .explanation {
283
+ font-weight: bold;
284
+ }
285
+
286
+ .inline-icon {
287
+ vertical-align: middle;
288
+ }
289
+
290
+ .json-editor-widget {
291
+ flex: auto;
292
+ /* extend the JSON editor padding to match the details grid */
293
+ padding-left: calc(var(--sys-size-8) - 1em);
294
+ min-height: 0;
295
+ }
296
+
297
+ .webmcp-run-tool-button {
298
+ align-self: flex-end;
299
+ margin: var(--sys-size-6) var(--sys-size-8);
300
+ }
222
301
  }
@@ -141,10 +141,11 @@ interface ViewInput {
141
141
  highlightedItem: SDK.CategorizedBreakpoint.CategorizedBreakpoint|null;
142
142
  categories: Map<SDK.CategorizedBreakpoint.Category, SDK.CategorizedBreakpoint.CategorizedBreakpoint[]>;
143
143
  sortedCategoryNames: SDK.CategorizedBreakpoint.Category[];
144
+ jslog?: string;
144
145
  }
145
146
 
146
- export type View = typeof DEFAULT_VIEW;
147
- export const DEFAULT_VIEW = (input: ViewInput, output: undefined, target: HTMLElement): void => {
147
+ export type View = (input: ViewInput, output: undefined, target: HTMLElement|DocumentFragment) => void;
148
+ export const DEFAULT_VIEW: View = (input, output, target) => {
148
149
  const shouldExpandCategory = (breakpoints: SDK.CategorizedBreakpoint.CategorizedBreakpoint[]): boolean =>
149
150
  Boolean(input.filterText) || (input.highlightedItem && breakpoints.includes(input.highlightedItem)) ||
150
151
  breakpoints.some(breakpoint => breakpoint.enabled());
@@ -250,12 +251,13 @@ export const DEFAULT_VIEW = (input: ViewInput, output: undefined, target: HTMLEl
250
251
  </ul>
251
252
  </li>`)}
252
253
  </ul>`}>
253
- </devtools-tree>`, target);
254
+ </devtools-tree>`, target, {container: {attributes: {jslog: input.jslog}}});
254
255
  // clang-format on
255
256
  };
256
257
 
257
- export abstract class CategorizedBreakpointsSidebarPane extends UI.Widget.VBox {
258
+ export abstract class CategorizedBreakpointsSidebarPane extends UI.Widget.VBox<ShadowRoot> {
258
259
  readonly #viewId: string;
260
+ readonly #jslog: string;
259
261
  // A layout test reaches into this
260
262
  private readonly categories =
261
263
  new Map<SDK.CategorizedBreakpoint.Category, SDK.CategorizedBreakpoint.CategorizedBreakpoint[]>();
@@ -267,8 +269,9 @@ export abstract class CategorizedBreakpointsSidebarPane extends UI.Widget.VBox {
267
269
  constructor(
268
270
  breakpoints: SDK.CategorizedBreakpoint.CategorizedBreakpoint[], jslog: string, viewId: string,
269
271
  view = DEFAULT_VIEW) {
270
- super({useShadowDom: true, jslog});
272
+ super({useShadowDom: 'pure'});
271
273
  this.#view = view;
274
+ this.#jslog = jslog;
272
275
  this.#viewId = viewId;
273
276
 
274
277
  for (const breakpoint of breakpoints) {
@@ -348,6 +351,7 @@ export abstract class CategorizedBreakpointsSidebarPane extends UI.Widget.VBox {
348
351
  override performUpdate(): void {
349
352
  const input: ViewInput = {
350
353
  filterText: this.#filterText,
354
+ jslog: this.#jslog,
351
355
  onFilterChanged: this.#onFilterChanged.bind(this),
352
356
  onBreakpointChange: this.onBreakpointChanged.bind(this),
353
357
  onItemSelected: this.#onItemSelected.bind(this),
@@ -60,7 +60,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
60
60
  </li>`)}
61
61
  </ul>`}></devtools-tree>`,
62
62
  // clang-format on
63
- target);
63
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('sidebar').track({resize: true})}`}}});
64
64
  };
65
65
 
66
66
  export class ChangesSidebar extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget>(
@@ -70,7 +70,7 @@ export class ChangesSidebar extends Common.ObjectWrapper.eventMixin<EventTypes,
70
70
  readonly #sourceCodes = new Set<Workspace.UISourceCode.UISourceCode>();
71
71
  #selectedUISourceCode: Workspace.UISourceCode.UISourceCode|null = null;
72
72
  constructor(target?: HTMLElement, view = DEFAULT_VIEW) {
73
- super(target, {jslog: `${VisualLogging.pane('sidebar').track({resize: true})}`});
73
+ super(target);
74
74
  this.#view = view;
75
75
  }
76
76
 
@@ -12,7 +12,7 @@ import * as UI from '../../ui/legacy/legacy.js';
12
12
  import * as Lit from '../../ui/lit/lit.js';
13
13
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
14
14
 
15
- import {ChangesSidebar, Events} from './ChangesSidebar.js';
15
+ import {ChangesSidebar} from './ChangesSidebar.js';
16
16
  import changesViewStyles from './changesView.css.js';
17
17
  import * as CombinedDiffView from './CombinedDiffView.js';
18
18
 
@@ -39,13 +39,8 @@ interface ViewInput {
39
39
  onSelect(sourceCode: Workspace.UISourceCode.UISourceCode|null): void;
40
40
  workspaceDiff: WorkspaceDiff.WorkspaceDiff.WorkspaceDiffImpl;
41
41
  }
42
- type View = (input: ViewInput, output: object, target: HTMLElement) => void;
42
+ type View = (input: ViewInput, output: object, target: DocumentFragment) => void;
43
43
  export const DEFAULT_VIEW: View = (input, _output, target) => {
44
- const onSidebar = (sidebar: ChangesSidebar): void => {
45
- sidebar.addEventListener(
46
- Events.SELECTED_UI_SOURCE_CODE_CHANGED, () => input.onSelect(sidebar.selectedUISourceCode()));
47
- };
48
-
49
44
  render(
50
45
  // clang-format off
51
46
  html`
@@ -68,23 +63,23 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
68
63
  </div>
69
64
  </div>
70
65
  <devtools-widget slot="sidebar" ${widget(ChangesSidebar, {workspaceDiff: input.workspaceDiff})}
71
- ${UI.Widget.widgetRef(ChangesSidebar, onSidebar)}>
66
+ @SelectedUISourceCodeChanged=${(e: Event) => {
67
+ const sidebar = UI.Widget.Widget.get(e.target as HTMLElement) as ChangesSidebar;
68
+ input.onSelect(sidebar.selectedUISourceCode());
69
+ }}>
72
70
  </devtools-widget>
73
71
  </devtools-split-view>`,
74
72
  // clang-format on
75
- target);
73
+ target, {container: {attributes: {jslog: `${VisualLogging.panel('changes').track({resize: true})}`}}});
76
74
  };
77
75
 
78
- export class ChangesView extends UI.Widget.VBox {
76
+ export class ChangesView extends UI.Widget.VBox<ShadowRoot> {
79
77
  readonly #workspaceDiff: WorkspaceDiff.WorkspaceDiff.WorkspaceDiffImpl;
80
78
  #selectedUISourceCode: Workspace.UISourceCode.UISourceCode|null = null;
81
79
  readonly #view: View;
82
80
 
83
81
  constructor(target?: HTMLElement, view = DEFAULT_VIEW) {
84
- super(target, {
85
- jslog: `${VisualLogging.panel('changes').track({resize: true})}`,
86
- useShadowDom: true,
87
- });
82
+ super(target, {useShadowDom: 'pure'});
88
83
 
89
84
  this.#workspaceDiff = WorkspaceDiff.WorkspaceDiff.workspaceDiff();
90
85
  this.#view = view;
@@ -41,6 +41,7 @@ let consolePanelInstance: ConsolePanel;
41
41
 
42
42
  export class ConsolePanel extends UI.Panel.Panel {
43
43
  private readonly view: ConsoleView;
44
+ #drawerWasMinimized = false;
44
45
  constructor() {
45
46
  super('console');
46
47
  this.view = ConsoleView.instance();
@@ -64,9 +65,11 @@ export class ConsolePanel extends UI.Panel.Panel {
64
65
 
65
66
  override wasShown(): void {
66
67
  super.wasShown();
68
+ const inspectorView = UI.InspectorView.InspectorView.instance();
69
+ this.#drawerWasMinimized = inspectorView.isDrawerMinimized();
67
70
  const wrapper = wrapperViewInstance;
68
71
  if (wrapper?.isShowing()) {
69
- UI.InspectorView.InspectorView.instance().setDrawerMinimized(true);
72
+ inspectorView.setDrawerMinimized(true);
70
73
  }
71
74
  this.view.show(this.element);
72
75
  ConsolePanel.updateContextFlavor();
@@ -74,12 +77,17 @@ export class ConsolePanel extends UI.Panel.Panel {
74
77
 
75
78
  override willHide(): void {
76
79
  super.willHide();
80
+ const inspectorView = UI.InspectorView.InspectorView.instance();
77
81
  // The minimized drawer has 0 height, and showing Console inside may set
78
82
  // Console's scrollTop to 0. Unminimize before calling show to avoid this.
79
- UI.InspectorView.InspectorView.instance().setDrawerMinimized(false);
83
+ // Restore the previous minimized state afterwards.
84
+ inspectorView.setDrawerMinimized(false);
80
85
  if (wrapperViewInstance) {
81
86
  wrapperViewInstance.showViewInWrapper();
82
87
  }
88
+ if (this.#drawerWasMinimized) {
89
+ inspectorView.setDrawerMinimized(true);
90
+ }
83
91
  ConsolePanel.updateContextFlavor();
84
92
  }
85
93
 
@@ -117,7 +125,6 @@ export class WrapperView extends UI.Widget.VBox {
117
125
 
118
126
  override willHide(): void {
119
127
  super.willHide();
120
- UI.InspectorView.InspectorView.instance().setDrawerMinimized(false);
121
128
  ConsolePanel.updateContextFlavor();
122
129
  }
123
130