chrome-devtools-frontend 1.0.1512349 → 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 (324) hide show
  1. package/docs/cookbook/release_management.md +15 -13
  2. package/docs/get_the_code.md +114 -35
  3. package/front_end/core/common/Color.ts +40 -44
  4. package/front_end/core/common/Console.ts +4 -4
  5. package/front_end/core/common/ParsedURL.ts +14 -14
  6. package/front_end/core/common/ResourceType.ts +20 -20
  7. package/front_end/core/common/SegmentedRange.ts +13 -14
  8. package/front_end/core/common/Settings.ts +4 -4
  9. package/front_end/core/common/StringOutputStream.ts +4 -4
  10. package/front_end/core/host/GdpClient.ts +38 -0
  11. package/front_end/core/host/InspectorFrontendHost.ts +4 -1
  12. package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -0
  13. package/front_end/core/host/ResourceLoader.ts +2 -2
  14. package/front_end/core/host/UserMetrics.ts +0 -2
  15. package/front_end/core/protocol_client/InspectorBackend.ts +9 -9
  16. package/front_end/core/root/Runtime.ts +5 -2
  17. package/front_end/core/sdk/AccessibilityModel.ts +48 -48
  18. package/front_end/core/sdk/AnimationModel.ts +78 -79
  19. package/front_end/core/sdk/CPUProfilerModel.ts +5 -5
  20. package/front_end/core/sdk/CPUThrottlingManager.ts +17 -17
  21. package/front_end/core/sdk/CSSMatchedStyles.ts +44 -44
  22. package/front_end/core/sdk/CSSMedia.ts +22 -22
  23. package/front_end/core/sdk/CSSModel.ts +4 -4
  24. package/front_end/core/sdk/CSSProperty.ts +9 -9
  25. package/front_end/core/sdk/CSSPropertyParser.ts +1 -2
  26. package/front_end/core/sdk/CSSRule.ts +3 -3
  27. package/front_end/core/sdk/CSSStyleDeclaration.ts +27 -28
  28. package/front_end/core/sdk/CSSStyleSheetHeader.ts +13 -13
  29. package/front_end/core/sdk/CategorizedBreakpoint.ts +4 -4
  30. package/front_end/core/sdk/ChildTargetManager.ts +6 -6
  31. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +4 -4
  32. package/front_end/core/sdk/ConsoleModel.ts +24 -24
  33. package/front_end/core/sdk/Cookie.ts +16 -16
  34. package/front_end/core/sdk/CookieParser.ts +6 -6
  35. package/front_end/core/sdk/DOMDebuggerModel.ts +88 -89
  36. package/front_end/core/sdk/DOMModel.ts +113 -113
  37. package/front_end/core/sdk/DebuggerModel.ts +102 -103
  38. package/front_end/core/sdk/EmulationModel.ts +6 -6
  39. package/front_end/core/sdk/EventBreakpointsModel.ts +5 -5
  40. package/front_end/core/sdk/HeapProfilerModel.ts +5 -5
  41. package/front_end/core/sdk/IsolateManager.ts +26 -26
  42. package/front_end/core/sdk/LayerTreeBase.ts +29 -30
  43. package/front_end/core/sdk/OverlayModel.ts +6 -6
  44. package/front_end/core/sdk/Resource.ts +43 -43
  45. package/front_end/core/sdk/ResourceTreeModel.ts +58 -61
  46. package/front_end/core/sdk/RuntimeModel.ts +12 -13
  47. package/front_end/core/sdk/SDKModel.ts +3 -3
  48. package/front_end/core/sdk/Script.ts +17 -17
  49. package/front_end/core/sdk/SecurityOriginManager.ts +14 -14
  50. package/front_end/core/sdk/ServerTiming.ts +2 -2
  51. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +15 -15
  52. package/front_end/core/sdk/ServiceWorkerManager.ts +19 -24
  53. package/front_end/core/sdk/SourceMap.ts +10 -10
  54. package/front_end/core/sdk/StorageKeyManager.ts +12 -12
  55. package/front_end/core/sdk/Target.ts +33 -34
  56. package/front_end/core/sdk/TargetManager.ts +20 -20
  57. package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +8 -8
  58. package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +7 -7
  59. package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +7 -7
  60. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +24 -24
  61. package/front_end/entrypoints/main/GlobalAiButton.ts +3 -3
  62. package/front_end/entrypoints/main/MainImpl.ts +16 -14
  63. package/front_end/entrypoints/main/main-meta.ts +1 -2
  64. package/front_end/generated/InspectorBackendCommands.js +3 -2
  65. package/front_end/generated/SupportedCSSProperties.js +20 -0
  66. package/front_end/generated/protocol-mapping.d.ts +4 -0
  67. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  68. package/front_end/generated/protocol.ts +20 -0
  69. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +15 -16
  70. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +127 -0
  71. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +149 -26
  72. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +6 -0
  73. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +9 -10
  74. package/front_end/models/badges/AiExplorerBadge.ts +21 -0
  75. package/front_end/models/badges/Badge.ts +3 -5
  76. package/front_end/models/badges/CodeWhispererBadge.ts +21 -0
  77. package/front_end/models/badges/DOMDetectiveBadge.ts +4 -3
  78. package/front_end/models/badges/SpeedsterBadge.ts +6 -4
  79. package/front_end/models/badges/StarterBadge.ts +4 -3
  80. package/front_end/models/badges/UserBadges.ts +29 -3
  81. package/front_end/models/bindings/CSSWorkspaceBinding.ts +6 -6
  82. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +18 -18
  83. package/front_end/models/bindings/FileUtils.ts +15 -15
  84. package/front_end/models/bindings/ResourceScriptMapping.ts +14 -14
  85. package/front_end/models/elements/ElementUpdateRecord.ts +11 -11
  86. package/front_end/models/emulation/DeviceModeModel.ts +123 -131
  87. package/front_end/models/emulation/EmulatedDevices.ts +22 -22
  88. package/front_end/models/extensions/ExtensionPanel.ts +24 -24
  89. package/front_end/models/extensions/ExtensionServer.ts +4 -4
  90. package/front_end/models/javascript_metadata/NativeFunctions.js +14 -2
  91. package/front_end/models/persistence/IsolatedFileSystem.ts +18 -19
  92. package/front_end/models/persistence/IsolatedFileSystemManager.ts +13 -13
  93. package/front_end/models/trace/EventsSerializer.ts +5 -5
  94. package/front_end/models/trace/LanternComputationData.ts +10 -10
  95. package/front_end/models/trace/ModelImpl.ts +32 -41
  96. package/front_end/models/trace/Processor.ts +28 -30
  97. package/front_end/models/trace/extras/FilmStrip.ts +6 -6
  98. package/front_end/models/trace/extras/StackTraceForEvent.ts +22 -25
  99. package/front_end/models/trace/extras/ThirdParties.ts +16 -17
  100. package/front_end/models/trace/extras/TraceFilter.ts +1 -1
  101. package/front_end/models/trace/handlers/Threads.ts +10 -10
  102. package/front_end/models/trace/handlers/helpers.ts +9 -9
  103. package/front_end/models/trace/handlers/types.ts +3 -3
  104. package/front_end/models/trace/insights/CLSCulprits.ts +12 -14
  105. package/front_end/models/trace/insights/Cache.ts +8 -4
  106. package/front_end/models/trace/insights/DOMSize.ts +8 -5
  107. package/front_end/models/trace/insights/DocumentLatency.ts +2 -2
  108. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -3
  109. package/front_end/models/trace/insights/FontDisplay.ts +3 -4
  110. package/front_end/models/trace/insights/ForcedReflow.ts +3 -3
  111. package/front_end/models/trace/insights/INPBreakdown.ts +2 -2
  112. package/front_end/models/trace/insights/ImageDelivery.ts +11 -11
  113. package/front_end/models/trace/insights/LCPBreakdown.ts +4 -4
  114. package/front_end/models/trace/insights/LCPDiscovery.ts +4 -4
  115. package/front_end/models/trace/insights/LegacyJavaScript.ts +2 -2
  116. package/front_end/models/trace/insights/ModernHTTP.ts +4 -5
  117. package/front_end/models/trace/insights/NetworkDependencyTree.ts +12 -12
  118. package/front_end/models/trace/insights/RenderBlocking.ts +9 -10
  119. package/front_end/models/trace/insights/SlowCSSSelector.ts +2 -2
  120. package/front_end/models/trace/insights/ThirdParties.ts +4 -5
  121. package/front_end/models/trace/insights/Viewport.ts +8 -5
  122. package/front_end/models/trace/insights/types.ts +1 -0
  123. package/front_end/models/trace/lantern/testing/MetricTestUtils.ts +10 -10
  124. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +52 -52
  125. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +8 -8
  126. package/front_end/panels/animation/AnimationTimeline.ts +5 -5
  127. package/front_end/panels/animation/AnimationUI.ts +22 -23
  128. package/front_end/panels/application/ApplicationPanelSidebar.ts +12 -12
  129. package/front_end/panels/application/DOMStorageModel.ts +23 -23
  130. package/front_end/panels/application/ExtensionStorageModel.ts +31 -31
  131. package/front_end/panels/application/IndexedDBModel.ts +1 -0
  132. package/front_end/panels/application/PreloadingTreeElement.ts +8 -8
  133. package/front_end/panels/application/ServiceWorkersView.ts +0 -53
  134. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -2
  135. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
  136. package/front_end/panels/common/BadgeNotification.ts +24 -4
  137. package/front_end/panels/common/GdpSignUpDialog.ts +5 -0
  138. package/front_end/panels/common/badgeNotification.css +26 -9
  139. package/front_end/panels/console/ConsoleContextSelector.ts +9 -9
  140. package/front_end/panels/console/ConsolePrompt.ts +8 -5
  141. package/front_end/panels/console/ConsoleView.ts +13 -13
  142. package/front_end/panels/console/ConsoleViewport.ts +29 -29
  143. package/front_end/panels/coverage/CoverageModel.ts +22 -22
  144. package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
  145. package/front_end/panels/elements/ComputedStyleModel.ts +17 -18
  146. package/front_end/panels/elements/DOMPath.ts +2 -2
  147. package/front_end/panels/elements/ElementsPanel.ts +13 -13
  148. package/front_end/panels/elements/ElementsTreeElement.ts +18 -18
  149. package/front_end/panels/elements/ElementsTreeOutline.ts +41 -48
  150. package/front_end/panels/elements/ShortcutTreeElement.ts +4 -4
  151. package/front_end/panels/elements/StylePropertiesSection.ts +4 -4
  152. package/front_end/panels/elements/StylePropertyTreeElement.ts +49 -50
  153. package/front_end/panels/elements/StylesSidebarPane.ts +19 -19
  154. package/front_end/panels/emulation/DeviceModeToolbar.ts +7 -7
  155. package/front_end/panels/emulation/DeviceModeView.ts +6 -6
  156. package/front_end/panels/emulation/MediaQueryInspector.ts +18 -18
  157. package/front_end/panels/event_listeners/EventListenersView.ts +13 -14
  158. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +3 -3
  159. package/front_end/panels/layer_viewer/LayerViewHost.ts +13 -13
  160. package/front_end/panels/layer_viewer/PaintProfilerView.ts +9 -10
  161. package/front_end/panels/layer_viewer/TransformController.ts +34 -36
  162. package/front_end/panels/layers/LayerTreeModel.ts +41 -40
  163. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +13 -13
  164. package/front_end/panels/lighthouse/LighthouseStartView.ts +7 -7
  165. package/front_end/panels/media/PlayerMessagesView.ts +5 -5
  166. package/front_end/panels/media/TickingFlameChart.ts +24 -24
  167. package/front_end/panels/media/TickingFlameChartHelpers.ts +32 -32
  168. package/front_end/panels/network/NetworkItemView.ts +4 -4
  169. package/front_end/panels/network/NetworkLogViewColumns.ts +29 -29
  170. package/front_end/panels/network/NetworkPanel.ts +8 -5
  171. package/front_end/panels/network/ResourceWebSocketFrameView.ts +10 -10
  172. package/front_end/panels/profiler/HeapDetachedElementsView.ts +3 -3
  173. package/front_end/panels/profiler/HeapProfileView.ts +1 -1
  174. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +3 -4
  175. package/front_end/panels/profiler/ProfileHeader.ts +25 -25
  176. package/front_end/panels/profiler/ProfileLauncherView.ts +5 -6
  177. package/front_end/panels/recorder/components/ReplaySection.ts +3 -1
  178. package/front_end/panels/security/OriginTreeElement.ts +8 -8
  179. package/front_end/panels/security/SecurityPanel.ts +5 -5
  180. package/front_end/panels/settings/SettingsScreen.ts +18 -12
  181. package/front_end/panels/settings/components/SyncSection.ts +20 -6
  182. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +3 -0
  183. package/front_end/panels/sources/DebuggerPausedMessage.ts +8 -9
  184. package/front_end/panels/sources/NavigatorView.ts +43 -46
  185. package/front_end/panels/sources/SourcesPanel.ts +35 -35
  186. package/front_end/panels/sources/SourcesView.ts +13 -13
  187. package/front_end/panels/sources/TabbedEditorContainer.ts +19 -22
  188. package/front_end/panels/sources/UISourceCodeFrame.ts +4 -4
  189. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +34 -36
  190. package/front_end/panels/timeline/AnimationsTrackAppender.ts +3 -3
  191. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +8 -8
  192. package/front_end/panels/timeline/CountersGraph.ts +16 -16
  193. package/front_end/panels/timeline/EntriesFilter.ts +4 -3
  194. package/front_end/panels/timeline/EventsTimelineTreeView.ts +3 -3
  195. package/front_end/panels/timeline/GPUTrackAppender.ts +3 -3
  196. package/front_end/panels/timeline/Initiators.ts +10 -10
  197. package/front_end/panels/timeline/InteractionsTrackAppender.ts +5 -5
  198. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +7 -7
  199. package/front_end/panels/timeline/ModificationsManager.ts +8 -15
  200. package/front_end/panels/timeline/TargetForEvent.ts +2 -2
  201. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -1
  202. package/front_end/panels/timeline/ThreadAppender.ts +13 -13
  203. package/front_end/panels/timeline/TimelineDetailsView.ts +6 -14
  204. package/front_end/panels/timeline/TimelineEventOverview.ts +27 -26
  205. package/front_end/panels/timeline/TimelineFilters.ts +5 -5
  206. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +54 -53
  207. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +34 -34
  208. package/front_end/panels/timeline/TimelineFlameChartView.ts +18 -31
  209. package/front_end/panels/timeline/TimelineHistoryManager.ts +17 -18
  210. package/front_end/panels/timeline/TimelineMiniMap.ts +6 -6
  211. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +6 -6
  212. package/front_end/panels/timeline/TimelinePanel.ts +52 -59
  213. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +7 -5
  214. package/front_end/panels/timeline/TimelineTreeView.ts +10 -10
  215. package/front_end/panels/timeline/TimelineUIUtils.ts +43 -43
  216. package/front_end/panels/timeline/TimingsTrackAppender.ts +12 -12
  217. package/front_end/panels/timeline/TracingLayerTree.ts +43 -43
  218. package/front_end/panels/timeline/TrackConfigBanner.ts +6 -6
  219. package/front_end/panels/timeline/TrackConfiguration.ts +1 -1
  220. package/front_end/panels/timeline/components/DetailsView.ts +4 -4
  221. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +12 -21
  222. package/front_end/panels/timeline/components/LiveMetricsView.ts +2 -1
  223. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +5 -5
  224. package/front_end/panels/timeline/components/Sidebar.ts +4 -14
  225. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +13 -36
  226. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +21 -19
  227. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +1 -1
  228. package/front_end/panels/timeline/components/insights/Cache.ts +4 -0
  229. package/front_end/panels/timeline/components/insights/DOMSize.ts +5 -1
  230. package/front_end/panels/timeline/components/insights/Helpers.ts +19 -0
  231. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +1 -1
  232. package/front_end/panels/timeline/components/insights/Viewport.ts +4 -0
  233. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -1
  234. package/front_end/panels/timeline/utils/AICallTree.ts +11 -11
  235. package/front_end/panels/timeline/utils/AIContext.ts +17 -19
  236. package/front_end/panels/timeline/utils/EntityMapper.ts +6 -5
  237. package/front_end/panels/timeline/utils/EntryName.ts +2 -2
  238. package/front_end/panels/timeline/utils/EntryNodes.ts +5 -5
  239. package/front_end/panels/timeline/utils/EntryStyles.ts +4 -4
  240. package/front_end/panels/timeline/utils/FreshRecording.ts +3 -3
  241. package/front_end/panels/timeline/utils/Helpers.ts +0 -18
  242. package/front_end/panels/timeline/utils/InsightAIContext.ts +6 -6
  243. package/front_end/panels/timeline/utils/SourceMapsResolver.ts +7 -7
  244. package/front_end/panels/webauthn/WebauthnPane.ts +1 -0
  245. package/front_end/third_party/chromium/README.chromium +1 -1
  246. package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
  247. package/front_end/third_party/codemirror.next/chunk/angular.js.map +1 -1
  248. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  249. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  250. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
  251. package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
  252. package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
  253. package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
  254. package/front_end/third_party/codemirror.next/chunk/legacy.js +1 -1
  255. package/front_end/third_party/codemirror.next/chunk/legacy.js.map +1 -1
  256. package/front_end/third_party/codemirror.next/chunk/less.js +1 -1
  257. package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
  258. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
  259. package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
  260. package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
  261. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  262. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  263. package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
  264. package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
  265. package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
  266. package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
  267. package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
  268. package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
  269. package/front_end/third_party/codemirror.next/chunk/vue.js.map +1 -1
  270. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  271. package/front_end/third_party/codemirror.next/chunk/wast.js.map +1 -1
  272. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
  273. package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
  274. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  275. package/front_end/third_party/codemirror.next/package.json +1 -1
  276. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  277. package/front_end/third_party/json5/rebuild.sh +1 -1
  278. package/front_end/third_party/legacy-javascript/{update.sh → rebuild.sh} +1 -1
  279. package/front_end/third_party/lit/lib/decorators.d.ts +26 -9
  280. package/front_end/third_party/lit/lib/decorators.js +5 -5
  281. package/front_end/third_party/lit/lib/decorators.js.map +1 -1
  282. package/front_end/third_party/lit/lib/directive.js.map +1 -1
  283. package/front_end/third_party/lit/lib/directives.js +8 -13
  284. package/front_end/third_party/lit/lib/directives.js.map +1 -1
  285. package/front_end/third_party/lit/lib/lit.d.ts +26 -9
  286. package/front_end/third_party/lit/lib/lit.js +5 -5
  287. package/front_end/third_party/lit/lib/lit.js.map +1 -1
  288. package/front_end/third_party/lit/lib/static-html.js +2 -2
  289. package/front_end/third_party/lit/lib/static-html.js.map +1 -1
  290. package/front_end/third_party/lit/rebuild.sh +1 -1
  291. package/front_end/third_party/third-party-web/rebuild.sh +1 -1
  292. package/front_end/ui/components/dialogs/Dialog.ts +6 -7
  293. package/front_end/ui/legacy/ActionRegistration.ts +9 -9
  294. package/front_end/ui/legacy/DockController.ts +18 -18
  295. package/front_end/ui/legacy/FilterBar.ts +7 -7
  296. package/front_end/ui/legacy/Fragment.ts +4 -4
  297. package/front_end/ui/legacy/GlassPane.ts +12 -12
  298. package/front_end/ui/legacy/InspectorView.ts +5 -15
  299. package/front_end/ui/legacy/ListControl.ts +27 -27
  300. package/front_end/ui/legacy/ListWidget.ts +4 -4
  301. package/front_end/ui/legacy/PopoverHelper.ts +4 -4
  302. package/front_end/ui/legacy/ShortcutRegistry.ts +17 -17
  303. package/front_end/ui/legacy/TabbedPane.ts +74 -75
  304. package/front_end/ui/legacy/TextPrompt.ts +31 -31
  305. package/front_end/ui/legacy/Toolbar.ts +13 -14
  306. package/front_end/ui/legacy/ViewManager.ts +30 -31
  307. package/front_end/ui/legacy/Widget.ts +6 -6
  308. package/front_end/ui/legacy/XLink.ts +9 -9
  309. package/front_end/ui/legacy/ZoomManager.ts +9 -9
  310. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +27 -27
  311. package/front_end/ui/legacy/components/color_picker/ContrastInfo.ts +30 -32
  312. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +15 -15
  313. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +64 -64
  314. package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +2 -2
  315. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +10 -11
  316. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +12 -12
  317. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +3 -3
  318. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +14 -14
  319. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +8 -8
  320. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +5 -5
  321. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +4 -4
  322. package/front_end/ui/legacy/theme_support/ThemeSupport.ts +4 -4
  323. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -2
  324. package/package.json +1 -1
@@ -11,11 +11,10 @@ import * as Buttons from '../../../ui/components/buttons/buttons.js';
11
11
  import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
12
12
  import * as Lit from '../../../ui/lit/lit.js';
13
13
  import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
14
- import {md} from '../utils/Helpers.js';
15
14
  import * as Utils from '../utils/utils.js';
16
15
 
17
16
  import type {BaseInsightComponent} from './insights/BaseInsightComponent.js';
18
- import {shouldRenderForCategory} from './insights/Helpers.js';
17
+ import {md, shouldRenderForCategory} from './insights/Helpers.js';
19
18
  import * as Insights from './insights/insights.js';
20
19
  import type {ActiveInsight} from './Sidebar.js';
21
20
  import sidebarSingleInsightSetStyles from './sidebarSingleInsightSet.css.js';
@@ -74,12 +73,10 @@ const str_ = i18n.i18n.registerUIStrings('panels/timeline/components/SidebarSing
74
73
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
75
74
 
76
75
  export interface SidebarSingleInsightSetData {
77
- insights: Trace.Insights.Types.TraceInsightSets|null;
78
76
  insightSetKey: Trace.Types.Events.NavigationId|null;
79
77
  activeCategory: Trace.Insights.Types.InsightCategory;
80
78
  activeInsight: ActiveInsight|null;
81
- parsedTrace: Trace.Handlers.Types.ParsedTrace|null;
82
- traceMetadata: Trace.Types.File.MetaData|null;
79
+ parsedTrace: Trace.TraceModel.ParsedTrace|null;
83
80
  }
84
81
 
85
82
  type InsightNameToComponentMapping =
@@ -122,12 +119,10 @@ export class SidebarSingleInsightSet extends HTMLElement {
122
119
  #activeInsightElement: BaseInsightComponent<Trace.Insights.Types.InsightModel>|null = null;
123
120
 
124
121
  #data: SidebarSingleInsightSetData = {
125
- insights: null,
126
122
  insightSetKey: null,
127
123
  activeCategory: Trace.Insights.Types.InsightCategory.ALL,
128
124
  activeInsight: null,
129
125
  parsedTrace: null,
130
- traceMetadata: null,
131
126
  };
132
127
 
133
128
  #dismissedFieldMismatchNotice = false;
@@ -225,7 +220,11 @@ export class SidebarSingleInsightSet extends HTMLElement {
225
220
 
226
221
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
227
222
  #getLocalMetrics(insightSetKey: string) {
228
- const insightSet = this.#data.insights?.get(insightSetKey);
223
+ if (!this.#data.parsedTrace) {
224
+ return {};
225
+ }
226
+
227
+ const insightSet = this.#data.parsedTrace.insights?.get(insightSetKey);
229
228
  if (!insightSet) {
230
229
  return {};
231
230
  }
@@ -238,13 +237,17 @@ export class SidebarSingleInsightSet extends HTMLElement {
238
237
  }
239
238
 
240
239
  #getFieldMetrics(insightSetKey: string): Trace.Insights.Common.CrUXFieldMetricResults|null {
241
- const insightSet = this.#data.insights?.get(insightSetKey);
240
+ if (!this.#data.parsedTrace) {
241
+ return null;
242
+ }
243
+
244
+ const insightSet = this.#data.parsedTrace.insights?.get(insightSetKey);
242
245
  if (!insightSet) {
243
246
  return null;
244
247
  }
245
248
 
246
249
  const fieldMetricsResults = Trace.Insights.Common.getFieldMetricsForInsightSet(
247
- insightSet, this.#data.traceMetadata, CrUXManager.CrUXManager.instance().getSelectedScope());
250
+ insightSet, this.#data.parsedTrace.metadata, CrUXManager.CrUXManager.instance().getSelectedScope());
248
251
  if (!fieldMetricsResults) {
249
252
  return null;
250
253
  }
@@ -409,10 +412,10 @@ export class SidebarSingleInsightSet extends HTMLElement {
409
412
  }
410
413
 
411
414
  #renderInsights(
412
- insightSets: Trace.Insights.Types.TraceInsightSets|null,
415
+ insights: Trace.Insights.Types.TraceInsightSets|null,
413
416
  insightSetKey: string,
414
417
  ): Lit.LitTemplate {
415
- const insightSet = insightSets?.get(insightSetKey);
418
+ const insightSet = insights?.get(insightSetKey);
416
419
  if (!insightSet) {
417
420
  return Lit.nothing;
418
421
  }
@@ -420,19 +423,18 @@ export class SidebarSingleInsightSet extends HTMLElement {
420
423
  const fieldMetrics = this.#getFieldMetrics(insightSetKey);
421
424
  const {shownInsights: shownInsightsData, passedInsights: passedInsightsData} =
422
425
  SidebarSingleInsightSet.categorizeInsights(
423
- insightSets,
426
+ insights,
424
427
  insightSetKey,
425
428
  this.#data.activeCategory,
426
429
  );
427
430
 
428
431
  const renderInsightComponent = (insightData: CategorizedInsightData): Lit.TemplateResult => {
429
432
  const {componentClass, model} = insightData;
430
- if (!this.#data.parsedTrace || !this.#data.insights || !this.#data.traceMetadata) {
433
+ if (!this.#data.parsedTrace?.insights) {
431
434
  return html``;
432
435
  }
433
436
 
434
- const agentFocus = Utils.AIContext.AgentFocus.fromInsight(
435
- this.#data.parsedTrace, this.#data.insights, this.#data.traceMetadata, model);
437
+ const agentFocus = Utils.AIContext.AgentFocus.fromInsight(this.#data.parsedTrace, model);
436
438
  // clang-format off
437
439
  return html`<div>
438
440
  <${componentClass.litTagName}
@@ -472,10 +474,10 @@ export class SidebarSingleInsightSet extends HTMLElement {
472
474
 
473
475
  #render(): void {
474
476
  const {
475
- insights,
477
+ parsedTrace,
476
478
  insightSetKey,
477
479
  } = this.#data;
478
- if (!insights || !insightSetKey) {
480
+ if (!parsedTrace?.insights || !insightSetKey) {
479
481
  Lit.render(html``, this.#shadow, {host: this});
480
482
  return;
481
483
  }
@@ -485,7 +487,7 @@ export class SidebarSingleInsightSet extends HTMLElement {
485
487
  <style>${sidebarSingleInsightSetStyles}</style>
486
488
  <div class="navigation">
487
489
  ${this.#renderMetrics(insightSetKey)}
488
- ${this.#renderInsights(insights, insightSetKey)}
490
+ ${this.#renderInsights(parsedTrace.insights, insightSetKey)}
489
491
  </div>
490
492
  `, this.#shadow, {host: this});
491
493
  // clang-format on
@@ -15,10 +15,10 @@ import * as UI from '../../../../ui/legacy/legacy.js';
15
15
  import * as Lit from '../../../../ui/lit/lit.js';
16
16
  import * as VisualLogging from '../../../../ui/visual_logging/visual_logging.js';
17
17
  import type * as Overlays from '../../overlays/overlays.js';
18
- import {md} from '../../utils/Helpers.js';
19
18
  import * as Utils from '../../utils/utils.js';
20
19
 
21
20
  import baseInsightComponentStyles from './baseInsightComponent.css.js';
21
+ import {md} from './Helpers.js';
22
22
  import * as SidebarInsight from './SidebarInsight.js';
23
23
  import type {TableState} from './Table.js';
24
24
 
@@ -21,6 +21,10 @@ export class Cache extends BaseInsightComponent<CacheInsightModel> {
21
21
  static override readonly litTagName = Lit.StaticHtml.literal`devtools-performance-cache`;
22
22
  override internalName = 'cache';
23
23
 
24
+ protected override hasAskAiSupport(): boolean {
25
+ return true;
26
+ }
27
+
24
28
  mapToRow(req: Trace.Insights.Models.Cache.CacheableRequest): TableDataRow {
25
29
  return {
26
30
  values: [eventRef(req.request), i18n.TimeUtilities.secondsToString(req.ttl)],
@@ -10,10 +10,10 @@ import * as i18n from '../../../../core/i18n/i18n.js';
10
10
  import type {DOMSizeInsightModel} from '../../../../models/trace/insights/DOMSize.js';
11
11
  import * as Trace from '../../../../models/trace/trace.js';
12
12
  import * as Lit from '../../../../ui/lit/lit.js';
13
- import {md} from '../../utils/Helpers.js';
14
13
 
15
14
  import {BaseInsightComponent} from './BaseInsightComponent.js';
16
15
  import {eventRef} from './EventRef.js';
16
+ import {md} from './Helpers.js';
17
17
  import type * as NodeLink from './NodeLink.js';
18
18
  import type {TableData, TableDataRow} from './Table.js';
19
19
 
@@ -25,6 +25,10 @@ export class DOMSize extends BaseInsightComponent<DOMSizeInsightModel> {
25
25
  static override readonly litTagName = Lit.StaticHtml.literal`devtools-performance-dom-size`;
26
26
  override internalName = 'dom-size';
27
27
 
28
+ protected override hasAskAiSupport(): boolean {
29
+ return true;
30
+ }
31
+
28
32
  #renderNodeTable(domStatsData: Trace.Types.Events.DOMStats['args']['data']): Lit.LitTemplate {
29
33
  const rows: TableData['rows'] = [];
30
34
 
@@ -2,7 +2,14 @@
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 '../../../../ui/components/markdown_view/markdown_view.js';
6
+
7
+ import type * as Common from '../../../../core/common/common.js';
5
8
  import * as Trace from '../../../../models/trace/trace.js';
9
+ import * as Marked from '../../../../third_party/marked/marked.js';
10
+ import * as Lit from '../../../../ui/lit/lit.js';
11
+
12
+ const {html} = Lit;
6
13
 
7
14
  export function shouldRenderForCategory(options: {
8
15
  activeCategory: Trace.Insights.Types.InsightCategory,
@@ -11,3 +18,15 @@ export function shouldRenderForCategory(options: {
11
18
  return options.activeCategory === Trace.Insights.Types.InsightCategory.ALL ||
12
19
  options.activeCategory === options.insightCategory;
13
20
  }
21
+
22
+ /**
23
+ * Returns a rendered MarkdownView component.
24
+ *
25
+ * This should only be used for markdown that is guaranteed to be valid,
26
+ * and not contain any user-generated content.
27
+ */
28
+ export function md(markdown: Common.UIString.LocalizedString): Lit.TemplateResult {
29
+ const tokens = Marked.Marked.lexer(markdown);
30
+ const data = {tokens};
31
+ return html`<devtools-markdown-view .data=${data}></devtools-markdown-view>`;
32
+ }
@@ -12,10 +12,10 @@ import type {
12
12
  '../../../../models/trace/insights/NetworkDependencyTree.js';
13
13
  import * as Trace from '../../../../models/trace/trace.js';
14
14
  import * as Lit from '../../../../ui/lit/lit.js';
15
- import {md} from '../../utils/Helpers.js';
16
15
 
17
16
  import {BaseInsightComponent} from './BaseInsightComponent.js';
18
17
  import {eventRef} from './EventRef.js';
18
+ import {md} from './Helpers.js';
19
19
  import networkDependencyTreeInsightStyles from './networkDependencyTreeInsight.css.js';
20
20
  import type {NodeLinkData} from './NodeLink.js';
21
21
  import {renderOthersLabel, type TableData, type TableDataRow} from './Table.js';
@@ -16,6 +16,10 @@ export class Viewport extends BaseInsightComponent<ViewportInsightModel> {
16
16
  static override readonly litTagName = Lit.StaticHtml.literal`devtools-performance-viewport`;
17
17
  override internalName = 'viewport';
18
18
 
19
+ protected override hasAskAiSupport(): boolean {
20
+ return true;
21
+ }
22
+
19
23
  override getEstimatedSavingsTime(): Trace.Types.Timing.Milli|null {
20
24
  return this.model?.metricSavings?.INP ?? null;
21
25
  }
@@ -204,7 +204,7 @@ export interface TimelineCharts {
204
204
  }
205
205
 
206
206
  export interface OverlayEntryQueries {
207
- parsedTrace: () => Trace.Handlers.Types.ParsedTrace | null;
207
+ parsedTrace: () => Trace.TraceModel.ParsedTrace | null;
208
208
  isEntryCollapsedByUser: (entry: Trace.Types.Events.Event) => boolean;
209
209
  firstVisibleParentForEntry: (entry: Trace.Types.Events.Event) => Trace.Types.Events.Event | null;
210
210
  }
@@ -22,7 +22,7 @@ function depthFirstWalk(
22
22
 
23
23
  export interface FromTimeOnThreadOptions {
24
24
  thread: {pid: Trace.Types.Events.ProcessID, tid: Trace.Types.Events.ThreadID};
25
- parsedTrace: Trace.Handlers.Types.ParsedTrace;
25
+ parsedTrace: Trace.TraceModel.ParsedTrace;
26
26
  bounds: Trace.Types.Timing.TraceWindowMicro;
27
27
  }
28
28
 
@@ -30,13 +30,12 @@ export class AICallTree {
30
30
  constructor(
31
31
  public selectedNode: Trace.Extras.TraceTree.Node|null,
32
32
  public rootNode: Trace.Extras.TraceTree.TopDownRootNode,
33
- // TODO: see if we can avoid passing around this entire thing.
34
- public parsedTrace: Trace.Handlers.Types.ParsedTrace,
33
+ public parsedTrace: Trace.TraceModel.ParsedTrace,
35
34
  ) {
36
35
  }
37
36
 
38
37
  static findEventsForThread({thread, parsedTrace, bounds}: FromTimeOnThreadOptions): Trace.Types.Events.Event[]|null {
39
- const threadEvents = parsedTrace.Renderer.processes.get(thread.pid)?.threads.get(thread.tid)?.entries;
38
+ const threadEvents = parsedTrace.data.Renderer.processes.get(thread.pid)?.threads.get(thread.tid)?.entries;
40
39
  if (!threadEvents) {
41
40
  return null;
42
41
  }
@@ -46,7 +45,7 @@ export class AICallTree {
46
45
 
47
46
  static findMainThreadTasks({thread, parsedTrace, bounds}: FromTimeOnThreadOptions):
48
47
  Trace.Types.Events.RunTask[]|null {
49
- const threadEvents = parsedTrace.Renderer.processes.get(thread.pid)?.threads.get(thread.tid)?.entries;
48
+ const threadEvents = parsedTrace.data.Renderer.processes.get(thread.pid)?.threads.get(thread.tid)?.entries;
50
49
  if (!threadEvents) {
51
50
  return null;
52
51
  }
@@ -100,7 +99,7 @@ export class AICallTree {
100
99
  * This filters out other events we make such as SyntheticLayoutShifts which are not valid
101
100
  * If the event is not valid, or there is an unexpected error building the tree, `null` is returned.
102
101
  */
103
- static fromEvent(selectedEvent: Trace.Types.Events.Event, parsedTrace: Trace.Handlers.Types.ParsedTrace): AICallTree
102
+ static fromEvent(selectedEvent: Trace.Types.Events.Event, parsedTrace: Trace.TraceModel.ParsedTrace): AICallTree
104
103
  |null {
105
104
  // Special case: performance.mark events are shown on the main thread
106
105
  // technically, but because they are instant events they are shown with a
@@ -117,7 +116,7 @@ export class AICallTree {
117
116
  }
118
117
 
119
118
  // First: check that the selected event is on the thread we have identified as the main thread.
120
- const threads = Trace.Handlers.Threads.threadsInTrace(parsedTrace);
119
+ const threads = Trace.Handlers.Threads.threadsInTrace(parsedTrace.data);
121
120
  const thread = threads.find(t => t.pid === selectedEvent.pid && t.tid === selectedEvent.tid);
122
121
  if (!thread) {
123
122
  return null;
@@ -139,7 +138,8 @@ export class AICallTree {
139
138
  // information such as Layout Shift clusters.
140
139
  // We check Renderer + Samples to ensure we support CPU Profiles (which do
141
140
  // not populate the Renderer Handler)
142
- if (!parsedTrace.Renderer.entryToNode.has(selectedEvent) && !parsedTrace.Samples.entryToNode.has(selectedEvent)) {
141
+ const data = parsedTrace.data;
142
+ if (!data.Renderer.entryToNode.has(selectedEvent) && !data.Samples.entryToNode.has(selectedEvent)) {
143
143
  return null;
144
144
  }
145
145
 
@@ -147,10 +147,10 @@ export class AICallTree {
147
147
  const {startTime, endTime} = Trace.Helpers.Timing.eventTimingsMilliSeconds(selectedEvent);
148
148
  const selectedEventBounds = Trace.Helpers.Timing.traceWindowFromMicroSeconds(
149
149
  Trace.Helpers.Timing.milliToMicro(startTime), Trace.Helpers.Timing.milliToMicro(endTime));
150
- let threadEvents = parsedTrace.Renderer.processes.get(selectedEvent.pid)?.threads.get(selectedEvent.tid)?.entries;
150
+ let threadEvents = data.Renderer.processes.get(selectedEvent.pid)?.threads.get(selectedEvent.tid)?.entries;
151
151
  if (!threadEvents) {
152
152
  // None from the renderer: try the samples handler, this might be a CPU trace.
153
- threadEvents = parsedTrace.Samples.profilesInProcess.get(selectedEvent.pid)?.get(selectedEvent.tid)?.profileCalls;
153
+ threadEvents = data.Samples.profilesInProcess.get(selectedEvent.pid)?.get(selectedEvent.tid)?.profileCalls;
154
154
  }
155
155
 
156
156
  if (!threadEvents) {
@@ -300,7 +300,7 @@ export class AICallTree {
300
300
  * - This node is the selected node (S marker)
301
301
  */
302
302
  stringifyNode(
303
- node: Trace.Extras.TraceTree.Node, nodeId: number, parsedTrace: Trace.Handlers.Types.ParsedTrace,
303
+ node: Trace.Extras.TraceTree.Node, nodeId: number, parsedTrace: Trace.TraceModel.ParsedTrace,
304
304
  selectedNode: Trace.Extras.TraceTree.Node|null, allUrls: string[], childStartingNodeIndex?: number): string {
305
305
  const event = node.event;
306
306
  if (!event) {
@@ -8,51 +8,51 @@ import type {AICallTree} from './AICallTree.js';
8
8
 
9
9
  export interface AgentFocusDataFull {
10
10
  type: 'full';
11
- parsedTrace: Trace.Handlers.Types.ParsedTrace;
11
+ parsedTrace: Trace.TraceModel.ParsedTrace;
12
12
  insightSet: Trace.Insights.Types.InsightSet|null;
13
- traceMetadata: Trace.Types.File.MetaData;
14
13
  }
15
14
 
16
15
  interface AgentFocusDataCallTree {
17
16
  type: 'call-tree';
18
- parsedTrace: Trace.Handlers.Types.ParsedTrace;
17
+ parsedTrace: Trace.TraceModel.ParsedTrace;
19
18
  callTree: AICallTree;
20
19
  }
21
20
 
22
21
  export interface AgentFocusDataInsight {
23
22
  type: 'insight';
24
- parsedTrace: Trace.Handlers.Types.ParsedTrace;
23
+ parsedTrace: Trace.TraceModel.ParsedTrace;
25
24
  insightSet: Trace.Insights.Types.InsightSet|null;
26
- traceMetadata: Trace.Types.File.MetaData;
27
25
  insight: Trace.Insights.Types.InsightModel;
28
26
  }
29
27
 
30
28
  type AgentFocusData = AgentFocusDataCallTree|AgentFocusDataInsight|AgentFocusDataFull;
31
29
 
32
30
  export class AgentFocus {
33
- static full(
34
- parsedTrace: Trace.Handlers.Types.ParsedTrace, insights: Trace.Insights.Types.TraceInsightSets,
35
- traceMetadata: Trace.Types.File.MetaData): AgentFocus {
31
+ static full(parsedTrace: Trace.TraceModel.ParsedTrace): AgentFocus {
32
+ if (!parsedTrace.insights) {
33
+ throw new Error('missing insights');
34
+ }
35
+
36
36
  // Currently only support a single insight set. Pick the first one with a navigation.
37
- const insightSet = [...insights.values()].filter(insightSet => insightSet.navigation).at(0) ?? null;
37
+ const insightSet = [...parsedTrace.insights.values()].filter(insightSet => insightSet.navigation).at(0) ?? null;
38
38
  return new AgentFocus({
39
39
  type: 'full',
40
40
  parsedTrace,
41
41
  insightSet,
42
- traceMetadata,
43
42
  });
44
43
  }
45
44
 
46
- static fromInsight(
47
- parsedTrace: Trace.Handlers.Types.ParsedTrace, insights: Trace.Insights.Types.TraceInsightSets,
48
- traceMetadata: Trace.Types.File.MetaData, insight: Trace.Insights.Types.InsightModel): AgentFocus {
45
+ static fromInsight(parsedTrace: Trace.TraceModel.ParsedTrace, insight: Trace.Insights.Types.InsightModel):
46
+ AgentFocus {
47
+ if (!parsedTrace.insights) {
48
+ throw new Error('missing insights');
49
+ }
49
50
  // Currently only support a single insight set. Pick the first one with a navigation.
50
- const insightSet = [...insights.values()].filter(insightSet => insightSet.navigation).at(0) ?? null;
51
+ const insightSet = [...parsedTrace.insights.values()].filter(insightSet => insightSet.navigation).at(0) ?? null;
51
52
  return new AgentFocus({
52
53
  type: 'insight',
53
54
  parsedTrace,
54
55
  insightSet,
55
- traceMetadata,
56
56
  insight,
57
57
  });
58
58
  }
@@ -74,11 +74,9 @@ export class AgentFocus {
74
74
 
75
75
  export function getPerformanceAgentFocusFromModel(model: Trace.TraceModel.Model): AgentFocus|null {
76
76
  const parsedTrace = model.parsedTrace();
77
- const insights = model.traceInsights();
78
- const traceMetadata = model.metadata();
79
- if (!insights || !parsedTrace || !traceMetadata) {
77
+ if (!parsedTrace) {
80
78
  return null;
81
79
  }
82
80
 
83
- return AgentFocus.full(parsedTrace, insights, traceMetadata);
81
+ return AgentFocus.full(parsedTrace);
84
82
  }
@@ -7,7 +7,7 @@ import type * as Protocol from '../../../generated/protocol.js';
7
7
  import * as Trace from '../../../models/trace/trace.js';
8
8
 
9
9
  export class EntityMapper {
10
- #parsedTrace: Trace.Handlers.Types.ParsedTrace;
10
+ #parsedTrace: Trace.TraceModel.ParsedTrace;
11
11
  #entityMappings: Trace.Handlers.Helpers.EntityMappings;
12
12
  #firstPartyEntity: Trace.Handlers.Helpers.Entity|null;
13
13
  #thirdPartyEvents: Trace.Types.Events.Event[] = [];
@@ -19,17 +19,18 @@ export class EntityMapper {
19
19
  */
20
20
  #resolvedCallFrames = new Set<Protocol.Runtime.CallFrame>();
21
21
 
22
- constructor(parsedTrace: Trace.Handlers.Types.ParsedTrace) {
22
+ constructor(parsedTrace: Trace.TraceModel.ParsedTrace) {
23
23
  this.#parsedTrace = parsedTrace;
24
- this.#entityMappings = this.#parsedTrace.Renderer.entityMappings;
24
+ this.#entityMappings = this.#parsedTrace.data.Renderer.entityMappings;
25
25
  this.#firstPartyEntity = this.#findFirstPartyEntity();
26
26
  this.#thirdPartyEvents = this.#getThirdPartyEvents();
27
27
  }
28
28
 
29
29
  #findFirstPartyEntity(): Trace.Handlers.Helpers.Entity|null {
30
30
  // As a starting point, we consider the first navigation as the 1P.
31
- const nav = Array.from(this.#parsedTrace.Meta.navigationsByNavigationId.values()).sort((a, b) => a.ts - b.ts)[0];
32
- const firstPartyUrl = nav?.args.data?.documentLoaderURL ?? this.#parsedTrace.Meta.mainFrameURL;
31
+ const nav =
32
+ Array.from(this.#parsedTrace.data.Meta.navigationsByNavigationId.values()).sort((a, b) => a.ts - b.ts)[0];
33
+ const firstPartyUrl = nav?.args.data?.documentLoaderURL ?? this.#parsedTrace.data.Meta.mainFrameURL;
33
34
  if (!firstPartyUrl) {
34
35
  return null;
35
36
  }
@@ -55,12 +55,12 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
55
55
  */
56
56
  export function nameForEntry(
57
57
  entry: Trace.Types.Events.Event,
58
- parsedTrace?: Trace.Handlers.Types.ParsedTrace,
58
+ parsedTrace?: Trace.TraceModel.ParsedTrace,
59
59
  ): string {
60
60
  if (Trace.Types.Events.isProfileCall(entry)) {
61
61
  if (parsedTrace) {
62
62
  const potentialCallName =
63
- Trace.Handlers.ModelHandlers.Samples.getProfileCallFunctionName(parsedTrace.Samples, entry);
63
+ Trace.Handlers.ModelHandlers.Samples.getProfileCallFunctionName(parsedTrace.data.Samples, entry);
64
64
  // We need this extra check because the call name could be the empty
65
65
  // string. If it is, we want to fallback.
66
66
  if (potentialCallName) {
@@ -15,7 +15,7 @@ const domNodesForEventCache =
15
15
  * The result is cached so you can safely call this multiple times.
16
16
  **/
17
17
  export function nodeIdsForEvent(
18
- modelData: Trace.Handlers.Types.ParsedTrace,
18
+ parsedTrace: Trace.TraceModel.ParsedTrace,
19
19
  event: Trace.Types.Events.Event,
20
20
  ): Set<Protocol.DOM.BackendNodeId> {
21
21
  const fromCache = nodeIdsForEventCache.get(event);
@@ -45,12 +45,12 @@ export function nodeIdsForEvent(
45
45
  // For a DecodeImage event, we can use the ImagePaintingHandler, which has
46
46
  // done the work to build the relationship between a DecodeImage event and
47
47
  // the corresponding PaintImage event.
48
- const paintImageEvent = modelData.ImagePainting.paintImageForEvent.get(event);
48
+ const paintImageEvent = parsedTrace.data.ImagePainting.paintImageForEvent.get(event);
49
49
  if (typeof paintImageEvent?.args.data.nodeId !== 'undefined') {
50
50
  foundIds.add(paintImageEvent.args.data.nodeId);
51
51
  }
52
52
  } else if (Trace.Types.Events.isDrawLazyPixelRef(event) && event.args?.LazyPixelRef) {
53
- const paintImageEvent = modelData.ImagePainting.paintImageByDrawLazyPixelRef.get(event.args.LazyPixelRef);
53
+ const paintImageEvent = parsedTrace.data.ImagePainting.paintImageByDrawLazyPixelRef.get(event.args.LazyPixelRef);
54
54
  if (typeof paintImageEvent?.args.data.nodeId !== 'undefined') {
55
55
  foundIds.add(paintImageEvent.args.data.nodeId);
56
56
  }
@@ -67,14 +67,14 @@ export function nodeIdsForEvent(
67
67
  * This method is cached for the given event.
68
68
  */
69
69
  export async function relatedDOMNodesForEvent(
70
- modelData: Trace.Handlers.Types.ParsedTrace,
70
+ parsedTrace: Trace.TraceModel.ParsedTrace,
71
71
  event: Trace.Types.Events.Event): Promise<Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode|null>|null> {
72
72
  const fromCache = domNodesForEventCache.get(event);
73
73
  if (fromCache) {
74
74
  return fromCache;
75
75
  }
76
76
 
77
- const nodeIds = nodeIdsForEvent(modelData, event);
77
+ const nodeIds = nodeIdsForEvent(parsedTrace, event);
78
78
  if (nodeIds.size) {
79
79
  const frame = event.args?.data?.frame as Protocol.Page.FrameId;
80
80
  const result = await domNodesForBackendIds(frame, nodeIds);
@@ -559,7 +559,7 @@ export class TimelineCategory {
559
559
  title: Platform.UIString.LocalizedString;
560
560
  visible: boolean;
561
561
  childColor: string;
562
- colorInternal: string;
562
+ #color: string;
563
563
  #hidden?: boolean;
564
564
 
565
565
  constructor(
@@ -569,7 +569,7 @@ export class TimelineCategory {
569
569
  this.title = title;
570
570
  this.visible = visible;
571
571
  this.childColor = childColor;
572
- this.colorInternal = color;
572
+ this.#color = color;
573
573
  this.hidden = false;
574
574
  }
575
575
 
@@ -581,11 +581,11 @@ export class TimelineCategory {
581
581
  return this.getComputedColorValue();
582
582
  }
583
583
  getCSSValue(): string {
584
- return `var(${this.colorInternal})`;
584
+ return `var(${this.#color})`;
585
585
  }
586
586
 
587
587
  getComputedColorValue(): string {
588
- return ThemeSupport.ThemeSupport.instance().getComputedValue(this.colorInternal);
588
+ return ThemeSupport.ThemeSupport.instance().getComputedValue(this.#color);
589
589
  }
590
590
 
591
591
  set hidden(hidden: boolean) {
@@ -12,7 +12,7 @@ let instance: Tracker|null = null;
12
12
  * is loaded, we set this flag accordingly.
13
13
  **/
14
14
  export class Tracker {
15
- #freshRecordings = new WeakSet<Trace.Handlers.Types.ParsedTrace>();
15
+ #freshRecordings = new WeakSet<Trace.TraceModel.ParsedTrace>();
16
16
 
17
17
  static instance(opts: {forceNew: boolean} = {forceNew: false}): Tracker {
18
18
  if (!instance || opts.forceNew) {
@@ -21,11 +21,11 @@ export class Tracker {
21
21
  return instance;
22
22
  }
23
23
 
24
- registerFreshRecording(data: Trace.Handlers.Types.ParsedTrace): void {
24
+ registerFreshRecording(data: Trace.TraceModel.ParsedTrace): void {
25
25
  this.#freshRecordings.add(data);
26
26
  }
27
27
 
28
- recordingIsFresh(data: Trace.Handlers.Types.ParsedTrace): boolean {
28
+ recordingIsFresh(data: Trace.TraceModel.ParsedTrace): boolean {
29
29
  return this.#freshRecordings.has(data);
30
30
  }
31
31
  }
@@ -2,18 +2,12 @@
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 '../../../ui/components/markdown_view/markdown_view.js';
6
-
7
- import type * as Common from '../../../core/common/common.js';
8
5
  import * as Platform from '../../../core/platform/platform.js';
9
6
  import * as SDK from '../../../core/sdk/sdk.js';
10
7
  import * as CrUXManager from '../../../models/crux-manager/crux-manager.js';
11
8
  import type * as Trace from '../../../models/trace/trace.js';
12
- import * as Marked from '../../../third_party/marked/marked.js';
13
- import * as Lit from '../../../ui/lit/lit.js';
14
9
  import * as MobileThrottling from '../../mobile_throttling/mobile_throttling.js';
15
10
 
16
- const {html} = Lit;
17
11
  const MAX_ORIGIN_LENGTH = 60;
18
12
 
19
13
  export function getThrottlingRecommendations(): {
@@ -127,18 +121,6 @@ export function shortenUrl(url: URL, maxChars = 20): string {
127
121
  return shortenedUrl;
128
122
  }
129
123
 
130
- /**
131
- * Returns a rendered MarkdownView component.
132
- *
133
- * This should only be used for markdown that is guaranteed to be valid,
134
- * and not contain any user-generated content.
135
- */
136
- export function md(markdown: Common.UIString.LocalizedString): Lit.TemplateResult {
137
- const tokens = Marked.Marked.lexer(markdown);
138
- const data = {tokens};
139
- return html`<devtools-markdown-view .data=${data}></devtools-markdown-view>`;
140
- }
141
-
142
124
  /**
143
125
  * Returns a string containing both the origin and its 3rd party entity.
144
126
  *
@@ -7,7 +7,7 @@ import * as Trace from '../../../models/trace/trace.js';
7
7
  import {AICallTree} from './AICallTree.js';
8
8
 
9
9
  export class AIQueries {
10
- static findMainThread(navigationId: string|undefined, parsedTrace: Trace.Handlers.Types.ParsedTrace):
10
+ static findMainThread(navigationId: string|undefined, parsedTrace: Trace.TraceModel.ParsedTrace):
11
11
  Trace.Handlers.Threads.ThreadData|null {
12
12
  /**
13
13
  * We cannot assume that there is one main thread as there are scenarios
@@ -26,14 +26,14 @@ export class AIQueries {
26
26
  let mainThreadTID: Trace.Types.Events.ThreadID|null = null;
27
27
 
28
28
  if (navigationId) {
29
- const navigation = parsedTrace.Meta.navigationsByNavigationId.get(navigationId);
29
+ const navigation = parsedTrace.data.Meta.navigationsByNavigationId.get(navigationId);
30
30
  if (navigation?.args.data?.isOutermostMainFrame) {
31
31
  mainThreadPID = navigation.pid;
32
32
  mainThreadTID = navigation.tid;
33
33
  }
34
34
  }
35
35
 
36
- const threads = Trace.Handlers.Threads.threadsInTrace(parsedTrace);
36
+ const threads = Trace.Handlers.Threads.threadsInTrace(parsedTrace.data);
37
37
  const thread = threads.find(thread => {
38
38
  if (mainThreadPID && mainThreadTID) {
39
39
  return thread.pid === mainThreadPID && thread.tid === mainThreadTID;
@@ -49,7 +49,7 @@ export class AIQueries {
49
49
  */
50
50
  static mainThreadActivityBottomUp(
51
51
  navigationId: string|undefined, bounds: Trace.Types.Timing.TraceWindowMicro,
52
- parsedTrace: Trace.Handlers.Types.ParsedTrace): Trace.Extras.TraceTree.BottomUpRootNode|null {
52
+ parsedTrace: Trace.TraceModel.ParsedTrace): Trace.Extras.TraceTree.BottomUpRootNode|null {
53
53
  const thread = this.findMainThread(navigationId, parsedTrace);
54
54
  if (!thread) {
55
55
  return null;
@@ -82,7 +82,7 @@ export class AIQueries {
82
82
  */
83
83
  static mainThreadActivityTopDown(
84
84
  navigationId: string|undefined, bounds: Trace.Types.Timing.TraceWindowMicro,
85
- parsedTrace: Trace.Handlers.Types.ParsedTrace): AICallTree|null {
85
+ parsedTrace: Trace.TraceModel.ParsedTrace): AICallTree|null {
86
86
  const thread = this.findMainThread(navigationId, parsedTrace);
87
87
  if (!thread) {
88
88
  return null;
@@ -103,7 +103,7 @@ export class AIQueries {
103
103
  */
104
104
  static longestTasks(
105
105
  navigationId: string|undefined, bounds: Trace.Types.Timing.TraceWindowMicro,
106
- parsedTrace: Trace.Handlers.Types.ParsedTrace, limit = 3): AICallTree[]|null {
106
+ parsedTrace: Trace.TraceModel.ParsedTrace, limit = 3): AICallTree[]|null {
107
107
  const thread = this.findMainThread(navigationId, parsedTrace);
108
108
  if (!thread) {
109
109
  return null;