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
package/eslint.config.mjs CHANGED
@@ -30,7 +30,7 @@ export default defineConfig([
30
30
  // All of these scripts are auto-generated so don't lint them.
31
31
  'front_end/generated/ARIAProperties.js',
32
32
  'front_end/generated/Deprecation.ts',
33
- 'front_end/generated/InspectorBackendCommands.js',
33
+ 'front_end/generated/InspectorBackendCommands.ts',
34
34
  'front_end/generated/protocol-mapping.d.ts',
35
35
  'front_end/generated/protocol-proxy-api.d.ts',
36
36
  'front_end/generated/protocol.ts',
@@ -6,10 +6,10 @@
6
6
  * Debounce utility function, ensures that the function passed in is only called once the function stops being called and the delay has expired.
7
7
  */
8
8
  export const debounce = function(func: (...args: any[]) => void, delay: number): (...args: any[]) => void {
9
- let timer = 0;
9
+ let timer: ReturnType<typeof setTimeout>;
10
10
  const debounced = (...args: any[]): void => {
11
11
  clearTimeout(timer);
12
- timer = window.setTimeout(() => func(...args), delay);
12
+ timer = setTimeout(() => func(...args), delay);
13
13
  };
14
14
  return debounced;
15
15
  };
@@ -54,7 +54,7 @@ async function gzipCodec(
54
54
  codecStream: CompressionStream|DecompressionStream): Promise<ArrayBuffer> {
55
55
  const readable = new ReadableStream({
56
56
  start(controller) {
57
- controller.enqueue(buffer);
57
+ controller.enqueue(buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : buffer);
58
58
  controller.close();
59
59
  }
60
60
  });
@@ -9,7 +9,7 @@ export class Throttler {
9
9
  #process: (() => (void|Promise<unknown>))|null;
10
10
  #lastCompleteTime: number;
11
11
  #scheduler = Promise.withResolvers<unknown>();
12
- #processTimeout?: number;
12
+ #processTimeout?: ReturnType<typeof setTimeout>;
13
13
 
14
14
  constructor(timeout: number) {
15
15
  this.#timeout = timeout;
@@ -78,11 +78,11 @@ export class Throttler {
78
78
  clearTimeout(this.#processTimeout);
79
79
 
80
80
  const timeout = this.#asSoonAsPossible ? 0 : this.#timeout;
81
- this.#processTimeout = window.setTimeout(this.#onTimeout.bind(this), timeout);
81
+ this.#processTimeout = setTimeout(this.#onTimeout.bind(this), timeout);
82
82
  }
83
83
 
84
84
  #getTime(): number {
85
- return window.performance.now();
85
+ return performance.now();
86
86
  }
87
87
  }
88
88
 
@@ -85,6 +85,7 @@ function normalizeBadgeName(name: string): string {
85
85
  }
86
86
 
87
87
  export const GOOGLE_DEVELOPER_PROGRAM_PROFILE_LINK = 'https://developers.google.com/profile/u/me';
88
+ const ORIGIN_APPLICATION_NAME = 'APPLICATION_CHROME_DEVTOOLS';
88
89
 
89
90
  async function makeHttpRequest<R>(request: DispatchHttpRequestRequest): Promise<R> {
90
91
  if (!isGdpProfilesAvailable()) {
@@ -208,6 +209,9 @@ export class GdpClient {
208
209
  body: JSON.stringify({
209
210
  user,
210
211
  newsletter_email: emailPreference,
212
+ creation_origin: {
213
+ origin_application: ORIGIN_APPLICATION_NAME,
214
+ }
211
215
  }),
212
216
  });
213
217
  this.#clearCache();
@@ -4,26 +4,28 @@
4
4
 
5
5
  import type {ProtocolMapping} from '../../generated/protocol-mapping.js';
6
6
 
7
+ export type Command = keyof ProtocolMapping.Commands;
7
8
  export type CommandParams<T extends keyof ProtocolMapping.Commands> = ProtocolMapping.Commands[T]['paramsType'][0];
8
9
  export type CommandResult<T extends keyof ProtocolMapping.Commands> = ProtocolMapping.Commands[T]['returnType'];
10
+ export type Event = keyof ProtocolMapping.Events;
9
11
  export type EventParams<T extends keyof ProtocolMapping.Events> = ProtocolMapping.Events[T];
10
12
 
11
13
  export interface CDPBaseMessage {
12
14
  sessionId?: string;
13
15
  }
14
16
 
15
- export interface CDPCommandRequest<T extends keyof ProtocolMapping.Commands> extends CDPBaseMessage {
17
+ export interface CDPCommandRequest<T extends Command> extends CDPBaseMessage {
16
18
  id: number;
17
19
  method: T;
18
20
  params: CommandParams<T>;
19
21
  }
20
22
 
21
- export interface CDPCommandResponse<T extends keyof ProtocolMapping.Commands> extends CDPBaseMessage {
23
+ export interface CDPCommandResponse<T extends Command> extends CDPBaseMessage {
22
24
  id: number;
23
25
  result: CommandResult<T>;
24
26
  }
25
27
 
26
- export interface CDPEvent<T extends keyof ProtocolMapping.Events> extends CDPBaseMessage {
28
+ export interface CDPEvent<T extends Event> extends CDPBaseMessage {
27
29
  method: T;
28
30
  params: EventParams<T>;
29
31
  }
@@ -31,7 +33,7 @@ export interface CDPEvent<T extends keyof ProtocolMapping.Events> extends CDPBas
31
33
  /**
32
34
  * Keep this in sync with https://source.chromium.org/chromium/chromium/src/+/main:third_party/inspector_protocol/crdtp/dispatch.h.
33
35
  */
34
- export const enum CDPErrorStatus {
36
+ export enum CDPErrorStatus {
35
37
  PARSE_ERROR = -32700,
36
38
  INVALID_REQUEST = -32600,
37
39
  METHOD_NOT_FOUND = -32601,
@@ -39,6 +41,7 @@ export const enum CDPErrorStatus {
39
41
  INTERNAL_ERROR = -32603,
40
42
  SERVER_ERROR = -32000,
41
43
  SESSION_NOT_FOUND = SERVER_ERROR - 1,
44
+ DEVTOOLS_STUB_ERROR = -32015,
42
45
  }
43
46
 
44
47
  export interface CDPError {
@@ -52,8 +55,7 @@ export interface CDPErrorMessage extends CDPBaseMessage {
52
55
  error: CDPError;
53
56
  }
54
57
 
55
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
- export type CDPMessage = CDPCommandRequest<any>|CDPCommandResponse<any>|CDPEvent<any>|CDPErrorMessage;
58
+ export type CDPReceivableMessage = CDPCommandResponse<Command>|CDPEvent<Event>|CDPErrorMessage;
57
59
 
58
60
  /**
59
61
  * Allows the sending and receiving of CDP commands and the notification of CDP events to observers.
@@ -63,7 +65,7 @@ export type CDPMessage = CDPCommandRequest<any>|CDPCommandResponse<any>|CDPEvent
63
65
  * would conflict with any other shared traffic.
64
66
  */
65
67
  export interface CDPConnection {
66
- send<T extends keyof ProtocolMapping.Commands>(method: T, params: CommandParams<T>, sessionId: string|undefined):
68
+ send<T extends Command>(method: T, params: CommandParams<T>, sessionId: string|undefined):
67
69
  Promise<{result: CommandResult<T>}|{error: CDPError}>;
68
70
 
69
71
  observe(observer: CDPConnectionObserver): void;
@@ -71,7 +73,7 @@ export interface CDPConnection {
71
73
  }
72
74
 
73
75
  export interface CDPConnectionObserver {
74
- onEvent<T extends keyof ProtocolMapping.Events>(event: ProtocolMapping.Events[T]): void;
76
+ onEvent<T extends Event>(event: CDPEvent<T>): void;
75
77
  onDisconnect(reason: string): void;
76
78
  }
77
79
 
@@ -84,6 +86,6 @@ export interface DebuggableCDPConnection extends CDPConnection {
84
86
  }
85
87
 
86
88
  export interface RawMessageObserver {
87
- onMessageReceived(message: CDPMessage): void;
88
- onMessageSent(message: CDPMessage): void;
89
+ onMessageReceived(message: CDPReceivableMessage): void;
90
+ onMessageSent(message: CDPCommandRequest<Command>): void;
89
91
  }
@@ -0,0 +1,181 @@
1
+ // Copyright 2025 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import {
6
+ type CDPCommandRequest,
7
+ type CDPConnection,
8
+ type CDPConnectionObserver,
9
+ type CDPError,
10
+ CDPErrorStatus,
11
+ type CDPReceivableMessage,
12
+ type Command,
13
+ type CommandParams,
14
+ type CommandResult
15
+ } from './CDPConnection.js';
16
+ import type {ConnectionTransport} from './ConnectionTransport.js';
17
+ import {InspectorBackend, type MessageError, type QualifiedName, test} from './InspectorBackend.js';
18
+
19
+ interface CallbackWithDebugInfo {
20
+ resolve: (response: Awaited<ReturnType<CDPConnection['send']>>) => void;
21
+ method: string;
22
+ sessionId: string|undefined;
23
+ }
24
+
25
+ type Callback = (error: MessageError|null, arg1: Object|null) => void;
26
+
27
+ const LongPollingMethods = new Set<string>(['CSS.takeComputedStyleUpdates']);
28
+
29
+ export class DevToolsCDPConnection implements CDPConnection {
30
+ readonly #transport: ConnectionTransport;
31
+ #lastMessageId = 1;
32
+ #pendingResponsesCount = 0;
33
+ readonly #pendingLongPollingMessageIds = new Set<number>();
34
+ #pendingScripts: Array<() => void> = [];
35
+ readonly #callbacks = new Map<number, CallbackWithDebugInfo>();
36
+ readonly #observers = new Set<CDPConnectionObserver>();
37
+
38
+ constructor(transport: ConnectionTransport) {
39
+ this.#transport = transport;
40
+
41
+ test.deprecatedRunAfterPendingDispatches = this.deprecatedRunAfterPendingDispatches.bind(this);
42
+ test.sendRawMessage = this.sendRawMessageForTesting.bind(this);
43
+
44
+ this.#transport.setOnMessage(this.onMessage.bind(this));
45
+ this.#transport.setOnDisconnect(reason => {
46
+ this.#observers.forEach(observer => observer.onDisconnect(reason));
47
+ });
48
+ }
49
+
50
+ observe(observer: CDPConnectionObserver): void {
51
+ this.#observers.add(observer);
52
+ }
53
+
54
+ unobserve(observer: CDPConnectionObserver): void {
55
+ this.#observers.delete(observer);
56
+ }
57
+
58
+ send<T extends Command>(method: T, params: CommandParams<T>, sessionId: string|undefined):
59
+ Promise<{result: CommandResult<T>}|{error: CDPError}> {
60
+ const messageId = ++this.#lastMessageId;
61
+ const messageObject: Partial<CDPCommandRequest<T>> = {
62
+ id: messageId,
63
+ method,
64
+ };
65
+
66
+ if (params) {
67
+ messageObject.params = params;
68
+ }
69
+ if (sessionId) {
70
+ messageObject.sessionId = sessionId;
71
+ }
72
+
73
+ if (test.dumpProtocol) {
74
+ test.dumpProtocol('frontend: ' + JSON.stringify(messageObject));
75
+ }
76
+
77
+ if (test.onMessageSent) {
78
+ const domain = method.split('.')[0];
79
+ const paramsObject = JSON.parse(JSON.stringify(params || {}));
80
+ test.onMessageSent({domain, method, params: (paramsObject as Object), id: messageId, sessionId});
81
+ }
82
+
83
+ ++this.#pendingResponsesCount;
84
+ if (LongPollingMethods.has(method)) {
85
+ this.#pendingLongPollingMessageIds.add(messageId);
86
+ }
87
+
88
+ return new Promise(resolve => {
89
+ this.#callbacks.set(messageId, {resolve, method, sessionId});
90
+ this.#transport.sendRawMessage(JSON.stringify(messageObject));
91
+ });
92
+ }
93
+
94
+ resolvePendingCalls(sessionId: string): void {
95
+ for (const {resolve, method, sessionId: callbackSessionId} of this.#callbacks.values()) {
96
+ if (sessionId !== callbackSessionId) {
97
+ continue;
98
+ }
99
+ resolve({
100
+ error: {
101
+ message: `Session is unregistering, can\'t dispatch pending call to ${method}`,
102
+ code: CDPErrorStatus.SESSION_NOT_FOUND,
103
+ }
104
+ });
105
+ }
106
+ }
107
+
108
+ private sendRawMessageForTesting(method: QualifiedName, params: Object|null, callback: Callback|null, sessionId = ''):
109
+ void {
110
+ void this.send(method as Command, params as CommandParams<Command>, sessionId).then(response => {
111
+ if ('error' in response && response.error) {
112
+ callback?.(response.error, null);
113
+ } else if ('result' in response) {
114
+ callback?.(null, response.result as Object | null);
115
+ }
116
+ });
117
+ }
118
+
119
+ private onMessage(message: string|Object): void {
120
+ if (test.dumpProtocol) {
121
+ test.dumpProtocol('backend: ' + ((typeof message === 'string') ? message : JSON.stringify(message)));
122
+ }
123
+
124
+ if (test.onMessageReceived) {
125
+ const messageObjectCopy = JSON.parse((typeof message === 'string') ? message : JSON.stringify(message));
126
+ test.onMessageReceived(messageObjectCopy);
127
+ }
128
+
129
+ const messageObject = ((typeof message === 'string') ? JSON.parse(message) : message) as CDPReceivableMessage;
130
+
131
+ if ('id' in messageObject && messageObject.id !== undefined) { // just a response for some request
132
+ const callback = this.#callbacks.get(messageObject.id);
133
+ this.#callbacks.delete(messageObject.id);
134
+ if (!callback) {
135
+ // Ignore messages with unknown IDs, we might see puppeteer proxied messages here.
136
+ return;
137
+ }
138
+
139
+ callback.resolve(messageObject);
140
+ --this.#pendingResponsesCount;
141
+ this.#pendingLongPollingMessageIds.delete(messageObject.id);
142
+
143
+ if (this.#pendingScripts.length && !this.hasOutstandingNonLongPollingRequests()) {
144
+ this.deprecatedRunAfterPendingDispatches();
145
+ }
146
+ } else if ('method' in messageObject) {
147
+ this.#observers.forEach(observer => observer.onEvent(messageObject));
148
+ } else {
149
+ InspectorBackend.reportProtocolError('Protocol Error: the message without method', messageObject);
150
+ }
151
+ }
152
+
153
+ private hasOutstandingNonLongPollingRequests(): boolean {
154
+ return this.#pendingResponsesCount - this.#pendingLongPollingMessageIds.size > 0;
155
+ }
156
+
157
+ private deprecatedRunAfterPendingDispatches(script?: (() => void)): void {
158
+ if (script) {
159
+ this.#pendingScripts.push(script);
160
+ }
161
+
162
+ // Execute all promises.
163
+ setTimeout(() => {
164
+ if (!this.hasOutstandingNonLongPollingRequests()) {
165
+ this.executeAfterPendingDispatches();
166
+ } else {
167
+ this.deprecatedRunAfterPendingDispatches();
168
+ }
169
+ }, 0);
170
+ }
171
+
172
+ private executeAfterPendingDispatches(): void {
173
+ if (!this.hasOutstandingNonLongPollingRequests()) {
174
+ const scripts = this.#pendingScripts;
175
+ this.#pendingScripts = [];
176
+ for (let id = 0; id < scripts.length; ++id) {
177
+ scripts[id]();
178
+ }
179
+ }
180
+ }
181
+ }