chrome-devtools-frontend 1.0.1538523 → 1.0.1539972

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 (347) hide show
  1. package/eslint.config.mjs +1 -1
  2. package/front_end/core/common/Debouncer.ts +2 -2
  3. package/front_end/core/common/Gzip.ts +1 -1
  4. package/front_end/core/common/Throttler.ts +3 -3
  5. package/front_end/core/host/GdpClient.ts +4 -0
  6. package/front_end/core/protocol_client/CDPConnection.ts +12 -10
  7. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +181 -0
  8. package/front_end/core/protocol_client/InspectorBackend.ts +55 -249
  9. package/front_end/core/protocol_client/protocol_client.ts +2 -2
  10. package/front_end/core/sdk/ChildTargetManager.ts +5 -41
  11. package/front_end/core/sdk/Connections.ts +9 -58
  12. package/front_end/core/sdk/DOMModel.ts +1 -0
  13. package/front_end/core/sdk/DebuggerModel.ts +3 -16
  14. package/front_end/core/sdk/RehydratingConnection.ts +1 -1
  15. package/front_end/core/sdk/RemoteObject.ts +4 -0
  16. package/front_end/core/sdk/Target.ts +3 -6
  17. package/front_end/core/sdk/TargetManager.ts +1 -2
  18. package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +13 -26
  19. package/front_end/entrypoints/node_app/{NodeConnectionsPanel.ts → app/NodeConnectionsPanel.ts} +8 -8
  20. package/front_end/entrypoints/node_app/{NodeMain.ts → app/NodeMain.ts} +12 -11
  21. package/front_end/entrypoints/node_app/app/app.ts +6 -0
  22. package/front_end/entrypoints/node_app/node_app.ts +4 -2
  23. package/front_end/generated/Deprecation.ts +8 -0
  24. package/front_end/generated/{InspectorBackendCommands.js → InspectorBackendCommands.ts} +18 -36
  25. package/front_end/generated/SupportedCSSProperties.js +50 -9
  26. package/front_end/generated/protocol.ts +2 -2
  27. package/front_end/models/ai_assistance/EvaluateAction.ts +88 -5
  28. package/front_end/models/ai_assistance/injected.ts +15 -2
  29. package/front_end/models/live-metrics/web-vitals-injected/README.md +1 -1
  30. package/front_end/models/trace/Styles.ts +1 -1
  31. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +18 -3
  32. package/front_end/models/trace/types/TraceEvents.ts +19 -0
  33. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +49 -26
  34. package/front_end/panels/ai_assistance/PatchWidget.ts +22 -12
  35. package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
  36. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  37. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -135
  38. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +170 -0
  39. package/front_end/panels/ai_assistance/components/ExploreWidget.ts +4 -4
  40. package/front_end/panels/ai_assistance/components/chatView.css +0 -31
  41. package/front_end/panels/ai_assistance/components/disabledWidget.css +45 -0
  42. package/front_end/panels/animation/AnimationTimeline.ts +1 -1
  43. package/front_end/panels/application/components/FrameDetailsView.ts +1 -1
  44. package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +4 -4
  45. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +2 -2
  46. package/front_end/panels/console/ConsoleViewMessage.ts +1 -1
  47. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -3
  48. package/front_end/panels/elements/ElementsTreeElement.ts +123 -95
  49. package/front_end/panels/elements/ElementsTreeOutline.ts +2 -2
  50. package/front_end/panels/elements/NodeStackTraceWidget.ts +8 -2
  51. package/front_end/panels/elements/PropertiesWidget.ts +3 -2
  52. package/front_end/panels/event_listeners/EventListenersView.ts +9 -5
  53. package/front_end/panels/explain/components/ConsoleInsight.ts +2 -3
  54. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +57 -33
  55. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +2 -2
  56. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +1 -1
  57. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +12 -5
  58. package/front_end/panels/network/RequestInitiatorView.ts +1 -1
  59. package/front_end/panels/network/RequestPayloadView.ts +2 -1
  60. package/front_end/panels/network/RequestTimingView.ts +4 -2
  61. package/front_end/panels/network/components/EditableSpan.ts +1 -1
  62. package/front_end/panels/network/components/RequestHeadersView.ts +24 -17
  63. package/front_end/panels/protocol_monitor/JSONEditor.ts +2 -2
  64. package/front_end/panels/recorder/RecorderController.ts +6 -7
  65. package/front_end/panels/recorder/components/StepView.ts +1 -1
  66. package/front_end/panels/recorder/models/RecordingPlayer.ts +7 -6
  67. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  68. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +4 -4
  69. package/front_end/panels/sources/BreakpointsView.ts +3 -3
  70. package/front_end/panels/sources/ScopeChainSidebarPane.ts +4 -3
  71. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
  72. package/front_end/panels/timeline/TimelineFlameChartView.ts +10 -10
  73. package/front_end/panels/timeline/TimelinePanel.ts +3 -3
  74. package/front_end/panels/timeline/TimelineUIUtils.ts +21 -24
  75. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +9 -5
  76. package/front_end/panels/timeline/components/LiveMetricsView.ts +20 -9
  77. package/front_end/panels/timeline/components/MetricCard.ts +4 -2
  78. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +3 -2
  79. package/front_end/panels/utils/utils.ts +4 -2
  80. package/front_end/services/puppeteer/PuppeteerConnection.ts +57 -53
  81. package/front_end/third_party/chromium/README.chromium +1 -1
  82. package/front_end/third_party/puppeteer/README.chromium +2 -2
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +3 -1
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js +4 -2
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts +3 -1
  88. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
  90. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +5 -0
  91. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  92. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js +4 -3
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js.map +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts +2 -1
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts.map +1 -1
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.js +3 -2
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.js.map +1 -1
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +1 -0
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +29 -9
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +11 -0
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +9 -2
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +1 -0
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +21 -0
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +4 -2
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -2
  128. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  129. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  130. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.js +2 -1
  131. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.js.map +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.d.ts +6 -1
  133. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.d.ts.map +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js +11 -2
  135. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js.map +1 -1
  136. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
  137. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.js +5 -1
  138. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExtensionTransport.js.map +1 -1
  139. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +1 -0
  140. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +6 -0
  142. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts +1 -1
  144. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js +29 -27
  146. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +2 -0
  148. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +4 -3
  150. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +7 -0
  152. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  153. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts +4 -0
  155. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +10 -4
  157. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  159. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  161. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +14 -3
  162. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +97 -43
  163. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +3 -1
  164. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  165. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js +4 -2
  166. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  167. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts +3 -1
  168. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
  169. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +5 -0
  171. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  173. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.js +1 -1
  175. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  177. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js +4 -3
  178. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js.map +1 -1
  179. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +1 -1
  180. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +1 -1
  182. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
  183. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts +2 -1
  184. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts.map +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.js +3 -2
  186. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.js.map +1 -1
  187. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +1 -0
  188. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  189. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +29 -9
  190. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
  192. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +11 -0
  194. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  195. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  196. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +9 -2
  197. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +1 -0
  199. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +21 -0
  201. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  203. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +4 -2
  204. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
  205. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +1 -1
  206. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  207. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -2
  208. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  209. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.js +2 -1
  211. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.js.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.d.ts +6 -1
  213. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.d.ts.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.js +11 -2
  215. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.js.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
  217. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.js +5 -1
  218. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExtensionTransport.js.map +1 -1
  219. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +1 -0
  220. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +6 -0
  222. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts +1 -1
  224. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  225. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js +30 -28
  226. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +2 -0
  228. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +4 -3
  230. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
  231. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +7 -0
  232. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  233. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts +4 -0
  234. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  235. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +10 -4
  236. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  237. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  238. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  239. package/front_end/third_party/puppeteer/package/lib/types.d.ts +14 -3
  240. package/front_end/third_party/puppeteer/package/package.json +3 -3
  241. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +4 -2
  242. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +3 -1
  243. package/front_end/third_party/puppeteer/package/src/api/Page.ts +6 -0
  244. package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +1 -0
  245. package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +8 -1
  246. package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +1 -1
  247. package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +4 -1
  248. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +38 -10
  249. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +13 -0
  250. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +8 -2
  251. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +32 -0
  252. package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +4 -0
  253. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +2 -2
  254. package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +2 -1
  255. package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +15 -1
  256. package/front_end/third_party/puppeteer/package/src/cdp/ExtensionTransport.ts +5 -1
  257. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +8 -0
  258. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +36 -43
  259. package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +7 -5
  260. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +8 -0
  261. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +22 -1
  262. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  263. package/front_end/ui/components/dialogs/ButtonDialog.ts +15 -5
  264. package/front_end/ui/components/expandable_list/ExpandableList.ts +1 -1
  265. package/front_end/ui/components/helpers/helpers.ts +0 -2
  266. package/front_end/ui/components/menus/Menu.ts +5 -3
  267. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
  268. package/front_end/ui/components/survey_link/SurveyLink.docs.ts +22 -0
  269. package/front_end/ui/components/switch/Switch.docs.ts +38 -0
  270. package/front_end/ui/components/tooltips/Tooltip.ts +69 -45
  271. package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -2
  272. package/front_end/ui/legacy/SelectMenu.docs.ts +14 -0
  273. package/front_end/ui/legacy/Slider.docs.ts +49 -0
  274. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +3 -1
  275. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +453 -347
  276. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +77 -5
  277. package/front_end/ui/legacy/components/utils/Linkifier.ts +62 -3
  278. package/front_end/ui/visual_logging/KnownContextValues.ts +8 -0
  279. package/package.json +1 -1
  280. package/front_end/core/protocol_client/NodeURL.ts +0 -42
  281. package/front_end/third_party/puppeteer/package/src/templates/version.ts.tmpl +0 -4
  282. package/front_end/ui/components/docs/color_swatch/basic.html +0 -32
  283. package/front_end/ui/components/docs/color_swatch/basic.ts +0 -38
  284. package/front_end/ui/components/docs/color_swatch/change-color.html +0 -24
  285. package/front_end/ui/components/docs/color_swatch/change-color.ts +0 -28
  286. package/front_end/ui/components/docs/combo_box/basic.html +0 -20
  287. package/front_end/ui/components/docs/combo_box/basic.ts +0 -49
  288. package/front_end/ui/components/docs/computed_style_property/basic.html +0 -25
  289. package/front_end/ui/components/docs/computed_style_property/basic.ts +0 -19
  290. package/front_end/ui/components/docs/computed_style_property/traceable.html +0 -25
  291. package/front_end/ui/components/docs/computed_style_property/traceable.ts +0 -16
  292. package/front_end/ui/components/docs/computed_style_trace/basic.html +0 -25
  293. package/front_end/ui/components/docs/computed_style_trace/basic.ts +0 -24
  294. package/front_end/ui/components/docs/console_insight/basic.html +0 -28
  295. package/front_end/ui/components/docs/console_insight/basic.ts +0 -103
  296. package/front_end/ui/components/docs/console_insight/error.html +0 -28
  297. package/front_end/ui/components/docs/console_insight/error.ts +0 -33
  298. package/front_end/ui/components/docs/console_insight/loading.html +0 -28
  299. package/front_end/ui/components/docs/console_insight/loading.ts +0 -47
  300. package/front_end/ui/components/docs/elements_breadcrumbs/basic.html +0 -43
  301. package/front_end/ui/components/docs/elements_breadcrumbs/basic.ts +0 -54
  302. package/front_end/ui/components/docs/elements_breadcrumbs/helpers.ts +0 -29
  303. package/front_end/ui/components/docs/elements_breadcrumbs/scroll-to-active-element.html +0 -38
  304. package/front_end/ui/components/docs/elements_breadcrumbs/scroll-to-active-element.ts +0 -90
  305. package/front_end/ui/components/docs/elements_breadcrumbs/scroll.html +0 -29
  306. package/front_end/ui/components/docs/elements_breadcrumbs/scroll.ts +0 -62
  307. package/front_end/ui/components/docs/icon_button/basic.html +0 -34
  308. package/front_end/ui/components/docs/icon_button/basic.ts +0 -67
  309. package/front_end/ui/components/docs/issue_counter/basic.html +0 -35
  310. package/front_end/ui/components/docs/issue_counter/basic.ts +0 -34
  311. package/front_end/ui/components/docs/issue_link_icon/basic.html +0 -31
  312. package/front_end/ui/components/docs/issue_link_icon/basic.ts +0 -26
  313. package/front_end/ui/components/docs/legacy_color_invert/basic.html +0 -77
  314. package/front_end/ui/components/docs/legacy_color_invert/basic.ts +0 -98
  315. package/front_end/ui/components/docs/linear_memory_inspector/basic.html +0 -26
  316. package/front_end/ui/components/docs/linear_memory_inspector/basic.ts +0 -44
  317. package/front_end/ui/components/docs/menu/basic.html +0 -28
  318. package/front_end/ui/components/docs/menu/basic.ts +0 -66
  319. package/front_end/ui/components/docs/recorder_control_button/basic.html +0 -20
  320. package/front_end/ui/components/docs/recorder_control_button/basic.ts +0 -15
  321. package/front_end/ui/components/docs/recorder_recording_list_view/basic.html +0 -20
  322. package/front_end/ui/components/docs/recorder_recording_list_view/basic.ts +0 -26
  323. package/front_end/ui/components/docs/recorder_select_button/basic.html +0 -20
  324. package/front_end/ui/components/docs/recorder_select_button/basic.ts +0 -81
  325. package/front_end/ui/components/docs/recorder_split_view/basic.html +0 -17
  326. package/front_end/ui/components/docs/recorder_split_view/basic.ts +0 -22
  327. package/front_end/ui/components/docs/request_link_icon/basic.html +0 -31
  328. package/front_end/ui/components/docs/request_link_icon/basic.ts +0 -21
  329. package/front_end/ui/components/docs/slider/basic.ts +0 -62
  330. package/front_end/ui/components/docs/style_property_editor/flex.html +0 -21
  331. package/front_end/ui/components/docs/style_property_editor/flex.ts +0 -52
  332. package/front_end/ui/components/docs/style_property_editor/grid.html +0 -22
  333. package/front_end/ui/components/docs/style_property_editor/grid.ts +0 -50
  334. package/front_end/ui/components/docs/style_property_editor/masonry.html +0 -21
  335. package/front_end/ui/components/docs/style_property_editor/masonry.ts +0 -50
  336. package/front_end/ui/components/docs/survey_link/basic.html +0 -20
  337. package/front_end/ui/components/docs/survey_link/basic.ts +0 -28
  338. package/front_end/ui/components/docs/switch/basic.ts +0 -51
  339. package/front_end/ui/components/docs/tree_outline/basic.html +0 -33
  340. package/front_end/ui/components/docs/tree_outline/basic.ts +0 -38
  341. package/front_end/ui/components/docs/tree_outline/custom-renderers.html +0 -32
  342. package/front_end/ui/components/docs/tree_outline/custom-renderers.ts +0 -61
  343. package/front_end/ui/components/docs/tree_outline/lazy-children.html +0 -32
  344. package/front_end/ui/components/docs/tree_outline/lazy-children.ts +0 -91
  345. package/front_end/ui/components/docs/tree_outline/sample-data.ts +0 -67
  346. package/front_end/ui/components/helpers/directives.ts +0 -38
  347. /package/front_end/entrypoints/node_app/{nodeConnectionsPanel.css → app/nodeConnectionsPanel.css} +0 -0
@@ -6,16 +6,17 @@ import * as i18n from '../../core/i18n/i18n.js';
6
6
  import type * as Platform from '../../core/platform/platform.js';
7
7
  import type * as ProtocolClient from '../../core/protocol_client/protocol_client.js';
8
8
  import * as SDK from '../../core/sdk/sdk.js';
9
+ import type * as Protocol from '../../generated/protocol.js';
9
10
 
10
11
  import type * as ReportRenderer from './LighthouseReporterTypes.js';
11
12
 
12
13
  /**
13
14
  * @file
14
- * ┌────────────┐
15
- * CDP Backend
16
- * └────────────┘
15
+ * ┌───────────────┐
16
+ * CDPConnection
17
+ * └───────────────┘
17
18
  * │ ▲
18
- * │ │ parallelConnection
19
+ * │ │
19
20
  * ┌┐ ▼ │ ┌┐
20
21
  * ││ dispatchProtocolMessage sendProtocolMessage ││
21
22
  * ││ │ ▲ ││
@@ -28,7 +29,10 @@ import type * as ReportRenderer from './LighthouseReporterTypes.js';
28
29
  * ││ onFrontendMessage notifyFrontendViaWorkerMessage ││
29
30
  * ││ │ ▲ ││
30
31
  * ││ ▼ │ ││
31
- * LighthouseWorkerService ││ Either ConnectionProxy or LegacyPort ││
32
+ * LighthouseWorkerService ││ WorkerConnectionTransport ││
33
+ * ││ │ ▲ ││
34
+ * ││ ▼ │ ││
35
+ * ││ CDPConnection ││
32
36
  * ││ │ ▲ ││
33
37
  * ││ ┌─────────────────────┼─┼───────────────────────┐ ││
34
38
  * ││ │ Lighthouse ┌────▼──────┐ │ ││
@@ -37,10 +41,10 @@ import type * as ReportRenderer from './LighthouseReporterTypes.js';
37
41
  * └┘ └───────────────────────────────────────────────┘ └┘
38
42
  *
39
43
  * - All messages traversing the worker boundary are action-wrapped.
40
- * - All messages over the parallelConnection speak pure CDP.
41
- * - All messages within ConnectionProxy/LegacyPort speak pure CDP.
42
- * - The foundational CDP connection is `parallelConnection`.
43
- * - All connections within the worker are not actual ParallelConnection's.
44
+ * - All messages over the CDPConnection speak pure CDP.
45
+ * - Within the worker we also use a 'CDPConnection' but with a custom
46
+ * transport called WorkerConnectionTransport.
47
+ * - All messages within WorkerConnectionTransport/LegacyPort speak pure CDP.
44
48
  */
45
49
 
46
50
  let lastId = 1;
@@ -57,14 +61,15 @@ export interface LighthouseRun {
57
61
  /**
58
62
  * ProtocolService manages a connection between the frontend (Lighthouse panel) and the Lighthouse worker.
59
63
  */
60
- export class ProtocolService {
61
- private mainSessionId?: string;
64
+ export class ProtocolService implements ProtocolClient.CDPConnection.CDPConnectionObserver {
65
+ private mainSessionId?: Protocol.Target.SessionID;
62
66
  private rootTargetId?: string;
63
- private parallelConnection?: ProtocolClient.ConnectionTransport.ConnectionTransport;
67
+ private rootTarget?: SDK.Target.Target;
64
68
  private lighthouseWorkerPromise?: Promise<Worker>;
65
69
  private lighthouseMessageUpdateCallback?: ((arg0: string) => void);
66
70
  private removeDialogHandler?: () => void;
67
71
  private configForTesting?: object;
72
+ private connection?: ProtocolClient.CDPConnection.CDPConnection;
68
73
 
69
74
  async attach(): Promise<void> {
70
75
  await SDK.TargetManager.TargetManager.instance().suspendAllTargets();
@@ -90,12 +95,15 @@ export class ProtocolService {
90
95
  throw new Error('Could not find the child target manager class for the root target');
91
96
  }
92
97
 
93
- const {connection, sessionId} = await rootChildTargetManager.createParallelConnection(message => {
94
- if (typeof message === 'string') {
95
- message = JSON.parse(message);
96
- }
97
- this.dispatchProtocolMessage(message);
98
- });
98
+ const connection = rootTarget.router()?.connection;
99
+ if (!connection) {
100
+ throw new Error('Expected root target to have a session router');
101
+ }
102
+
103
+ const rootTargetId = await rootChildTargetManager.getParentTargetId();
104
+ const {sessionId} = await rootTarget.targetAgent().invoke_attachToTarget({targetId: rootTargetId, flatten: true});
105
+ this.connection = connection;
106
+ this.connection.observe(this);
99
107
 
100
108
  // Lighthouse implements its own dialog handler like this, however its lifecycle ends when
101
109
  // the internal Lighthouse session is disposed.
@@ -114,8 +122,8 @@ export class ProtocolService {
114
122
  this.removeDialogHandler = () =>
115
123
  resourceTreeModel.removeEventListener(SDK.ResourceTreeModel.Events.JavaScriptDialogOpening, dialogHandler);
116
124
 
117
- this.parallelConnection = connection;
118
- this.rootTargetId = await rootChildTargetManager.getParentTargetId();
125
+ this.rootTargetId = rootTargetId;
126
+ this.rootTarget = rootTarget;
119
127
  this.mainSessionId = sessionId;
120
128
  }
121
129
 
@@ -166,20 +174,22 @@ export class ProtocolService {
166
174
 
167
175
  async detach(): Promise<void> {
168
176
  const oldLighthouseWorker = this.lighthouseWorkerPromise;
169
- const oldParallelConnection = this.parallelConnection;
177
+ const oldRootTarget = this.rootTarget;
170
178
 
171
179
  // When detaching, make sure that we remove the old promises, before we
172
180
  // perform any async cleanups. That way, if there is a message coming from
173
181
  // lighthouse while we are in the process of cleaning up, we shouldn't deliver
174
182
  // them to the backend.
175
183
  this.lighthouseWorkerPromise = undefined;
176
- this.parallelConnection = undefined;
184
+ this.rootTarget = undefined;
185
+ this.connection?.unobserve(this);
186
+ this.connection = undefined;
177
187
 
178
188
  if (oldLighthouseWorker) {
179
189
  (await oldLighthouseWorker).terminate();
180
190
  }
181
- if (oldParallelConnection) {
182
- await oldParallelConnection.disconnect();
191
+ if (oldRootTarget && this.mainSessionId) {
192
+ await oldRootTarget.targetAgent().invoke_detachFromTarget({sessionId: this.mainSessionId});
183
193
  }
184
194
  await SDK.TargetManager.TargetManager.instance().resumeAllTargets();
185
195
  this.removeDialogHandler?.();
@@ -189,7 +199,11 @@ export class ProtocolService {
189
199
  this.lighthouseMessageUpdateCallback = callback;
190
200
  }
191
201
 
192
- private dispatchProtocolMessage(message: string|object): void {
202
+ onEvent<T extends ProtocolClient.CDPConnection.Event>(event: ProtocolClient.CDPConnection.CDPEvent<T>): void {
203
+ this.dispatchProtocolMessage(event);
204
+ }
205
+
206
+ private dispatchProtocolMessage(message: ProtocolClient.CDPConnection.CDPReceivableMessage): void {
193
207
  // A message without a sessionId is the main session of the main target (call it "Main session").
194
208
  // A parallel connection and session was made that connects to the same main target (call it "Lighthouse session").
195
209
  // Messages from the "Lighthouse session" have a sessionId.
@@ -199,15 +213,15 @@ export class ProtocolService {
199
213
  // * the message has a sessionId (is not for the "Main session")
200
214
  // * the message does not have a sessionId (is for the "Main session"), but only for the Target domain
201
215
  // (to kickstart autoAttach in LH).
202
- const protocolMessage = message as {
203
- sessionId?: string,
204
- method?: string,
205
- };
206
- if (protocolMessage.sessionId || (protocolMessage.method?.startsWith('Target'))) {
216
+ if (message.sessionId || ('method' in message && message.method?.startsWith('Target'))) {
207
217
  void this.send('dispatchProtocolMessage', {message});
208
218
  }
209
219
  }
210
220
 
221
+ onDisconnect(): void {
222
+ // Do nothing.
223
+ }
224
+
211
225
  private initWorker(): Promise<Worker> {
212
226
  this.lighthouseWorkerPromise = new Promise<Worker>(resolve => {
213
227
  const workerUrl = new URL('../../entrypoints/lighthouse_worker/lighthouse_worker.js', import.meta.url);
@@ -255,9 +269,19 @@ export class ProtocolService {
255
269
  }
256
270
 
257
271
  private sendProtocolMessage(message: string): void {
258
- if (this.parallelConnection) {
259
- this.parallelConnection.sendRawMessage(message);
260
- }
272
+ const {id, method, params, sessionId} = JSON.parse(message);
273
+ // CDPConnection manages it's own message IDs and it's important, otherwise we'd clash
274
+ // with the rest of the DevTools traffic.
275
+ // Instead, we ignore the ID coming from the worker when sending the command, but
276
+ // patch it back in when sending the response back to the worker.
277
+ void this.connection?.send(method, params, sessionId).then(response => {
278
+ this.dispatchProtocolMessage({
279
+ id,
280
+ sessionId,
281
+ result: 'result' in response ? response.result : undefined,
282
+ error: 'error' in response ? response.error : undefined,
283
+ });
284
+ });
261
285
  }
262
286
 
263
287
  private async send(action: string, args: Record<string, string|string[]|object> = {}): Promise<void> {
@@ -318,9 +318,9 @@ export class LinearMemoryInspectorController extends SDK.TargetManager.SDKModelO
318
318
  appendApplicableItems(
319
319
  _event: Event, contextMenu: UI.ContextMenu.ContextMenu,
320
320
  target: ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement): void {
321
- if (target.property.value?.isLinearMemoryInspectable()) {
321
+ if (target.property.object?.isLinearMemoryInspectable()) {
322
322
  const expression = target.path();
323
- const object = target.property.value;
323
+ const object = target.property.object;
324
324
  contextMenu.debugSection().appendItem(
325
325
  i18nString(UIStrings.openInMemoryInspectorPanel),
326
326
  this.reveal.bind(this, new SDK.RemoteObject.LinearMemoryInspectable(object, expression)),
@@ -204,7 +204,7 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: Record<string, unknown>,
204
204
  @endiannesschanged=${input.onEndiannessChanged}
205
205
  @jumptopointeraddress=${input.onJumpToAddress}
206
206
  >
207
- </devtools-linear-memory-inspector-interpreter/>
207
+ </devtools-linear-memory-inspector-interpreter>
208
208
  </div>`}
209
209
  `,
210
210
  target);
@@ -163,13 +163,20 @@ export class LinearMemoryNavigator extends HTMLElement {
163
163
  'address-input': true,
164
164
  invalid: !this.#valid,
165
165
  };
166
- return html`
167
- <input class=${Lit.Directives.classMap(classMap)} data-input="true" .value=${this.#address}
168
- jslog=${VisualLogging.textField('linear-memory-inspector.address').track({
166
+ return html`<input
167
+ class=${Lit.Directives.classMap(classMap)}
168
+ data-input="true"
169
+ .value=${this.#address}
170
+ jslog=${VisualLogging.textField('linear-memory-inspector.address').track({
169
171
  change: true,
170
172
  })}
171
- title=${ifDefined(this.#valid ? i18nString(UIStrings.enterAddress) : this.#error)} @change=${
172
- this.#onAddressChange.bind(this, Mode.SUBMITTED)} @input=${this.#onAddressChange.bind(this, Mode.EDIT)}/>`;
173
+ title=${
174
+ ifDefined(
175
+ this.#valid ? i18nString(UIStrings.enterAddress) : this.#error,
176
+ )}
177
+ @change=${this.#onAddressChange.bind(this, Mode.SUBMITTED)}
178
+ @input=${this.#onAddressChange.bind(this, Mode.EDIT)}
179
+ />`;
173
180
  }
174
181
 
175
182
  #onAddressChange(mode: Mode, event: Event): void {
@@ -56,7 +56,7 @@ export class RequestInitiatorView extends UI.Widget.VBox {
56
56
  const networkManager = SDK.NetworkManager.NetworkManager.forRequest(request);
57
57
  const target = networkManager ? networkManager.target() : undefined;
58
58
  return new Components.JSPresentationUtils.StackTracePreviewContent(
59
- undefined, target, linkifier, {stackTrace: initiator.stack, tabStops: focusableLink});
59
+ undefined, target, linkifier, {runtimeStackTrace: initiator.stack, tabStops: focusableLink});
60
60
  }
61
61
 
62
62
  private createTree(): UI.TreeOutline.TreeOutlineInShadow {
@@ -435,7 +435,8 @@ export class RequestPayloadView extends UI.Widget.VBox {
435
435
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
436
436
  private appendJSONPayloadParsed(rootListItem: Category, parsedObject: any, sourceText: string): void {
437
437
  const object = (SDK.RemoteObject.RemoteObject.fromLocalObject(parsedObject) as SDK.RemoteObject.LocalJSONObject);
438
- const section = new ObjectUI.ObjectPropertiesSection.RootElement(object);
438
+ const section =
439
+ new ObjectUI.ObjectPropertiesSection.RootElement(new ObjectUI.ObjectPropertiesSection.ObjectTree(object));
439
440
  section.title = (object.description);
440
441
  section.expand();
441
442
  // `editable` is not a valid property for `ObjectUI.ObjectPropertiesSection.RootElement`. Only for
@@ -608,7 +608,8 @@ export class RequestTimingView extends UI.Widget.VBox {
608
608
  const origRequest = Logs.NetworkLog.NetworkLog.instance().originalRequestForURL(this.#request.url());
609
609
  if (origRequest) {
610
610
  const requestObject = SDK.RemoteObject.RemoteObject.fromLocalObject(origRequest);
611
- const requestTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(requestObject);
611
+ const requestTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
612
+ new ObjectUI.ObjectPropertiesSection.ObjectTree(requestObject));
612
613
  requestTreeElement.title = i18nString(UIStrings.originalRequest);
613
614
  detailsView.appendChild(requestTreeElement);
614
615
  }
@@ -616,7 +617,8 @@ export class RequestTimingView extends UI.Widget.VBox {
616
617
  const response = Logs.NetworkLog.NetworkLog.instance().originalResponseForURL(this.#request.url());
617
618
  if (response) {
618
619
  const responseObject = SDK.RemoteObject.RemoteObject.fromLocalObject(response);
619
- const responseTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(responseObject);
620
+ const responseTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
621
+ new ObjectUI.ObjectPropertiesSection.ObjectTree(responseObject));
620
622
  responseTreeElement.title = i18nString(UIStrings.responseReceived);
621
623
  detailsView.appendChild(responseTreeElement);
622
624
  }
@@ -75,7 +75,7 @@ export class EditableSpan extends HTMLElement {
75
75
  tabindex="0"
76
76
  .innerText=${this.#value}
77
77
  jslog=${VisualLogging.value('header-editor').track({change: true, keydown: 'Enter|Escape'})}
78
- </span>`, this.#shadow, {host: this});
78
+ ></span>`, this.#shadow, {host: this});
79
79
  // clang-format on
80
80
  }
81
81
 
@@ -14,7 +14,6 @@ import * as Persistence from '../../../models/persistence/persistence.js';
14
14
  import * as Workspace from '../../../models/workspace/workspace.js';
15
15
  import * as NetworkForward from '../../../panels/network/forward/forward.js';
16
16
  import * as Buttons from '../../../ui/components/buttons/buttons.js';
17
- import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
18
17
  import * as Input from '../../../ui/components/input/input.js';
19
18
  import * as LegacyWrapper from '../../../ui/components/legacy_wrapper/legacy_wrapper.js';
20
19
  import * as RenderCoordinator from '../../../ui/components/render_coordinator/render_coordinator.js';
@@ -401,25 +400,33 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
401
400
  }
402
401
  };
403
402
 
404
- const addContextMenuListener = (el: Element): void => {
405
- if (isShortened) {
406
- el.addEventListener('contextmenu', onContextMenuOpen);
407
- }
408
- };
409
-
410
403
  // Disabled until https://crbug.com/1079231 is fixed.
411
404
  // clang-format off
412
405
  return html`
413
- <div class="row raw-headers-row" on-render=${ComponentHelpers.Directives.nodeRenderedCallback(addContextMenuListener)}>
414
- <div class="raw-headers">${isShortened ? trimmed.substring(0, RAW_HEADER_CUTOFF) : trimmed}</div>
415
- ${isShortened ? html`
416
- <devtools-button
417
- .size=${Buttons.Button.Size.SMALL}
418
- .variant=${Buttons.Button.Variant.OUTLINED}
419
- @click=${showMore}
420
- jslog=${VisualLogging.action('raw-headers-show-more').track({click: true})}
421
- >${i18nString(UIStrings.showMore)}</devtools-button>
422
- ` : Lit.nothing}
406
+ <div
407
+ class="row raw-headers-row"
408
+ @contextmenu=${(event: Event) => {
409
+ if (isShortened) {
410
+ onContextMenuOpen(event);
411
+ }
412
+ }}
413
+ >
414
+ <div class="raw-headers">
415
+ ${isShortened ? trimmed.substring(0, RAW_HEADER_CUTOFF) : trimmed}
416
+ </div>
417
+ ${isShortened
418
+ ? html`
419
+ <devtools-button
420
+ .size=${Buttons.Button.Size.SMALL}
421
+ .variant=${Buttons.Button.Variant.OUTLINED}
422
+ @click=${showMore}
423
+ jslog=${VisualLogging.action('raw-headers-show-more').track({
424
+ click: true,
425
+ })}
426
+ >${i18nString(UIStrings.showMore)}</devtools-button
427
+ >
428
+ `
429
+ : Lit.nothing}
423
430
  </div>
424
431
  `;
425
432
  // clang-format on
@@ -1072,7 +1072,7 @@ function renderParameters(
1072
1072
  ${hasNoKeys ?
1073
1073
  html`<devtools-suggestion-input
1074
1074
  data-paramId=${parameterId}
1075
- isKey=${true}
1075
+ .isKey=${true}
1076
1076
  .isCorrectInput=${live(parameter.isCorrectType)}
1077
1077
  .options=${hasOptions ? input.computeDropdownValues(parameter) : []}
1078
1078
  .autocomplete=${false}
@@ -1258,7 +1258,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
1258
1258
  <div class=toolbar-spacer></div>
1259
1259
  <devtools-button title=${Host.Platform.isMac() ? i18nString(UIStrings.sendCommandCmdEnter) : i18nString(UIStrings.sendCommandCtrlEnter)}
1260
1260
  .iconName=${'send'}
1261
- jslogContext=${'protocol-monitor.send-command'}
1261
+ jslogContext="protocol-monitor.send-command"
1262
1262
  .variant=${Buttons.Button.Variant.PRIMARY_TOOLBAR}
1263
1263
  @click=${input.onCommandSend}></devtools-button>
1264
1264
  </devtools-toolbar>
@@ -16,7 +16,6 @@ import * as Emulation from '../../panels/emulation/emulation.js';
16
16
  import * as Tracing from '../../services/tracing/tracing.js';
17
17
  import * as Buttons from '../../ui/components/buttons/buttons.js';
18
18
  import type * as Dialogs from '../../ui/components/dialogs/dialogs.js';
19
- import * as ComponentHelpers from '../../ui/components/helpers/helpers.js';
20
19
  import type * as Menus from '../../ui/components/menus/menus.js';
21
20
  import * as UI from '../../ui/legacy/legacy.js';
22
21
  import * as Lit from '../../ui/lit/lit.js';
@@ -33,7 +32,7 @@ import recorderControllerStyles from './recorderController.css.js';
33
32
  import * as Events from './RecorderEvents.js';
34
33
 
35
34
  // TODO(crbug.com/391381439): Fully migrate off of Constructable Stylesheets.
36
- const {html, Decorators, LitElement} = Lit;
35
+ const {html, Decorators, Directives: {ref}, LitElement} = Lit;
37
36
  const {customElement, state} = Decorators;
38
37
 
39
38
  const UIStrings = {
@@ -1354,11 +1353,11 @@ export class RecorderController extends LitElement {
1354
1353
  <devtools-button
1355
1354
  id='origin'
1356
1355
  @click=${this.#onExportRecording}
1357
- on-render=${ComponentHelpers.Directives.nodeRenderedCallback(
1358
- node => {
1359
- this.#exportMenuButton = node as Buttons.Button.Button;
1360
- },
1361
- )}
1356
+ ${ref(el => {
1357
+ if (el instanceof HTMLElement) {
1358
+ this.#exportMenuButton = el as Buttons.Button.Button;
1359
+ }
1360
+ })}
1362
1361
  .data=${
1363
1362
  {
1364
1363
  variant: Buttons.Button.Variant.TOOLBAR,
@@ -456,7 +456,7 @@ function viewFunction(input: ViewInput, _output: ViewOutput, target: HTMLElement
456
456
  } data-section-index=${
457
457
  input.sectionIndex
458
458
  } class=${Lit.Directives.classMap(stepClasses)}>
459
- <svg slot="icon" width="24" height="24" height="100%" class="icon">
459
+ <svg slot="icon" width="24" height="24" class="icon">
460
460
  <circle class="circle-icon"/>
461
461
  <g class="error-icon">
462
462
  <path d="M1.5 1.5L6.5 6.5" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
@@ -104,23 +104,24 @@ export class RecordingPlayer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
104
104
  }
105
105
 
106
106
  const rootChildTargetManager = rootTarget.model(SDK.ChildTargetManager.ChildTargetManager);
107
-
108
107
  if (!rootChildTargetManager) {
109
108
  throw new Error('Could not find the child target manager class for the root target');
110
109
  }
111
110
 
112
- // Pass an empty message handler because it will be overwritten by puppeteer anyways.
113
- const result = await rootChildTargetManager.createParallelConnection(() => {});
114
- const connection = result.connection as SDK.Connections.ParallelConnectionInterface;
111
+ const connection = rootTarget.router()?.connection;
112
+ if (!connection) {
113
+ throw new Error('Expected root target to have a router');
114
+ }
115
115
 
116
116
  const mainTargetId = await childTargetManager.getParentTargetId();
117
117
  const rootTargetId = await rootChildTargetManager.getParentTargetId();
118
-
118
+ const {sessionId} = await rootTarget.targetAgent().invoke_attachToTarget({targetId: rootTargetId, flatten: true});
119
119
  const {page, browser, puppeteerConnection} =
120
120
  await PuppeteerService.PuppeteerConnection.PuppeteerConnectionHelper.connectPuppeteerToConnectionViaTab(
121
121
  {
122
122
  connection,
123
- rootTargetId: rootTargetId as string,
123
+ targetId: rootTargetId,
124
+ sessionId,
124
125
  isPageTargetCallback: isPageTarget,
125
126
  },
126
127
  );
@@ -107,7 +107,7 @@ function renderDataDisclaimer(): HTMLElement {
107
107
  aria-details="gdp-profile-tooltip"
108
108
  aria-describedby="gdp-profile-tooltip"
109
109
  >${i18nString(UIStrings.relevantData)}</span>
110
- <devtools-tooltip id="gdp-profile-tooltip" variant=${'rich'}>
110
+ <devtools-tooltip id="gdp-profile-tooltip" variant="rich">
111
111
  <div class="tooltip-content" tabindex="0">${i18nString(UIStrings.tooltipDisclaimerText)}</div>
112
112
  </devtools-tooltip>`;
113
113
 
@@ -662,9 +662,9 @@ export class UserAgentClientHintsForm extends HTMLElement {
662
662
  change: true,
663
663
  })}
664
664
  />
665
- <devtools-icon name="bin" class="medium"
665
+ <devtools-icon name="bin"
666
666
  title=${i18nString(UIStrings.brandUserAgentDelete)}
667
- class="delete-icon"
667
+ class="medium delete-icon"
668
668
  tabindex="0"
669
669
  role="button"
670
670
  @click=${handleDeleteClick}
@@ -757,9 +757,9 @@ export class UserAgentClientHintsForm extends HTMLElement {
757
757
  change: true,
758
758
  })}
759
759
  />
760
- <devtools-icon name="bin" class="medium"
760
+ <devtools-icon name="bin"
761
761
  title=${i18nString(UIStrings.brandFullVersionListDelete)}
762
- class="delete-icon"
762
+ class="medium delete-icon"
763
763
  tabindex="0"
764
764
  role="button"
765
765
  @click=${handleDeleteClick}
@@ -578,8 +578,8 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
578
578
  ?data-first-group=${groupIndex === 0}
579
579
  ?data-last-group=${groupIndex === input.breakpointGroups.length - 1}
580
580
  role=group
581
- aria-label='${group.name}'
582
- aria-description='${group.url}'
581
+ aria-label=${group.name}
582
+ aria-description=${group.url}
583
583
  ?open=${live(group.expanded)}
584
584
  @toggle=${input.groupToggleHandler.bind(undefined, group)}>
585
585
  <summary @contextmenu=${input.groupContextMenuHandler.bind(undefined, group)}
@@ -596,7 +596,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
596
596
  tabindex=-1
597
597
  jslog=${VisualLogging.toggle('breakpoint-group').track({change: true,})}></input>
598
598
  </span>
599
- <span class='group-header-title' title='${group.url}'>
599
+ <span class='group-header-title' title=${group.url}>
600
600
  ${group.name}
601
601
  <span class='group-header-differentiator'>
602
602
  ${input.urlToDifferentiatingPath.get(group.url)}
@@ -197,9 +197,10 @@ export class ScopeChainSidebarPane extends UI.Widget.VBox implements UI.ContextF
197
197
  titleElement.createChild('div', 'scope-chain-sidebar-pane-section-subtitle').textContent = subtitle;
198
198
  titleElement.createChild('div', 'scope-chain-sidebar-pane-section-title').textContent = title;
199
199
 
200
- const section = new ObjectUI.ObjectPropertiesSection.RootElement(
201
- scope.object(), this.linkifier, emptyPlaceholder, ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.ALL,
202
- scope.extraProperties());
200
+ const root = new ObjectUI.ObjectPropertiesSection.ObjectTree(
201
+ scope.object(), ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.ALL);
202
+ root.addExtraProperties(...scope.extraProperties());
203
+ const section = new ObjectUI.ObjectPropertiesSection.RootElement(root, this.linkifier, emptyPlaceholder);
203
204
  section.title = titleElement;
204
205
  section.listItemElement.classList.add('scope-chain-sidebar-pane-section');
205
206
  section.listItemElement.setAttribute('aria-label', title);
@@ -290,7 +290,7 @@ export class WatchExpressionsSidebarPane extends UI.Widget.VBox implements
290
290
  _event: Event, contextMenu: UI.ContextMenu.ContextMenu,
291
291
  target: ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement|UISourceCodeFrame): void {
292
292
  if (target instanceof ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement) {
293
- if (!target.property.synthetic) {
293
+ if (!target.property.property.synthetic) {
294
294
  contextMenu.debugSection().appendItem(
295
295
  i18nString(UIStrings.addPropertyPathToWatch), () => this.focusAndAddExpressionToWatch(target.path()),
296
296
  {jslogContext: 'add-property-path-to-watch'});
@@ -514,7 +514,8 @@ export class WatchExpression extends Common.ObjectWrapper.ObjectWrapper<EventTyp
514
514
 
515
515
  if (!exceptionDetails && expressionValue && expressionValue.hasChildren && !expressionValue.customPreview()) {
516
516
  headerElement.classList.add('watch-expression-object-header');
517
- this.#treeElement = new ObjectUI.ObjectPropertiesSection.RootElement(expressionValue, this.linkifier);
517
+ this.#treeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
518
+ new ObjectUI.ObjectPropertiesSection.ObjectTree(expressionValue), this.linkifier);
518
519
  this.expandController.watchSection(
519
520
  (this.#expression as string), (this.#treeElement as ObjectUI.ObjectPropertiesSection.RootElement));
520
521
  this.#treeElement.toggleOnClick = false;
@@ -456,12 +456,12 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
456
456
  this.#overlays.addEventListener(Overlays.Overlays.EventReferenceClick.eventName, event => {
457
457
  const eventRef = (event as Overlays.Overlays.EventReferenceClick);
458
458
  const fromTraceEvent = selectionFromEvent(eventRef.event);
459
- this.openSelectionDetailsView(fromTraceEvent);
459
+ void this.openSelectionDetailsView(fromTraceEvent);
460
460
  });
461
461
 
462
462
  // This is for the detail view of layout shift.
463
463
  this.element.addEventListener(TimelineInsights.EventRef.EventReferenceClick.eventName, event => {
464
- this.setSelectionAndReveal(selectionFromEvent(event.event));
464
+ void this.setSelectionAndReveal(selectionFromEvent(event.event));
465
465
  });
466
466
 
467
467
  this.element.addEventListener('keydown', this.#keydownHandler.bind(this));
@@ -1469,7 +1469,7 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
1469
1469
  }
1470
1470
  }
1471
1471
 
1472
- setSelectionAndReveal(selection: TimelineSelection|null): void {
1472
+ async setSelectionAndReveal(selection: TimelineSelection|null): Promise<void> {
1473
1473
  if (selection && this.#currentSelection && selectionsEqual(selection, this.#currentSelection)) {
1474
1474
  return;
1475
1475
  }
@@ -1507,8 +1507,7 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
1507
1507
  this.networkFlameChart.setSelectedEntry(networkIndex);
1508
1508
 
1509
1509
  if (this.detailsView) {
1510
- // TODO(crbug.com/1459265): Change to await after migration work.
1511
- void this.detailsView.setSelection(selection);
1510
+ await this.detailsView.setSelection(selection);
1512
1511
  }
1513
1512
 
1514
1513
  // Create the entry selected overlay if the selection represents a trace event
@@ -1552,9 +1551,9 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
1552
1551
  // Only opens the details view of a selection. This is used for Timing Markers. Timing markers replace
1553
1552
  // their entry with a new UI. Because of that, their entries can no longer be "selected" in the timings track,
1554
1553
  // so if clicked, we only open their details view.
1555
- openSelectionDetailsView(selection: TimelineSelection|null): void {
1554
+ async openSelectionDetailsView(selection: TimelineSelection|null): Promise<void> {
1556
1555
  if (this.detailsView) {
1557
- void this.detailsView.setSelection(selection);
1556
+ await this.detailsView.setSelection(selection);
1558
1557
  }
1559
1558
  }
1560
1559
 
@@ -1611,12 +1610,13 @@ export class TimelineFlameChartView extends Common.ObjectWrapper.eventMixin<Even
1611
1610
  this.mainFlameChart.showAllGroups();
1612
1611
  }
1613
1612
 
1614
- private onAddEntryLabelAnnotation(
1613
+ private async onAddEntryLabelAnnotation(
1615
1614
  dataProvider: TimelineFlameChartDataProvider|TimelineFlameChartNetworkDataProvider,
1616
- event: Common.EventTarget.EventTargetEvent<{entryIndex: number, withLinkCreationButton: boolean}>): void {
1615
+ event: Common.EventTarget.EventTargetEvent<{entryIndex: number, withLinkCreationButton: boolean}>):
1616
+ Promise<void> {
1617
1617
  const selection = dataProvider.createSelection(event.data.entryIndex);
1618
1618
  if (selectionIsEvent(selection)) {
1619
- this.setSelectionAndReveal(selection);
1619
+ await this.setSelectionAndReveal(selection);
1620
1620
  ModificationsManager.activeManager()?.createAnnotation(
1621
1621
  {
1622
1622
  type: 'ENTRY_LABEL',
@@ -2130,7 +2130,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2130
2130
  this.flameChart.setModel(parsedTrace, this.#eventToRelatedInsights);
2131
2131
  this.flameChart.resizeToPreferredHeights();
2132
2132
  // Reset the visual selection as we've just swapped to a new trace.
2133
- this.flameChart.setSelectionAndReveal(null);
2133
+ void this.flameChart.setSelectionAndReveal(null);
2134
2134
  this.#sideBar.setParsedTrace(parsedTrace);
2135
2135
 
2136
2136
  this.#searchableView.showWidget();
@@ -2964,7 +2964,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2964
2964
  select(selection: TimelineSelection|null): void {
2965
2965
  this.#announceSelectionToAria(this.selection, selection);
2966
2966
  this.selection = selection;
2967
- this.flameChart.setSelectionAndReveal(selection);
2967
+ void this.flameChart.setSelectionAndReveal(selection);
2968
2968
  }
2969
2969
 
2970
2970
  selectEntryAtTime(events: Trace.Types.Events.Event[]|null, time: number): void {
@@ -3044,7 +3044,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
3044
3044
 
3045
3045
  #openSummaryTab(): void {
3046
3046
  // If we have a selection, we should remove it.
3047
- this.flameChart.setSelectionAndReveal(null);
3047
+ void this.flameChart.setSelectionAndReveal(null);
3048
3048
  this.flameChart.selectDetailsViewTab(Tab.Details, null);
3049
3049
  }
3050
3050