chrome-devtools-frontend 1.0.1380117 → 1.0.1386602

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 (595) hide show
  1. package/.stylelintrc.json +2 -1
  2. package/config/gni/devtools_grd_files.gni +25 -4
  3. package/config/gni/devtools_image_files.gni +2 -0
  4. package/docs/README.md +4 -0
  5. package/docs/contributing/issues.md +13 -10
  6. package/docs/get_the_code.md +4 -1
  7. package/docs/policy/README.md +6 -0
  8. package/docs/policy/slow-close.md +52 -0
  9. package/docs/styleguide/ux/README.md +1 -0
  10. package/docs/styleguide/ux/numbers.md +106 -0
  11. package/front_end/Images/src/cookie_off.svg +3 -0
  12. package/front_end/Images/src/domain.svg +3 -0
  13. package/front_end/core/common/Color.ts +3 -3
  14. package/front_end/core/common/SettingRegistration.ts +7 -0
  15. package/front_end/core/host/AidaClient.ts +3 -3
  16. package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
  17. package/front_end/core/host/UserMetrics.ts +0 -8
  18. package/front_end/core/i18n/locales/af.json +1031 -887
  19. package/front_end/core/i18n/locales/am.json +1036 -892
  20. package/front_end/core/i18n/locales/ar.json +1039 -895
  21. package/front_end/core/i18n/locales/as.json +1032 -888
  22. package/front_end/core/i18n/locales/az.json +1034 -890
  23. package/front_end/core/i18n/locales/be.json +1031 -887
  24. package/front_end/core/i18n/locales/bg.json +1031 -887
  25. package/front_end/core/i18n/locales/bn.json +1033 -889
  26. package/front_end/core/i18n/locales/bs.json +1036 -892
  27. package/front_end/core/i18n/locales/ca.json +1031 -887
  28. package/front_end/core/i18n/locales/cs.json +1030 -886
  29. package/front_end/core/i18n/locales/cy.json +1032 -888
  30. package/front_end/core/i18n/locales/da.json +1031 -887
  31. package/front_end/core/i18n/locales/de.json +1033 -889
  32. package/front_end/core/i18n/locales/el.json +1031 -887
  33. package/front_end/core/i18n/locales/en-GB.json +1033 -889
  34. package/front_end/core/i18n/locales/es-419.json +1029 -885
  35. package/front_end/core/i18n/locales/es.json +1032 -888
  36. package/front_end/core/i18n/locales/et.json +1033 -889
  37. package/front_end/core/i18n/locales/eu.json +1031 -887
  38. package/front_end/core/i18n/locales/fa.json +1035 -891
  39. package/front_end/core/i18n/locales/fi.json +1035 -891
  40. package/front_end/core/i18n/locales/fil.json +1034 -890
  41. package/front_end/core/i18n/locales/fr-CA.json +1031 -887
  42. package/front_end/core/i18n/locales/fr.json +1049 -905
  43. package/front_end/core/i18n/locales/gl.json +1032 -888
  44. package/front_end/core/i18n/locales/gu.json +1035 -891
  45. package/front_end/core/i18n/locales/he.json +1031 -887
  46. package/front_end/core/i18n/locales/hi.json +1034 -890
  47. package/front_end/core/i18n/locales/hr.json +1031 -887
  48. package/front_end/core/i18n/locales/hu.json +1033 -889
  49. package/front_end/core/i18n/locales/hy.json +1046 -902
  50. package/front_end/core/i18n/locales/id.json +1023 -879
  51. package/front_end/core/i18n/locales/is.json +1032 -888
  52. package/front_end/core/i18n/locales/it.json +1031 -887
  53. package/front_end/core/i18n/locales/ja.json +1042 -898
  54. package/front_end/core/i18n/locales/ka.json +1034 -890
  55. package/front_end/core/i18n/locales/kk.json +1035 -891
  56. package/front_end/core/i18n/locales/km.json +1035 -891
  57. package/front_end/core/i18n/locales/kn.json +1036 -892
  58. package/front_end/core/i18n/locales/ko.json +1031 -887
  59. package/front_end/core/i18n/locales/ky.json +1032 -888
  60. package/front_end/core/i18n/locales/lo.json +1030 -886
  61. package/front_end/core/i18n/locales/lt.json +1032 -888
  62. package/front_end/core/i18n/locales/lv.json +1032 -888
  63. package/front_end/core/i18n/locales/mk.json +1032 -888
  64. package/front_end/core/i18n/locales/ml.json +1033 -889
  65. package/front_end/core/i18n/locales/mn.json +1034 -890
  66. package/front_end/core/i18n/locales/mr.json +1035 -891
  67. package/front_end/core/i18n/locales/ms.json +1033 -889
  68. package/front_end/core/i18n/locales/my.json +1033 -889
  69. package/front_end/core/i18n/locales/ne.json +1036 -892
  70. package/front_end/core/i18n/locales/nl.json +1033 -889
  71. package/front_end/core/i18n/locales/no.json +1036 -892
  72. package/front_end/core/i18n/locales/or.json +1043 -899
  73. package/front_end/core/i18n/locales/pa.json +1030 -886
  74. package/front_end/core/i18n/locales/pl.json +1032 -888
  75. package/front_end/core/i18n/locales/pt-PT.json +1033 -889
  76. package/front_end/core/i18n/locales/pt.json +1033 -889
  77. package/front_end/core/i18n/locales/ro.json +1029 -885
  78. package/front_end/core/i18n/locales/ru.json +1026 -882
  79. package/front_end/core/i18n/locales/si.json +1031 -887
  80. package/front_end/core/i18n/locales/sk.json +1033 -889
  81. package/front_end/core/i18n/locales/sl.json +1031 -887
  82. package/front_end/core/i18n/locales/sq.json +1061 -917
  83. package/front_end/core/i18n/locales/sr-Latn.json +1033 -889
  84. package/front_end/core/i18n/locales/sr.json +1033 -889
  85. package/front_end/core/i18n/locales/sv.json +1031 -887
  86. package/front_end/core/i18n/locales/sw.json +1033 -889
  87. package/front_end/core/i18n/locales/ta.json +1058 -914
  88. package/front_end/core/i18n/locales/te.json +1037 -893
  89. package/front_end/core/i18n/locales/th.json +1032 -888
  90. package/front_end/core/i18n/locales/tr.json +1031 -887
  91. package/front_end/core/i18n/locales/uk.json +1030 -886
  92. package/front_end/core/i18n/locales/ur.json +1031 -887
  93. package/front_end/core/i18n/locales/uz.json +1023 -879
  94. package/front_end/core/i18n/locales/vi.json +1032 -888
  95. package/front_end/core/i18n/locales/zh-HK.json +1032 -888
  96. package/front_end/core/i18n/locales/zh-TW.json +1032 -888
  97. package/front_end/core/i18n/locales/zh.json +1033 -889
  98. package/front_end/core/i18n/locales/zu.json +1032 -888
  99. package/front_end/core/root/Runtime.ts +0 -1
  100. package/front_end/core/sdk/NetworkManager.test.ts +50 -0
  101. package/front_end/core/sdk/NetworkManager.ts +6 -4
  102. package/front_end/core/sdk/SourceMap.test.ts +5 -5
  103. package/front_end/core/sdk/SourceMapScopeChainEntry.test.ts +7 -2
  104. package/front_end/core/sdk/SourceMapScopeChainEntry.ts +2 -2
  105. package/front_end/core/sdk/SourceMapScopes.test.ts +112 -45
  106. package/front_end/core/sdk/SourceMapScopes.ts +39 -14
  107. package/front_end/core/sdk/SourceMapScopesInfo.test.ts +51 -50
  108. package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
  109. package/front_end/core/sdk/sdk-meta.ts +27 -0
  110. package/front_end/devtools_compatibility.js +0 -1
  111. package/front_end/entrypoints/devtools_app/devtools_app.ts +1 -0
  112. package/front_end/entrypoints/inspector_main/renderingOptions.css +1 -1
  113. package/front_end/entrypoints/main/ExecutionContextSelector.test.ts +13 -3
  114. package/front_end/entrypoints/main/ExecutionContextSelector.ts +23 -1
  115. package/front_end/entrypoints/main/MainImpl.ts +0 -5
  116. package/front_end/generated/Deprecation.ts +0 -15
  117. package/front_end/generated/InspectorBackendCommands.js +1 -1
  118. package/front_end/generated/SupportedCSSProperties.js +0 -40
  119. package/front_end/generated/protocol.ts +1 -0
  120. package/front_end/models/bindings/IgnoreListManager.ts +25 -2
  121. package/front_end/models/crux-manager/CrUXManager.test.ts +25 -6
  122. package/front_end/models/crux-manager/CrUXManager.ts +23 -4
  123. package/front_end/models/extensions/ExtensionServer.test.ts +14 -0
  124. package/front_end/models/extensions/ExtensionServer.ts +28 -15
  125. package/front_end/models/issues_manager/CookieIssue.ts +79 -2
  126. package/front_end/models/issues_manager/IssuesManager.ts +1 -1
  127. package/front_end/models/issues_manager/descriptions/cookieExcludePortMismatch.md +8 -0
  128. package/front_end/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +7 -0
  129. package/front_end/models/javascript_metadata/NativeFunctions.js +14 -4
  130. package/front_end/models/persistence/EditFileSystemView.ts +2 -2
  131. package/front_end/models/persistence/editFileSystemView.css +6 -3
  132. package/front_end/models/persistence/workspaceSettingsTab.css +2 -2
  133. package/front_end/models/trace/extras/Metadata.test.ts +35 -2
  134. package/front_end/models/trace/extras/Metadata.ts +24 -5
  135. package/front_end/models/trace/extras/TraceTree.ts +28 -18
  136. package/front_end/models/trace/extras/URLForEntry.ts +6 -5
  137. package/front_end/models/trace/handlers/ImagePaintingHandler.ts +12 -0
  138. package/front_end/models/trace/helpers/Timing.ts +8 -0
  139. package/front_end/models/trace/insights/CLSCulprits.ts +11 -3
  140. package/front_end/models/trace/insights/DocumentLatency.ts +16 -3
  141. package/front_end/models/trace/insights/FontDisplay.ts +10 -3
  142. package/front_end/models/trace/insights/ImageDelivery.test.ts +98 -0
  143. package/front_end/models/trace/insights/ImageDelivery.ts +183 -0
  144. package/front_end/models/trace/insights/InteractionToNextPaint.ts +9 -3
  145. package/front_end/models/trace/insights/LCPDiscovery.ts +24 -3
  146. package/front_end/models/trace/insights/LCPPhases.ts +25 -3
  147. package/front_end/models/trace/insights/Models.ts +1 -0
  148. package/front_end/models/trace/insights/RenderBlocking.ts +10 -2
  149. package/front_end/models/trace/insights/SlowCSSSelector.ts +10 -3
  150. package/front_end/models/trace/insights/ThirdParties.ts +11 -3
  151. package/front_end/models/trace/insights/Viewport.ts +16 -3
  152. package/front_end/models/trace/insights/types.ts +13 -2
  153. package/front_end/models/trace/types/File.ts +7 -0
  154. package/front_end/models/trace/types/TraceEvents.ts +9 -2
  155. package/front_end/panels/animation/AnimationTimeline.ts +2 -4
  156. package/front_end/panels/application/ApplicationPanelSidebar.test.ts +0 -5
  157. package/front_end/panels/application/ApplicationPanelSidebar.ts +15 -21
  158. package/front_end/panels/application/IndexedDBViews.ts +4 -1
  159. package/front_end/panels/application/ServiceWorkerCacheViews.ts +4 -1
  160. package/front_end/panels/application/StorageView.test.ts +1 -1
  161. package/front_end/panels/application/resourcesSidebar.css +1 -1
  162. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +1 -1
  163. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
  164. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +1 -1
  165. package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +1 -1
  166. package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +1 -1
  167. package/front_end/panels/console/ConsoleViewMessage.test.ts +25 -0
  168. package/front_end/panels/console/ConsoleViewMessage.ts +23 -0
  169. package/front_end/panels/coverage/CoverageListView.ts +1 -1
  170. package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
  171. package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
  172. package/front_end/panels/elements/ElementStatePaneWidget.test.ts +3 -2
  173. package/front_end/panels/elements/ElementStatePaneWidget.ts +7 -2
  174. package/front_end/panels/elements/ElementsSidebarPane.ts +3 -3
  175. package/front_end/panels/elements/ElementsTreeElement.ts +1 -0
  176. package/front_end/panels/elements/LayersWidget.ts +1 -1
  177. package/front_end/panels/elements/PropertyMatchers.test.ts +7 -0
  178. package/front_end/panels/elements/PropertyMatchers.ts +3 -0
  179. package/front_end/panels/elements/classesPaneWidget.css +1 -1
  180. package/front_end/panels/emulation/DeviceModeView.ts +1 -1
  181. package/front_end/panels/emulation/DeviceModeWrapper.ts +1 -1
  182. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +1 -1
  183. package/front_end/panels/freestyler/AiAgent.test.ts +319 -50
  184. package/front_end/panels/freestyler/AiAgent.ts +193 -141
  185. package/front_end/panels/freestyler/AiHistoryStorage.test.ts +159 -0
  186. package/front_end/panels/freestyler/AiHistoryStorage.ts +73 -0
  187. package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +14 -15
  188. package/front_end/panels/freestyler/DrJonesFileAgent.ts +3 -14
  189. package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +14 -13
  190. package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +3 -3
  191. package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +38 -36
  192. package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +3 -14
  193. package/front_end/panels/freestyler/FreestylerAgent.test.ts +195 -14
  194. package/front_end/panels/freestyler/FreestylerAgent.ts +13 -18
  195. package/front_end/panels/freestyler/FreestylerPanel.test.ts +71 -0
  196. package/front_end/panels/freestyler/FreestylerPanel.ts +99 -74
  197. package/front_end/panels/freestyler/components/FreestylerChatUi.ts +128 -29
  198. package/front_end/panels/freestyler/components/UserActionRow.ts +1 -0
  199. package/front_end/panels/freestyler/components/freestylerChatUi.css +21 -1
  200. package/front_end/panels/freestyler/components/userActionRow.css +2 -1
  201. package/front_end/panels/freestyler/freestyler.ts +1 -0
  202. package/front_end/panels/issues/IssueAggregator.test.ts +50 -0
  203. package/front_end/panels/issues/IssueAggregator.ts +10 -10
  204. package/front_end/panels/issues/issuesTree.css +1 -1
  205. package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -1
  206. package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
  207. package/front_end/panels/layer_viewer/PaintProfilerView.ts +1 -1
  208. package/front_end/panels/layers/LayersPanel.ts +1 -1
  209. package/front_end/panels/lighthouse/lighthouseStartView.css +1 -1
  210. package/front_end/panels/media/TickingFlameChart.ts +1 -1
  211. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +1 -1
  212. package/front_end/panels/network/BlockedURLsPane.ts +1 -1
  213. package/front_end/panels/network/NetworkDataGridNode.ts +1 -0
  214. package/front_end/panels/network/NetworkLogView.test.ts +1 -1
  215. package/front_end/panels/network/NetworkPanel.ts +40 -32
  216. package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -1
  217. package/front_end/panels/profiler/HeapProfileView.ts +9 -9
  218. package/front_end/panels/profiler/HeapTimelineOverview.ts +1 -1
  219. package/front_end/panels/profiler/IsolateSelector.ts +1 -1
  220. package/front_end/panels/profiler/LiveHeapProfileView.ts +3 -1
  221. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +3 -3
  222. package/front_end/panels/profiler/ProfileView.ts +2 -2
  223. package/front_end/panels/profiler/profileLauncherView.css +1 -1
  224. package/front_end/panels/profiler/profilesSidebarTree.css +1 -1
  225. package/front_end/panels/recorder/recorderController.css +1 -1
  226. package/front_end/panels/security/CookieControlsTreeElement.ts +18 -0
  227. package/front_end/panels/security/CookieControlsView.test.ts +29 -0
  228. package/front_end/panels/security/CookieControlsView.ts +265 -0
  229. package/front_end/panels/security/CookieReportView.test.ts +157 -0
  230. package/front_end/panels/security/CookieReportView.ts +208 -12
  231. package/front_end/panels/security/SecurityPanel.ts +5 -3
  232. package/front_end/panels/security/SecurityPanelSidebar.ts +6 -1
  233. package/front_end/panels/security/cookieControlsView.css +101 -0
  234. package/front_end/panels/security/cookieReportView.css +26 -3
  235. package/front_end/panels/security/security.ts +4 -0
  236. package/front_end/panels/security/sidebar.css +1 -1
  237. package/front_end/panels/settings/KeybindsSettingsTab.ts +3 -2
  238. package/front_end/panels/settings/SettingsScreen.ts +5 -1
  239. package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +1 -1
  240. package/front_end/panels/settings/keybindsSettingsTab.css +6 -1
  241. package/front_end/panels/settings/settings-meta.ts +3 -1
  242. package/front_end/panels/settings/settingsScreen.css +10 -0
  243. package/front_end/panels/sources/CallStackSidebarPane.ts +2 -2
  244. package/front_end/panels/sources/NavigatorView.ts +1 -0
  245. package/front_end/panels/sources/navigatorTree.css +1 -1
  246. package/front_end/panels/sources/sourcesPanel.css +2 -2
  247. package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -7
  248. package/front_end/panels/timeline/AppenderUtils.ts +1 -1
  249. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +38 -41
  250. package/front_end/panels/timeline/ExtensionTrackAppender.ts +4 -13
  251. package/front_end/panels/timeline/InteractionsTrackAppender.ts +3 -4
  252. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +6 -12
  253. package/front_end/panels/timeline/ServerTimingsTrackAppender.ts +1 -10
  254. package/front_end/panels/timeline/ThreadAppender.ts +9 -12
  255. package/front_end/panels/timeline/TimelineController.ts +1 -1
  256. package/front_end/panels/timeline/TimelineDetailsView.test.ts +3 -2
  257. package/front_end/panels/timeline/TimelineDetailsView.ts +18 -17
  258. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +55 -36
  259. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -1
  260. package/front_end/panels/timeline/TimelineFlameChartView.ts +33 -14
  261. package/front_end/panels/timeline/TimelineHistoryManager.test.ts +20 -15
  262. package/front_end/panels/timeline/TimelineHistoryManager.ts +46 -58
  263. package/front_end/panels/timeline/TimelineLayersView.ts +1 -1
  264. package/front_end/panels/timeline/TimelineLoader.ts +16 -0
  265. package/front_end/panels/timeline/TimelineMiniMap.ts +2 -2
  266. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
  267. package/front_end/panels/timeline/TimelinePanel.ts +145 -28
  268. package/front_end/panels/timeline/TimelineTreeView.ts +65 -16
  269. package/front_end/panels/timeline/TimelineUIUtils.ts +44 -0
  270. package/front_end/panels/timeline/TimingsTrackAppender.ts +6 -13
  271. package/front_end/panels/timeline/components/FieldSettingsDialog.test.ts +1 -0
  272. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +6 -1
  273. package/front_end/panels/timeline/components/LiveMetricsView.test.ts +12 -0
  274. package/front_end/panels/timeline/components/LiveMetricsView.ts +13 -18
  275. package/front_end/panels/timeline/components/Sidebar.ts +1 -4
  276. package/front_end/panels/timeline/components/SidebarAnnotationsTab.test.ts +1 -1
  277. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +1 -1
  278. package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +21 -35
  279. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +16 -9
  280. package/front_end/panels/timeline/components/TimelineSummary.test.ts +75 -0
  281. package/front_end/panels/timeline/components/TimelineSummary.ts +101 -0
  282. package/front_end/panels/timeline/components/Utils.test.ts +49 -0
  283. package/front_end/panels/timeline/components/Utils.ts +2 -2
  284. package/front_end/panels/timeline/components/components.ts +2 -0
  285. package/front_end/panels/timeline/components/insights/BaseInsightComponent.test.ts +84 -0
  286. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +291 -0
  287. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +17 -41
  288. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +28 -46
  289. package/front_end/panels/timeline/components/insights/EventRef.ts +70 -2
  290. package/front_end/panels/timeline/components/insights/FontDisplay.ts +28 -46
  291. package/front_end/panels/timeline/components/insights/Helpers.ts +5 -208
  292. package/front_end/panels/timeline/components/insights/ImageDelivery.ts +142 -0
  293. package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +30 -53
  294. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +36 -75
  295. package/front_end/panels/timeline/components/insights/LCPPhases.ts +15 -49
  296. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +27 -44
  297. package/front_end/panels/timeline/components/insights/SidebarInsight.ts +3 -197
  298. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +51 -74
  299. package/front_end/panels/timeline/components/insights/Table.ts +6 -5
  300. package/front_end/panels/timeline/components/insights/ThirdParties.ts +41 -61
  301. package/front_end/panels/timeline/components/insights/Viewport.ts +20 -31
  302. package/front_end/panels/timeline/components/insights/{sidebarInsight.css → baseInsightComponent.css} +9 -9
  303. package/front_end/panels/timeline/components/insights/insights.ts +4 -0
  304. package/front_end/panels/timeline/components/insights/types.ts +0 -7
  305. package/front_end/panels/timeline/components/liveMetricsView.css +5 -5
  306. package/front_end/panels/timeline/components/timelineSummary.css +67 -0
  307. package/front_end/panels/timeline/docs/flame_chart_migration.md +1 -1
  308. package/front_end/panels/timeline/fixtures/traces/README.md +4 -0
  309. package/front_end/panels/timeline/fixtures/traces/image-delivery.json.gz +0 -0
  310. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +22 -0
  311. package/front_end/panels/timeline/timeline-meta.ts +1 -1
  312. package/front_end/panels/timeline/timelineFlamechartPopover.css +14 -4
  313. package/front_end/panels/timeline/timelineHistoryManager.css +7 -3
  314. package/front_end/panels/timeline/timelinePanel.css +0 -1
  315. package/front_end/panels/timeline/track_appenders/CompatibilityTracksAppender.test.ts +5 -5
  316. package/front_end/panels/timeline/track_appenders/ExtensionTrackAppender.test.ts +5 -6
  317. package/front_end/panels/timeline/track_appenders/LayoutShiftsTrackAppender.test.ts +11 -2
  318. package/front_end/panels/timeline/track_appenders/ServerTimingsTrackAppender.test.ts +0 -9
  319. package/front_end/panels/timeline/track_appenders/ThreadAppender.test.ts +37 -44
  320. package/front_end/panels/timeline/track_appenders/TimingsTrackAppender.test.ts +44 -30
  321. package/front_end/panels/timeline/utils/EntryName.ts +1 -2
  322. package/front_end/panels/timeline/utils/Helpers.ts +19 -0
  323. package/front_end/panels/timeline/utils/IgnoreList.test.ts +52 -0
  324. package/front_end/panels/timeline/utils/IgnoreList.ts +68 -7
  325. package/front_end/panels/timeline/utils/SourceMapsResolver.ts +2 -0
  326. package/front_end/panels/webauthn/webauthnPane.css +1 -1
  327. package/front_end/panels/whats_new/ReleaseNote.test.ts +90 -0
  328. package/front_end/panels/whats_new/ReleaseNoteText.ts +52 -0
  329. package/front_end/panels/whats_new/ReleaseNoteView.ts +157 -0
  330. package/front_end/panels/whats_new/WhatsNewImpl.ts +102 -0
  331. package/front_end/panels/whats_new/releaseNoteView.css +121 -0
  332. package/front_end/panels/whats_new/resources/WNDT.md +6 -0
  333. package/front_end/panels/whats_new/resources/whatsnew.avif +0 -0
  334. package/front_end/panels/whats_new/whats_new-meta.ts +142 -0
  335. package/front_end/panels/whats_new/whats_new.ts +13 -0
  336. package/front_end/services/puppeteer/PuppeteerConnection.ts +4 -3
  337. package/front_end/testing/EnvironmentHelpers.ts +1 -2
  338. package/front_end/testing/SourceMapEncoder.ts +27 -11
  339. package/front_end/testing/TraceHelpers.ts +2 -1
  340. package/front_end/testing/TraceLoader.ts +6 -2
  341. package/front_end/third_party/lighthouse/README.chromium +2 -2
  342. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1380 -1369
  343. package/front_end/third_party/lighthouse/locales/ar-XB.json +88 -85
  344. package/front_end/third_party/lighthouse/locales/ar.json +98 -95
  345. package/front_end/third_party/lighthouse/locales/bg.json +88 -85
  346. package/front_end/third_party/lighthouse/locales/ca.json +91 -88
  347. package/front_end/third_party/lighthouse/locales/cs.json +91 -88
  348. package/front_end/third_party/lighthouse/locales/da.json +94 -91
  349. package/front_end/third_party/lighthouse/locales/de.json +92 -89
  350. package/front_end/third_party/lighthouse/locales/el.json +92 -89
  351. package/front_end/third_party/lighthouse/locales/en-GB.json +89 -86
  352. package/front_end/third_party/lighthouse/locales/en-US.json +23 -20
  353. package/front_end/third_party/lighthouse/locales/en-XA.json +88 -85
  354. package/front_end/third_party/lighthouse/locales/en-XL.json +23 -20
  355. package/front_end/third_party/lighthouse/locales/es-419.json +92 -89
  356. package/front_end/third_party/lighthouse/locales/es.json +91 -88
  357. package/front_end/third_party/lighthouse/locales/fi.json +92 -89
  358. package/front_end/third_party/lighthouse/locales/fil.json +93 -90
  359. package/front_end/third_party/lighthouse/locales/fr.json +94 -91
  360. package/front_end/third_party/lighthouse/locales/he.json +97 -94
  361. package/front_end/third_party/lighthouse/locales/hi.json +92 -89
  362. package/front_end/third_party/lighthouse/locales/hr.json +90 -87
  363. package/front_end/third_party/lighthouse/locales/hu.json +90 -87
  364. package/front_end/third_party/lighthouse/locales/id.json +91 -88
  365. package/front_end/third_party/lighthouse/locales/it.json +90 -87
  366. package/front_end/third_party/lighthouse/locales/ja.json +90 -87
  367. package/front_end/third_party/lighthouse/locales/ko.json +90 -87
  368. package/front_end/third_party/lighthouse/locales/lt.json +90 -87
  369. package/front_end/third_party/lighthouse/locales/lv.json +91 -88
  370. package/front_end/third_party/lighthouse/locales/nl.json +90 -87
  371. package/front_end/third_party/lighthouse/locales/no.json +92 -89
  372. package/front_end/third_party/lighthouse/locales/pl.json +90 -87
  373. package/front_end/third_party/lighthouse/locales/pt-PT.json +111 -108
  374. package/front_end/third_party/lighthouse/locales/pt.json +97 -94
  375. package/front_end/third_party/lighthouse/locales/ro.json +94 -91
  376. package/front_end/third_party/lighthouse/locales/ru.json +93 -90
  377. package/front_end/third_party/lighthouse/locales/sk.json +93 -90
  378. package/front_end/third_party/lighthouse/locales/sl.json +91 -88
  379. package/front_end/third_party/lighthouse/locales/sr-Latn.json +91 -88
  380. package/front_end/third_party/lighthouse/locales/sr.json +91 -88
  381. package/front_end/third_party/lighthouse/locales/sv.json +92 -89
  382. package/front_end/third_party/lighthouse/locales/ta.json +101 -98
  383. package/front_end/third_party/lighthouse/locales/te.json +92 -89
  384. package/front_end/third_party/lighthouse/locales/th.json +95 -92
  385. package/front_end/third_party/lighthouse/locales/tr.json +91 -88
  386. package/front_end/third_party/lighthouse/locales/uk.json +93 -90
  387. package/front_end/third_party/lighthouse/locales/vi.json +95 -92
  388. package/front_end/third_party/lighthouse/locales/zh-HK.json +92 -89
  389. package/front_end/third_party/lighthouse/locales/zh-TW.json +98 -95
  390. package/front_end/third_party/lighthouse/locales/zh.json +96 -93
  391. package/front_end/third_party/puppeteer/README.chromium +2 -2
  392. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +8 -0
  393. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  394. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  395. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
  396. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +3 -1
  397. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
  398. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts +1 -0
  399. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  400. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js +1 -0
  401. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js.map +1 -1
  402. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +4 -0
  403. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  404. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  405. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +1 -0
  406. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  407. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +3 -0
  408. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  409. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +3 -2
  410. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  411. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +10 -4
  412. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  413. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  414. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +2 -2
  415. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
  416. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +2 -0
  417. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  418. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +7 -0
  419. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  420. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  421. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  422. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +3 -0
  423. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
  424. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.d.ts +1 -2
  425. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.d.ts.map +1 -1
  426. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js +4 -4
  427. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js.map +1 -1
  428. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  429. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js +24 -12
  430. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js.map +1 -1
  431. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +1 -0
  432. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  433. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +3 -0
  434. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  435. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +5 -0
  436. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  437. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.d.ts +30 -0
  438. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.d.ts.map +1 -0
  439. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.js +8 -0
  440. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.js.map +1 -0
  441. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts +1 -0
  442. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts.map +1 -1
  443. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
  444. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
  445. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  446. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  447. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +2 -2
  448. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  449. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  450. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  451. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  452. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  453. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +49 -0
  454. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +118 -88
  455. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +8 -0
  456. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  457. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  458. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
  459. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +3 -1
  460. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
  461. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts +1 -0
  462. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  463. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js +1 -0
  464. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js.map +1 -1
  465. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +4 -0
  466. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  467. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  468. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +1 -0
  469. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  470. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +3 -0
  471. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  472. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +3 -2
  473. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  474. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +10 -4
  475. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  476. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  477. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +2 -2
  478. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
  479. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +2 -0
  480. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  481. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +7 -0
  482. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  483. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  484. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  485. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +3 -0
  486. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
  487. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.d.ts +1 -2
  488. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.d.ts.map +1 -1
  489. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js +4 -4
  490. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js.map +1 -1
  491. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  492. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js +24 -12
  493. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js.map +1 -1
  494. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +1 -0
  495. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  496. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +3 -0
  497. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  498. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +5 -0
  499. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  500. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.d.ts +30 -0
  501. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.d.ts.map +1 -0
  502. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.js +7 -0
  503. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.js.map +1 -0
  504. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts +1 -0
  505. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts.map +1 -1
  506. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
  507. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
  508. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  509. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +2 -2
  510. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  511. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  512. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  513. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  514. package/front_end/third_party/puppeteer/package/lib/types.d.ts +49 -0
  515. package/front_end/third_party/puppeteer/package/package.json +3 -3
  516. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +8 -0
  517. package/front_end/third_party/puppeteer/package/src/api/Frame.ts +3 -1
  518. package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +1 -0
  519. package/front_end/third_party/puppeteer/package/src/api/Page.ts +5 -0
  520. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +4 -0
  521. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +11 -3
  522. package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -0
  523. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +11 -0
  524. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +4 -0
  525. package/front_end/third_party/puppeteer/package/src/cdp/HTTPResponse.ts +3 -5
  526. package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +34 -17
  527. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +4 -0
  528. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +5 -0
  529. package/front_end/third_party/puppeteer/package/src/common/DownloadBehavior.ts +31 -0
  530. package/front_end/third_party/puppeteer/package/src/common/common.ts +1 -0
  531. package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
  532. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +2 -0
  533. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  534. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
  535. package/front_end/ui/components/data_grid/DataGridControllerIntegrator.ts +4 -1
  536. package/front_end/ui/components/dialogs/ButtonDialog.test.ts +78 -0
  537. package/front_end/ui/components/dialogs/ButtonDialog.ts +131 -0
  538. package/front_end/ui/components/dialogs/Dialog.test.ts +43 -0
  539. package/front_end/ui/components/dialogs/Dialog.ts +64 -2
  540. package/front_end/ui/components/dialogs/ShortcutDialog.test.ts +15 -1
  541. package/front_end/ui/components/dialogs/ShortcutDialog.ts +28 -20
  542. package/front_end/ui/components/dialogs/buttonDialog.css +9 -0
  543. package/front_end/ui/components/dialogs/dialog.css +15 -0
  544. package/front_end/ui/components/dialogs/dialogs.ts +2 -0
  545. package/front_end/ui/components/dialogs/shortcutDialog.css +34 -6
  546. package/front_end/ui/components/docs/dialog/button_dialog.html +28 -0
  547. package/front_end/ui/components/docs/dialog/button_dialog.ts +29 -0
  548. package/front_end/ui/components/docs/performance_panel/basic.ts +1 -1
  549. package/front_end/ui/components/docs/performance_panel/timeline_history_manager.ts +6 -4
  550. package/front_end/ui/components/floating_button/FloatingButton.ts +3 -2
  551. package/front_end/ui/components/icon_button/fileSourceIcon.css +7 -3
  552. package/front_end/ui/components/issue_counter/IssueCounter.ts +15 -2
  553. package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -1
  554. package/front_end/ui/components/markdown_view/MarkdownView.ts +15 -0
  555. package/front_end/ui/components/markdown_view/markdownView.css +1 -1
  556. package/front_end/ui/components/render_coordinator/RenderCoordinator.ts +24 -18
  557. package/front_end/ui/components/switch/SwitchImpl.ts +2 -2
  558. package/front_end/ui/legacy/Infobar.ts +6 -0
  559. package/front_end/ui/legacy/InspectorView.ts +40 -0
  560. package/front_end/ui/legacy/ListWidget.ts +4 -2
  561. package/front_end/ui/legacy/ThrottledWidget.ts +2 -2
  562. package/front_end/ui/legacy/Toolbar.ts +3 -3
  563. package/front_end/ui/legacy/UIUtils.ts +8 -6
  564. package/front_end/ui/legacy/Widget.ts +32 -0
  565. package/front_end/ui/legacy/components/data_grid/DataGrid.test.ts +6 -9
  566. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +35 -34
  567. package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +1 -1
  568. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +2 -2
  569. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +1 -1
  570. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +32 -25
  571. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +18 -4
  572. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +80 -39
  573. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +4 -4
  574. package/front_end/ui/legacy/components/utils/jsUtils.css +8 -0
  575. package/front_end/ui/legacy/filter.css +1 -1
  576. package/front_end/ui/legacy/inspectorCommon.css +1 -1
  577. package/front_end/ui/legacy/listWidget.css +4 -1
  578. package/front_end/ui/legacy/reportView.css +1 -1
  579. package/front_end/ui/legacy/toolbar.css +3 -6
  580. package/front_end/ui/legacy/treeoutline.css +3 -1
  581. package/front_end/ui/visual_logging/KnownContextValues.ts +12 -1
  582. package/front_end/ui/visual_logging/LoggingDriver.test.ts +27 -1
  583. package/front_end/ui/visual_logging/LoggingDriver.ts +7 -4
  584. package/package.json +2 -3
  585. package/scripts/build/wasm-as.py +1 -1
  586. package/scripts/freestyler/auto_freestyler.js +12 -4
  587. package/scripts/freestyler/to_tsv.mjs +40 -0
  588. package/scripts/tools/update_goldens.py +11 -13
  589. package/front_end/panels/timeline/components/insights/SidebarInsight.test.ts +0 -72
  590. package/front_end/ui/components/docs/two_states_counter/basic.html +0 -27
  591. package/front_end/ui/components/docs/two_states_counter/basic.ts +0 -45
  592. package/front_end/ui/components/two_states_counter/TwoStatesCounter.test.ts +0 -73
  593. package/front_end/ui/components/two_states_counter/TwoStatesCounter.ts +0 -104
  594. package/front_end/ui/components/two_states_counter/twoStatesCounter.css +0 -37
  595. package/front_end/ui/components/two_states_counter/two_states_counter.ts +0 -9
@@ -39,7 +39,7 @@ import {
39
39
  selectionIsRange,
40
40
  type TimelineSelection,
41
41
  } from './TimelineSelection.js';
42
- import {AggregatedTimelineTreeView} from './TimelineTreeView.js';
42
+ import {AggregatedTimelineTreeView, TimelineTreeView} from './TimelineTreeView.js';
43
43
  import type {TimelineMarkerStyle} from './TimelineUIUtils.js';
44
44
 
45
45
  const UIStrings = {
@@ -53,8 +53,9 @@ const UIStrings = {
53
53
  const str_ = i18n.i18n.registerUIStrings('panels/timeline/TimelineFlameChartView.ts', UIStrings);
54
54
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
55
55
 
56
- export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.FlameChart.FlameChartDelegate,
57
- UI.SearchableView.Searchable {
56
+ export class TimelineFlameChartView extends
57
+ Common.ObjectWrapper.eventMixin<TimelineTreeView.EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox)
58
+ implements PerfUI.FlameChart.FlameChartDelegate, UI.SearchableView.Searchable {
58
59
  private readonly delegate: TimelineModeViewDelegate;
59
60
  /**
60
61
  * Tracks the indexes of matched entries when the user searches the panel.
@@ -165,6 +166,10 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
165
166
  this.mainDataProvider = new TimelineFlameChartDataProvider();
166
167
  this.mainDataProvider.addEventListener(
167
168
  TimelineFlameChartDataProviderEvents.DATA_CHANGED, () => this.mainFlameChart.scheduleUpdate());
169
+ this.mainDataProvider.addEventListener(
170
+ TimelineFlameChartDataProviderEvents.FLAME_CHART_ITEM_HOVERED,
171
+ e => this.detailsView.revealEventInTreeView(e.data));
172
+
168
173
  this.mainFlameChart = new PerfUI.FlameChart.FlameChart(this.mainDataProvider, this, {
169
174
  groupExpansionSetting: mainViewGroupExpansionSetting,
170
175
  // The TimelineOverlays are used for selected elements
@@ -312,6 +317,19 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
312
317
  PerfUI.FlameChart.Events.ENTRIES_LINK_ANNOTATION_CREATED, this.#onNetworkEntriesLinkAnnotationCreated, this);
313
318
  }
314
319
 
320
+ this.detailsView.addEventListener(TimelineTreeView.Events.TREE_ROW_HOVERED, node => {
321
+ if (!Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.TIMELINE_DIM_UNRELATED_EVENTS)) {
322
+ return;
323
+ }
324
+ const events = node?.data?.events;
325
+ if (events) {
326
+ this.#dimInsightRelatedEvents(events);
327
+ } else {
328
+ this.mainFlameChart.disableDimming();
329
+ this.networkFlameChart.disableDimming();
330
+ }
331
+ });
332
+
315
333
  /**
316
334
  * NOTE: ENTRY_SELECTED, ENTRY_INVOKED and ENTRY_HOVERED are not always super obvious:
317
335
  * ENTRY_SELECTED: is KEYBOARD ONLY selection of events (e.g. navigating through the flamechart with your arrow keys)
@@ -355,8 +373,8 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
355
373
 
356
374
  #dimInsightRelatedEvents(relatedEvents: Trace.Types.Events.Event[]): void {
357
375
  // Dim all events except those related to the active insight.
358
- const relevantMainEvents = relatedEvents.map(event => this.mainDataProvider.indexForEvent(event) ?? -1);
359
- const relevantNetworkEvents = relatedEvents.map(event => this.networkDataProvider.indexForEvent(event) ?? -1);
376
+ const relatedMainIndices = relatedEvents.map(event => this.mainDataProvider.indexForEvent(event) ?? -1);
377
+ const relatedNetworkIndices = relatedEvents.map(event => this.networkDataProvider.indexForEvent(event) ?? -1);
360
378
 
361
379
  // Further, overlays defining a trace bounds do not dim an event that falls within those bounds.
362
380
  for (const overlay of this.#currentInsightOverlays) {
@@ -382,15 +400,15 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
382
400
  if (overlayEvent) {
383
401
  if (this.mainDataProvider.indexForEvent(overlayEvent) !== null) {
384
402
  provider = this.mainDataProvider;
385
- relevantEvents = relevantMainEvents;
403
+ relevantEvents = relatedMainIndices;
386
404
  } else if (this.networkDataProvider.indexForEvent(overlayEvent) !== null) {
387
405
  provider = this.networkDataProvider;
388
- relevantEvents = relevantNetworkEvents;
406
+ relevantEvents = relatedNetworkIndices;
389
407
  }
390
408
  } else if (overlay.type === 'TIMESPAN_BREAKDOWN') {
391
409
  // For this overlay type, if there is no associated event it is rendered on mainFlameChart.
392
410
  provider = this.mainDataProvider;
393
- relevantEvents = relevantMainEvents;
411
+ relevantEvents = relatedMainIndices;
394
412
  }
395
413
 
396
414
  if (!provider || !relevantEvents) {
@@ -399,8 +417,8 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
399
417
 
400
418
  relevantEvents.push(...provider.search(bounds).map(r => r.index));
401
419
  }
402
- this.mainFlameChart.enableDimming(relevantMainEvents);
403
- this.networkFlameChart.enableDimming(relevantNetworkEvents);
420
+ this.mainFlameChart.enableDimming(relatedMainIndices);
421
+ this.networkFlameChart.enableDimming(relatedNetworkIndices);
404
422
  }
405
423
 
406
424
  setOverlays(overlays: Overlays.Overlays.TimelineOverlay[], options: Overlays.Overlays.TimelineOverlaySetOptions):
@@ -432,7 +450,7 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
432
450
  if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.TIMELINE_DIM_UNRELATED_EVENTS)) {
433
451
  // The insight's `relatedEvents` property likely already includes the events associated with
434
452
  // and overlay, but just in case not, include both arrays. Duplicates are fine.
435
- const relatedEvents = [...entries, ...this.#activeInsight?.relatedEvents || []];
453
+ const relatedEvents = [...entries, ...this.#activeInsight?.model.relatedEvents || []];
436
454
  this.#dimInsightRelatedEvents(relatedEvents);
437
455
  }
438
456
 
@@ -494,10 +512,7 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
494
512
  if (!this.#activeInsight) {
495
513
  this.mainFlameChart.disableDimming();
496
514
  this.networkFlameChart.disableDimming();
497
- return;
498
515
  }
499
-
500
- this.setOverlays(this.#activeInsight.overlays, {updateTraceWindow: true});
501
516
  }
502
517
 
503
518
  /**
@@ -1461,6 +1476,10 @@ export class TimelineFlameChartView extends UI.Widget.VBox implements PerfUI.Fla
1461
1476
  this.mainFlameChart.hideHighlight();
1462
1477
  }
1463
1478
  }
1479
+
1480
+ overlays(): Overlays.Overlays.Overlays {
1481
+ return this.#overlays;
1482
+ }
1464
1483
  }
1465
1484
 
1466
1485
  export class Selection {
@@ -22,11 +22,12 @@ describeWithEnvironment('TimelineHistoryManager', function() {
22
22
  afterEach(() => {
23
23
  UI.ActionRegistry.ActionRegistry.reset();
24
24
  Root.Runtime.experiments.disableForTest(Root.Runtime.ExperimentName.TIMELINE_OBSERVATIONS);
25
+ historyManager.cancelIfShowing();
25
26
  });
26
27
 
27
28
  it('shows the dropdown including a landing page link if the observations experiment is enabled', async function() {
28
29
  Root.Runtime.experiments.enableForTest(Root.Runtime.ExperimentName.TIMELINE_OBSERVATIONS);
29
- const {parsedTrace} = await TraceLoader.traceEngine(this, 'web-dev-with-commit.json.gz');
30
+ const {parsedTrace, metadata} = await TraceLoader.traceEngine(this, 'web-dev-with-commit.json.gz');
30
31
  historyManager.addRecording(
31
32
  {
32
33
  data: {
@@ -35,7 +36,7 @@ describeWithEnvironment('TimelineHistoryManager', function() {
35
36
  },
36
37
  filmStripForPreview: null,
37
38
  parsedTrace,
38
- startTime: null,
39
+ metadata,
39
40
  },
40
41
  );
41
42
 
@@ -48,7 +49,7 @@ describeWithEnvironment('TimelineHistoryManager', function() {
48
49
  const menuItemText = Array.from(dropdown.querySelectorAll<HTMLDivElement>('[role="menuitem"]'), elem => {
49
50
  return elem.innerText.replaceAll('\n', '');
50
51
  });
51
- assert.deepEqual(menuItemText, ['Live metrics', 'web.dev5.39 s']);
52
+ assert.deepEqual(menuItemText, ['Live metrics', 'web.dev1× slowdown, No throttling']);
52
53
 
53
54
  // Cancel the dropdown, which also resolves the show() promise, meaning we
54
55
  // don't leak it into other tests.
@@ -57,7 +58,7 @@ describeWithEnvironment('TimelineHistoryManager', function() {
57
58
  });
58
59
 
59
60
  it('does not show if observations experiment is disabled + the user has not imported 2 traces', async function() {
60
- const {parsedTrace} = await TraceLoader.traceEngine(this, 'web-dev-with-commit.json.gz');
61
+ const {parsedTrace, metadata} = await TraceLoader.traceEngine(this, 'web-dev-with-commit.json.gz');
61
62
  historyManager.addRecording(
62
63
  {
63
64
  data: {
@@ -66,7 +67,7 @@ describeWithEnvironment('TimelineHistoryManager', function() {
66
67
  },
67
68
  filmStripForPreview: null,
68
69
  parsedTrace,
69
- startTime: null,
70
+ metadata,
70
71
  },
71
72
  );
72
73
 
@@ -79,7 +80,8 @@ describeWithEnvironment('TimelineHistoryManager', function() {
79
80
  });
80
81
 
81
82
  it('does not show the landing page link if the observations experiment is disabled', async function() {
82
- const {parsedTrace: parsedTrace1} = await TraceLoader.traceEngine(this, 'web-dev-with-commit.json.gz');
83
+ const {parsedTrace: parsedTrace1, metadata: metadata1} =
84
+ await TraceLoader.traceEngine(this, 'web-dev-with-commit.json.gz');
83
85
  historyManager.addRecording(
84
86
  {
85
87
  data: {
@@ -88,10 +90,11 @@ describeWithEnvironment('TimelineHistoryManager', function() {
88
90
  },
89
91
  filmStripForPreview: null,
90
92
  parsedTrace: parsedTrace1,
91
- startTime: null,
93
+ metadata: metadata1,
92
94
  },
93
95
  );
94
- const {parsedTrace: parsedTrace2} = await TraceLoader.traceEngine(this, 'timings-track.json.gz');
96
+ const {parsedTrace: parsedTrace2, metadata: metadata2} =
97
+ await TraceLoader.traceEngine(this, 'timings-track.json.gz');
95
98
  historyManager.addRecording(
96
99
  {
97
100
  data: {
@@ -100,7 +103,7 @@ describeWithEnvironment('TimelineHistoryManager', function() {
100
103
  },
101
104
  filmStripForPreview: null,
102
105
  parsedTrace: parsedTrace2,
103
- startTime: null,
106
+ metadata: metadata2,
104
107
  },
105
108
  );
106
109
 
@@ -114,8 +117,8 @@ describeWithEnvironment('TimelineHistoryManager', function() {
114
117
  return elem.innerText.replaceAll('\n', '');
115
118
  });
116
119
  assert.deepEqual(menuItemText, [
117
- 'localhost3.16 s',
118
- 'web.dev5.39 s',
120
+ 'localhost',
121
+ 'web.dev1× slowdown, No throttling',
119
122
  ]);
120
123
 
121
124
  // Cancel the dropdown, which also resolves the show() promise, meaning we
@@ -126,7 +129,8 @@ describeWithEnvironment('TimelineHistoryManager', function() {
126
129
 
127
130
  it('can select from multiple parsed data objects', async function() {
128
131
  // Add two parsed data objects to the history manager.
129
- const {parsedTrace: trace1Data} = await TraceLoader.traceEngine(this, 'slow-interaction-button-click.json.gz');
132
+ const {parsedTrace: trace1Data, metadata: metadata1} =
133
+ await TraceLoader.traceEngine(this, 'slow-interaction-button-click.json.gz');
130
134
  historyManager.addRecording(
131
135
  {
132
136
  data: {
@@ -135,11 +139,12 @@ describeWithEnvironment('TimelineHistoryManager', function() {
135
139
  },
136
140
  filmStripForPreview: null,
137
141
  parsedTrace: trace1Data,
138
- startTime: null,
142
+ metadata: metadata1,
139
143
  },
140
144
  );
141
145
 
142
- const {parsedTrace: trace2Data} = await TraceLoader.traceEngine(this, 'slow-interaction-keydown.json.gz');
146
+ const {parsedTrace: trace2Data, metadata: metadata2} =
147
+ await TraceLoader.traceEngine(this, 'slow-interaction-keydown.json.gz');
143
148
  historyManager.addRecording({
144
149
  data: {
145
150
  parsedTraceIndex: 2,
@@ -147,7 +152,7 @@ describeWithEnvironment('TimelineHistoryManager', function() {
147
152
  },
148
153
  filmStripForPreview: null,
149
154
  parsedTrace: trace2Data,
150
- startTime: null,
155
+ metadata: metadata2,
151
156
  });
152
157
 
153
158
  // Make sure the correct model is returned when
@@ -7,7 +7,7 @@ import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as Platform from '../../core/platform/platform.js';
8
8
  import * as Root from '../../core/root/root.js';
9
9
  import * as CrUXManager from '../../models/crux-manager/crux-manager.js';
10
- import * as Trace from '../../models/trace/trace.js';
10
+ import type * as Trace from '../../models/trace/trace.js';
11
11
  import * as IconButton from '../../ui/components/icon_button/icon_button.js';
12
12
  import * as UI from '../../ui/legacy/legacy.js';
13
13
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -44,27 +44,6 @@ const UIStrings = {
44
44
  *@description Text that shows there is no recording
45
45
  */
46
46
  noRecordings: '(no recordings)',
47
- /**
48
- *@description Text in Timeline History Manager of the Performance panel
49
- *@example {2s} PH1
50
- */
51
- sAgo: '({PH1} ago)',
52
- /**
53
- *@description Text in Timeline History Manager of the Performance panel
54
- */
55
- moments: 'moments',
56
- /**
57
- * @description Text in Timeline History Manager of the Performance panel.
58
- * Placeholder is a number and the 'm' is the short form for 'minutes'.
59
- * @example {2} PH1
60
- */
61
- sM: '{PH1} m',
62
- /**
63
- * @description Text in Timeline History Manager of the Performance panel.
64
- * Placeholder is a number and the 'h' is the short form for 'hours'.
65
- * @example {2} PH1
66
- */
67
- sH: '{PH1} h',
68
47
  /**
69
48
  *@description Text in Timeline History Manager of the Performance panel
70
49
  *@example {example.com} PH1
@@ -75,6 +54,11 @@ const UIStrings = {
75
54
  *@description Accessible label for the timeline session selection menu
76
55
  */
77
56
  selectTimelineSession: 'Select timeline session',
57
+ /**
58
+ * @description Text label for a menu item indicating that a specific slowdown multiplier is applied.
59
+ * @example {2} PH1
60
+ */
61
+ dSlowdown: '{PH1}× slowdown',
78
62
  };
79
63
  const str_ = i18n.i18n.registerUIStrings('panels/timeline/TimelineHistoryManager.ts', UIStrings);
80
64
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -102,10 +86,24 @@ export interface NewHistoryRecordingData {
102
86
  filmStripForPreview: Trace.Extras.FilmStrip.Data|null;
103
87
  // Also not stored, but used to create the preview overview for a new trace.
104
88
  parsedTrace: Trace.Handlers.Types.ParsedTrace;
105
- // Used for the preview text
106
- startTime: number|null;
89
+ metadata: Trace.Types.File.MetaData|null;
107
90
  }
108
91
 
92
+ // Lazily instantiate the formatter as the constructor takes 50ms+
93
+ // TODO: move me and others like me to i18n module
94
+ const listFormatter = (function defineFormatter() {
95
+ let intlListFormat: Intl.ListFormat;
96
+ return {
97
+ format(...args: Parameters<Intl.ListFormat['format']>): ReturnType<Intl.ListFormat['format']> {
98
+ if (!intlListFormat) {
99
+ const opts: Intl.ListFormatOptions = {type: 'unit', style: 'short'};
100
+ intlListFormat = new Intl.ListFormat(i18n.DevToolsLocale.DevToolsLocale.instance().locale, opts);
101
+ }
102
+ return intlListFormat.format(...args);
103
+ },
104
+ };
105
+ })();
106
+
109
107
  export class TimelineHistoryManager {
110
108
  private recordings: TraceRecordingHistoryItem[];
111
109
  private readonly action: UI.ActionRegistration.Action;
@@ -195,7 +193,7 @@ export class TimelineHistoryManager {
195
193
 
196
194
  // Order is important: this needs to happen first because lots of the
197
195
  // subsequent code depends on us storing the preview data into the map.
198
- this.#buildAndStorePreviewData(newInput.data.parsedTraceIndex, newInput.parsedTrace, filmStrip, newInput.startTime);
196
+ this.#buildAndStorePreviewData(newInput.data.parsedTraceIndex, newInput.parsedTrace, newInput.metadata, filmStrip);
199
197
 
200
198
  const modelTitle = this.title(newInput.data);
201
199
  this.buttonInternal.setText(modelTitle);
@@ -232,7 +230,11 @@ export class TimelineHistoryManager {
232
230
  this.recordings = [];
233
231
  this.lastActiveTrace = null;
234
232
  this.updateState();
235
- this.buttonInternal.setText(i18nString(UIStrings.noRecordings));
233
+ if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.TIMELINE_OBSERVATIONS)) {
234
+ this.buttonInternal.setText(i18nString(UIStrings.landingPageTitle));
235
+ } else {
236
+ this.buttonInternal.setText(i18nString(UIStrings.noRecordings));
237
+ }
236
238
  this.nextNumberByDomain.clear();
237
239
  }
238
240
 
@@ -352,25 +354,9 @@ export class TimelineHistoryManager {
352
354
  if (!data) {
353
355
  throw new Error('Unable to find data for model');
354
356
  }
355
- const startedAt = data.startTime;
356
- data.time.textContent =
357
- startedAt ? i18nString(UIStrings.sAgo, {PH1: TimelineHistoryManager.coarseAge(startedAt)}) : '';
358
357
  return data.preview;
359
358
  }
360
359
 
361
- private static coarseAge(time: number): string {
362
- const seconds = Math.round((Date.now() - time) / 1000);
363
- if (seconds < 50) {
364
- return i18nString(UIStrings.moments);
365
- }
366
- const minutes = Math.round(seconds / 60);
367
- if (minutes < 50) {
368
- return i18nString(UIStrings.sM, {PH1: minutes});
369
- }
370
- const hours = Math.round(minutes / 60);
371
- return i18nString(UIStrings.sH, {PH1: hours});
372
- }
373
-
374
360
  private title(item: RecordingData): string {
375
361
  if (item.type === 'LANDING_PAGE') {
376
362
  return i18nString(UIStrings.landingPageTitle);
@@ -384,49 +370,51 @@ export class TimelineHistoryManager {
384
370
  }
385
371
 
386
372
  #buildAndStorePreviewData(
387
- parsedTraceIndex: number, parsedTrace: Trace.Handlers.Types.ParsedTrace,
388
- filmStrip: Trace.Extras.FilmStrip.Data|null, startTime: number|null): HTMLDivElement {
373
+ parsedTraceIndex: number, parsedTrace: Trace.Handlers.Types.ParsedTrace, metadata: Trace.Types.File.MetaData|null,
374
+ filmStrip: Trace.Extras.FilmStrip.Data|null): HTMLDivElement {
389
375
  const parsedURL = Common.ParsedURL.ParsedURL.fromString(parsedTrace.Meta.mainFrameURL);
390
376
  const domain = parsedURL ? parsedURL.host : '';
391
377
 
392
378
  const sequenceNumber = this.nextNumberByDomain.get(domain) || 1;
393
379
  const titleWithSequenceNumber = i18nString(UIStrings.sD, {PH1: domain, PH2: sequenceNumber});
394
380
  this.nextNumberByDomain.set(domain, sequenceNumber + 1);
395
- const timeElement = document.createElement('span');
396
- timeElement.classList.add('time');
397
381
 
398
382
  const preview = document.createElement('div');
399
383
  preview.classList.add('preview-item');
400
384
  preview.classList.add('vbox');
401
385
  preview.setAttribute('jslog', `${VisualLogging.dropDown('timeline.history-item').track({click: true})}`);
386
+ preview.style.width = `${previewWidth}px`;
402
387
  const data = {
403
388
  preview,
404
389
  title: titleWithSequenceNumber,
405
- time: timeElement,
406
390
  lastUsed: Date.now(),
407
- startTime,
408
391
  };
409
392
  parsedTraceIndexToPerformancePreviewData.set(parsedTraceIndex, data);
410
393
 
411
- preview.appendChild(this.#buildTextDetails(parsedTrace, domain, timeElement));
394
+ preview.appendChild(this.#buildTextDetails(metadata, domain));
412
395
  const screenshotAndOverview = preview.createChild('div', 'hbox');
413
396
  screenshotAndOverview.appendChild(this.#buildScreenshotThumbnail(filmStrip));
414
397
  screenshotAndOverview.appendChild(this.#buildOverview(parsedTrace));
415
398
  return data.preview;
416
399
  }
417
400
 
418
- #buildTextDetails(parsedTrace: Trace.Handlers.Types.ParsedTrace, title: string, timeElement: Element): Element {
401
+ #buildTextDetails(metadata: Trace.Types.File.MetaData|null, title: string): Element {
419
402
  const container = document.createElement('div');
420
403
  container.classList.add('text-details');
421
404
  container.classList.add('hbox');
422
405
  const nameSpan = container.createChild('span', 'name');
423
406
  nameSpan.textContent = title;
424
407
  UI.ARIAUtils.setLabel(nameSpan, title);
425
- const bounds = Trace.Helpers.Timing.traceWindowMilliSeconds(parsedTrace.Meta.traceBounds);
426
- const duration = i18n.TimeUtilities.millisToString(bounds.range, false);
427
- const timeContainer = container.createChild('span', 'time');
428
- timeContainer.appendChild(document.createTextNode(duration));
429
- timeContainer.appendChild(timeElement);
408
+
409
+ if (metadata) {
410
+ const parts = [
411
+ metadata.emulatedDeviceTitle,
412
+ metadata.cpuThrottling ? i18nString(UIStrings.dSlowdown, {PH1: metadata.cpuThrottling}) : undefined,
413
+ metadata.networkThrottling,
414
+ ].filter(Boolean);
415
+ container.createChild('span', 'metadata').textContent = listFormatter.format(parts as string[]);
416
+ }
417
+
430
418
  return container;
431
419
  }
432
420
 
@@ -482,16 +470,14 @@ export class TimelineHistoryManager {
482
470
  }
483
471
 
484
472
  export const maxRecordings = 5;
485
- export const previewWidth = 450;
473
+ export const previewWidth = 500;
486
474
  // The reason we store a global map is because the Dropdown component needs to
487
475
  // be able to read the preview data in order to show a preview in the dropdown.
488
476
  const parsedTraceIndexToPerformancePreviewData = new Map<number, PreviewData>();
489
477
 
490
478
  export interface PreviewData {
491
479
  preview: Element;
492
- time: Element;
493
480
  lastUsed: number;
494
- startTime: number|null;
495
481
  title: string;
496
482
  }
497
483
 
@@ -621,6 +607,8 @@ export class DropDown implements UI.ListControl.ListDelegate<number> {
621
607
  div.classList.add('preview-item');
622
608
  div.classList.add('landing-page-item');
623
609
 
610
+ div.style.width = `${previewWidth}px`;
611
+
624
612
  const icon = IconButton.Icon.create('arrow-back');
625
613
  div.appendChild(icon);
626
614
 
@@ -68,7 +68,7 @@ export class TimelineLayersView extends UI.SplitWidget.SplitWidget {
68
68
  }
69
69
  }
70
70
 
71
- private update(): void {
71
+ override update(): void {
72
72
  if (this.frameLayerTree) {
73
73
  void this.frameLayerTree.layerTreePromise().then(layerTree => this.layerViewHost.setLayerTree(layerTree));
74
74
  }
@@ -6,6 +6,7 @@ import * as Common from '../../core/common/common.js';
6
6
  import * as Host from '../../core/host/host.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
8
8
  import type * as Platform from '../../core/platform/platform.js';
9
+ import * as SDK from '../../core/sdk/sdk.js';
9
10
  import type * as Protocol from '../../generated/protocol.js';
10
11
  import * as Bindings from '../../models/bindings/bindings.js';
11
12
  import * as Trace from '../../models/trace/trace.js';
@@ -147,6 +148,21 @@ export class TimelineLoader implements Common.StringOutputStream.OutputStream {
147
148
 
148
149
  if ('metadata' in trace) {
149
150
  this.#metadata = trace.metadata;
151
+
152
+ // Older traces set these fields even when throttling is not active, while newer traces do not.
153
+ // Clear them out on load to simplify usage.
154
+ if (this.#metadata.cpuThrottling === 1) {
155
+ this.#metadata.cpuThrottling = undefined;
156
+ }
157
+ // This string is translated, so this only covers the english case and the current locale.
158
+ // Due to this, older traces in other locales will end up displaying "No throttling" in the trace history selector.
159
+ const noThrottlingString = typeof SDK.NetworkManager.NoThrottlingConditions.title === 'string' ?
160
+ SDK.NetworkManager.NoThrottlingConditions.title :
161
+ SDK.NetworkManager.NoThrottlingConditions.title();
162
+ if (this.#metadata.networkThrottling === 'No throttling' ||
163
+ this.#metadata.networkThrottling === noThrottlingString) {
164
+ this.#metadata.networkThrottling = undefined;
165
+ }
150
166
  }
151
167
  }
152
168
 
@@ -202,8 +202,8 @@ export class TimelineMiniMap extends
202
202
  };
203
203
  }
204
204
 
205
- highlightBounds(bounds: Trace.Types.Timing.TraceWindowMicroSeconds): void {
206
- this.#overviewComponent.highlightBounds(bounds);
205
+ highlightBounds(bounds: Trace.Types.Timing.TraceWindowMicroSeconds, withBracket: boolean = false): void {
206
+ this.#overviewComponent.highlightBounds(bounds, withBracket);
207
207
  }
208
208
  clearBoundsHighlight(): void {
209
209
  this.#overviewComponent.clearBoundsHighlight();
@@ -137,7 +137,7 @@ export class TimelinePaintProfilerView extends UI.SplitWidget.SplitWidget {
137
137
  return tracingLayerTree ? tracingLayerTree.pictureForRasterTile(data.tileId.id_ref) : null;
138
138
  }
139
139
 
140
- private update(): void {
140
+ override update(): void {
141
141
  this.logTreeView.setCommandLog([]);
142
142
  void this.paintProfilerView.setSnapshotAndLog(null, [], null);
143
143