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
@@ -10,7 +10,6 @@ import * as SDK from '../../../core/sdk/sdk.js';
10
10
  import * as Lit from '../../../ui/lit/lit.js';
11
11
  import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
12
12
 
13
- import type {DOMNode} from './Helper.js';
14
13
  import queryContainerStyles from './queryContainer.css.js';
15
14
 
16
15
  const {render, html} = Lit;
@@ -24,7 +23,7 @@ export class QueriedSizeRequestedEvent extends Event {
24
23
  }
25
24
 
26
25
  export interface QueryContainerData {
27
- container: DOMNode;
26
+ container: SDK.DOMModel.DOMNode;
28
27
  queryName?: string;
29
28
  onContainerLinkClick: (event: Event) => void;
30
29
  }
@@ -32,7 +31,7 @@ export interface QueryContainerData {
32
31
  export class QueryContainer extends HTMLElement {
33
32
  readonly #shadow = this.attachShadow({mode: 'open'});
34
33
  #queryName?: string;
35
- #container?: DOMNode;
34
+ #container?: SDK.DOMModel.DOMNode;
36
35
  #onContainerLinkClick?: (event: Event) => void;
37
36
  #isContainerLinkHovered = false;
38
37
  #queriedSizeDetails?: SDK.CSSContainerQuery.ContainerQueriedSizeDetails;
@@ -50,13 +49,13 @@ export class QueryContainer extends HTMLElement {
50
49
  }
51
50
 
52
51
  async #onContainerLinkMouseEnter(): Promise<void> {
53
- this.#container?.highlightNode('container-outline');
52
+ this.#container?.highlight('container-outline');
54
53
  this.#isContainerLinkHovered = true;
55
54
  this.dispatchEvent(new QueriedSizeRequestedEvent());
56
55
  }
57
56
 
58
57
  #onContainerLinkMouseLeave(): void {
59
- this.#container?.clearHighlight();
58
+ SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight();
60
59
  this.#isContainerLinkHovered = false;
61
60
  this.#render();
62
61
  }
@@ -72,7 +71,7 @@ export class QueryContainer extends HTMLElement {
72
71
  classesToDisplay = this.#container.getAttribute('class')?.split(/\s+/).filter(Boolean);
73
72
  }
74
73
 
75
- const nodeTitle = this.#queryName || this.#container.nodeNameNicelyCased;
74
+ const nodeTitle = this.#queryName || this.#container.nodeNameInCorrectCase();
76
75
 
77
76
  // Disabled until https://crbug.com/1079231 is fixed.
78
77
  // clang-format off
@@ -14,7 +14,6 @@ import * as CSSVariableValueView from './CSSVariableValueView.js';
14
14
  import * as ElementsBreadcrumbs from './ElementsBreadcrumbs.js';
15
15
  import * as ElementsBreadcrumbsUtils from './ElementsBreadcrumbsUtils.js';
16
16
  import * as ElementsTreeExpandButton from './ElementsTreeExpandButton.js';
17
- import * as Helper from './Helper.js';
18
17
  import * as QueryContainer from './QueryContainer.js';
19
18
  import * as StylePropertyEditor from './StylePropertyEditor.js';
20
19
 
@@ -31,7 +30,6 @@ export {
31
30
  ElementsBreadcrumbs,
32
31
  ElementsBreadcrumbsUtils,
33
32
  ElementsTreeExpandButton,
34
- Helper,
35
33
  QueryContainer,
36
34
  StylePropertyEditor,
37
35
  };
@@ -39,7 +39,7 @@ export interface MediaQueryMarker {
39
39
  locations: SDK.CSSModel.CSSLocation[];
40
40
  }
41
41
 
42
- export const DEFAULT_VIEW = (input: ViewInput, _output: object, target: HTMLElement): void => {
42
+ export const DEFAULT_VIEW = (input: ViewInput, _output: object, target: DocumentFragment): void => {
43
43
  const createBarClassMap = (marker: MediaQueryMarker): Record<string, boolean> => ({
44
44
  'media-inspector-bar': true,
45
45
  'media-inspector-marker-inactive': !marker.active,
@@ -65,7 +65,7 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: object, target: HTMLElem
65
65
  `)}
66
66
  </div>
67
67
  `).toArray()}
68
- </div>`, target);
68
+ </div>`, target, {container: {attributes: {jslog: `${VisualLogging.mediaInspectorView().track({click: true})}`}}});
69
69
  // clang-format on
70
70
  };
71
71
 
@@ -155,7 +155,7 @@ function renderLabel(
155
155
  // clang-format on
156
156
  }
157
157
 
158
- export class MediaQueryInspector extends UI.Widget.Widget implements
158
+ export class MediaQueryInspector extends UI.Widget.Widget<ShadowRoot> implements
159
159
  SDK.TargetManager.SDKModelObserver<SDK.CSSModel.CSSModel> {
160
160
  private readonly view: typeof DEFAULT_VIEW;
161
161
  private readonly mediaThrottler: Common.Throttler.Throttler;
@@ -168,10 +168,7 @@ export class MediaQueryInspector extends UI.Widget.Widget implements
168
168
  constructor(
169
169
  getWidthCallback: () => number, setWidthCallback: (arg0: number) => void,
170
170
  mediaThrottler: Common.Throttler.Throttler, view = DEFAULT_VIEW) {
171
- super({
172
- jslog: `${VisualLogging.mediaInspectorView().track({click: true})}`,
173
- useShadowDom: true,
174
- });
171
+ super({useShadowDom: 'pure'});
175
172
  this.view = view;
176
173
  this.mediaThrottler = mediaThrottler;
177
174
 
@@ -152,7 +152,7 @@ export interface ViewInput {
152
152
 
153
153
  export type ViewOutput = undefined;
154
154
 
155
- export const DEFAULT_VIEW = (input: ViewInput, _output: ViewOutput, target: HTMLElement): void => {
155
+ export const DEFAULT_VIEW = (input: ViewInput, _output: ViewOutput, target: DocumentFragment): void => {
156
156
  const {layer, snapshotSelection, compositingReasons, onScrollRectClick, onPaintProfilerRequested} = input;
157
157
 
158
158
  if (!layer) {
@@ -272,11 +272,11 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: ViewOutput, target: HTML
272
272
  ${i18nString(UIStrings.paintProfiler)}
273
273
  </button>` : nothing}
274
274
  </div>`,
275
- target);
275
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('layers-details')}`}}});
276
276
  // clang-format on
277
277
  };
278
278
 
279
- export class LayerDetailsView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget>(
279
+ export class LayerDetailsView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget<ShadowRoot>>(
280
280
  UI.Widget.Widget) implements LayerView {
281
281
  private readonly layerViewHost: LayerViewHost;
282
282
  private layerSnapshotMap: Map<SDK.LayerTreeBase.Layer, SnapshotSelection>;
@@ -285,10 +285,7 @@ export class LayerDetailsView extends Common.ObjectWrapper.eventMixin<EventTypes
285
285
  private readonly view: typeof DEFAULT_VIEW;
286
286
 
287
287
  constructor(layerViewHost: LayerViewHost, view: typeof DEFAULT_VIEW = DEFAULT_VIEW) {
288
- super({
289
- jslog: `${VisualLogging.pane('layers-details')}`,
290
- useShadowDom: true,
291
- });
288
+ super({useShadowDom: 'pure'});
292
289
  this.view = view;
293
290
  this.registerRequiredCSS(layerDetailsViewStyles);
294
291
  this.layerViewHost = layerViewHost;
@@ -144,7 +144,7 @@ export const DEFAULT_VIEW = (input: ViewInput, output: ViewOutput, target: HTMLE
144
144
  }
145
145
  output.canvasElement = el as HTMLCanvasElement;
146
146
  })}></canvas>`,
147
- target);
147
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('layers-3d-view')}`}}});
148
148
  // clang-format onn
149
149
  };
150
150
 
@@ -182,7 +182,7 @@ export class Layers3DView extends Common.ObjectWrapper.eventMixin<EventTypes, ty
182
182
  #canvasElement!: HTMLCanvasElement;
183
183
 
184
184
  constructor(layerViewHost: LayerViewHost, view = DEFAULT_VIEW) {
185
- super({jslog: `${VisualLogging.pane('layers-3d-view')}`, useShadowDom: true, classes: ['layers-3d-view']});
185
+ super();
186
186
  this.#view = view;
187
187
 
188
188
  this.layerViewHost = layerViewHost;
@@ -74,9 +74,9 @@ const renderStartView = (
74
74
  <form class="lighthouse-start-view">
75
75
  <header class="hbox">
76
76
  <div class="lighthouse-logo"></div>
77
- <div class="lighthouse-title">
77
+ <h1 class="lighthouse-title">
78
78
  ${i18nString(UIStrings.generateLighthouseReport)}
79
- </div>
79
+ </h1>
80
80
  <div class="lighthouse-start-button-container"></div>
81
81
  </header>
82
82
  <div
@@ -15,7 +15,7 @@ import * as PanelsCommon from '../common/common.js';
15
15
  import {ThrottlingManager} from './ThrottlingManager.js';
16
16
  import type {NetworkThrottlingConditionsGroup} from './ThrottlingPresets.js';
17
17
 
18
- const {render, html, Directives, nothing} = Lit;
18
+ const {render, html, Directives} = Lit;
19
19
 
20
20
  const UIStrings = {
21
21
  /**
@@ -70,7 +70,7 @@ interface ViewInput {
70
70
  onSelect: (conditions: SDK.NetworkManager.ThrottlingConditions) => void;
71
71
  onAddCustomConditions: () => void;
72
72
  }
73
- export type ViewFunction = (input: ViewInput, output: object, target: HTMLElement) => void;
73
+ export type ViewFunction = (input: ViewInput, output: object, target: HTMLSelectElement) => void;
74
74
 
75
75
  export const DEFAULT_VIEW: ViewFunction = (input, output, target) => {
76
76
  // The title is usually an i18nLazyString except for custom values that are stored in the local storage in the form of a string.
@@ -110,12 +110,7 @@ export const DEFAULT_VIEW: ViewFunction = (input, output, target) => {
110
110
 
111
111
  render(
112
112
  // clang-format off
113
- html`<select
114
- ?disabled=${input.disabled}
115
- aria-label=${input.title ?? nothing}
116
- jslog=${VisualLogging.dropDown().track({change: true}).context(input.jslogContext)}
117
- @change=${onSelect}>
118
- ${input.throttlingGroups.map(
113
+ html`${input.throttlingGroups.map(
119
114
  group =>
120
115
  html`<optgroup
121
116
  label=${group.title}>
@@ -149,40 +144,52 @@ export const DEFAULT_VIEW: ViewFunction = (input, output, target) => {
149
144
  jslog=${VisualLogging.action('add').track({click: true})}>
150
145
  ${i18nString(UIStrings.add)}
151
146
  </option>
152
- </optgroup>
153
- </select>`, // clang-format on
154
- target);
147
+ </optgroup>`, // clang-format on
148
+ target, {
149
+ container: {
150
+ listeners: {change: onSelect},
151
+ attributes: {
152
+ disabled: input.disabled,
153
+ 'aria-label': input.title,
154
+ jslog: `${VisualLogging.dropDown(input.jslogContext).track({change: true})}`
155
+ }
156
+ }
157
+ });
155
158
  };
156
159
 
157
160
  export const enum Events {
158
- CONDITIONS_CHANGED = 'conditionsChanged',
161
+ CONDITIONS_CHANGED = 'ConditionsChanged',
159
162
  }
160
163
 
161
164
  export interface EventTypes {
162
165
  [Events.CONDITIONS_CHANGED]: SDK.NetworkManager.ThrottlingConditions;
163
166
  }
164
167
 
165
- export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
168
+ export class NetworkThrottlingSelect extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget>(
169
+ UI.Widget.Widget) {
166
170
  #recommendedConditions: SDK.NetworkManager.Conditions|null = null;
167
- readonly #element: HTMLElement;
168
171
  #jslogContext?: string;
169
172
  #currentConditions: SDK.NetworkManager.ThrottlingConditions|undefined;
170
- readonly #title?: string;
173
+ #title?: string;
171
174
  readonly #view: ViewFunction;
172
175
  #variant: NetworkThrottlingSelect.Variant = NetworkThrottlingSelect.Variant.GLOBAL_CONDITIONS;
173
176
  #disabled = false;
174
177
 
175
178
  static createForGlobalConditions(element: HTMLElement, title: string): NetworkThrottlingSelect {
176
179
  ThrottlingManager.instance(); // Instantiate the throttling manager to connect network manager with the setting
177
- const select = new NetworkThrottlingSelect(element, {
180
+ const selectElement = element.createChild('select');
181
+ const select = new NetworkThrottlingSelect(selectElement, {
178
182
  title,
179
183
  jslogContext: SDK.NetworkManager.activeNetworkThrottlingKeySetting().name,
180
184
  currentConditions: SDK.NetworkManager.MultitargetNetworkManager.instance().networkConditions()
181
185
  });
182
- select.addEventListener(
183
- Events.CONDITIONS_CHANGED,
184
- ev => !('block' in ev.data) &&
185
- SDK.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(ev.data));
186
+ select.show(element, undefined, /* suppressOrphanWidgetError= */ true);
187
+ select.addEventListener(Events.CONDITIONS_CHANGED, event => {
188
+ const conditions = event.data;
189
+ if (!('block' in conditions)) {
190
+ SDK.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(conditions);
191
+ }
192
+ });
186
193
  SDK.NetworkManager.MultitargetNetworkManager.instance().addEventListener(
187
194
  SDK.NetworkManager.MultitargetNetworkManager.Events.CONDITIONS_CHANGED, () => {
188
195
  select.currentConditions = SDK.NetworkManager.MultitargetNetworkManager.instance().networkConditions();
@@ -203,22 +210,21 @@ export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<
203
210
  }
204
211
 
205
212
  constructor(
206
- element: HTMLElement, options: {
213
+ element?: HTMLElement, options: {
207
214
  title?: string,
208
215
  jslogContext?: string,
209
216
  currentConditions?: SDK.NetworkManager.Conditions,
210
217
  includeBlocking?: true,
211
218
  } = {},
212
219
  view = DEFAULT_VIEW) {
213
- super();
214
- SDK.NetworkManager.customUserNetworkConditionsSetting().addChangeListener(this.#performUpdate, this);
215
- this.#element = element;
220
+ super(element);
221
+ SDK.NetworkManager.customUserNetworkConditionsSetting().addChangeListener(this.requestUpdate, this);
216
222
  this.#jslogContext = options.jslogContext;
217
223
  this.#currentConditions = options.currentConditions;
218
224
  this.#title = options.title;
219
225
  this.#view = view;
220
226
 
221
- this.#performUpdate();
227
+ this.performUpdate();
222
228
  }
223
229
 
224
230
  get disabled(): boolean {
@@ -226,7 +232,7 @@ export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<
226
232
  }
227
233
  set disabled(disabled: boolean) {
228
234
  this.#disabled = disabled;
229
- this.#performUpdate();
235
+ this.requestUpdate();
230
236
  }
231
237
 
232
238
  get recommendedConditions(): SDK.NetworkManager.Conditions|null {
@@ -234,7 +240,7 @@ export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<
234
240
  }
235
241
  set recommendedConditions(recommendedConditions: SDK.NetworkManager.Conditions|null) {
236
242
  this.#recommendedConditions = recommendedConditions;
237
- this.#performUpdate();
243
+ this.requestUpdate();
238
244
  }
239
245
 
240
246
  get currentConditions(): SDK.NetworkManager.ThrottlingConditions|undefined {
@@ -242,7 +248,7 @@ export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<
242
248
  }
243
249
  set currentConditions(currentConditions: SDK.NetworkManager.ThrottlingConditions|undefined) {
244
250
  this.#currentConditions = currentConditions;
245
- this.#performUpdate();
251
+ this.requestUpdate();
246
252
  }
247
253
 
248
254
  get jslogContext(): string|undefined {
@@ -250,7 +256,7 @@ export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<
250
256
  }
251
257
  set jslogContext(jslogContext: string|undefined) {
252
258
  this.#jslogContext = jslogContext;
253
- this.#performUpdate();
259
+ this.requestUpdate();
254
260
  }
255
261
 
256
262
  get variant(): NetworkThrottlingSelect.Variant {
@@ -258,11 +264,19 @@ export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<
258
264
  }
259
265
  set variant(variant: NetworkThrottlingSelect.Variant) {
260
266
  this.#variant = variant;
261
- this.#performUpdate();
267
+ this.requestUpdate();
268
+ }
269
+
270
+ get title(): string|undefined {
271
+ return this.#title;
272
+ }
273
+
274
+ set title(title: string|undefined) {
275
+ this.#title = title;
276
+ this.requestUpdate();
262
277
  }
263
278
 
264
- // FIXME Should use requestUpdate once we merge this with the widget
265
- #performUpdate(): void {
279
+ override performUpdate(): void {
266
280
  const customNetworkConditionsSetting = SDK.NetworkManager.customUserNetworkConditionsSetting();
267
281
  const customNetworkConditions = customNetworkConditionsSetting.get();
268
282
  const onAddCustomConditions = (): void => {
@@ -315,7 +329,7 @@ export class NetworkThrottlingSelect extends Common.ObjectWrapper.ObjectWrapper<
315
329
  throttlingGroups,
316
330
  customConditionsGroup,
317
331
  };
318
- this.#view(viewInput, {}, this.#element);
332
+ this.#view(viewInput, {}, this.contentElement as HTMLSelectElement);
319
333
  }
320
334
  }
321
335
  export namespace NetworkThrottlingSelect {
@@ -324,36 +338,3 @@ export namespace NetworkThrottlingSelect {
324
338
  INDIVIDUAL_REQUEST_CONDITIONS = 'individual-request-conditions',
325
339
  }
326
340
  }
327
-
328
- export class NetworkThrottlingSelectorWidget extends UI.Widget.VBox {
329
- #select: NetworkThrottlingSelect;
330
- #conditionsChangedHandler?: ((conditions: SDK.NetworkManager.ThrottlingConditions) => void);
331
- constructor(element?: HTMLElement, view = DEFAULT_VIEW) {
332
- super(element, {useShadowDom: true});
333
- this.#select = new NetworkThrottlingSelect(this.contentElement, {}, view);
334
- this.#select.addEventListener(Events.CONDITIONS_CHANGED, ({data}) => this.#conditionsChangedHandler?.(data));
335
- }
336
-
337
- get disabled(): boolean {
338
- return this.#select.disabled;
339
- }
340
- set disabled(disabled: boolean) {
341
- this.#select.disabled = disabled;
342
- }
343
-
344
- set variant(variant: NetworkThrottlingSelect.Variant) {
345
- this.#select.variant = variant;
346
- }
347
-
348
- set jslogContext(context: string) {
349
- this.#select.jslogContext = context;
350
- }
351
-
352
- set currentConditions(currentConditions: SDK.NetworkManager.ThrottlingConditions|undefined) {
353
- this.#select.currentConditions = currentConditions;
354
- }
355
-
356
- set onConditionsChanged(handler: (conditions: SDK.NetworkManager.ThrottlingConditions) => void) {
357
- this.#conditionsChangedHandler = handler;
358
- }
359
- }
@@ -466,7 +466,7 @@ export const userAgentGroups: UserAgentGroup[] = [
466
466
  {
467
467
  title: 'Chrome \u2014 Android Mobile',
468
468
  value:
469
- 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
469
+ 'Mozilla/5.0 (Linux; Android 16; Pixel 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
470
470
  metadata: {
471
471
  brands: [
472
472
  {brand: 'Not A;Brand', version: '99'},
@@ -475,16 +475,16 @@ export const userAgentGroups: UserAgentGroup[] = [
475
475
  ],
476
476
  fullVersion: '%s',
477
477
  platform: 'Android',
478
- platformVersion: '6.0',
478
+ platformVersion: '16',
479
479
  architecture: '',
480
- model: 'Nexus 5',
480
+ model: 'Pixel 10',
481
481
  mobile: true,
482
482
  },
483
483
  },
484
484
  {
485
485
  title: 'Chrome \u2014 Android Mobile (high-end)',
486
486
  value:
487
- 'Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
487
+ 'Mozilla/5.0 (Linux; Android 16; Pixel 10 Pro XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
488
488
  metadata: {
489
489
  brands: [
490
490
  {brand: 'Not A;Brand', version: '99'},
@@ -493,16 +493,16 @@ export const userAgentGroups: UserAgentGroup[] = [
493
493
  ],
494
494
  fullVersion: '%s',
495
495
  platform: 'Android',
496
- platformVersion: '10',
496
+ platformVersion: '16',
497
497
  architecture: '',
498
- model: 'Pixel 4',
498
+ model: 'Pixel 10 Pro XL',
499
499
  mobile: true,
500
500
  },
501
501
  },
502
502
  {
503
503
  title: 'Chrome \u2014 Android Tablet',
504
504
  value:
505
- 'Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36',
505
+ 'Mozilla/5.0 (Linux; Android 16; Pixel Tablet) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36',
506
506
  metadata: {
507
507
  brands: [
508
508
  {brand: 'Not A;Brand', version: '99'},
@@ -511,22 +511,22 @@ export const userAgentGroups: UserAgentGroup[] = [
511
511
  ],
512
512
  fullVersion: '%s',
513
513
  platform: 'Android',
514
- platformVersion: '4.3',
514
+ platformVersion: '16',
515
515
  architecture: '',
516
- model: 'Nexus 7',
516
+ model: 'Pixel Tablet',
517
517
  mobile: true,
518
518
  },
519
519
  },
520
520
  {
521
521
  title: 'Chrome \u2014 iPhone',
522
522
  value:
523
- 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/%s Mobile/15E148 Safari/604.1',
523
+ 'Mozilla/5.0 (iPhone; CPU iPhone OS 26_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/%s Mobile/15E148 Safari/604.1',
524
524
  metadata: null,
525
525
  },
526
526
  {
527
527
  title: 'Chrome \u2014 iPad',
528
528
  value:
529
- 'Mozilla/5.0 (iPad; CPU OS 13_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/%s Mobile/15E148 Safari/604.1',
529
+ 'Mozilla/5.0 (iPad; CPU OS 26_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/%s Mobile/15E148 Safari/604.1',
530
530
  metadata: null,
531
531
  },
532
532
  {
@@ -268,18 +268,20 @@ function renderItem(
268
268
  aria-details=url-pattern-${index}>
269
269
  ${constructorStringOrWildcardURL}
270
270
  </div>
271
- <devtools-widget
271
+ <select
272
272
  class=conditions-selector
273
273
  title=${i18nString(UIStrings.requestConditionsLabel)}
274
+ @ConditionsChanged=${(e: CustomEvent<SDK.NetworkManager.ThrottlingConditions>) => {
275
+ onConditionsChanged(condition, e.detail);
276
+ }}
274
277
  ${widget(
275
- MobileThrottling.NetworkThrottlingSelector.NetworkThrottlingSelectorWidget, {
278
+ MobileThrottling.NetworkThrottlingSelector.NetworkThrottlingSelect, {
276
279
  variant:
277
280
  MobileThrottling.NetworkThrottlingSelector.NetworkThrottlingSelect.Variant.INDIVIDUAL_REQUEST_CONDITIONS,
278
281
  jslogContext: 'request-conditions',
279
282
  disabled: !editable,
280
- onConditionsChanged: conditions => onConditionsChanged(condition, conditions),
281
283
  currentConditions: condition.conditions,
282
- })}></devtools-widget>
284
+ })}></select>
283
285
  <devtools-widget
284
286
  ?disabled=${!editable || !originalOrUpgradedURLPattern}
285
287
  ${widget(AffectedCountWidget, {condition, lookUpRequestCount})}></devtools-widget>`;
@@ -150,7 +150,7 @@ export const DEFAULT_VIEW: ViewFunction = (input, _output, target) => {
150
150
  </div>
151
151
  </div>
152
152
  `,
153
- target);
153
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('cookies').track({resize: true})}`}}});
154
154
  // clang-format on
155
155
  };
156
156
 
@@ -168,7 +168,7 @@ export class RequestCookiesView extends UI.Widget.Widget {
168
168
  private readonly view: ViewFunction;
169
169
 
170
170
  constructor(request: SDK.NetworkRequest.NetworkRequest, view: ViewFunction = DEFAULT_VIEW) {
171
- super({jslog: `${VisualLogging.pane('cookies').track({resize: true})}`});
171
+ super();
172
172
  this.request = request;
173
173
  this.showFilteredOutCookiesSetting = Common.Settings.Settings.instance().createSetting(
174
174
  'show-filtered-out-request-cookies', /* defaultValue */ false);
@@ -108,7 +108,7 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: ViewOutput, target: HTML
108
108
  nothing}
109
109
  </div>
110
110
  `,
111
- target);
111
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('device-bound-sessions-request')}`}}});
112
112
  };
113
113
 
114
114
  export class RequestDeviceBoundSessionsView extends UI.Widget.VBox {
@@ -116,7 +116,7 @@ export class RequestDeviceBoundSessionsView extends UI.Widget.VBox {
116
116
  #view: typeof DEFAULT_VIEW;
117
117
 
118
118
  constructor(request: SDK.NetworkRequest.NetworkRequest, view: typeof DEFAULT_VIEW = DEFAULT_VIEW) {
119
- super({jslog: `${VisualLogging.pane('device-bound-sessions-request')}`});
119
+ super();
120
120
  this.#request = request;
121
121
  this.#view = view;
122
122
  }
@@ -218,7 +218,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
218
218
  })}
219
219
  `,
220
220
  // clang-format on
221
- target);
221
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('headers').track({resize: true})}`}}});
222
222
  };
223
223
 
224
224
  export class RequestHeadersView extends UI.Widget.Widget {
@@ -239,7 +239,7 @@ export class RequestHeadersView extends UI.Widget.Widget {
239
239
  }
240
240
 
241
241
  constructor(target?: HTMLElement, view = DEFAULT_VIEW) {
242
- super({jslog: `${VisualLogging.pane('headers').track({resize: true})}`});
242
+ super();
243
243
  this.#view = view;
244
244
  }
245
245
 
@@ -114,7 +114,7 @@ export interface ViewInput {
114
114
  onCopyRow: () => void;
115
115
  }
116
116
 
117
- export type View = (input: ViewInput, output: undefined, target: HTMLElement) => void;
117
+ export type View = (input: ViewInput, output: undefined, target: HTMLElement|DocumentFragment) => void;
118
118
 
119
119
  export const DEFAULT_VIEW: View = (input, _output, target) => {
120
120
  function isCategoryOpen(name: string): boolean {
@@ -218,18 +218,17 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
218
218
  ${renderCategory(CATEGORY_NAME_GENERAL, i18nString(UIStrings.general), generalContent)}
219
219
  ${renderCategory(CATEGORY_NAME_OPTIONS, i18nString(UIStrings.options), optionsContent)}
220
220
  ${socketInfo.openInfo ? renderCategory(CATEGORY_NAME_OPEN_INFO, i18nString(UIStrings.openInfo), openInfoContent) : Lit.nothing}
221
- `, target);
221
+ `, target, {container: {attributes: {jslog: `${VisualLogging.pane('connection-info').track({resize: true})}`}}});
222
222
  // clang-format on
223
223
  };
224
224
 
225
- export class DirectSocketConnectionView extends UI.Widget.Widget {
225
+ export class DirectSocketConnectionView extends UI.Widget.Widget<ShadowRoot> {
226
226
  #request: Readonly<SDK.NetworkRequest.NetworkRequest>;
227
227
  #view: View;
228
228
 
229
229
  constructor(request: SDK.NetworkRequest.NetworkRequest, view: View = DEFAULT_VIEW) {
230
230
  super({
231
- jslog: `${VisualLogging.pane('connection-info').track({resize: true})}`,
232
- useShadowDom: true,
231
+ useShadowDom: 'pure',
233
232
  });
234
233
  this.#request = request;
235
234
  this.#view = view;
@@ -75,8 +75,8 @@ interface PerformanceMonitorOutput {
75
75
  width: number;
76
76
  }
77
77
 
78
- type PerformanceMonitorView = (input: PerformanceMonitorInput, output: PerformanceMonitorOutput, target: HTMLElement) =>
79
- void;
78
+ type PerformanceMonitorView =
79
+ (input: PerformanceMonitorInput, output: PerformanceMonitorOutput, target: DocumentFragment) => void;
80
80
 
81
81
  const DEFAULT_VIEW: PerformanceMonitorView = (input, output, target) => {
82
82
  // clang-format off
@@ -102,11 +102,11 @@ const DEFAULT_VIEW: PerformanceMonitorView = (input, output, target) => {
102
102
  <div class="perfmon-chart-suspend-overlay fill">
103
103
  <div>${i18nString(UIStrings.paused)}</div>
104
104
  </div>` : ''}`,
105
- target);
105
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('performance.monitor').track({resize: true})}`}}});
106
106
  // clang-format on
107
107
  };
108
108
 
109
- export class PerformanceMonitorImpl extends UI.Widget.HBox implements
109
+ export class PerformanceMonitorImpl extends UI.Widget.HBox<ShadowRoot> implements
110
110
  SDK.TargetManager.SDKModelObserver<SDK.PerformanceMetricsModel.PerformanceMetricsModel> {
111
111
  private view: PerformanceMonitorView;
112
112
  private chartInfos: ChartInfo[] = [];
@@ -127,10 +127,7 @@ export class PerformanceMonitorImpl extends UI.Widget.HBox implements
127
127
  private graphRenderingContext: CanvasRenderingContext2D|null = null;
128
128
 
129
129
  constructor(pollIntervalMs = 500, view = DEFAULT_VIEW) {
130
- super({
131
- jslog: `${VisualLogging.panel('performance.monitor').track({resize: true})}`,
132
- useShadowDom: true,
133
- });
130
+ super({useShadowDom: 'pure'});
134
131
  this.view = view;
135
132
  this.registerRequiredCSS(performanceMonitorStyles);
136
133
 
@@ -504,7 +501,7 @@ export class PerformanceMonitorImpl extends UI.Widget.HBox implements
504
501
 
505
502
  private createChartInfos(): ChartInfo[] {
506
503
  const themeSupport = ThemeSupport.ThemeSupport.instance();
507
- const elementForStyles = this.contentElement;
504
+ const elementForStyles = this.contentElement.firstElementChild;
508
505
 
509
506
  const defaults: Partial<ChartInfo> = {};
510
507