chrome-devtools-frontend 1.0.1512147 → 1.0.1513662

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 (337) hide show
  1. package/docs/cookbook/release_management.md +15 -13
  2. package/docs/get_the_code.md +114 -35
  3. package/front_end/Images/src/ai-explorer-badge.svg +114 -0
  4. package/front_end/Images/src/code-whisperer-badge.svg +166 -0
  5. package/front_end/Images/src/devtools-user-badge.svg +129 -0
  6. package/front_end/Images/src/dom-detective-badge.svg +136 -0
  7. package/front_end/Images/src/speedster-badge.svg +166 -0
  8. package/front_end/core/common/Color.ts +40 -44
  9. package/front_end/core/common/Console.ts +4 -4
  10. package/front_end/core/common/ParsedURL.ts +14 -14
  11. package/front_end/core/common/ResourceType.ts +20 -20
  12. package/front_end/core/common/SegmentedRange.ts +13 -14
  13. package/front_end/core/common/Settings.ts +4 -4
  14. package/front_end/core/common/StringOutputStream.ts +4 -4
  15. package/front_end/core/host/GdpClient.ts +76 -2
  16. package/front_end/core/host/InspectorFrontendHost.ts +4 -1
  17. package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -0
  18. package/front_end/core/host/ResourceLoader.ts +2 -2
  19. package/front_end/core/host/UserMetrics.ts +0 -2
  20. package/front_end/core/i18n/NumberFormatter.ts +7 -0
  21. package/front_end/core/protocol_client/InspectorBackend.ts +9 -9
  22. package/front_end/core/root/Runtime.ts +5 -2
  23. package/front_end/core/sdk/AccessibilityModel.ts +48 -48
  24. package/front_end/core/sdk/AnimationModel.ts +78 -79
  25. package/front_end/core/sdk/CPUProfilerModel.ts +5 -5
  26. package/front_end/core/sdk/CPUThrottlingManager.ts +17 -17
  27. package/front_end/core/sdk/CSSMatchedStyles.ts +44 -44
  28. package/front_end/core/sdk/CSSMedia.ts +22 -22
  29. package/front_end/core/sdk/CSSModel.ts +4 -4
  30. package/front_end/core/sdk/CSSProperty.ts +9 -9
  31. package/front_end/core/sdk/CSSPropertyParser.ts +1 -2
  32. package/front_end/core/sdk/CSSRule.ts +3 -3
  33. package/front_end/core/sdk/CSSStyleDeclaration.ts +27 -28
  34. package/front_end/core/sdk/CSSStyleSheetHeader.ts +13 -13
  35. package/front_end/core/sdk/CategorizedBreakpoint.ts +4 -4
  36. package/front_end/core/sdk/ChildTargetManager.ts +6 -6
  37. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +4 -4
  38. package/front_end/core/sdk/ConsoleModel.ts +24 -24
  39. package/front_end/core/sdk/Cookie.ts +16 -16
  40. package/front_end/core/sdk/CookieParser.ts +6 -6
  41. package/front_end/core/sdk/DOMDebuggerModel.ts +88 -89
  42. package/front_end/core/sdk/DOMModel.ts +113 -113
  43. package/front_end/core/sdk/DebuggerModel.ts +102 -103
  44. package/front_end/core/sdk/EmulationModel.ts +6 -6
  45. package/front_end/core/sdk/EventBreakpointsModel.ts +5 -5
  46. package/front_end/core/sdk/HeapProfilerModel.ts +5 -5
  47. package/front_end/core/sdk/IsolateManager.ts +26 -26
  48. package/front_end/core/sdk/LayerTreeBase.ts +29 -30
  49. package/front_end/core/sdk/OverlayModel.ts +6 -6
  50. package/front_end/core/sdk/Resource.ts +43 -43
  51. package/front_end/core/sdk/ResourceTreeModel.ts +58 -61
  52. package/front_end/core/sdk/RuntimeModel.ts +12 -13
  53. package/front_end/core/sdk/SDKModel.ts +3 -3
  54. package/front_end/core/sdk/Script.ts +17 -17
  55. package/front_end/core/sdk/SecurityOriginManager.ts +14 -14
  56. package/front_end/core/sdk/ServerTiming.ts +2 -2
  57. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +15 -15
  58. package/front_end/core/sdk/ServiceWorkerManager.ts +19 -24
  59. package/front_end/core/sdk/SourceMap.ts +10 -10
  60. package/front_end/core/sdk/StorageKeyManager.ts +12 -12
  61. package/front_end/core/sdk/Target.ts +33 -34
  62. package/front_end/core/sdk/TargetManager.ts +20 -20
  63. package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +8 -8
  64. package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +7 -7
  65. package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +7 -7
  66. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +24 -24
  67. package/front_end/entrypoints/main/GlobalAiButton.ts +3 -3
  68. package/front_end/entrypoints/main/MainImpl.ts +16 -14
  69. package/front_end/entrypoints/main/main-meta.ts +1 -2
  70. package/front_end/generated/InspectorBackendCommands.js +3 -2
  71. package/front_end/generated/SupportedCSSProperties.js +20 -0
  72. package/front_end/generated/protocol-mapping.d.ts +4 -0
  73. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  74. package/front_end/generated/protocol.ts +20 -0
  75. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +18 -35
  76. package/front_end/models/ai_assistance/ai_assistance.ts +1 -1
  77. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +7 -6
  78. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +246 -119
  79. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +187 -73
  80. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +106 -100
  81. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +20 -27
  82. package/front_end/models/ai_assistance/data_formatters/UnitFormatters.ts +151 -0
  83. package/front_end/models/badges/AiExplorerBadge.ts +21 -0
  84. package/front_end/models/badges/Badge.ts +10 -9
  85. package/front_end/models/badges/CodeWhispererBadge.ts +21 -0
  86. package/front_end/models/badges/DOMDetectiveBadge.ts +21 -0
  87. package/front_end/models/badges/SpeedsterBadge.ts +7 -2
  88. package/front_end/models/badges/StarterBadge.ts +6 -1
  89. package/front_end/models/badges/UserBadges.ts +61 -9
  90. package/front_end/models/bindings/CSSWorkspaceBinding.ts +6 -6
  91. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +18 -18
  92. package/front_end/models/bindings/FileUtils.ts +15 -15
  93. package/front_end/models/bindings/ResourceScriptMapping.ts +14 -14
  94. package/front_end/models/elements/ElementUpdateRecord.ts +11 -11
  95. package/front_end/models/emulation/DeviceModeModel.ts +123 -131
  96. package/front_end/models/emulation/EmulatedDevices.ts +22 -22
  97. package/front_end/models/extensions/ExtensionPanel.ts +24 -24
  98. package/front_end/models/extensions/ExtensionServer.ts +4 -4
  99. package/front_end/models/javascript_metadata/NativeFunctions.js +14 -2
  100. package/front_end/models/persistence/IsolatedFileSystem.ts +18 -19
  101. package/front_end/models/persistence/IsolatedFileSystemManager.ts +13 -13
  102. package/front_end/models/trace/EventsSerializer.ts +5 -5
  103. package/front_end/models/trace/LanternComputationData.ts +10 -10
  104. package/front_end/models/trace/ModelImpl.ts +32 -54
  105. package/front_end/models/trace/Processor.ts +28 -30
  106. package/front_end/models/trace/extras/FilmStrip.ts +6 -6
  107. package/front_end/models/trace/extras/StackTraceForEvent.ts +22 -25
  108. package/front_end/models/trace/extras/ThirdParties.ts +16 -17
  109. package/front_end/models/trace/extras/TraceFilter.ts +1 -1
  110. package/front_end/models/trace/handlers/Threads.ts +10 -10
  111. package/front_end/models/trace/handlers/helpers.ts +9 -9
  112. package/front_end/models/trace/handlers/types.ts +3 -3
  113. package/front_end/models/trace/insights/CLSCulprits.ts +12 -14
  114. package/front_end/models/trace/insights/Cache.ts +8 -4
  115. package/front_end/models/trace/insights/DOMSize.ts +8 -5
  116. package/front_end/models/trace/insights/DocumentLatency.ts +2 -2
  117. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -3
  118. package/front_end/models/trace/insights/FontDisplay.ts +3 -4
  119. package/front_end/models/trace/insights/ForcedReflow.ts +3 -3
  120. package/front_end/models/trace/insights/INPBreakdown.ts +2 -2
  121. package/front_end/models/trace/insights/ImageDelivery.ts +11 -11
  122. package/front_end/models/trace/insights/LCPBreakdown.ts +4 -4
  123. package/front_end/models/trace/insights/LCPDiscovery.ts +4 -4
  124. package/front_end/models/trace/insights/LegacyJavaScript.ts +2 -2
  125. package/front_end/models/trace/insights/ModernHTTP.ts +4 -5
  126. package/front_end/models/trace/insights/NetworkDependencyTree.ts +12 -12
  127. package/front_end/models/trace/insights/RenderBlocking.ts +9 -10
  128. package/front_end/models/trace/insights/SlowCSSSelector.ts +2 -2
  129. package/front_end/models/trace/insights/ThirdParties.ts +4 -5
  130. package/front_end/models/trace/insights/Viewport.ts +8 -5
  131. package/front_end/models/trace/insights/types.ts +1 -0
  132. package/front_end/models/trace/lantern/testing/MetricTestUtils.ts +10 -10
  133. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +52 -52
  134. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +8 -8
  135. package/front_end/panels/animation/AnimationTimeline.ts +5 -5
  136. package/front_end/panels/animation/AnimationUI.ts +22 -23
  137. package/front_end/panels/application/ApplicationPanelSidebar.ts +12 -12
  138. package/front_end/panels/application/DOMStorageModel.ts +23 -23
  139. package/front_end/panels/application/ExtensionStorageModel.ts +31 -31
  140. package/front_end/panels/application/IndexedDBModel.ts +1 -0
  141. package/front_end/panels/application/PreloadingTreeElement.ts +8 -8
  142. package/front_end/panels/application/ServiceWorkersView.ts +0 -53
  143. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -2
  144. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
  145. package/front_end/panels/common/BadgeNotification.ts +140 -10
  146. package/front_end/panels/common/GdpSignUpDialog.ts +5 -0
  147. package/front_end/panels/common/badgeNotification.css +30 -9
  148. package/front_end/panels/console/ConsoleContextSelector.ts +9 -9
  149. package/front_end/panels/console/ConsolePrompt.ts +8 -5
  150. package/front_end/panels/console/ConsoleView.ts +13 -13
  151. package/front_end/panels/console/ConsoleViewport.ts +29 -29
  152. package/front_end/panels/coverage/CoverageModel.ts +22 -22
  153. package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
  154. package/front_end/panels/elements/ComputedStyleModel.ts +17 -18
  155. package/front_end/panels/elements/DOMPath.ts +2 -2
  156. package/front_end/panels/elements/ElementsPanel.ts +13 -13
  157. package/front_end/panels/elements/ElementsTreeElement.ts +30 -18
  158. package/front_end/panels/elements/ElementsTreeOutline.ts +44 -48
  159. package/front_end/panels/elements/ShortcutTreeElement.ts +4 -4
  160. package/front_end/panels/elements/StylePropertiesSection.ts +7 -4
  161. package/front_end/panels/elements/StylePropertyTreeElement.ts +54 -50
  162. package/front_end/panels/elements/StylesSidebarPane.ts +19 -19
  163. package/front_end/panels/emulation/DeviceModeToolbar.ts +7 -7
  164. package/front_end/panels/emulation/DeviceModeView.ts +6 -6
  165. package/front_end/panels/emulation/MediaQueryInspector.ts +18 -18
  166. package/front_end/panels/event_listeners/EventListenersView.ts +13 -14
  167. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +3 -3
  168. package/front_end/panels/layer_viewer/LayerViewHost.ts +13 -13
  169. package/front_end/panels/layer_viewer/PaintProfilerView.ts +9 -10
  170. package/front_end/panels/layer_viewer/TransformController.ts +34 -36
  171. package/front_end/panels/layers/LayerTreeModel.ts +41 -40
  172. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +13 -13
  173. package/front_end/panels/lighthouse/LighthouseStartView.ts +7 -7
  174. package/front_end/panels/media/PlayerMessagesView.ts +5 -5
  175. package/front_end/panels/media/TickingFlameChart.ts +24 -24
  176. package/front_end/panels/media/TickingFlameChartHelpers.ts +32 -32
  177. package/front_end/panels/network/NetworkItemView.ts +4 -4
  178. package/front_end/panels/network/NetworkLogViewColumns.ts +29 -29
  179. package/front_end/panels/network/NetworkPanel.ts +8 -5
  180. package/front_end/panels/network/ResourceWebSocketFrameView.ts +10 -10
  181. package/front_end/panels/profiler/HeapDetachedElementsView.ts +3 -3
  182. package/front_end/panels/profiler/HeapProfileView.ts +1 -1
  183. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +3 -4
  184. package/front_end/panels/profiler/ProfileHeader.ts +25 -25
  185. package/front_end/panels/profiler/ProfileLauncherView.ts +5 -6
  186. package/front_end/panels/recorder/components/ReplaySection.ts +3 -1
  187. package/front_end/panels/security/OriginTreeElement.ts +8 -8
  188. package/front_end/panels/security/SecurityPanel.ts +5 -5
  189. package/front_end/panels/settings/SettingsScreen.ts +18 -18
  190. package/front_end/panels/settings/components/SyncSection.ts +26 -8
  191. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +3 -0
  192. package/front_end/panels/sources/DebuggerPausedMessage.ts +8 -9
  193. package/front_end/panels/sources/NavigatorView.ts +43 -46
  194. package/front_end/panels/sources/SourcesPanel.ts +35 -35
  195. package/front_end/panels/sources/SourcesView.ts +13 -13
  196. package/front_end/panels/sources/TabbedEditorContainer.ts +19 -22
  197. package/front_end/panels/sources/UISourceCodeFrame.ts +4 -4
  198. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +34 -36
  199. package/front_end/panels/timeline/AnimationsTrackAppender.ts +3 -3
  200. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +8 -8
  201. package/front_end/panels/timeline/CountersGraph.ts +16 -16
  202. package/front_end/panels/timeline/EntriesFilter.ts +4 -3
  203. package/front_end/panels/timeline/EventsTimelineTreeView.ts +3 -3
  204. package/front_end/panels/timeline/GPUTrackAppender.ts +3 -3
  205. package/front_end/panels/timeline/Initiators.ts +10 -10
  206. package/front_end/panels/timeline/InteractionsTrackAppender.ts +5 -5
  207. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +7 -7
  208. package/front_end/panels/timeline/ModificationsManager.ts +8 -15
  209. package/front_end/panels/timeline/TargetForEvent.ts +2 -2
  210. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -1
  211. package/front_end/panels/timeline/ThreadAppender.ts +13 -13
  212. package/front_end/panels/timeline/TimelineDetailsView.ts +6 -14
  213. package/front_end/panels/timeline/TimelineEventOverview.ts +27 -26
  214. package/front_end/panels/timeline/TimelineFilters.ts +5 -5
  215. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +54 -53
  216. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +34 -34
  217. package/front_end/panels/timeline/TimelineFlameChartView.ts +18 -31
  218. package/front_end/panels/timeline/TimelineHistoryManager.ts +17 -18
  219. package/front_end/panels/timeline/TimelineMiniMap.ts +6 -6
  220. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +6 -6
  221. package/front_end/panels/timeline/TimelinePanel.ts +73 -68
  222. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +7 -5
  223. package/front_end/panels/timeline/TimelineTreeView.ts +10 -10
  224. package/front_end/panels/timeline/TimelineUIUtils.ts +47 -46
  225. package/front_end/panels/timeline/TimingsTrackAppender.ts +12 -12
  226. package/front_end/panels/timeline/TracingLayerTree.ts +43 -43
  227. package/front_end/panels/timeline/TrackConfigBanner.ts +6 -6
  228. package/front_end/panels/timeline/TrackConfiguration.ts +1 -1
  229. package/front_end/panels/timeline/components/DetailsView.ts +4 -4
  230. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +12 -21
  231. package/front_end/panels/timeline/components/LiveMetricsView.ts +2 -1
  232. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +5 -5
  233. package/front_end/panels/timeline/components/Sidebar.ts +4 -14
  234. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +13 -36
  235. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +21 -19
  236. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +1 -1
  237. package/front_end/panels/timeline/components/insights/Cache.ts +4 -0
  238. package/front_end/panels/timeline/components/insights/DOMSize.ts +5 -1
  239. package/front_end/panels/timeline/components/insights/Helpers.ts +19 -0
  240. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +1 -1
  241. package/front_end/panels/timeline/components/insights/Viewport.ts +4 -0
  242. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -1
  243. package/front_end/panels/timeline/utils/AICallTree.ts +11 -11
  244. package/front_end/panels/timeline/utils/AIContext.ts +17 -19
  245. package/front_end/panels/timeline/utils/EntityMapper.ts +6 -5
  246. package/front_end/panels/timeline/utils/EntryName.ts +2 -2
  247. package/front_end/panels/timeline/utils/EntryNodes.ts +5 -5
  248. package/front_end/panels/timeline/utils/EntryStyles.ts +4 -4
  249. package/front_end/panels/timeline/utils/FreshRecording.ts +3 -3
  250. package/front_end/panels/timeline/utils/Helpers.ts +0 -18
  251. package/front_end/panels/timeline/utils/InsightAIContext.ts +6 -6
  252. package/front_end/panels/timeline/utils/SourceMapsResolver.ts +7 -7
  253. package/front_end/panels/webauthn/WebauthnPane.ts +1 -0
  254. package/front_end/third_party/chromium/README.chromium +1 -1
  255. package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
  256. package/front_end/third_party/codemirror.next/chunk/angular.js.map +1 -1
  257. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  258. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  259. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
  260. package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
  261. package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
  262. package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
  263. package/front_end/third_party/codemirror.next/chunk/legacy.js +1 -1
  264. package/front_end/third_party/codemirror.next/chunk/legacy.js.map +1 -1
  265. package/front_end/third_party/codemirror.next/chunk/less.js +1 -1
  266. package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
  267. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
  268. package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
  269. package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
  270. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  271. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  272. package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
  273. package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
  274. package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
  275. package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
  276. package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
  277. package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
  278. package/front_end/third_party/codemirror.next/chunk/vue.js.map +1 -1
  279. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  280. package/front_end/third_party/codemirror.next/chunk/wast.js.map +1 -1
  281. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
  282. package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
  283. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  284. package/front_end/third_party/codemirror.next/package.json +1 -1
  285. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  286. package/front_end/third_party/json5/rebuild.sh +1 -1
  287. package/front_end/third_party/legacy-javascript/{update.sh → rebuild.sh} +1 -1
  288. package/front_end/third_party/lit/lib/decorators.d.ts +26 -9
  289. package/front_end/third_party/lit/lib/decorators.js +5 -5
  290. package/front_end/third_party/lit/lib/decorators.js.map +1 -1
  291. package/front_end/third_party/lit/lib/directive.js.map +1 -1
  292. package/front_end/third_party/lit/lib/directives.js +8 -13
  293. package/front_end/third_party/lit/lib/directives.js.map +1 -1
  294. package/front_end/third_party/lit/lib/lit.d.ts +26 -9
  295. package/front_end/third_party/lit/lib/lit.js +5 -5
  296. package/front_end/third_party/lit/lib/lit.js.map +1 -1
  297. package/front_end/third_party/lit/lib/static-html.js +2 -2
  298. package/front_end/third_party/lit/lib/static-html.js.map +1 -1
  299. package/front_end/third_party/lit/rebuild.sh +1 -1
  300. package/front_end/third_party/third-party-web/rebuild.sh +1 -1
  301. package/front_end/ui/components/dialogs/Dialog.ts +6 -7
  302. package/front_end/ui/legacy/ActionRegistration.ts +9 -9
  303. package/front_end/ui/legacy/DockController.ts +18 -18
  304. package/front_end/ui/legacy/FilterBar.ts +7 -7
  305. package/front_end/ui/legacy/Fragment.ts +4 -4
  306. package/front_end/ui/legacy/GlassPane.ts +12 -12
  307. package/front_end/ui/legacy/InspectorView.ts +5 -15
  308. package/front_end/ui/legacy/ListControl.ts +27 -27
  309. package/front_end/ui/legacy/ListWidget.ts +4 -4
  310. package/front_end/ui/legacy/PopoverHelper.ts +4 -4
  311. package/front_end/ui/legacy/ShortcutRegistry.ts +17 -17
  312. package/front_end/ui/legacy/TabbedPane.ts +74 -75
  313. package/front_end/ui/legacy/TextPrompt.ts +31 -31
  314. package/front_end/ui/legacy/Toolbar.ts +13 -14
  315. package/front_end/ui/legacy/ViewManager.ts +30 -31
  316. package/front_end/ui/legacy/Widget.ts +6 -6
  317. package/front_end/ui/legacy/XLink.ts +9 -9
  318. package/front_end/ui/legacy/ZoomManager.ts +9 -9
  319. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +27 -27
  320. package/front_end/ui/legacy/components/color_picker/ContrastInfo.ts +30 -32
  321. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +15 -15
  322. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +64 -64
  323. package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +2 -2
  324. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +10 -11
  325. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +12 -12
  326. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +3 -3
  327. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +14 -14
  328. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +8 -8
  329. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +5 -5
  330. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +4 -4
  331. package/front_end/ui/legacy/filter.css +1 -1
  332. package/front_end/ui/legacy/inspectorCommon.css +1 -1
  333. package/front_end/ui/legacy/softDropDownButton.css +1 -1
  334. package/front_end/ui/legacy/theme_support/ThemeSupport.ts +4 -4
  335. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -2
  336. package/package.json +1 -1
  337. package/front_end/models/ai_assistance/data_formatters/Types.ts +0 -9
@@ -369,7 +369,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
369
369
  );
370
370
  private readonly statusPaneContainer: HTMLElement;
371
371
  private readonly flameChart: TimelineFlameChartView;
372
- private readonly searchableViewInternal: UI.SearchableView.SearchableView;
372
+ readonly #searchableView: UI.SearchableView.SearchableView;
373
373
  private showSettingsPaneButton!: UI.Toolbar.ToolbarSettingToggle;
374
374
  private showSettingsPaneSetting!: Common.Settings.Setting<boolean>;
375
375
  private settingsPane?: HTMLElement;
@@ -425,7 +425,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
425
425
  'flamechart-selected-navigation', 'Classic - scroll to zoom', 'timeline.select-classic-navigation');
426
426
 
427
427
  #onMainEntryHovered: (event: Common.EventTarget.EventTargetEvent<number>) => void;
428
- #hiddenTracksInfoBarPerTrace = new WeakMap<Trace.Handlers.Types.ParsedTrace, UI.Infobar.Infobar|'DISMISSED'>();
428
+ #hiddenTracksInfoBarByParsedTrace = new WeakMap<Trace.TraceModel.ParsedTrace, UI.Infobar.Infobar|'DISMISSED'>();
429
429
 
430
430
  constructor(traceModel?: Trace.TraceModel.Model) {
431
431
  super('timeline');
@@ -536,14 +536,14 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
536
536
  this.select(selection);
537
537
  });
538
538
 
539
- this.searchableViewInternal = new UI.SearchableView.SearchableView(this.flameChart, null);
540
- this.searchableViewInternal.setMinimumSize(0, 100);
541
- this.searchableViewInternal.setMinimalSearchQuerySize(2); // At 1 it can introduce a bit of jank.
542
- this.searchableViewInternal.element.classList.add('searchable-view');
543
- this.searchableViewInternal.show(this.timelinePane.element);
544
- this.flameChart.show(this.searchableViewInternal.element);
545
- this.flameChart.setSearchableView(this.searchableViewInternal);
546
- this.searchableViewInternal.hideWidget();
539
+ this.#searchableView = new UI.SearchableView.SearchableView(this.flameChart, null);
540
+ this.#searchableView.setMinimumSize(0, 100);
541
+ this.#searchableView.setMinimalSearchQuerySize(2); // At 1 it can introduce a bit of jank.
542
+ this.#searchableView.element.classList.add('searchable-view');
543
+ this.#searchableView.show(this.timelinePane.element);
544
+ this.flameChart.show(this.#searchableView.element);
545
+ this.flameChart.setSearchableView(this.#searchableView);
546
+ this.#searchableView.hideWidget();
547
547
 
548
548
  this.#splitWidget.setMainWidget(this.timelinePane);
549
549
  this.#splitWidget.setSidebarWidget(this.#sideBar);
@@ -729,7 +729,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
729
729
  return Common.Settings.Settings.instance().createSetting('timeline-show-extension-data', true);
730
730
  }
731
731
  override searchableView(): UI.SearchableView.SearchableView|null {
732
- return this.searchableViewInternal;
732
+ return this.#searchableView;
733
733
  }
734
734
 
735
735
  override wasShown(): void {
@@ -882,7 +882,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
882
882
 
883
883
  // Whilst we don't reset this, we hide it, mainly so the user cannot
884
884
  // hit Ctrl/Cmd-F and try to search when it isn't visible.
885
- this.searchableViewInternal.hideWidget();
885
+ this.#searchableView.hideWidget();
886
886
  return;
887
887
  }
888
888
 
@@ -970,13 +970,13 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
970
970
  * within DevTools you are warned when using the method.
971
971
  * @deprecated
972
972
  **/
973
- getParsedTraceForLayoutTests(): Trace.Handlers.Types.ParsedTrace {
973
+ getParsedTraceForLayoutTests(): Trace.Handlers.Types.HandlerData {
974
974
  const traceIndex = this.#activeTraceIndex();
975
975
  if (traceIndex === null) {
976
976
  throw new Error('No trace index active.');
977
977
  }
978
- const data = this.#traceEngineModel.parsedTrace(traceIndex);
979
- if (data === null) {
978
+ const data = this.#traceEngineModel.parsedTrace(traceIndex)?.data;
979
+ if (!data) {
980
980
  throw new Error('No trace engine data found.');
981
981
  }
982
982
  return data;
@@ -993,11 +993,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
993
993
  if (traceIndex === null) {
994
994
  throw new Error('No trace index active.');
995
995
  }
996
- const data = this.#traceEngineModel.rawTraceEvents(traceIndex);
997
- if (data === null) {
996
+ const data = this.#traceEngineModel.parsedTrace(traceIndex);
997
+ if (!data) {
998
998
  throw new Error('No trace engine data found.');
999
999
  }
1000
- return data;
1000
+ return data.traceEvents;
1001
1001
  }
1002
1002
 
1003
1003
  #onEntryHovered(dataProvider: TimelineFlameChartDataProvider, event: Common.EventTarget.EventTargetEvent<number>):
@@ -1377,12 +1377,9 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1377
1377
  if (this.#viewMode.mode !== 'VIEWING_TRACE') {
1378
1378
  return;
1379
1379
  }
1380
- const trace = this.#traceEngineModel.parsedTrace(this.#viewMode.traceIndex);
1381
- if (!trace) {
1382
- return;
1383
- }
1384
- let traceEvents = this.#traceEngineModel.rawTraceEvents(this.#viewMode.traceIndex);
1385
- if (!traceEvents) {
1380
+
1381
+ const parsedTrace = this.#traceEngineModel.parsedTrace(this.#viewMode.traceIndex);
1382
+ if (!parsedTrace) {
1386
1383
  return;
1387
1384
  }
1388
1385
 
@@ -1394,9 +1391,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1394
1391
  scriptByIdMap.set(`${mapScript.isolate}.${mapScript.scriptId}`, mapScript);
1395
1392
  }
1396
1393
 
1397
- const metadata = this.#traceEngineModel.metadata(this.#viewMode.traceIndex) ?? {};
1398
-
1399
- traceEvents = traceEvents.map(event => {
1394
+ const traceEvents = parsedTrace.traceEvents.map(event => {
1400
1395
  if (Trace.Types.Events.isAnyScriptCatchupEvent(event) && event.name !== 'StubScriptCatchup') {
1401
1396
  const mappedScript = scriptByIdMap.get(`${event.args.data.isolate}.${event.args.data.scriptId}`);
1402
1397
 
@@ -1422,6 +1417,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1422
1417
  return event;
1423
1418
  });
1424
1419
 
1420
+ const metadata = parsedTrace.metadata;
1425
1421
  metadata.modifications = config.addModifications ? ModificationsManager.activeManager()?.toJSON() : undefined;
1426
1422
 
1427
1423
  // NOTE: we used to export the track configuration changes into the trace
@@ -1665,8 +1661,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1665
1661
  }
1666
1662
 
1667
1663
  const parsedTrace = this.#traceEngineModel.parsedTrace(this.#viewMode.traceIndex);
1668
- const isCpuProfile = this.#traceEngineModel.metadata(this.#viewMode.traceIndex)?.dataOrigin ===
1669
- Trace.Types.File.DataOrigin.CPU_PROFILE;
1664
+ const isCpuProfile = parsedTrace?.metadata.dataOrigin === Trace.Types.File.DataOrigin.CPU_PROFILE;
1670
1665
  if (!parsedTrace) {
1671
1666
  return;
1672
1667
  }
@@ -2071,7 +2066,6 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2071
2066
  }
2072
2067
  const {traceIndex} = this.#viewMode;
2073
2068
  const parsedTrace = this.#traceEngineModel.parsedTrace(traceIndex);
2074
- const traceMetadata = this.#traceEngineModel.metadata(traceIndex);
2075
2069
  const syntheticEventsManager = this.#traceEngineModel.syntheticTraceEventsManager(traceIndex);
2076
2070
 
2077
2071
  if (!parsedTrace || !syntheticEventsManager) {
@@ -2091,8 +2085,9 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2091
2085
 
2092
2086
  // Order is important: the bounds must be set before we initiate any UI
2093
2087
  // rendering.
2088
+ const data = parsedTrace.data;
2094
2089
  TraceBounds.TraceBounds.BoundsManager.instance().resetWithNewBounds(
2095
- parsedTrace.Meta.traceBounds,
2090
+ data.Meta.traceBounds,
2096
2091
  );
2097
2092
 
2098
2093
  // Set up the modifications manager for the newly active trace.
@@ -2105,19 +2100,16 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2105
2100
  }
2106
2101
  this.statusDialog?.updateProgressBar(i18nString(UIStrings.processed), 70);
2107
2102
 
2108
- const traceInsightsSets = this.#traceEngineModel.traceInsights(traceIndex);
2109
- this.flameChart.setInsights(traceInsightsSets, this.#eventToRelatedInsights);
2110
-
2111
- this.flameChart.setModel(parsedTrace, traceMetadata);
2103
+ this.flameChart.setModel(parsedTrace, this.#eventToRelatedInsights);
2112
2104
  this.flameChart.resizeToPreferredHeights();
2113
2105
  // Reset the visual selection as we've just swapped to a new trace.
2114
2106
  this.flameChart.setSelectionAndReveal(null);
2115
- this.#sideBar.setParsedTrace(parsedTrace, traceMetadata);
2107
+ this.#sideBar.setParsedTrace(parsedTrace);
2116
2108
 
2117
- this.searchableViewInternal.showWidget();
2109
+ this.#searchableView.showWidget();
2118
2110
 
2119
2111
  const exclusiveFilter = this.#exclusiveFilterPerTrace.get(traceIndex) ?? null;
2120
- this.#applyActiveFilters(parsedTrace.Meta.traceIsGeneric, exclusiveFilter);
2112
+ this.#applyActiveFilters(parsedTrace.data.Meta.traceIsGeneric, exclusiveFilter);
2121
2113
  (this.saveButton.element as TimelineComponents.ExportTraceOptions.ExportTraceOptions)
2122
2114
  .updateContentVisibility(currentManager ? currentManager.getAnnotations()?.length > 0 : false);
2123
2115
 
@@ -2130,7 +2122,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2130
2122
  this.flameChart.getMainDataProvider().compatibilityTracksAppenderInstance().threadAppenders().at(0);
2131
2123
  if (topMostMainThreadAppender) {
2132
2124
  const zoomedInBounds = Trace.Extras.MainThreadActivity.calculateWindow(
2133
- parsedTrace.Meta.traceBounds, topMostMainThreadAppender.getEntries());
2125
+ parsedTrace.data.Meta.traceBounds, topMostMainThreadAppender.getEntries());
2134
2126
 
2135
2127
  TraceBounds.TraceBounds.BoundsManager.instance().setTimelineVisibleWindow(zoomedInBounds);
2136
2128
  }
@@ -2146,11 +2138,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2146
2138
 
2147
2139
  // Set up line level profiling with CPU profiles, if we found any.
2148
2140
  PerfUI.LineLevelProfile.Performance.instance().reset();
2149
- if (parsedTrace?.Samples.profilesInProcess.size) {
2141
+ if (parsedTrace.data.Samples.profilesInProcess.size) {
2150
2142
  const primaryPageTarget = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
2151
2143
  // Gather up all CPU Profiles we found when parsing this trace.
2152
2144
  const cpuProfiles =
2153
- Array.from(parsedTrace.Samples.profilesInProcess).flatMap(([_processId, threadsInProcess]) => {
2145
+ Array.from(parsedTrace.data.Samples.profilesInProcess).flatMap(([_processId, threadsInProcess]) => {
2154
2146
  const profiles = Array.from(threadsInProcess.values()).map(profileData => profileData.parsedProfile);
2155
2147
  return profiles;
2156
2148
  });
@@ -2180,11 +2172,10 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2180
2172
  this.#maybeCreateHiddenTracksBanner(parsedTrace);
2181
2173
 
2182
2174
  this.#setActiveInsight(null);
2183
- this.#sideBar.setInsights(traceInsightsSets);
2184
2175
 
2185
2176
  this.#eventToRelatedInsights.clear();
2186
- if (traceInsightsSets) {
2187
- for (const [insightSetKey, insightSet] of traceInsightsSets) {
2177
+ if (parsedTrace.insights) {
2178
+ for (const [insightSetKey, insightSet] of parsedTrace.insights) {
2188
2179
  for (const model of Object.values(insightSet.model)) {
2189
2180
  let relatedEvents = model.relatedEvents;
2190
2181
  if (!relatedEvents) {
@@ -2295,16 +2286,16 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2295
2286
  * show a warning banner at the bottom. This can be dismissed by the user and
2296
2287
  * if that happens we do not want to bring it back again.
2297
2288
  */
2298
- #maybeCreateHiddenTracksBanner(trace: Trace.Handlers.Types.ParsedTrace): void {
2289
+ #maybeCreateHiddenTracksBanner(parsedTrace: Trace.TraceModel.ParsedTrace): void {
2299
2290
  const hasHiddenTracks = this.flameChart.hasHiddenTracks();
2300
2291
  if (!hasHiddenTracks) {
2301
2292
  return;
2302
2293
  }
2303
2294
 
2304
- const maybeOverlay = createHiddenTracksOverlay(trace, {
2295
+ const maybeOverlay = createHiddenTracksOverlay(parsedTrace, {
2305
2296
  onClose: () => {
2306
2297
  this.flameChart.overlays().removeOverlaysOfType('BOTTOM_INFO_BAR');
2307
- this.#hiddenTracksInfoBarPerTrace.set(trace, 'DISMISSED');
2298
+ this.#hiddenTracksInfoBarByParsedTrace.set(parsedTrace, 'DISMISSED');
2308
2299
  },
2309
2300
  onShowAllTracks: () => {
2310
2301
  this.flameChart.showAllMainChartTracks();
@@ -2542,9 +2533,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2542
2533
  parsedTraceIndex: traceIndex,
2543
2534
  type: 'TRACE_INDEX',
2544
2535
  },
2545
- filmStripForPreview: Trace.Extras.FilmStrip.fromParsedTrace(parsedTrace),
2536
+ filmStripForPreview: Trace.Extras.FilmStrip.fromHandlerData(parsedTrace.data),
2546
2537
  parsedTrace,
2547
- metadata,
2548
2538
  });
2549
2539
 
2550
2540
  this.dispatchEventToListeners(Events.RECORDING_COMPLETED, {
@@ -2593,7 +2583,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2593
2583
  * subsequent attempt will work).
2594
2584
  */
2595
2585
  async #retainSourceMapsForEnhancedTrace(
2596
- parsedTrace: Trace.Handlers.Types.ParsedTrace, metadata: Trace.Types.File.MetaData): Promise<void> {
2586
+ parsedTrace: Trace.TraceModel.ParsedTrace, metadata: Trace.Types.File.MetaData): Promise<void> {
2597
2587
  const handleScript = async(script: Trace.Handlers.ModelHandlers.Scripts.Script): Promise<void> => {
2598
2588
  if (script.sourceMapUrlElided) {
2599
2589
  if (metadata.sourceMaps?.find(m => m.url === script.url)) {
@@ -2638,7 +2628,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2638
2628
  metadata.sourceMaps = [];
2639
2629
 
2640
2630
  const promises = [];
2641
- for (const script of parsedTrace?.Scripts.scripts.values() ?? []) {
2631
+ for (const script of parsedTrace?.data.Scripts.scripts.values() ?? []) {
2642
2632
  promises.push(handleScript(script));
2643
2633
  }
2644
2634
  await Promise.all(promises);
@@ -2733,14 +2723,27 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2733
2723
  async #executeNewTrace(
2734
2724
  collectedEvents: Trace.Types.Events.Event[], isFreshRecording: boolean,
2735
2725
  metadata: Trace.Types.File.MetaData|null): Promise<void> {
2736
- await this.#traceEngineModel.parse(
2737
- collectedEvents,
2738
- {
2739
- metadata: metadata ?? undefined,
2740
- isFreshRecording,
2741
- resolveSourceMap: this.#createSourceMapResolver(isFreshRecording, metadata),
2726
+ const config: Trace.Types.Configuration.ParseOptions = {
2727
+ metadata: metadata ?? undefined,
2728
+ isFreshRecording,
2729
+ resolveSourceMap: this.#createSourceMapResolver(isFreshRecording, metadata),
2730
+ };
2731
+
2732
+ if (window.location.href.includes('devtools/bundled') || window.location.search.includes('debugFrontend')) {
2733
+ // Someone is debugging DevTools, enable the logger to give timings
2734
+ // when tracing the performance panel itself.
2735
+ const times: Record<string, number> = {};
2736
+ config.logger = {
2737
+ start(id) {
2738
+ times[id] = performance.now();
2742
2739
  },
2743
- );
2740
+ end(id) {
2741
+ performance.measure(id, {start: times[id]});
2742
+ },
2743
+ };
2744
+ }
2745
+
2746
+ await this.#traceEngineModel.parse(collectedEvents, config);
2744
2747
 
2745
2748
  // Store all source maps on the trace metadata.
2746
2749
  // If not fresh, we can't validate the maps are still accurate.
@@ -2820,10 +2823,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2820
2823
  if (!parsedTrace) {
2821
2824
  return null;
2822
2825
  }
2826
+
2823
2827
  const endTime = rangeForSelection(selection).max;
2824
2828
  const lastFrameInSelection = Trace.Handlers.ModelHandlers.Frames
2825
2829
  .framesWithinWindow(
2826
- parsedTrace.Frames.frames,
2830
+ parsedTrace.data.Frames.frames,
2827
2831
  endTime,
2828
2832
  endTime,
2829
2833
  )
@@ -2843,10 +2847,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2843
2847
  if (!parsedTrace) {
2844
2848
  return;
2845
2849
  }
2846
- let index = parsedTrace.Frames.frames.indexOf(currentFrame);
2850
+
2851
+ let index = parsedTrace.data.Frames.frames.indexOf(currentFrame);
2847
2852
  console.assert(index >= 0, 'Can\'t find current frame in the frame list');
2848
- index = Platform.NumberUtilities.clamp(index + offset, 0, parsedTrace.Frames.frames.length - 1);
2849
- const frame = parsedTrace.Frames.frames[index];
2853
+ index = Platform.NumberUtilities.clamp(index + offset, 0, parsedTrace.data.Frames.frames.length - 1);
2854
+ const frame = parsedTrace.data.Frames.frames[index];
2850
2855
  this.#revealTimeRange(
2851
2856
  Trace.Helpers.Timing.microToMilli(frame.startTime), Trace.Helpers.Timing.microToMilli(frame.endTime));
2852
2857
  this.select(selectionFromEvent(frame));
@@ -3006,16 +3011,16 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
3006
3011
  message: `Error running the trace: ${eventData.errorText}`,
3007
3012
  };
3008
3013
  }
3014
+
3009
3015
  const parsedTrace = panelInstance.model.parsedTrace(eventData.traceIndex);
3010
- const insights = panelInstance.model.traceInsights(eventData.traceIndex);
3011
- if (!parsedTrace || !insights || insights.size === 0) {
3016
+ if (!parsedTrace || !parsedTrace.insights || parsedTrace.insights.size === 0) {
3012
3017
  return {
3013
3018
  type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
3014
3019
  message: 'The trace was loaded successfully but no Insights were detected.',
3015
3020
  };
3016
3021
  }
3017
3022
 
3018
- const navigationId = Array.from(insights.keys()).find(k => k !== 'NO_NAVIGATION');
3023
+ const navigationId = Array.from(parsedTrace.insights.keys()).find(k => k !== 'NO_NAVIGATION');
3019
3024
  if (!navigationId) {
3020
3025
  return {
3021
3026
  type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
@@ -3023,7 +3028,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
3023
3028
  };
3024
3029
  }
3025
3030
 
3026
- const insightsForNav = insights.get(navigationId);
3031
+ const insightsForNav = parsedTrace.insights.get(navigationId);
3027
3032
  if (!insightsForNav) {
3028
3033
  return {
3029
3034
  type: AiAssistanceModel.ExternalRequestResponseType.ERROR,
@@ -3036,11 +3041,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
3036
3041
  // bottom of the response under a heading.
3037
3042
  let responseTextForPassedInsights = '';
3038
3043
 
3044
+ // TODO(b/442392194): use PerformanceTraceFormatter summary instead.
3039
3045
  for (const modelName in insightsForNav.model) {
3040
3046
  const model = modelName as keyof Trace.Insights.Types.InsightModelsType;
3041
3047
  const insight = insightsForNav.model[model];
3042
- const formatter = new AiAssistanceModel.PerformanceInsightFormatter(
3043
- AiAssistanceModel.PERF_AGENT_UNIT_FORMATTERS, parsedTrace, insight);
3048
+ const formatter = new AiAssistanceModel.PerformanceInsightFormatter(parsedTrace, insight);
3044
3049
  if (!formatter.insightIsSupported()) {
3045
3050
  // Not all Insights are integrated with "Ask AI" yet, let's avoid
3046
3051
  // filling up the response with those ones because there will be no
@@ -128,7 +128,7 @@ type View = (input: ViewInput, output: object, target: HTMLElement) => void;
128
128
 
129
129
  export class TimelineSelectorStatsView extends UI.Widget.VBox {
130
130
  #selectorLocations: Map<string, Protocol.CSS.SourceRange[]>;
131
- #parsedTrace: Trace.Handlers.Types.ParsedTrace|null = null;
131
+ #parsedTrace: Trace.TraceModel.ParsedTrace|null = null;
132
132
  /**
133
133
  * We store the last event (or array of events) that we renderered. We do
134
134
  * this because as the user zooms around the panel this view is updated,
@@ -141,7 +141,7 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
141
141
  #view: View;
142
142
  #timings: SelectorTiming[] = [];
143
143
 
144
- constructor(parsedTrace: Trace.Handlers.Types.ParsedTrace|null, view: View = (input, _, target) => {
144
+ constructor(parsedTrace: Trace.TraceModel.ParsedTrace|null, view: View = (input, _, target) => {
145
145
  render(
146
146
  html`
147
147
  <devtools-data-grid striped name=${i18nString(UIStrings.selectorStats)}
@@ -297,7 +297,7 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
297
297
  return;
298
298
  }
299
299
 
300
- const invalidatedNodes = this.#parsedTrace.SelectorStats.invalidatedNodeList;
300
+ const invalidatedNodes = this.#parsedTrace.data.SelectorStats.invalidatedNodeList;
301
301
  const invalidatedNodeMap = new Map<string, {subtree: boolean, nodeList: Array<SDK.DOMModel.DOMNode|null>}>();
302
302
 
303
303
  const frameIdBackendNodeIdsMap = new Map<String, Set<Protocol.DOM.BackendNodeId>>();
@@ -334,7 +334,8 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
334
334
  }
335
335
 
336
336
  for (const event of events) {
337
- const selectorStats = event ? this.#parsedTrace.SelectorStats.dataForUpdateLayoutEvent.get(event) : undefined;
337
+ const selectorStats =
338
+ event ? this.#parsedTrace.data.SelectorStats.dataForUpdateLayoutEvent.get(event) : undefined;
338
339
  if (!selectorStats) {
339
340
  continue;
340
341
  }
@@ -399,7 +400,8 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
399
400
  await this.updateInvalidationCount(events);
400
401
  for (let i = 0; i < events.length; i++) {
401
402
  const event = events[i];
402
- const selectorStats = event ? this.#parsedTrace.SelectorStats.dataForUpdateLayoutEvent.get(event) : undefined;
403
+ const selectorStats =
404
+ event ? this.#parsedTrace.data.SelectorStats.dataForUpdateLayoutEvent.get(event) : undefined;
403
405
  if (!selectorStats) {
404
406
  continue;
405
407
  }
@@ -192,7 +192,7 @@ export class TimelineTreeView extends
192
192
  private caseSensitiveButton: UI.Toolbar.ToolbarToggle|undefined;
193
193
  private regexButton: UI.Toolbar.ToolbarToggle|undefined;
194
194
  private matchWholeWord: UI.Toolbar.ToolbarToggle|undefined;
195
- #parsedTrace: Trace.Handlers.Types.ParsedTrace|null = null;
195
+ #parsedTrace: Trace.TraceModel.ParsedTrace|null = null;
196
196
  #entityMapper: Utils.EntityMapper.EntityMapper|null = null;
197
197
  #lastHighlightedEvent: HTMLElement|null = null;
198
198
  eventToTreeNode = new WeakMap<Trace.Types.Events.Event, Trace.Extras.TraceTree.Node>();
@@ -217,7 +217,7 @@ export class TimelineTreeView extends
217
217
  if (!this.#parsedTrace) {
218
218
  return name;
219
219
  }
220
- return name + ':@' + Trace.Handlers.Helpers.getNonResolvedURL(event, this.#parsedTrace);
220
+ return name + ':@' + Trace.Handlers.Helpers.getNonResolvedURL(event, this.#parsedTrace.data);
221
221
  }
222
222
 
223
223
  setSearchableView(searchableView: UI.SearchableView.SearchableView): void {
@@ -226,7 +226,7 @@ export class TimelineTreeView extends
226
226
 
227
227
  setModelWithEvents(
228
228
  selectedEvents: Trace.Types.Events.Event[]|null,
229
- parsedTrace: Trace.Handlers.Types.ParsedTrace|null = null,
229
+ parsedTrace: Trace.TraceModel.ParsedTrace|null = null,
230
230
  entityMappings: Utils.EntityMapper.EntityMapper|null = null,
231
231
  ): void {
232
232
  this.#parsedTrace = parsedTrace;
@@ -238,7 +238,7 @@ export class TimelineTreeView extends
238
238
  entityMapper(): Utils.EntityMapper.EntityMapper|null {
239
239
  return this.#entityMapper;
240
240
  }
241
- parsedTrace(): Trace.Handlers.Types.ParsedTrace|null {
241
+ parsedTrace(): Trace.TraceModel.ParsedTrace|null {
242
242
  return this.#parsedTrace;
243
243
  }
244
244
 
@@ -677,7 +677,7 @@ export class TimelineTreeView extends
677
677
  }
678
678
  const searchRegex = searchConfig.toSearchRegex();
679
679
  this.searchResults = this.root.searchTree(
680
- event => TimelineUIUtils.testContentMatching(event, searchRegex.regex, this.#parsedTrace || undefined));
680
+ event => TimelineUIUtils.testContentMatching(event, searchRegex.regex, this.#parsedTrace?.data || undefined));
681
681
  this.searchableView.updateSearchMatchesCount(this.searchResults.length);
682
682
  }
683
683
 
@@ -829,7 +829,7 @@ export class GridNode extends DataGrid.SortableDataGrid.SortableDataGridNode<Gri
829
829
  }
830
830
  const timings = event && Trace.Helpers.Timing.eventTimingsMilliSeconds(event);
831
831
  const startTime = timings?.startTime ?? 0;
832
- value = startTime - Trace.Helpers.Timing.microToMilli(parsedTrace.Meta.traceBounds.min);
832
+ value = startTime - Trace.Helpers.Timing.microToMilli(parsedTrace.data.Meta.traceBounds.min);
833
833
  } break;
834
834
  case 'self':
835
835
  value = this.profileNode.selfTime;
@@ -1017,7 +1017,7 @@ export class AggregatedTimelineTreeView extends TimelineTreeView {
1017
1017
  break;
1018
1018
 
1019
1019
  case AggregatedTimelineTreeView.GroupBy.Frame: {
1020
- const frame = id ? this.parsedTrace()?.PageFrames.frames.get(id) : undefined;
1020
+ const frame = id ? this.parsedTrace()?.data.PageFrames.frames.get(id) : undefined;
1021
1021
  const frameName = frame ? TimelineUIUtils.displayNameForFrame(frame) : i18nString(UIStrings.page);
1022
1022
  return {name: frameName, color, icon: undefined};
1023
1023
  }
@@ -1100,12 +1100,12 @@ export class AggregatedTimelineTreeView extends TimelineTreeView {
1100
1100
  case GroupBy.URL:
1101
1101
  return (event: Trace.Types.Events.Event) => {
1102
1102
  const parsedTrace = this.parsedTrace();
1103
- return parsedTrace ? Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace) ?? '' : '';
1103
+ return parsedTrace ? Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace.data) ?? '' : '';
1104
1104
  };
1105
1105
  case GroupBy.Frame:
1106
1106
  return (event: Trace.Types.Events.Event) => {
1107
1107
  const frameId = Trace.Helpers.Trace.frameIDForEvent(event);
1108
- return frameId || this.parsedTrace()?.Meta.mainFrameId || '';
1108
+ return frameId || this.parsedTrace()?.data.Meta.mainFrameId || '';
1109
1109
  };
1110
1110
  default:
1111
1111
  console.assert(false, `Unexpected aggregation setting: ${groupBy}`);
@@ -1121,7 +1121,7 @@ export class AggregatedTimelineTreeView extends TimelineTreeView {
1121
1121
  if (!parsedTrace) {
1122
1122
  return '';
1123
1123
  }
1124
- const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace);
1124
+ const url = Trace.Handlers.Helpers.getNonResolvedURL(event, parsedTrace.data);
1125
1125
  if (!url) {
1126
1126
  // We could have receiveDataEvents (that don't have a url), but that have been
1127
1127
  // attributed to an entity, let's check for these. This is used for ThirdParty grouping.