chrome-devtools-frontend 1.0.1376716 → 1.0.1380117

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 (434) hide show
  1. package/config/gni/devtools_grd_files.gni +15 -7
  2. package/config/gni/devtools_image_files.gni +2 -0
  3. package/front_end/Images/src/animation.svg +3 -0
  4. package/front_end/Images/src/brush-2.svg +3 -0
  5. package/front_end/core/common/SettingRegistration.ts +1 -1
  6. package/front_end/core/host/AidaClient.ts +1 -0
  7. package/front_end/core/host/InspectorFrontendHost.ts +4 -0
  8. package/front_end/core/i18n/ByteUtilities.test.ts +34 -0
  9. package/front_end/core/i18n/ByteUtilities.ts +65 -0
  10. package/front_end/core/i18n/NumberFormatter.ts +75 -0
  11. package/front_end/core/i18n/i18n.ts +4 -0
  12. package/front_end/core/i18n/time-utilities.test.ts +20 -2
  13. package/front_end/core/i18n/time-utilities.ts +125 -86
  14. package/front_end/core/platform/NumberUtilities.test.ts +3 -26
  15. package/front_end/core/platform/NumberUtilities.ts +0 -20
  16. package/front_end/core/root/Runtime.ts +6 -3
  17. package/front_end/core/sdk/CPUThrottlingManager.ts +4 -0
  18. package/front_end/core/sdk/CSSContainerQuery.test.ts +10 -16
  19. package/front_end/core/sdk/CSSContainerQuery.ts +3 -15
  20. package/front_end/core/sdk/CSSMatchedStyles.test.ts +4 -0
  21. package/front_end/core/sdk/CSSMatchedStyles.ts +5 -5
  22. package/front_end/core/sdk/CSSModel.ts +18 -0
  23. package/front_end/core/sdk/CSSPropertyParser.test.ts +16 -1
  24. package/front_end/core/sdk/CSSPropertyParser.ts +2 -2
  25. package/front_end/core/sdk/sdk-meta.ts +8 -0
  26. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +3 -3
  27. package/front_end/generated/ARIAProperties.js +4 -0
  28. package/front_end/generated/InspectorBackendCommands.js +8 -6
  29. package/front_end/generated/SupportedCSSProperties.js +17 -4
  30. package/front_end/generated/protocol-mapping.d.ts +15 -1
  31. package/front_end/generated/protocol-proxy-api.d.ts +14 -1
  32. package/front_end/generated/protocol.ts +26 -2
  33. package/front_end/models/extensions/ExtensionAPI.ts +9 -1
  34. package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +2 -0
  35. package/front_end/models/javascript_metadata/NativeFunctions.js +8 -21
  36. package/front_end/models/live-metrics/web-vitals-injected/{rollup.config.js → rollup.config.mjs} +1 -1
  37. package/front_end/models/persistence/EditFileSystemView.ts +19 -9
  38. package/front_end/models/persistence/WorkspaceSettingsTab.ts +50 -54
  39. package/front_end/models/persistence/editFileSystemView.css +35 -15
  40. package/front_end/models/persistence/workspaceSettingsTab.css +21 -87
  41. package/front_end/models/timeline_model/timeline_model.ts +0 -6
  42. package/front_end/models/trace/Processor.test.ts +18 -17
  43. package/front_end/models/trace/Processor.ts +10 -14
  44. package/front_end/models/trace/README.md +0 -1
  45. package/front_end/models/{timeline_model → trace/extras}/TimelineJSProfile.ts +19 -29
  46. package/front_end/models/{timeline_model/TimelineModelFilter.test.ts → trace/extras/TraceFilter.test.ts} +15 -17
  47. package/front_end/models/trace/extras/TraceFilter.ts +62 -0
  48. package/front_end/models/{timeline_model/TimelineProfileTree.test.ts → trace/extras/TraceTree.test.ts} +44 -43
  49. package/front_end/models/{timeline_model/TimelineProfileTree.ts → trace/extras/TraceTree.ts} +65 -59
  50. package/front_end/models/trace/extras/extras.ts +3 -0
  51. package/front_end/models/trace/handlers/AnimationHandler.ts +0 -8
  52. package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -11
  53. package/front_end/models/trace/handlers/FramesHandler.test.ts +1 -6
  54. package/front_end/models/trace/handlers/FramesHandler.ts +1 -14
  55. package/front_end/models/trace/handlers/GPUHandler.test.ts +0 -2
  56. package/front_end/models/trace/handlers/GPUHandler.ts +1 -25
  57. package/front_end/models/trace/handlers/ImagePaintingHandler.ts +3 -0
  58. package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +0 -1
  59. package/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -20
  60. package/front_end/models/trace/handlers/InvalidationsHandler.test.ts +0 -1
  61. package/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -18
  62. package/front_end/models/trace/handlers/LargestImagePaintHandler.test.ts +2 -2
  63. package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +63 -3
  64. package/front_end/models/trace/handlers/LargestTextPaintHandler.ts +3 -0
  65. package/front_end/models/trace/handlers/LayerTreeHandler.test.ts +0 -2
  66. package/front_end/models/trace/handlers/LayerTreeHandler.ts +1 -18
  67. package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +0 -3
  68. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -20
  69. package/front_end/models/trace/handlers/MemoryHandler.test.ts +0 -1
  70. package/front_end/models/trace/handlers/MemoryHandler.ts +3 -0
  71. package/front_end/models/trace/handlers/MetaHandler.test.ts +1 -32
  72. package/front_end/models/trace/handlers/MetaHandler.ts +2 -30
  73. package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +0 -26
  74. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +4 -23
  75. package/front_end/models/trace/handlers/PageFramesHandler.ts +3 -0
  76. package/front_end/models/trace/handlers/RendererHandler.test.ts +0 -4
  77. package/front_end/models/trace/handlers/RendererHandler.ts +1 -24
  78. package/front_end/models/trace/handlers/SamplesHandler.test.ts +0 -5
  79. package/front_end/models/trace/handlers/SamplesHandler.ts +0 -26
  80. package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +0 -1
  81. package/front_end/models/trace/handlers/SelectorStatsHandler.ts +3 -0
  82. package/front_end/models/trace/handlers/ServerTimingsHandler.ts +1 -16
  83. package/front_end/models/trace/handlers/Threads.test.ts +1 -2
  84. package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -27
  85. package/front_end/models/trace/handlers/UserInteractionsHandler.ts +16 -25
  86. package/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -17
  87. package/front_end/models/trace/handlers/WorkersHandler.test.ts +0 -1
  88. package/front_end/models/trace/handlers/WorkersHandler.ts +0 -23
  89. package/front_end/models/trace/handlers/types.ts +1 -8
  90. package/front_end/models/trace/insights/{CumulativeLayoutShift.test.ts → CLSCulprits.test.ts} +21 -21
  91. package/front_end/models/trace/insights/{CumulativeLayoutShift.ts → CLSCulprits.ts} +24 -5
  92. package/front_end/models/trace/insights/Common.ts +5 -55
  93. package/front_end/models/trace/insights/DocumentLatency.test.ts +2 -2
  94. package/front_end/models/trace/insights/DocumentLatency.ts +26 -6
  95. package/front_end/models/trace/insights/FontDisplay.ts +24 -5
  96. package/front_end/models/trace/insights/InteractionToNextPaint.test.ts +1 -1
  97. package/front_end/models/trace/insights/InteractionToNextPaint.ts +26 -6
  98. package/front_end/models/trace/insights/LCPDiscovery.test.ts +58 -0
  99. package/front_end/models/trace/insights/LCPDiscovery.ts +101 -0
  100. package/front_end/models/trace/insights/{LargestContentfulPaint.test.ts → LCPPhases.test.ts} +6 -28
  101. package/front_end/models/trace/insights/{LargestContentfulPaint.ts → LCPPhases.ts} +37 -38
  102. package/front_end/models/trace/insights/{InsightRunners.ts → Models.ts} +4 -3
  103. package/front_end/models/trace/insights/RenderBlocking.test.ts +1 -1
  104. package/front_end/models/trace/insights/RenderBlocking.ts +33 -28
  105. package/front_end/models/trace/insights/SlowCSSSelector.ts +26 -5
  106. package/front_end/models/trace/insights/{ThirdPartyWeb.test.ts → ThirdParties.test.ts} +3 -3
  107. package/front_end/models/trace/insights/{ThirdPartyWeb.ts → ThirdParties.ts} +24 -5
  108. package/front_end/models/trace/insights/Viewport.test.ts +1 -1
  109. package/front_end/models/trace/insights/Viewport.ts +27 -9
  110. package/front_end/models/trace/insights/insights.ts +1 -1
  111. package/front_end/models/trace/insights/types.ts +11 -9
  112. package/front_end/models/trace/types/TraceEvents.ts +51 -22
  113. package/front_end/panels/application/SharedStorageItemsView.test.ts +3 -3
  114. package/front_end/panels/application/SharedStorageItemsView.ts +5 -3
  115. package/front_end/panels/application/StorageView.ts +3 -3
  116. package/front_end/panels/application/components/StorageMetadataView.ts +1 -2
  117. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +34 -31
  118. package/front_end/panels/coverage/CoverageView.ts +3 -3
  119. package/front_end/panels/elements/ComputedStyleModel.ts +9 -2
  120. package/front_end/panels/elements/ComputedStyleWidget.test.ts +72 -0
  121. package/front_end/panels/elements/ComputedStyleWidget.ts +12 -0
  122. package/front_end/panels/elements/ElementStatePaneWidget.test.ts +84 -30
  123. package/front_end/panels/elements/ElementStatePaneWidget.ts +42 -24
  124. package/front_end/panels/elements/ElementsTreeElement.ts +24 -11
  125. package/front_end/panels/elements/MetricsSidebarPane.ts +12 -7
  126. package/front_end/panels/elements/PropertyMatchers.ts +3 -0
  127. package/front_end/panels/elements/StylePropertiesSection.ts +15 -6
  128. package/front_end/panels/elements/StylePropertyTreeElement.test.ts +3 -1
  129. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
  130. package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
  131. package/front_end/panels/explain/components/ConsoleInsight.ts +8 -18
  132. package/front_end/panels/freestyler/AiAgent.test.ts +58 -1
  133. package/front_end/panels/freestyler/AiAgent.ts +58 -3
  134. package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +99 -23
  135. package/front_end/panels/freestyler/DrJonesFileAgent.ts +53 -20
  136. package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +15 -7
  137. package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +36 -15
  138. package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +6 -6
  139. package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +48 -8
  140. package/front_end/panels/freestyler/FreestylerAgent.test.ts +15 -14
  141. package/front_end/panels/freestyler/FreestylerAgent.ts +52 -8
  142. package/front_end/panels/freestyler/FreestylerPanel.test.ts +539 -39
  143. package/front_end/panels/freestyler/FreestylerPanel.ts +349 -215
  144. package/front_end/panels/freestyler/components/FreestylerChatUi.test.ts +126 -34
  145. package/front_end/panels/freestyler/components/FreestylerChatUi.ts +320 -268
  146. package/front_end/panels/freestyler/components/UserActionRow.ts +156 -47
  147. package/front_end/panels/freestyler/components/freestylerChatUi.css +69 -34
  148. package/front_end/panels/freestyler/components/userActionRow.css +40 -67
  149. package/front_end/panels/freestyler/freestyler-meta.ts +3 -11
  150. package/front_end/panels/issues/components/HideIssuesMenu.ts +2 -11
  151. package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -2
  152. package/front_end/panels/layer_viewer/PaintProfilerView.ts +5 -5
  153. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +46 -0
  154. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +26 -17
  155. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +25 -19
  156. package/front_end/panels/network/BinaryResourceView.ts +6 -7
  157. package/front_end/panels/network/EventSourceMessagesView.ts +1 -1
  158. package/front_end/panels/network/NetworkDataGridNode.ts +3 -3
  159. package/front_end/panels/network/NetworkLogView.ts +7 -8
  160. package/front_end/panels/network/RequestTimingView.test.ts +35 -1
  161. package/front_end/panels/network/RequestTimingView.ts +96 -0
  162. package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -2
  163. package/front_end/panels/network/networkTimingTable.css +2 -1
  164. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
  165. package/front_end/panels/profiler/HeapProfileView.ts +3 -3
  166. package/front_end/panels/profiler/HeapSnapshotView.ts +2 -2
  167. package/front_end/panels/profiler/HeapTimelineOverview.ts +12 -12
  168. package/front_end/panels/profiler/IsolateSelector.ts +3 -4
  169. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +1 -1
  170. package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +7 -6
  171. package/front_end/panels/profiler/ProfileView.ts +1 -1
  172. package/front_end/panels/recorder/components/RecordingView.ts +2 -2
  173. package/front_end/panels/recorder/injected/{rollup.config.js → rollup.config.mjs} +1 -1
  174. package/front_end/panels/recorder/recorderController.css +0 -4
  175. package/front_end/panels/security/CookieReportTreeElement.ts +1 -9
  176. package/front_end/panels/security/CookieReportView.ts +120 -0
  177. package/front_end/panels/security/SecurityPanel.ts +8 -2
  178. package/front_end/panels/security/cookieReportView.css +46 -0
  179. package/front_end/panels/security/sidebar.css +1 -2
  180. package/front_end/panels/sensors/LocationsSettingsTab.ts +26 -11
  181. package/front_end/panels/sensors/locationsSettingsTab.css +18 -18
  182. package/front_end/panels/settings/AISettingsTab.ts +6 -15
  183. package/front_end/panels/settings/KeybindsSettingsTab.ts +1 -1
  184. package/front_end/panels/settings/SettingsScreen.ts +61 -56
  185. package/front_end/panels/settings/aiSettingsTab.css +3 -14
  186. package/front_end/panels/settings/components/SyncSection.ts +1 -2
  187. package/front_end/panels/settings/components/syncSection.css +0 -10
  188. package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +3 -1
  189. package/front_end/panels/settings/keybindsSettingsTab.css +7 -10
  190. package/front_end/panels/settings/settingsScreen.css +27 -125
  191. package/front_end/panels/sources/DebuggerPlugin.ts +9 -4
  192. package/front_end/panels/sources/NavigatorView.ts +11 -13
  193. package/front_end/panels/timeline/ActiveFilters.ts +3 -4
  194. package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -2
  195. package/front_end/panels/timeline/CountersGraph.ts +2 -4
  196. package/front_end/panels/timeline/EventsTimelineTreeView.ts +7 -8
  197. package/front_end/panels/timeline/README.md +2 -1
  198. package/front_end/panels/timeline/TimelineController.ts +14 -4
  199. package/front_end/panels/timeline/TimelineEventOverview.ts +3 -4
  200. package/front_end/panels/timeline/TimelineFilters.ts +3 -4
  201. package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +1 -1
  202. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -10
  203. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -2
  204. package/front_end/panels/timeline/TimelineFlameChartView.ts +21 -12
  205. package/front_end/panels/timeline/TimelineLoader.test.ts +1 -2
  206. package/front_end/panels/timeline/TimelineLoader.ts +3 -4
  207. package/front_end/panels/timeline/TimelineMiniMap.ts +10 -0
  208. package/front_end/panels/timeline/TimelinePanel.ts +20 -8
  209. package/front_end/panels/timeline/TimelineTreeView.test.ts +12 -13
  210. package/front_end/panels/timeline/TimelineTreeView.ts +35 -40
  211. package/front_end/panels/timeline/TimelineUIUtils.test.ts +2 -2
  212. package/front_end/panels/timeline/TimelineUIUtils.ts +12 -14
  213. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +6 -7
  214. package/front_end/panels/timeline/components/LiveMetricsView.test.ts +3 -3
  215. package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -26
  216. package/front_end/panels/timeline/components/MetricCard.test.ts +1 -1
  217. package/front_end/panels/timeline/components/MetricCard.ts +46 -0
  218. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +3 -4
  219. package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +2 -0
  220. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +41 -36
  221. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +19 -33
  222. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +29 -40
  223. package/front_end/panels/timeline/components/insights/FontDisplay.ts +17 -23
  224. package/front_end/panels/timeline/components/insights/Helpers.ts +12 -16
  225. package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +14 -26
  226. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +25 -37
  227. package/front_end/panels/timeline/components/insights/LCPPhases.ts +20 -47
  228. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +19 -28
  229. package/front_end/panels/timeline/components/insights/SidebarInsight.ts +1 -2
  230. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +18 -31
  231. package/front_end/panels/timeline/components/insights/Table.ts +5 -3
  232. package/front_end/panels/timeline/components/insights/ThirdParties.ts +18 -25
  233. package/front_end/panels/timeline/components/insights/Viewport.ts +14 -25
  234. package/front_end/panels/timeline/components/liveMetricsView.css +5 -13
  235. package/front_end/panels/timeline/components/metricCard.css +11 -0
  236. package/front_end/panels/timeline/components/sidebarInsightsTab.css +1 -1
  237. package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +5 -5
  238. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +13 -12
  239. package/front_end/panels/timeline/timelineFlameChartView.css +1 -1
  240. package/front_end/panels/timeline/utils/AICallTree.test.ts +105 -0
  241. package/front_end/panels/timeline/utils/AICallTree.ts +25 -24
  242. package/front_end/testing/EnvironmentHelpers.ts +5 -18
  243. package/front_end/testing/InsightHelpers.ts +4 -4
  244. package/front_end/testing/TraceHelpers.ts +1 -1
  245. package/front_end/third_party/puppeteer/README.chromium +2 -2
  246. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +2 -3
  247. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  248. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +14 -3
  250. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
  251. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +16 -2
  252. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts +34 -5
  254. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js +51 -2
  256. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js.map +1 -1
  257. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  258. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +10 -8
  259. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -1
  260. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +1 -1
  262. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts +14 -4
  264. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js +57 -23
  266. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts +1 -1
  268. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  269. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +13 -10
  270. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
  271. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts +15 -4
  272. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts.map +1 -1
  273. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js +55 -26
  274. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js.map +1 -1
  275. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +0 -8
  276. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  277. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +2 -11
  278. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
  279. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +2 -1
  280. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
  281. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js +5 -2
  282. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
  283. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +7 -0
  284. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
  285. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +9 -1
  286. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
  287. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.d.ts.map +1 -1
  288. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js +5 -3
  289. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js.map +1 -1
  290. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +1 -1
  291. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
  292. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js +0 -3
  293. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js.map +1 -1
  294. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  295. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
  296. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
  297. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
  298. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  299. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  300. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  301. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  302. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  303. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts +14 -0
  304. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
  305. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js +18 -0
  306. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js.map +1 -0
  307. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +51 -10
  308. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +215 -97
  309. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +2 -3
  310. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  311. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  312. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +14 -3
  313. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
  314. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +16 -2
  315. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
  316. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +34 -5
  317. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
  318. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js +51 -2
  319. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js.map +1 -1
  320. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  321. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +10 -8
  322. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -1
  323. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  324. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +1 -1
  325. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  326. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts +14 -4
  327. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts.map +1 -1
  328. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js +57 -23
  329. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js.map +1 -1
  330. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts +1 -1
  331. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  332. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +13 -10
  333. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
  334. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts +15 -4
  335. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts.map +1 -1
  336. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js +55 -26
  337. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js.map +1 -1
  338. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +0 -8
  339. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  340. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +1 -9
  341. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
  342. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +2 -1
  343. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
  344. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +5 -2
  345. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
  346. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +7 -0
  347. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
  348. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +7 -0
  349. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
  350. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.d.ts.map +1 -1
  351. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js +5 -3
  352. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js.map +1 -1
  353. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +1 -1
  354. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
  355. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +0 -3
  356. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js.map +1 -1
  357. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  358. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
  359. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
  360. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
  361. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  362. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  363. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  364. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts +14 -0
  365. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
  366. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js +15 -0
  367. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js.map +1 -0
  368. package/front_end/third_party/puppeteer/package/lib/types.d.ts +51 -10
  369. package/front_end/third_party/puppeteer/package/package.json +4 -4
  370. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +2 -3
  371. package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +21 -3
  372. package/front_end/third_party/puppeteer/package/src/api/Input.ts +57 -8
  373. package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +9 -7
  374. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -0
  375. package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +72 -31
  376. package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +14 -9
  377. package/front_end/third_party/puppeteer/package/src/cdp/Input.ts +71 -26
  378. package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +1 -15
  379. package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +8 -1
  380. package/front_end/third_party/puppeteer/package/src/common/Errors.ts +7 -0
  381. package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +9 -9
  382. package/front_end/third_party/puppeteer/package/src/environment.ts +1 -4
  383. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  384. package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
  385. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  386. package/front_end/third_party/puppeteer/package/src/util/incremental-id-generator.ts +20 -0
  387. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
  388. package/front_end/ui/components/buttons/Button.test.ts +14 -0
  389. package/front_end/ui/components/buttons/Button.ts +27 -4
  390. package/front_end/ui/components/cards/card.css +7 -4
  391. package/front_end/ui/components/dialogs/Dialog.ts +2 -4
  392. package/front_end/ui/components/dialogs/ShortcutDialog.ts +15 -13
  393. package/front_end/ui/components/dialogs/dialog.css +2 -6
  394. package/front_end/ui/components/dialogs/shortcutDialog.css +33 -41
  395. package/front_end/ui/components/docs/freestyler/basic.ts +6 -8
  396. package/front_end/ui/components/docs/freestyler/empty_state.ts +6 -8
  397. package/front_end/ui/components/docs/performance_panel/track_example.html +1 -1
  398. package/front_end/ui/components/markdown_view/MarkdownView.test.ts +39 -17
  399. package/front_end/ui/components/markdown_view/MarkdownView.ts +77 -14
  400. package/front_end/ui/components/markdown_view/markdownView.css +15 -0
  401. package/front_end/ui/components/settings/SettingCheckbox.ts +3 -2
  402. package/front_end/ui/legacy/ContextMenu.ts +2 -2
  403. package/front_end/ui/legacy/InplaceEditor.ts +18 -14
  404. package/front_end/ui/legacy/TabbedPane.ts +0 -14
  405. package/front_end/ui/legacy/UIUtils.ts +0 -7
  406. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +7 -2
  407. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +8 -4
  408. package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +20 -11
  409. package/front_end/ui/legacy/components/inline_editor/LinkSwatch.test.ts +19 -0
  410. package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +1 -1
  411. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -1
  412. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +5 -22
  413. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +129 -100
  414. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +4 -2
  415. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.test.ts +9 -4
  416. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +6 -6
  417. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +22 -4
  418. package/front_end/ui/legacy/components/perf_ui/flameChart.css +0 -2
  419. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +49 -0
  420. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +23 -46
  421. package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
  422. package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
  423. package/front_end/ui/legacy/textPrompt.css +1 -1
  424. package/front_end/ui/legacy/toolbar.css +4 -5
  425. package/front_end/ui/visual_logging/KnownContextValues.ts +174 -0
  426. package/front_end/ui/visual_logging/LoggingConfig.ts +6 -2
  427. package/package.json +7 -6
  428. package/scripts/build/ninja/bundle.gni +3 -3
  429. package/scripts/build/{rollup.config.js → rollup.config.mjs} +4 -4
  430. package/scripts/devtools_paths.py +8 -4
  431. package/scripts/eslint_rules/tests/check_test_definitions_test.js +8 -3
  432. package/scripts/tools/update_goldens_v2.py +1 -1
  433. package/front_end/models/timeline_model/TimelineModelFilter.ts +0 -61
  434. /package/front_end/Images/{rollup.config.js → rollup.config.mjs} +0 -0
@@ -6,8 +6,6 @@ import * as Platform from '../../../core/platform/platform.js';
6
6
  import * as Helpers from '../helpers/helpers.js';
7
7
  import * as Types from '../types/types.js';
8
8
 
9
- import {HandlerState} from './types.js';
10
-
11
9
  // We track the renderer processes we see in each frame on the way through the trace.
12
10
  const rendererProcessesByFrameId: FrameProcessData = new Map();
13
11
 
@@ -67,7 +65,6 @@ const eventPhasesOfInterestForTraceBounds = new Set([
67
65
  Types.Events.Phase.INSTANT,
68
66
  ]);
69
67
 
70
- let handlerState = HandlerState.UNINITIALIZED;
71
68
  // Tracks if the trace is a generic trace, which here means that it did not come from athe DevTools Performance Panel recording.
72
69
  // We assume a trace is generic, and mark it as not generic if we see any of:
73
70
  // - TracingStartedInPage
@@ -104,16 +101,6 @@ export function reset(): void {
104
101
  traceStartedTimeFromTracingStartedEvent = Types.Timing.MicroSeconds(-1);
105
102
 
106
103
  traceIsGeneric = true;
107
-
108
- handlerState = HandlerState.UNINITIALIZED;
109
- }
110
-
111
- export function initialize(): void {
112
- if (handlerState !== HandlerState.UNINITIALIZED) {
113
- throw new Error('Meta Handler was not reset');
114
- }
115
-
116
- handlerState = HandlerState.INITIALIZED;
117
104
  }
118
105
 
119
106
  function updateRendererProcessByFrame(event: Types.Events.Event, frame: Types.Events.TraceFrame): void {
@@ -147,10 +134,6 @@ function updateRendererProcessByFrame(event: Types.Events.Event, frame: Types.Ev
147
134
  }
148
135
 
149
136
  export function handleEvent(event: Types.Events.Event): void {
150
- if (handlerState !== HandlerState.INITIALIZED) {
151
- throw new Error('Meta Handler is not initialized');
152
- }
153
-
154
137
  if (traceIsGeneric && CHROME_WEB_TRACE_EVENTS.has(event.name as Types.Events.Name)) {
155
138
  traceIsGeneric = false;
156
139
  }
@@ -311,9 +294,8 @@ export function handleEvent(event: Types.Events.Event): void {
311
294
  // Track all navigation events. Note that there can be navigation start events
312
295
  // but where the documentLoaderURL is empty. As far as the trace rendering is
313
296
  // concerned, these events are noise so we filter them out here.
314
- // (The filtering of empty URLs is done in the
315
- // isNavigationStartWithURL check)
316
- if (Types.Events.isNavigationStartWithURL(event) && event.args.data) {
297
+ // (The filtering of empty URLs is done in the isNavigationStart check)
298
+ if (Types.Events.isNavigationStart(event) && event.args.data) {
317
299
  const navigationId = event.args.data.navigationId;
318
300
  if (navigationsByNavigationId.has(navigationId)) {
319
301
  // We have only ever seen this situation once, in crbug.com/1503982, where the user ran:
@@ -336,10 +318,6 @@ export function handleEvent(event: Types.Events.Event): void {
336
318
  }
337
319
 
338
320
  export async function finalize(): Promise<void> {
339
- if (handlerState !== HandlerState.INITIALIZED) {
340
- throw new Error('Handler is not initialized');
341
- }
342
-
343
321
  // We try to set the minimum time by finding the event with the smallest
344
322
  // timestamp. However, if we also got a timestamp from the
345
323
  // TracingStartedInBrowser event, we should always use that.
@@ -412,8 +390,6 @@ export async function finalize(): Promise<void> {
412
390
  mainFrameURL = firstMainFrameNav.args.data.documentLoaderURL;
413
391
  }
414
392
  }
415
-
416
- handlerState = HandlerState.FINALIZED;
417
393
  }
418
394
 
419
395
  export type MetaHandlerData = {
@@ -464,10 +440,6 @@ export type FrameProcessData =
464
440
  Map<Types.Events.ProcessID, {frame: Types.Events.TraceFrame, window: Types.Timing.TraceWindowMicroSeconds}[]>>;
465
441
 
466
442
  export function data(): MetaHandlerData {
467
- if (handlerState !== HandlerState.FINALIZED) {
468
- throw new Error('Meta Handler is not finalized');
469
- }
470
-
471
443
  return {
472
444
  traceBounds: {...traceBounds},
473
445
  browserProcessId,
@@ -11,29 +11,9 @@ type DataArgsMap = Map<keyof DataArgs, DataArgs[keyof DataArgs]>;
11
11
  type DataArgsProcessedDataMap = Map<keyof DataArgsProcessedData, DataArgsProcessedData[keyof DataArgsProcessedData]>;
12
12
 
13
13
  describe('NetworkRequestsHandler', function() {
14
- describe('error handling', () => {
15
- it('throws if handleEvent is called before it is initialized', () => {
16
- assert.throws(() => {
17
- Trace.Handlers.ModelHandlers.NetworkRequests.handleEvent({} as Trace.Types.Events.Event);
18
- }, 'Network Request handler is not initialized');
19
- });
20
-
21
- it('throws if finalize is called before initialize', async () => {
22
- let thrown: Error|null = null;
23
- try {
24
- await Trace.Handlers.ModelHandlers.NetworkRequests.finalize();
25
- } catch (e) {
26
- thrown = e as Error;
27
- }
28
- assert.strictEqual(thrown?.message, 'Network Request handler is not initialized');
29
- });
30
- });
31
-
32
14
  describe('network requests calculations', () => {
33
15
  beforeEach(() => {
34
16
  Trace.Handlers.ModelHandlers.Meta.reset();
35
- Trace.Handlers.ModelHandlers.Meta.initialize();
36
- Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
37
17
  });
38
18
 
39
19
  it('calculates network requests correctly', async function() {
@@ -200,8 +180,6 @@ describe('NetworkRequestsHandler', function() {
200
180
  describe('parses the change priority request', () => {
201
181
  beforeEach(() => {
202
182
  Trace.Handlers.ModelHandlers.Meta.reset();
203
- Trace.Handlers.ModelHandlers.Meta.initialize();
204
- Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
205
183
  });
206
184
 
207
185
  it('changes priority of the resouce', async function() {
@@ -232,8 +210,6 @@ describe('NetworkRequestsHandler', function() {
232
210
  describe('redirects', () => {
233
211
  beforeEach(() => {
234
212
  Trace.Handlers.ModelHandlers.Meta.reset();
235
- Trace.Handlers.ModelHandlers.Meta.initialize();
236
- Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
237
213
  });
238
214
 
239
215
  it('calculates redirects correctly (navigations)', async function() {
@@ -306,8 +282,6 @@ describe('NetworkRequestsHandler', function() {
306
282
  describe('initiators', () => {
307
283
  beforeEach(() => {
308
284
  Trace.Handlers.ModelHandlers.Meta.reset();
309
- Trace.Handlers.ModelHandlers.Meta.initialize();
310
- Trace.Handlers.ModelHandlers.NetworkRequests.initialize();
311
285
  });
312
286
 
313
287
  it('calculate the initiator by `initiator` field correctly', async function() {
@@ -8,7 +8,7 @@ import * as Helpers from '../helpers/helpers.js';
8
8
  import * as Types from '../types/types.js';
9
9
 
10
10
  import {data as metaHandlerData} from './MetaHandler.js';
11
- import {type HandlerName, HandlerState} from './types.js';
11
+ import type {HandlerName} from './types.js';
12
12
 
13
13
  const MILLISECONDS_TO_MICROSECONDS = 1000;
14
14
  const SECONDS_TO_MICROSECONDS = 1000000;
@@ -103,8 +103,6 @@ function firstPositiveValueInList(entries: number[]): number {
103
103
  return 0;
104
104
  }
105
105
 
106
- let handlerState = HandlerState.UNINITIALIZED;
107
-
108
106
  export function reset(): void {
109
107
  requestsById.clear();
110
108
  requestsByOrigin.clear();
@@ -113,19 +111,9 @@ export function reset(): void {
113
111
  networkRequestEventByInitiatorUrl.clear();
114
112
  eventToInitiatorMap.clear();
115
113
  webSocketData.clear();
116
-
117
- handlerState = HandlerState.UNINITIALIZED;
118
- }
119
-
120
- export function initialize(): void {
121
- handlerState = HandlerState.INITIALIZED;
122
114
  }
123
115
 
124
116
  export function handleEvent(event: Types.Events.Event): void {
125
- if (handlerState !== HandlerState.INITIALIZED) {
126
- throw new Error('Network Request handler is not initialized');
127
- }
128
-
129
117
  if (Types.Events.isResourceChangePriority(event)) {
130
118
  storeTraceEventWithRequestId(event.args.data.requestId, 'changePriority', event);
131
119
  return;
@@ -187,10 +175,6 @@ export function handleEvent(event: Types.Events.Event): void {
187
175
  }
188
176
 
189
177
  export async function finalize(): Promise<void> {
190
- if (handlerState !== HandlerState.INITIALIZED) {
191
- throw new Error('Network Request handler is not initialized');
192
- }
193
-
194
178
  const {rendererProcessesByFrame} = metaHandlerData();
195
179
  for (const [requestId, request] of requestMap.entries()) {
196
180
  // If we have an incomplete set of events here, we choose to drop the network
@@ -271,6 +255,9 @@ export async function finalize(): Promise<void> {
271
255
  finalPriority = request.changePriority.args.data.priority;
272
256
  }
273
257
 
258
+ // Network timings are complicated.
259
+ // https://raw.githubusercontent.com/GoogleChrome/lighthouse/main/docs/Network-Timings.svg is generally correct, but.. less so for navigations/redirects/etc.
260
+
274
261
  // Start time
275
262
  // =======================
276
263
  // The time where the request started, which is either the first willSendRequest
@@ -504,15 +491,9 @@ export async function finalize(): Promise<void> {
504
491
  }
505
492
  }
506
493
  finalizeWebSocketData();
507
-
508
- handlerState = HandlerState.FINALIZED;
509
494
  }
510
495
 
511
496
  export function data(): NetworkRequestData {
512
- if (handlerState !== HandlerState.FINALIZED) {
513
- throw new Error('Network Request handler is not finalized');
514
- }
515
-
516
497
  return {
517
498
  byId: requestsById,
518
499
  byOrigin: requestsByOrigin,
@@ -39,6 +39,9 @@ export function handleEvent(event: Types.Events.Event): void {
39
39
  }
40
40
  }
41
41
 
42
+ export async function finalize(): Promise<void> {
43
+ }
44
+
42
45
  export interface PageFrameData {
43
46
  frames: Map<string, Types.Events.TraceFrame>;
44
47
  }
@@ -663,7 +663,6 @@ describeWithEnvironment('RendererHandler', function() {
663
663
  ],
664
664
  ]);
665
665
 
666
- Trace.Handlers.ModelHandlers.Samples.initialize();
667
666
  await Trace.Handlers.ModelHandlers.Samples.finalize();
668
667
  Trace.Handlers.ModelHandlers.Renderer.buildHierarchy(processes, {filter: {has: () => true}});
669
668
 
@@ -796,9 +795,6 @@ describeWithEnvironment('RendererHandler', function() {
796
795
  Trace.Handlers.ModelHandlers.Renderer.reset();
797
796
  Trace.Handlers.ModelHandlers.Meta.reset();
798
797
  Trace.Handlers.ModelHandlers.Samples.reset();
799
- Trace.Handlers.ModelHandlers.Meta.initialize();
800
- Trace.Handlers.ModelHandlers.Samples.initialize();
801
- Trace.Handlers.ModelHandlers.Renderer.initialize();
802
798
 
803
799
  for (const event of traceEvents) {
804
800
  Trace.Handlers.ModelHandlers.Meta.handleEvent(event);
@@ -9,7 +9,7 @@ import * as Types from '../types/types.js';
9
9
  import {data as auctionWorkletsData} from './AuctionWorkletsHandler.js';
10
10
  import {data as metaHandlerData, type FrameProcessData} from './MetaHandler.js';
11
11
  import {data as samplesHandlerData} from './SamplesHandler.js';
12
- import {type HandlerName, HandlerState} from './types.js';
12
+ import type {HandlerName} from './types.js';
13
13
 
14
14
  /**
15
15
  * This handler builds the hierarchy of trace events and profile calls
@@ -37,7 +37,6 @@ let allTraceEntries: Types.Events.Event[] = [];
37
37
 
38
38
  const completeEventStack: (Types.Events.SyntheticComplete)[] = [];
39
39
 
40
- let handlerState = HandlerState.UNINITIALIZED;
41
40
  let config: Types.Configuration.Configuration = Types.Configuration.defaults();
42
41
 
43
42
  const makeRendererProcess = (): RendererProcess => ({
@@ -71,22 +70,9 @@ export function reset(): void {
71
70
  allTraceEntries.length = 0;
72
71
  completeEventStack.length = 0;
73
72
  compositorTileWorkers.length = 0;
74
- handlerState = HandlerState.UNINITIALIZED;
75
- }
76
-
77
- export function initialize(): void {
78
- if (handlerState !== HandlerState.UNINITIALIZED) {
79
- throw new Error('Renderer Handler was not reset');
80
- }
81
-
82
- handlerState = HandlerState.INITIALIZED;
83
73
  }
84
74
 
85
75
  export function handleEvent(event: Types.Events.Event): void {
86
- if (handlerState !== HandlerState.INITIALIZED) {
87
- throw new Error('Renderer Handler is not initialized');
88
- }
89
-
90
76
  if (Types.Events.isThreadName(event) && event.args.name?.startsWith('CompositorTileWorker')) {
91
77
  compositorTileWorkers.push({
92
78
  pid: event.pid,
@@ -115,24 +101,15 @@ export function handleEvent(event: Types.Events.Event): void {
115
101
  }
116
102
 
117
103
  export async function finalize(): Promise<void> {
118
- if (handlerState !== HandlerState.INITIALIZED) {
119
- throw new Error('Renderer Handler is not initialized');
120
- }
121
-
122
104
  const {mainFrameId, rendererProcessesByFrame, threadsInProcess} = metaHandlerData();
123
105
  assignMeta(processes, mainFrameId, rendererProcessesByFrame, threadsInProcess);
124
106
  sanitizeProcesses(processes);
125
107
  buildHierarchy(processes);
126
108
  sanitizeThreads(processes);
127
109
  Helpers.Trace.sortTraceEventsInPlace(allTraceEntries);
128
- handlerState = HandlerState.FINALIZED;
129
110
  }
130
111
 
131
112
  export function data(): RendererHandlerData {
132
- if (handlerState !== HandlerState.FINALIZED) {
133
- throw new Error('Renderer Handler is not finalized');
134
- }
135
-
136
113
  return {
137
114
  processes: new Map(processes),
138
115
  compositorTileWorkers: new Map(gatherCompositorThreads()),
@@ -14,9 +14,6 @@ async function handleEventsFromTraceFile(context: Mocha.Context|Mocha.Suite|null
14
14
  Trace.Handlers.ModelHandlers.Meta.reset();
15
15
  Trace.Handlers.ModelHandlers.Samples.reset();
16
16
 
17
- Trace.Handlers.ModelHandlers.Meta.initialize();
18
- Trace.Handlers.ModelHandlers.Samples.initialize();
19
-
20
17
  for (const event of traceEvents) {
21
18
  Trace.Handlers.ModelHandlers.Meta.handleEvent(event);
22
19
  Trace.Handlers.ModelHandlers.Samples.handleEvent(event);
@@ -141,8 +138,6 @@ describeWithEnvironment('SamplesHandler', function() {
141
138
  ];
142
139
  Trace.Handlers.ModelHandlers.Samples.reset();
143
140
 
144
- Trace.Handlers.ModelHandlers.Samples.initialize();
145
-
146
141
  for (const event of [mockProfileEvent, ...mockChunks]) {
147
142
  Trace.Handlers.ModelHandlers.Samples.handleEvent(event);
148
143
  }
@@ -8,8 +8,6 @@ import * as CPUProfile from '../../cpu_profile/cpu_profile.js';
8
8
  import * as Helpers from '../helpers/helpers.js';
9
9
  import * as Types from '../types/types.js';
10
10
 
11
- import {HandlerState} from './types.js';
12
-
13
11
  const events = new Map<Types.Events.ProcessID, Map<Types.Events.ThreadID, Types.Events.Complete[]>>();
14
12
 
15
13
  const profilesInProcess = new Map<Types.Events.ProcessID, Map<Types.Events.ThreadID, ProfileData>>();
@@ -26,8 +24,6 @@ const entryToNode = new Map<Types.Events.Event, Helpers.TreeHelpers.TraceEntryNo
26
24
  // events matched by thread id.
27
25
  const preprocessedData = new Map<Types.Events.ProcessID, Map<Types.Events.ProfileID, PreprocessedData>>();
28
26
 
29
- let handlerState = HandlerState.UNINITIALIZED;
30
-
31
27
  function buildProfileCalls(): void {
32
28
  for (const [processId, profiles] of preprocessedData) {
33
29
  for (const [profileId, preProcessedData] of profiles) {
@@ -110,22 +106,9 @@ export function reset(): void {
110
106
  preprocessedData.clear();
111
107
  profilesInProcess.clear();
112
108
  entryToNode.clear();
113
- handlerState = HandlerState.UNINITIALIZED;
114
- }
115
-
116
- export function initialize(): void {
117
- if (handlerState !== HandlerState.UNINITIALIZED) {
118
- throw new Error('Samples Handler was not reset');
119
- }
120
-
121
- handlerState = HandlerState.INITIALIZED;
122
109
  }
123
110
 
124
111
  export function handleEvent(event: Types.Events.Event): void {
125
- if (handlerState !== HandlerState.INITIALIZED) {
126
- throw new Error('Samples Handler is not initialized');
127
- }
128
-
129
112
  /**
130
113
  * A fake trace event created to support CDP.Profiler.Profiles in the
131
114
  * trace engine.
@@ -201,19 +184,10 @@ export function handleEvent(event: Types.Events.Event): void {
201
184
  }
202
185
 
203
186
  export async function finalize(): Promise<void> {
204
- if (handlerState !== HandlerState.INITIALIZED) {
205
- throw new Error('Samples Handler is not initialized');
206
- }
207
187
  buildProfileCalls();
208
-
209
- handlerState = HandlerState.FINALIZED;
210
188
  }
211
189
 
212
190
  export function data(): SamplesHandlerData {
213
- if (handlerState !== HandlerState.FINALIZED) {
214
- throw new Error('Samples Handler is not finalized');
215
- }
216
-
217
191
  return {
218
192
  profilesInProcess,
219
193
  entryToNode,
@@ -28,7 +28,6 @@ describe('ScreenshotsHandler', function() {
28
28
  // and later we will pass events to the meta handler, otherwise the
29
29
  // screenshots handler will fail.
30
30
  Trace.Handlers.ModelHandlers.Meta.reset();
31
- Trace.Handlers.ModelHandlers.Meta.initialize();
32
31
 
33
32
  Trace.Handlers.ModelHandlers.Screenshots.reset();
34
33
  });
@@ -29,6 +29,9 @@ export function handleEvent(event: Types.Events.Event): void {
29
29
  }
30
30
  }
31
31
 
32
+ export async function finalize(): Promise<void> {
33
+ }
34
+
32
35
  export interface SelectorStatsData {
33
36
  dataForUpdateLayoutEvent: Map<Types.Events.UpdateLayoutTree, {
34
37
  timings: Types.Events.SelectorTiming[],
@@ -7,19 +7,12 @@ import * as Helpers from '../helpers/helpers.js';
7
7
  import * as Types from '../types/types.js';
8
8
 
9
9
  import {data as networkData} from './NetworkRequestsHandler.js';
10
- import {type HandlerName, HandlerState} from './types.js';
10
+ import type {HandlerName} from './types.js';
11
11
 
12
12
  const serverTimings: Types.Events.SyntheticServerTiming[] = [];
13
13
 
14
- let handlerState = HandlerState.UNINITIALIZED;
15
-
16
14
  export function reset(): void {
17
15
  serverTimings.length = 0;
18
- handlerState = HandlerState.UNINITIALIZED;
19
- }
20
-
21
- export function initialize(): void {
22
- handlerState = HandlerState.INITIALIZED;
23
16
  }
24
17
 
25
18
  export function handleEvent(_event: Types.Events.Event): void {
@@ -27,12 +20,8 @@ export function handleEvent(_event: Types.Events.Event): void {
27
20
  }
28
21
 
29
22
  export async function finalize(): Promise<void> {
30
- if (handlerState !== HandlerState.INITIALIZED) {
31
- throw new Error('Server Timings handler is not initialized');
32
- }
33
23
  extractServerTimings();
34
24
  Helpers.Trace.sortTraceEventsInPlace(serverTimings);
35
- handlerState = HandlerState.FINALIZED;
36
25
  }
37
26
 
38
27
  const RESPONSE_START_METRIC_NAME = 'response-start';
@@ -124,10 +113,6 @@ function createSyntheticServerTiming(
124
113
  }
125
114
 
126
115
  export function data(): {serverTimings: Types.Events.SyntheticServerTiming[]} {
127
- if (handlerState !== HandlerState.FINALIZED) {
128
- throw new Error('Server Timing handler is not finalized');
129
- }
130
-
131
116
  return {
132
117
  serverTimings,
133
118
  };
@@ -2,7 +2,6 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- import * as TimelineModel from '../../../models/timeline_model/timeline_model.js';
6
5
  import {describeWithEnvironment} from '../../../testing/EnvironmentHelpers.js';
7
6
  import {TraceLoader} from '../../../testing/TraceLoader.js';
8
7
  import * as Trace from '../trace.js';
@@ -40,7 +39,7 @@ describeWithEnvironment('Handler Threads helper', function() {
40
39
  // it takes the CDP Profile and wraps it in fake trace events, before then
41
40
  // passing that through to the new engine.
42
41
  const rawEvents = await TraceLoader.rawCPUProfile(this, 'node-fibonacci-website.cpuprofile.gz');
43
- const events = TimelineModel.TimelineJSProfile.TimelineJSProfileProcessor.createFakeTraceFromCpuProfile(
42
+ const events = Trace.Extras.TimelineJSProfile.TimelineJSProfileProcessor.createFakeTraceFromCpuProfile(
44
43
  rawEvents,
45
44
  Trace.Types.Events.ThreadID(1),
46
45
  );
@@ -8,7 +8,6 @@ import * as Trace from '../trace.js';
8
8
  async function processTrace(context: Mocha.Suite|Mocha.Context|null, path: string): Promise<void> {
9
9
  const traceEvents = await TraceLoader.rawEvents(context, path);
10
10
  Trace.Handlers.ModelHandlers.Meta.reset();
11
- Trace.Handlers.ModelHandlers.Meta.initialize();
12
11
  for (const event of traceEvents) {
13
12
  Trace.Handlers.ModelHandlers.Meta.handleEvent(event);
14
13
  Trace.Handlers.ModelHandlers.UserInteractions.handleEvent(event);
@@ -19,7 +18,6 @@ async function processTrace(context: Mocha.Suite|Mocha.Context|null, path: strin
19
18
 
20
19
  beforeEach(() => {
21
20
  Trace.Handlers.ModelHandlers.Meta.reset();
22
- Trace.Handlers.ModelHandlers.Meta.initialize();
23
21
  });
24
22
 
25
23
  describe('UserInteractionsHandler', function() {
@@ -43,23 +41,6 @@ describe('UserInteractionsHandler', function() {
43
41
  return event as unknown as Trace.Types.Events.SyntheticInteractionPair;
44
42
  }
45
43
 
46
- describe('error handling', () => {
47
- it('throws if not initialized', async () => {
48
- Trace.Handlers.ModelHandlers.Meta.reset();
49
- Trace.Handlers.ModelHandlers.Meta.initialize();
50
-
51
- // Finalize the handler by calling data and then finalize on it.
52
- Trace.Handlers.ModelHandlers.UserInteractions.data();
53
- await Trace.Handlers.ModelHandlers.Meta.finalize();
54
- await Trace.Handlers.ModelHandlers.UserInteractions.finalize();
55
-
56
- assert.throws(() => {
57
- const fakeEvent = {} as Trace.Types.Events.Event;
58
- Trace.Handlers.ModelHandlers.UserInteractions.handleEvent(fakeEvent);
59
- }, 'Handler is not initialized');
60
- });
61
- });
62
-
63
44
  it('returns all user interactions', async function() {
64
45
  const traceEvents = await TraceLoader.rawEvents(this, 'slow-interaction-button-click.json.gz');
65
46
  for (const event of traceEvents) {
@@ -67,11 +48,7 @@ describe('UserInteractionsHandler', function() {
67
48
  }
68
49
 
69
50
  const data = Trace.Handlers.ModelHandlers.UserInteractions.data();
70
- const clicks = data.allEvents.filter(event => {
71
- if (!event.args.data) {
72
- return false;
73
- }
74
-
51
+ const clicks = data.allEvents.filter(Trace.Types.Events.isEventTimingStart).filter(event => {
75
52
  return event.args.data.type === 'click';
76
53
  });
77
54
 
@@ -184,8 +161,8 @@ describe('UserInteractionsHandler', function() {
184
161
  it('detects correct events for a click and keydown interaction', async () => {
185
162
  await processTrace(this, 'slow-interaction-keydown.json.gz');
186
163
  const data = Trace.Handlers.ModelHandlers.UserInteractions.data();
187
- const foundInteractions =
188
- data.allEvents.filter(e => e.args.data && e.args.data.duration > 1 && e.args.data.interactionId);
164
+ const foundInteractions = data.allEvents.filter(Trace.Types.Events.isEventTimingStart)
165
+ .filter(e => e.args.data && e.args.data.duration > 1 && e.args.data.interactionId);
189
166
  // We expect there to be 3 interactions:
190
167
  // User clicks on input:
191
168
  // 1.pointerdown, 2. pointerup, 3. click
@@ -276,7 +253,7 @@ describe('UserInteractionsHandler', function() {
276
253
  },
277
254
  },
278
255
  },
279
- ] as unknown as Trace.Types.Events.EventTiming[];
256
+ ] as unknown as Trace.Types.Events.EventTimingBeginOrEnd[];
280
257
  Trace.Handlers.ModelHandlers.UserInteractions.reset();
281
258
  for (const event of events) {
282
259
  Trace.Handlers.ModelHandlers.UserInteractions.handleEvent(event);
@@ -7,7 +7,7 @@ import * as Types from '../types/types.js';
7
7
 
8
8
  import {data as metaHandlerData} from './MetaHandler.js';
9
9
  import {ScoreClassification} from './PageLoadMetricsHandler.js';
10
- import {type HandlerName, HandlerState} from './types.js';
10
+ import type {HandlerName} from './types.js';
11
11
 
12
12
  // This handler serves two purposes. It generates a list of events that are
13
13
  // used to show user clicks in the timeline. It is also used to gather
@@ -16,7 +16,7 @@ import {type HandlerName, HandlerState} from './types.js';
16
16
 
17
17
  // We don't need to know which process / thread these events occurred in,
18
18
  // because they are effectively global, so we just track all that we find.
19
- const allEvents: Types.Events.EventTiming[] = [];
19
+ const allEvents: Types.Events.EventTimingBeginOrEnd[] = [];
20
20
 
21
21
  const beginCommitCompositorFrameEvents: Types.Events.BeginCommitCompositorFrame[] = [];
22
22
  const parseMetaViewportEvents: Types.Events.ParseMetaViewport[] = [];
@@ -28,7 +28,7 @@ const INP_MEDIUM_TIMING = Helpers.Timing.millisecondsToMicroseconds(Types.Timing
28
28
 
29
29
  export interface UserInteractionsData {
30
30
  /** All the user events we found in the trace */
31
- allEvents: readonly Types.Events.EventTiming[];
31
+ allEvents: readonly Types.Events.EventTimingBeginOrEnd[];
32
32
  /** All the BeginCommitCompositorFrame events we found in the trace */
33
33
  beginCommitCompositorFrameEvents: readonly Types.Events.BeginCommitCompositorFrame[];
34
34
  /** All the ParseMetaViewport events we found in the trace */
@@ -64,7 +64,6 @@ const interactionEvents: Types.Events.SyntheticInteractionPair[] = [];
64
64
  const interactionEventsWithNoNesting: Types.Events.SyntheticInteractionPair[] = [];
65
65
  const eventTimingEndEventsById = new Map<string, Types.Events.EventTimingEnd>();
66
66
  const eventTimingStartEventsForInteractions: Types.Events.EventTimingBegin[] = [];
67
- let handlerState = HandlerState.UNINITIALIZED;
68
67
 
69
68
  export function reset(): void {
70
69
  allEvents.length = 0;
@@ -75,14 +74,9 @@ export function reset(): void {
75
74
  eventTimingEndEventsById.clear();
76
75
  interactionEventsWithNoNesting.length = 0;
77
76
  longestInteractionEvent = null;
78
- handlerState = HandlerState.INITIALIZED;
79
77
  }
80
78
 
81
79
  export function handleEvent(event: Types.Events.Event): void {
82
- if (handlerState !== HandlerState.INITIALIZED) {
83
- throw new Error('Handler is not initialized');
84
- }
85
-
86
80
  if (Types.Events.isBeginCommitCompositorFrame(event)) {
87
81
  beginCommitCompositorFrameEvents.push(event);
88
82
  return;
@@ -279,18 +273,16 @@ export async function finalize(): Promise<void> {
279
273
  // If we cannot find an end event, bail and drop this event.
280
274
  continue;
281
275
  }
282
- if (!interactionStartEvent.args.data?.type || !interactionStartEvent.args.data?.interactionId) {
283
- // A valid interaction event that we care about has to have a type (e.g.
284
- // pointerdown, keyup).
285
- //
286
- // We also need to ensure it has an interactionId. We already checked
287
- // this in the handleEvent() function, but we do it here also to satisfy
288
- // TypeScript.
276
+ const {type, interactionId, timeStamp, processingStart, processingEnd} = interactionStartEvent.args.data;
277
+ if (!type || !interactionId || !timeStamp || !processingStart || !processingEnd) {
278
+ // A valid interaction event that we care about has to have a type (e.g. pointerdown, keyup).
279
+ // We also need to ensure it has an interactionId and various timings. There are edge cases where these aren't included in the trace event.
289
280
  continue;
290
281
  }
291
282
 
292
- // In the future we will add microsecond timestamps to the trace events,
293
- // but until then we can use the millisecond precision values that are in
283
+ // In the future we will add microsecond timestamps to the trace events
284
+ // (See https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/timing/window_performance.cc;l=900-901;drc=b503c262e425eae59ced4a80d59d176ed07152c7 )
285
+ // …but until then we can use the millisecond precision values that are in
294
286
  // the trace event. To adjust them to be relative to the event.ts and the
295
287
  // trace timestamps, for both processingStart and processingEnd we subtract
296
288
  // the event timestamp (NOT event.ts, but the timeStamp millisecond value
@@ -299,17 +291,17 @@ export async function finalize(): Promise<void> {
299
291
  // that is relative to event.ts, and can be used when drawing boxes.
300
292
  // There is some inaccuracy here as we are converting milliseconds to microseconds, but it is good enough until the backend emits more accurate numbers.
301
293
  const processingStartRelativeToTraceTime = Types.Timing.MicroSeconds(
302
- Helpers.Timing.millisecondsToMicroseconds(interactionStartEvent.args.data.processingStart) -
303
- Helpers.Timing.millisecondsToMicroseconds(interactionStartEvent.args.data.timeStamp) +
304
- interactionStartEvent.ts,
294
+ Helpers.Timing.millisecondsToMicroseconds(processingStart) -
295
+ Helpers.Timing.millisecondsToMicroseconds(timeStamp) + interactionStartEvent.ts,
305
296
  );
306
297
 
307
298
  const processingEndRelativeToTraceTime = Types.Timing.MicroSeconds(
308
- (Helpers.Timing.millisecondsToMicroseconds(interactionStartEvent.args.data.processingEnd) -
309
- Helpers.Timing.millisecondsToMicroseconds(interactionStartEvent.args.data.timeStamp)) +
299
+ (Helpers.Timing.millisecondsToMicroseconds(processingEnd) -
300
+ Helpers.Timing.millisecondsToMicroseconds(timeStamp)) +
310
301
  interactionStartEvent.ts);
311
302
 
312
- const frameId = interactionStartEvent.args.frame ?? interactionStartEvent.args.data.frame;
303
+ // Ultimate frameId fallback only needed for TSC, see comments in the type.
304
+ const frameId = interactionStartEvent.args.frame ?? interactionStartEvent.args.data.frame ?? '';
313
305
  const navigation = Helpers.Trace.getNavigationForTraceEvent(interactionStartEvent, frameId, navigationsByFrameId);
314
306
  const navigationId = navigation?.args.data?.navigationId;
315
307
  const interactionEvent =
@@ -345,7 +337,6 @@ export async function finalize(): Promise<void> {
345
337
  interactionEvents.push(interactionEvent);
346
338
  }
347
339
 
348
- handlerState = HandlerState.FINALIZED;
349
340
  interactionEventsWithNoNesting.push(...removeNestedInteractions(interactionEvents));
350
341
 
351
342
  // Pick the longest interactions from the set that were not nested, as we