chrome-devtools-frontend 1.0.1376716 → 1.0.1380117

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/config/gni/devtools_grd_files.gni +15 -7
  2. package/config/gni/devtools_image_files.gni +2 -0
  3. package/front_end/Images/src/animation.svg +3 -0
  4. package/front_end/Images/src/brush-2.svg +3 -0
  5. package/front_end/core/common/SettingRegistration.ts +1 -1
  6. package/front_end/core/host/AidaClient.ts +1 -0
  7. package/front_end/core/host/InspectorFrontendHost.ts +4 -0
  8. package/front_end/core/i18n/ByteUtilities.test.ts +34 -0
  9. package/front_end/core/i18n/ByteUtilities.ts +65 -0
  10. package/front_end/core/i18n/NumberFormatter.ts +75 -0
  11. package/front_end/core/i18n/i18n.ts +4 -0
  12. package/front_end/core/i18n/time-utilities.test.ts +20 -2
  13. package/front_end/core/i18n/time-utilities.ts +125 -86
  14. package/front_end/core/platform/NumberUtilities.test.ts +3 -26
  15. package/front_end/core/platform/NumberUtilities.ts +0 -20
  16. package/front_end/core/root/Runtime.ts +6 -3
  17. package/front_end/core/sdk/CPUThrottlingManager.ts +4 -0
  18. package/front_end/core/sdk/CSSContainerQuery.test.ts +10 -16
  19. package/front_end/core/sdk/CSSContainerQuery.ts +3 -15
  20. package/front_end/core/sdk/CSSMatchedStyles.test.ts +4 -0
  21. package/front_end/core/sdk/CSSMatchedStyles.ts +5 -5
  22. package/front_end/core/sdk/CSSModel.ts +18 -0
  23. package/front_end/core/sdk/CSSPropertyParser.test.ts +16 -1
  24. package/front_end/core/sdk/CSSPropertyParser.ts +2 -2
  25. package/front_end/core/sdk/sdk-meta.ts +8 -0
  26. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +3 -3
  27. package/front_end/generated/ARIAProperties.js +4 -0
  28. package/front_end/generated/InspectorBackendCommands.js +8 -6
  29. package/front_end/generated/SupportedCSSProperties.js +17 -4
  30. package/front_end/generated/protocol-mapping.d.ts +15 -1
  31. package/front_end/generated/protocol-proxy-api.d.ts +14 -1
  32. package/front_end/generated/protocol.ts +26 -2
  33. package/front_end/models/extensions/ExtensionAPI.ts +9 -1
  34. package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +2 -0
  35. package/front_end/models/javascript_metadata/NativeFunctions.js +8 -21
  36. package/front_end/models/live-metrics/web-vitals-injected/{rollup.config.js → rollup.config.mjs} +1 -1
  37. package/front_end/models/persistence/EditFileSystemView.ts +19 -9
  38. package/front_end/models/persistence/WorkspaceSettingsTab.ts +50 -54
  39. package/front_end/models/persistence/editFileSystemView.css +35 -15
  40. package/front_end/models/persistence/workspaceSettingsTab.css +21 -87
  41. package/front_end/models/timeline_model/timeline_model.ts +0 -6
  42. package/front_end/models/trace/Processor.test.ts +18 -17
  43. package/front_end/models/trace/Processor.ts +10 -14
  44. package/front_end/models/trace/README.md +0 -1
  45. package/front_end/models/{timeline_model → trace/extras}/TimelineJSProfile.ts +19 -29
  46. package/front_end/models/{timeline_model/TimelineModelFilter.test.ts → trace/extras/TraceFilter.test.ts} +15 -17
  47. package/front_end/models/trace/extras/TraceFilter.ts +62 -0
  48. package/front_end/models/{timeline_model/TimelineProfileTree.test.ts → trace/extras/TraceTree.test.ts} +44 -43
  49. package/front_end/models/{timeline_model/TimelineProfileTree.ts → trace/extras/TraceTree.ts} +65 -59
  50. package/front_end/models/trace/extras/extras.ts +3 -0
  51. package/front_end/models/trace/handlers/AnimationHandler.ts +0 -8
  52. package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -11
  53. package/front_end/models/trace/handlers/FramesHandler.test.ts +1 -6
  54. package/front_end/models/trace/handlers/FramesHandler.ts +1 -14
  55. package/front_end/models/trace/handlers/GPUHandler.test.ts +0 -2
  56. package/front_end/models/trace/handlers/GPUHandler.ts +1 -25
  57. package/front_end/models/trace/handlers/ImagePaintingHandler.ts +3 -0
  58. package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +0 -1
  59. package/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -20
  60. package/front_end/models/trace/handlers/InvalidationsHandler.test.ts +0 -1
  61. package/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -18
  62. package/front_end/models/trace/handlers/LargestImagePaintHandler.test.ts +2 -2
  63. package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +63 -3
  64. package/front_end/models/trace/handlers/LargestTextPaintHandler.ts +3 -0
  65. package/front_end/models/trace/handlers/LayerTreeHandler.test.ts +0 -2
  66. package/front_end/models/trace/handlers/LayerTreeHandler.ts +1 -18
  67. package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +0 -3
  68. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -20
  69. package/front_end/models/trace/handlers/MemoryHandler.test.ts +0 -1
  70. package/front_end/models/trace/handlers/MemoryHandler.ts +3 -0
  71. package/front_end/models/trace/handlers/MetaHandler.test.ts +1 -32
  72. package/front_end/models/trace/handlers/MetaHandler.ts +2 -30
  73. package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +0 -26
  74. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +4 -23
  75. package/front_end/models/trace/handlers/PageFramesHandler.ts +3 -0
  76. package/front_end/models/trace/handlers/RendererHandler.test.ts +0 -4
  77. package/front_end/models/trace/handlers/RendererHandler.ts +1 -24
  78. package/front_end/models/trace/handlers/SamplesHandler.test.ts +0 -5
  79. package/front_end/models/trace/handlers/SamplesHandler.ts +0 -26
  80. package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +0 -1
  81. package/front_end/models/trace/handlers/SelectorStatsHandler.ts +3 -0
  82. package/front_end/models/trace/handlers/ServerTimingsHandler.ts +1 -16
  83. package/front_end/models/trace/handlers/Threads.test.ts +1 -2
  84. package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -27
  85. package/front_end/models/trace/handlers/UserInteractionsHandler.ts +16 -25
  86. package/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -17
  87. package/front_end/models/trace/handlers/WorkersHandler.test.ts +0 -1
  88. package/front_end/models/trace/handlers/WorkersHandler.ts +0 -23
  89. package/front_end/models/trace/handlers/types.ts +1 -8
  90. package/front_end/models/trace/insights/{CumulativeLayoutShift.test.ts → CLSCulprits.test.ts} +21 -21
  91. package/front_end/models/trace/insights/{CumulativeLayoutShift.ts → CLSCulprits.ts} +24 -5
  92. package/front_end/models/trace/insights/Common.ts +5 -55
  93. package/front_end/models/trace/insights/DocumentLatency.test.ts +2 -2
  94. package/front_end/models/trace/insights/DocumentLatency.ts +26 -6
  95. package/front_end/models/trace/insights/FontDisplay.ts +24 -5
  96. package/front_end/models/trace/insights/InteractionToNextPaint.test.ts +1 -1
  97. package/front_end/models/trace/insights/InteractionToNextPaint.ts +26 -6
  98. package/front_end/models/trace/insights/LCPDiscovery.test.ts +58 -0
  99. package/front_end/models/trace/insights/LCPDiscovery.ts +101 -0
  100. package/front_end/models/trace/insights/{LargestContentfulPaint.test.ts → LCPPhases.test.ts} +6 -28
  101. package/front_end/models/trace/insights/{LargestContentfulPaint.ts → LCPPhases.ts} +37 -38
  102. package/front_end/models/trace/insights/{InsightRunners.ts → Models.ts} +4 -3
  103. package/front_end/models/trace/insights/RenderBlocking.test.ts +1 -1
  104. package/front_end/models/trace/insights/RenderBlocking.ts +33 -28
  105. package/front_end/models/trace/insights/SlowCSSSelector.ts +26 -5
  106. package/front_end/models/trace/insights/{ThirdPartyWeb.test.ts → ThirdParties.test.ts} +3 -3
  107. package/front_end/models/trace/insights/{ThirdPartyWeb.ts → ThirdParties.ts} +24 -5
  108. package/front_end/models/trace/insights/Viewport.test.ts +1 -1
  109. package/front_end/models/trace/insights/Viewport.ts +27 -9
  110. package/front_end/models/trace/insights/insights.ts +1 -1
  111. package/front_end/models/trace/insights/types.ts +11 -9
  112. package/front_end/models/trace/types/TraceEvents.ts +51 -22
  113. package/front_end/panels/application/SharedStorageItemsView.test.ts +3 -3
  114. package/front_end/panels/application/SharedStorageItemsView.ts +5 -3
  115. package/front_end/panels/application/StorageView.ts +3 -3
  116. package/front_end/panels/application/components/StorageMetadataView.ts +1 -2
  117. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +34 -31
  118. package/front_end/panels/coverage/CoverageView.ts +3 -3
  119. package/front_end/panels/elements/ComputedStyleModel.ts +9 -2
  120. package/front_end/panels/elements/ComputedStyleWidget.test.ts +72 -0
  121. package/front_end/panels/elements/ComputedStyleWidget.ts +12 -0
  122. package/front_end/panels/elements/ElementStatePaneWidget.test.ts +84 -30
  123. package/front_end/panels/elements/ElementStatePaneWidget.ts +42 -24
  124. package/front_end/panels/elements/ElementsTreeElement.ts +24 -11
  125. package/front_end/panels/elements/MetricsSidebarPane.ts +12 -7
  126. package/front_end/panels/elements/PropertyMatchers.ts +3 -0
  127. package/front_end/panels/elements/StylePropertiesSection.ts +15 -6
  128. package/front_end/panels/elements/StylePropertyTreeElement.test.ts +3 -1
  129. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
  130. package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
  131. package/front_end/panels/explain/components/ConsoleInsight.ts +8 -18
  132. package/front_end/panels/freestyler/AiAgent.test.ts +58 -1
  133. package/front_end/panels/freestyler/AiAgent.ts +58 -3
  134. package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +99 -23
  135. package/front_end/panels/freestyler/DrJonesFileAgent.ts +53 -20
  136. package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +15 -7
  137. package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +36 -15
  138. package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +6 -6
  139. package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +48 -8
  140. package/front_end/panels/freestyler/FreestylerAgent.test.ts +15 -14
  141. package/front_end/panels/freestyler/FreestylerAgent.ts +52 -8
  142. package/front_end/panels/freestyler/FreestylerPanel.test.ts +539 -39
  143. package/front_end/panels/freestyler/FreestylerPanel.ts +349 -215
  144. package/front_end/panels/freestyler/components/FreestylerChatUi.test.ts +126 -34
  145. package/front_end/panels/freestyler/components/FreestylerChatUi.ts +320 -268
  146. package/front_end/panels/freestyler/components/UserActionRow.ts +156 -47
  147. package/front_end/panels/freestyler/components/freestylerChatUi.css +69 -34
  148. package/front_end/panels/freestyler/components/userActionRow.css +40 -67
  149. package/front_end/panels/freestyler/freestyler-meta.ts +3 -11
  150. package/front_end/panels/issues/components/HideIssuesMenu.ts +2 -11
  151. package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -2
  152. package/front_end/panels/layer_viewer/PaintProfilerView.ts +5 -5
  153. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +46 -0
  154. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +26 -17
  155. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +25 -19
  156. package/front_end/panels/network/BinaryResourceView.ts +6 -7
  157. package/front_end/panels/network/EventSourceMessagesView.ts +1 -1
  158. package/front_end/panels/network/NetworkDataGridNode.ts +3 -3
  159. package/front_end/panels/network/NetworkLogView.ts +7 -8
  160. package/front_end/panels/network/RequestTimingView.test.ts +35 -1
  161. package/front_end/panels/network/RequestTimingView.ts +96 -0
  162. package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -2
  163. package/front_end/panels/network/networkTimingTable.css +2 -1
  164. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
  165. package/front_end/panels/profiler/HeapProfileView.ts +3 -3
  166. package/front_end/panels/profiler/HeapSnapshotView.ts +2 -2
  167. package/front_end/panels/profiler/HeapTimelineOverview.ts +12 -12
  168. package/front_end/panels/profiler/IsolateSelector.ts +3 -4
  169. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +1 -1
  170. package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +7 -6
  171. package/front_end/panels/profiler/ProfileView.ts +1 -1
  172. package/front_end/panels/recorder/components/RecordingView.ts +2 -2
  173. package/front_end/panels/recorder/injected/{rollup.config.js → rollup.config.mjs} +1 -1
  174. package/front_end/panels/recorder/recorderController.css +0 -4
  175. package/front_end/panels/security/CookieReportTreeElement.ts +1 -9
  176. package/front_end/panels/security/CookieReportView.ts +120 -0
  177. package/front_end/panels/security/SecurityPanel.ts +8 -2
  178. package/front_end/panels/security/cookieReportView.css +46 -0
  179. package/front_end/panels/security/sidebar.css +1 -2
  180. package/front_end/panels/sensors/LocationsSettingsTab.ts +26 -11
  181. package/front_end/panels/sensors/locationsSettingsTab.css +18 -18
  182. package/front_end/panels/settings/AISettingsTab.ts +6 -15
  183. package/front_end/panels/settings/KeybindsSettingsTab.ts +1 -1
  184. package/front_end/panels/settings/SettingsScreen.ts +61 -56
  185. package/front_end/panels/settings/aiSettingsTab.css +3 -14
  186. package/front_end/panels/settings/components/SyncSection.ts +1 -2
  187. package/front_end/panels/settings/components/syncSection.css +0 -10
  188. package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +3 -1
  189. package/front_end/panels/settings/keybindsSettingsTab.css +7 -10
  190. package/front_end/panels/settings/settingsScreen.css +27 -125
  191. package/front_end/panels/sources/DebuggerPlugin.ts +9 -4
  192. package/front_end/panels/sources/NavigatorView.ts +11 -13
  193. package/front_end/panels/timeline/ActiveFilters.ts +3 -4
  194. package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -2
  195. package/front_end/panels/timeline/CountersGraph.ts +2 -4
  196. package/front_end/panels/timeline/EventsTimelineTreeView.ts +7 -8
  197. package/front_end/panels/timeline/README.md +2 -1
  198. package/front_end/panels/timeline/TimelineController.ts +14 -4
  199. package/front_end/panels/timeline/TimelineEventOverview.ts +3 -4
  200. package/front_end/panels/timeline/TimelineFilters.ts +3 -4
  201. package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +1 -1
  202. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -10
  203. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -2
  204. package/front_end/panels/timeline/TimelineFlameChartView.ts +21 -12
  205. package/front_end/panels/timeline/TimelineLoader.test.ts +1 -2
  206. package/front_end/panels/timeline/TimelineLoader.ts +3 -4
  207. package/front_end/panels/timeline/TimelineMiniMap.ts +10 -0
  208. package/front_end/panels/timeline/TimelinePanel.ts +20 -8
  209. package/front_end/panels/timeline/TimelineTreeView.test.ts +12 -13
  210. package/front_end/panels/timeline/TimelineTreeView.ts +35 -40
  211. package/front_end/panels/timeline/TimelineUIUtils.test.ts +2 -2
  212. package/front_end/panels/timeline/TimelineUIUtils.ts +12 -14
  213. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +6 -7
  214. package/front_end/panels/timeline/components/LiveMetricsView.test.ts +3 -3
  215. package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -26
  216. package/front_end/panels/timeline/components/MetricCard.test.ts +1 -1
  217. package/front_end/panels/timeline/components/MetricCard.ts +46 -0
  218. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +3 -4
  219. package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +2 -0
  220. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +41 -36
  221. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +19 -33
  222. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +29 -40
  223. package/front_end/panels/timeline/components/insights/FontDisplay.ts +17 -23
  224. package/front_end/panels/timeline/components/insights/Helpers.ts +12 -16
  225. package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +14 -26
  226. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +25 -37
  227. package/front_end/panels/timeline/components/insights/LCPPhases.ts +20 -47
  228. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +19 -28
  229. package/front_end/panels/timeline/components/insights/SidebarInsight.ts +1 -2
  230. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +18 -31
  231. package/front_end/panels/timeline/components/insights/Table.ts +5 -3
  232. package/front_end/panels/timeline/components/insights/ThirdParties.ts +18 -25
  233. package/front_end/panels/timeline/components/insights/Viewport.ts +14 -25
  234. package/front_end/panels/timeline/components/liveMetricsView.css +5 -13
  235. package/front_end/panels/timeline/components/metricCard.css +11 -0
  236. package/front_end/panels/timeline/components/sidebarInsightsTab.css +1 -1
  237. package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +5 -5
  238. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +13 -12
  239. package/front_end/panels/timeline/timelineFlameChartView.css +1 -1
  240. package/front_end/panels/timeline/utils/AICallTree.test.ts +105 -0
  241. package/front_end/panels/timeline/utils/AICallTree.ts +25 -24
  242. package/front_end/testing/EnvironmentHelpers.ts +5 -18
  243. package/front_end/testing/InsightHelpers.ts +4 -4
  244. package/front_end/testing/TraceHelpers.ts +1 -1
  245. package/front_end/third_party/puppeteer/README.chromium +2 -2
  246. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +2 -3
  247. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  248. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts +14 -3
  250. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
  251. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +16 -2
  252. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts +34 -5
  254. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js +51 -2
  256. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js.map +1 -1
  257. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  258. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +10 -8
  259. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -1
  260. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +1 -1
  262. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts +14 -4
  264. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js +57 -23
  266. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts +1 -1
  268. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  269. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +13 -10
  270. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
  271. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts +15 -4
  272. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts.map +1 -1
  273. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js +55 -26
  274. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js.map +1 -1
  275. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +0 -8
  276. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  277. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +2 -11
  278. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
  279. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +2 -1
  280. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
  281. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js +5 -2
  282. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
  283. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +7 -0
  284. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
  285. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +9 -1
  286. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
  287. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.d.ts.map +1 -1
  288. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js +5 -3
  289. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js.map +1 -1
  290. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +1 -1
  291. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
  292. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js +0 -3
  293. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js.map +1 -1
  294. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  295. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
  296. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
  297. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
  298. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  299. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  300. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  301. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  302. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  303. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts +14 -0
  304. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
  305. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js +18 -0
  306. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js.map +1 -0
  307. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +51 -10
  308. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +215 -97
  309. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +2 -3
  310. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  311. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  312. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts +14 -3
  313. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
  314. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +16 -2
  315. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
  316. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +34 -5
  317. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
  318. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js +51 -2
  319. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js.map +1 -1
  320. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
  321. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +10 -8
  322. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -1
  323. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  324. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +1 -1
  325. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  326. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts +14 -4
  327. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts.map +1 -1
  328. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js +57 -23
  329. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js.map +1 -1
  330. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts +1 -1
  331. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
  332. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +13 -10
  333. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
  334. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts +15 -4
  335. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts.map +1 -1
  336. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js +55 -26
  337. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js.map +1 -1
  338. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +0 -8
  339. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  340. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +1 -9
  341. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
  342. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +2 -1
  343. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
  344. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +5 -2
  345. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
  346. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +7 -0
  347. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
  348. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +7 -0
  349. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
  350. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.d.ts.map +1 -1
  351. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js +5 -3
  352. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js.map +1 -1
  353. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +1 -1
  354. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
  355. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +0 -3
  356. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js.map +1 -1
  357. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  358. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
  359. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
  360. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
  361. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  362. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  363. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  364. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts +14 -0
  365. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
  366. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js +15 -0
  367. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js.map +1 -0
  368. package/front_end/third_party/puppeteer/package/lib/types.d.ts +51 -10
  369. package/front_end/third_party/puppeteer/package/package.json +4 -4
  370. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +2 -3
  371. package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +21 -3
  372. package/front_end/third_party/puppeteer/package/src/api/Input.ts +57 -8
  373. package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +9 -7
  374. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -0
  375. package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +72 -31
  376. package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +14 -9
  377. package/front_end/third_party/puppeteer/package/src/cdp/Input.ts +71 -26
  378. package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +1 -15
  379. package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +8 -1
  380. package/front_end/third_party/puppeteer/package/src/common/Errors.ts +7 -0
  381. package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +9 -9
  382. package/front_end/third_party/puppeteer/package/src/environment.ts +1 -4
  383. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  384. package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
  385. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  386. package/front_end/third_party/puppeteer/package/src/util/incremental-id-generator.ts +20 -0
  387. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
  388. package/front_end/ui/components/buttons/Button.test.ts +14 -0
  389. package/front_end/ui/components/buttons/Button.ts +27 -4
  390. package/front_end/ui/components/cards/card.css +7 -4
  391. package/front_end/ui/components/dialogs/Dialog.ts +2 -4
  392. package/front_end/ui/components/dialogs/ShortcutDialog.ts +15 -13
  393. package/front_end/ui/components/dialogs/dialog.css +2 -6
  394. package/front_end/ui/components/dialogs/shortcutDialog.css +33 -41
  395. package/front_end/ui/components/docs/freestyler/basic.ts +6 -8
  396. package/front_end/ui/components/docs/freestyler/empty_state.ts +6 -8
  397. package/front_end/ui/components/docs/performance_panel/track_example.html +1 -1
  398. package/front_end/ui/components/markdown_view/MarkdownView.test.ts +39 -17
  399. package/front_end/ui/components/markdown_view/MarkdownView.ts +77 -14
  400. package/front_end/ui/components/markdown_view/markdownView.css +15 -0
  401. package/front_end/ui/components/settings/SettingCheckbox.ts +3 -2
  402. package/front_end/ui/legacy/ContextMenu.ts +2 -2
  403. package/front_end/ui/legacy/InplaceEditor.ts +18 -14
  404. package/front_end/ui/legacy/TabbedPane.ts +0 -14
  405. package/front_end/ui/legacy/UIUtils.ts +0 -7
  406. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +7 -2
  407. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +8 -4
  408. package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +20 -11
  409. package/front_end/ui/legacy/components/inline_editor/LinkSwatch.test.ts +19 -0
  410. package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +1 -1
  411. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -1
  412. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +5 -22
  413. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +129 -100
  414. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +4 -2
  415. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.test.ts +9 -4
  416. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +6 -6
  417. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +22 -4
  418. package/front_end/ui/legacy/components/perf_ui/flameChart.css +0 -2
  419. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +49 -0
  420. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +23 -46
  421. package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
  422. package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
  423. package/front_end/ui/legacy/textPrompt.css +1 -1
  424. package/front_end/ui/legacy/toolbar.css +4 -5
  425. package/front_end/ui/visual_logging/KnownContextValues.ts +174 -0
  426. package/front_end/ui/visual_logging/LoggingConfig.ts +6 -2
  427. package/package.json +7 -6
  428. package/scripts/build/ninja/bundle.gni +3 -3
  429. package/scripts/build/{rollup.config.js → rollup.config.mjs} +4 -4
  430. package/scripts/devtools_paths.py +8 -4
  431. package/scripts/eslint_rules/tests/check_test_definitions_test.js +8 -3
  432. package/scripts/tools/update_goldens_v2.py +1 -1
  433. package/front_end/models/timeline_model/TimelineModelFilter.ts +0 -61
  434. /package/front_end/Images/{rollup.config.js → rollup.config.mjs} +0 -0
@@ -36,6 +36,7 @@ grd_files_release_sources = [
36
36
  "front_end/Images/align-self-end.svg",
37
37
  "front_end/Images/align-self-start.svg",
38
38
  "front_end/Images/align-self-stretch.svg",
39
+ "front_end/Images/animation.svg",
39
40
  "front_end/Images/arrow-back.svg",
40
41
  "front_end/Images/arrow-down.svg",
41
42
  "front_end/Images/arrow-drop-down-dark.svg",
@@ -54,6 +55,7 @@ grd_files_release_sources = [
54
55
  "front_end/Images/breakpoint-circle.svg",
55
56
  "front_end/Images/breakpoint-crossed-filled.svg",
56
57
  "front_end/Images/breakpoint-crossed.svg",
58
+ "front_end/Images/brush-2.svg",
57
59
  "front_end/Images/brush-filled.svg",
58
60
  "front_end/Images/brush.svg",
59
61
  "front_end/Images/bug.svg",
@@ -777,7 +779,9 @@ grd_files_debug_sources = [
777
779
  "front_end/core/host/Platform.js",
778
780
  "front_end/core/host/ResourceLoader.js",
779
781
  "front_end/core/host/UserMetrics.js",
782
+ "front_end/core/i18n/ByteUtilities.js",
780
783
  "front_end/core/i18n/DevToolsLocale.js",
784
+ "front_end/core/i18n/NumberFormatter.js",
781
785
  "front_end/core/i18n/i18nImpl.js",
782
786
  "front_end/core/i18n/i18nTypes.js",
783
787
  "front_end/core/i18n/locales.js",
@@ -1025,9 +1029,6 @@ grd_files_debug_sources = [
1025
1029
  "front_end/models/text_utils/TextRange.js",
1026
1030
  "front_end/models/text_utils/TextUtils.js",
1027
1031
  "front_end/models/text_utils/WasmDisassembly.js",
1028
- "front_end/models/timeline_model/TimelineJSProfile.js",
1029
- "front_end/models/timeline_model/TimelineModelFilter.js",
1030
- "front_end/models/timeline_model/TimelineProfileTree.js",
1031
1032
  "front_end/models/timeline_model/TracingLayerTree.js",
1032
1033
  "front_end/models/trace/LanternComputationData.js",
1033
1034
  "front_end/models/trace/ModelImpl.js",
@@ -1038,6 +1039,9 @@ grd_files_debug_sources = [
1038
1039
  "front_end/models/trace/extras/MainThreadActivity.js",
1039
1040
  "front_end/models/trace/extras/Metadata.js",
1040
1041
  "front_end/models/trace/extras/ThirdParties.js",
1042
+ "front_end/models/trace/extras/TimelineJSProfile.js",
1043
+ "front_end/models/trace/extras/TraceFilter.js",
1044
+ "front_end/models/trace/extras/TraceTree.js",
1041
1045
  "front_end/models/trace/extras/URLForEntry.js",
1042
1046
  "front_end/models/trace/handlers/AnimationHandler.js",
1043
1047
  "front_end/models/trace/handlers/AuctionWorkletsHandler.js",
@@ -1075,16 +1079,17 @@ grd_files_debug_sources = [
1075
1079
  "front_end/models/trace/helpers/Timing.js",
1076
1080
  "front_end/models/trace/helpers/Trace.js",
1077
1081
  "front_end/models/trace/helpers/TreeHelpers.js",
1082
+ "front_end/models/trace/insights/CLSCulprits.js",
1078
1083
  "front_end/models/trace/insights/Common.js",
1079
- "front_end/models/trace/insights/CumulativeLayoutShift.js",
1080
1084
  "front_end/models/trace/insights/DocumentLatency.js",
1081
1085
  "front_end/models/trace/insights/FontDisplay.js",
1082
- "front_end/models/trace/insights/InsightRunners.js",
1083
1086
  "front_end/models/trace/insights/InteractionToNextPaint.js",
1084
- "front_end/models/trace/insights/LargestContentfulPaint.js",
1087
+ "front_end/models/trace/insights/LCPDiscovery.js",
1088
+ "front_end/models/trace/insights/LCPPhases.js",
1089
+ "front_end/models/trace/insights/Models.js",
1085
1090
  "front_end/models/trace/insights/RenderBlocking.js",
1086
1091
  "front_end/models/trace/insights/SlowCSSSelector.js",
1087
- "front_end/models/trace/insights/ThirdPartyWeb.js",
1092
+ "front_end/models/trace/insights/ThirdParties.js",
1088
1093
  "front_end/models/trace/insights/Viewport.js",
1089
1094
  "front_end/models/trace/insights/types.js",
1090
1095
  "front_end/models/trace/lantern/core/LanternError.js",
@@ -1670,11 +1675,13 @@ grd_files_debug_sources = [
1670
1675
  "front_end/panels/search/searchResultsPane.css.js",
1671
1676
  "front_end/panels/search/searchView.css.js",
1672
1677
  "front_end/panels/security/CookieReportTreeElement.js",
1678
+ "front_end/panels/security/CookieReportView.js",
1673
1679
  "front_end/panels/security/OriginTreeElement.js",
1674
1680
  "front_end/panels/security/SecurityModel.js",
1675
1681
  "front_end/panels/security/SecurityPanel.js",
1676
1682
  "front_end/panels/security/SecurityPanelSidebar.js",
1677
1683
  "front_end/panels/security/SecurityPanelSidebarTreeElement.js",
1684
+ "front_end/panels/security/cookieReportView.css.js",
1678
1685
  "front_end/panels/security/lockIcon.css.js",
1679
1686
  "front_end/panels/security/mainView.css.js",
1680
1687
  "front_end/panels/security/originView.css.js",
@@ -2089,6 +2096,7 @@ grd_files_debug_sources = [
2089
2096
  "front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/decorators.js",
2090
2097
  "front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.js",
2091
2098
  "front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/encoding.js",
2099
+ "front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js",
2092
2100
  "front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.js",
2093
2101
  "front_end/third_party/puppeteer/package/lib/esm/third_party/mitt/mitt.js",
2094
2102
  "front_end/third_party/puppeteer/package/lib/esm/third_party/parsel-js/parsel-js.js",
@@ -43,6 +43,7 @@ devtools_svg_sources = [
43
43
  "align-self-end.svg",
44
44
  "align-self-start.svg",
45
45
  "align-self-stretch.svg",
46
+ "animation.svg",
46
47
  "arrow-back.svg",
47
48
  "arrow-down.svg",
48
49
  "arrow-drop-down-dark.svg",
@@ -61,6 +62,7 @@ devtools_svg_sources = [
61
62
  "breakpoint-circle.svg",
62
63
  "breakpoint-crossed-filled.svg",
63
64
  "breakpoint-crossed.svg",
65
+ "brush-2.svg",
64
66
  "brush-filled.svg",
65
67
  "brush.svg",
66
68
  "bug.svg",
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7.5 18C6.75 18 6.04514 17.8646 5.38542 17.5938C4.72569 17.3229 4.13194 16.9236 3.60417 16.3958C3.07639 15.8681 2.67708 15.2743 2.40625 14.6146C2.13542 13.9549 2 13.25 2 12.5C2 11.4444 2.27083 10.4757 2.8125 9.59375C3.35417 8.71181 4.10417 8.03472 5.0625 7.5625C5.29861 7.04861 5.63542 6.57292 6.07292 6.13542C6.51042 5.69792 7.00694 5.34028 7.5625 5.0625C8.03472 4.11806 8.71181 3.37153 9.59375 2.82292C10.4757 2.27431 11.4444 2 12.5 2C13.25 2 13.9549 2.13542 14.6146 2.40625C15.2743 2.67708 15.8681 3.07639 16.3958 3.60417C16.9236 4.13194 17.3229 4.72569 17.5938 5.38542C17.8646 6.04514 18 6.75 18 7.5C18 8.56944 17.7326 9.53819 17.1979 10.4063C16.6632 11.2743 15.9097 11.9514 14.9375 12.4375C14.6736 12.9931 14.3229 13.4861 13.8854 13.9167C13.4479 14.3472 12.9653 14.6875 12.4375 14.9375C11.9514 15.8819 11.2674 16.6285 10.3854 17.1771C9.50347 17.7257 8.54167 18 7.5 18ZM7.5 16.5C7.95833 16.5 8.42014 16.4132 8.88542 16.2396C9.35069 16.066 9.76389 15.8194 10.125 15.5C9.36111 15.5278 8.63542 15.3993 7.94792 15.1146C7.26042 14.8299 6.64583 14.4167 6.10417 13.875C5.5625 13.3333 5.15278 12.7222 4.875 12.0417C4.59722 11.3611 4.47222 10.6389 4.5 9.875C4.18056 10.2361 3.93403 10.6493 3.76042 11.1146C3.58681 11.5799 3.5 12.0417 3.5 12.5C3.5 13.0417 3.59722 13.5486 3.79167 14.0208C3.98611 14.4931 4.27778 14.9236 4.66667 15.3125C5.05556 15.7014 5.48958 15.9965 5.96875 16.1979C6.44792 16.3993 6.95833 16.5 7.5 16.5ZM10 14C10.4722 14 10.9375 13.9132 11.3958 13.7396C11.8542 13.566 12.2708 13.3194 12.6458 13C11.8958 13.0278 11.1736 12.9028 10.4792 12.625C9.78472 12.3472 9.15972 11.9306 8.60417 11.375C8.04861 10.8194 7.63542 10.2049 7.36458 9.53125C7.09375 8.85764 6.97222 8.13889 7 7.375C6.68056 7.73611 6.43403 8.14236 6.26042 8.59375C6.08681 9.04514 6 9.51389 6 10C6 10.5417 6.09722 11.0486 6.29167 11.5208C6.48611 11.9931 6.77778 12.4236 7.16667 12.8125C7.55556 13.2014 7.98958 13.4965 8.46875 13.6979C8.94792 13.8993 9.45833 14 10 14ZM12.4375 11.4792C12.6736 11.4792 12.9063 11.4618 13.1354 11.4271C13.3646 11.3924 13.5764 11.3403 13.7708 11.2708C14.0208 10.5347 14.0625 9.80208 13.8958 9.07292C13.7292 8.34375 13.375 7.70833 12.8333 7.16667C12.2917 6.625 11.6563 6.27083 10.9271 6.10417C10.1979 5.9375 9.46528 5.97917 8.72917 6.22917C8.65972 6.42361 8.60764 6.63542 8.57292 6.86458C8.53819 7.09375 8.52083 7.32639 8.52083 7.5625C8.52083 8.07639 8.62153 8.56944 8.82292 9.04167C9.02431 9.51389 9.30556 9.93056 9.66667 10.2917C10.0417 10.6667 10.4722 10.9583 10.9583 11.1667C11.4444 11.375 11.9375 11.4792 12.4375 11.4792ZM15.5 10.125C15.8194 9.77778 16.066 9.375 16.2396 8.91667C16.4132 8.45833 16.5 7.98611 16.5 7.5C16.5 6.97222 16.3993 6.46528 16.1979 5.97917C15.9965 5.49306 15.7014 5.05556 15.3125 4.66667C14.9236 4.27778 14.4931 3.98611 14.0208 3.79167C13.5486 3.59722 13.0417 3.5 12.5 3.5C12.0278 3.5 11.566 3.58681 11.1146 3.76042C10.6632 3.93403 10.25 4.18056 9.875 4.5C10.6667 4.47222 11.3958 4.59375 12.0625 4.86458C12.7292 5.13542 13.3403 5.54861 13.8958 6.10417C14.4514 6.65972 14.8646 7.27083 15.1354 7.9375C15.4063 8.60417 15.5278 9.33333 15.5 10.125Z" fill="black"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M5.14583 17.1042C4.52083 17.1042 3.93403 16.9618 3.38542 16.6771C2.83681 16.3924 2.375 16.0069 2 15.5208C2.43056 15.4931 2.79861 15.3333 3.10417 15.0417C3.40972 14.75 3.5625 14.3889 3.5625 13.9583C3.5625 13.2917 3.79271 12.7326 4.25312 12.2812C4.7134 11.8299 5.27243 11.6042 5.93021 11.6042C6.58785 11.6042 7.14236 11.8331 7.59375 12.2908C8.04514 12.7486 8.27083 13.3044 8.27083 13.9583C8.27083 14.8333 7.96875 15.5764 7.36458 16.1875C6.76042 16.7986 6.02083 17.1042 5.14583 17.1042ZM5.14583 15.7083C5.62708 15.7083 6.0391 15.5369 6.38187 15.1942C6.72451 14.8515 6.89583 14.4396 6.89583 13.9583C6.89583 13.6944 6.80208 13.4687 6.61458 13.2812C6.42708 13.0937 6.20139 13 5.9375 13C5.67361 13 5.44792 13.0937 5.26042 13.2812C5.07292 13.4687 4.97917 13.6944 4.97917 13.9583C4.97917 14.2639 4.94444 14.559 4.875 14.8437C4.80556 15.1285 4.67361 15.3819 4.47917 15.6042C4.59028 15.6319 4.70139 15.6562 4.8125 15.6771C4.92361 15.6979 5.03472 15.7083 5.14583 15.7083ZM10.0625 12.1667L7.9375 10.0417L14.5833 3.39583C14.7778 3.20139 15.0139 3.10416 15.2917 3.10416C15.5694 3.10416 15.8056 3.20139 16 3.39583L16.7083 4.10416C16.9028 4.30486 17 4.53909 17 4.80687C17 5.07451 16.9028 5.30555 16.7083 5.5L10.0625 12.1667Z" fill="black"/>
3
+ </svg>
@@ -302,7 +302,7 @@ export interface SettingRegistration {
302
302
  */
303
303
  export interface LearnMore {
304
304
  tooltip: () => Platform.UIString.LocalizedString;
305
- url: Platform.DevToolsPath.UrlString;
305
+ url?: Platform.DevToolsPath.UrlString;
306
306
  }
307
307
 
308
308
  interface LocalizedSettingExtensionOption {
@@ -16,6 +16,7 @@ export enum Entity {
16
16
  }
17
17
 
18
18
  export const enum Rating {
19
+ SENTIMENT_UNSPECIFIED = 'SENTIMENT_UNSPECIFIED',
19
20
  POSITIVE = 'POSITIVE',
20
21
  NEGATIVE = 'NEGATIVE',
21
22
  }
@@ -429,6 +429,10 @@ export class InspectorFrontendHostStub implements InspectorFrontendHostAPI {
429
429
  devToolsPrivacyUI: {
430
430
  enabled: false,
431
431
  },
432
+ devToolsEnableOriginBoundCookies: {
433
+ portBindingEnabled: false,
434
+ schemeBindingEnabled: false,
435
+ },
432
436
  isOffTheRecord: false,
433
437
  };
434
438
  if ('hostConfigForTesting' in globalThis) {
@@ -0,0 +1,34 @@
1
+ // Copyright 2024 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import {describeWithLocale} from '../../testing/EnvironmentHelpers.js';
6
+
7
+ import * as i18n from './i18n.js';
8
+
9
+ describeWithLocale('ByteUtilities', () => {
10
+ describe('bytesToString', () => {
11
+ it('formats for < 1000 bytes', () => {
12
+ assert.deepEqual(i18n.ByteUtilities.bytesToString(50), '50\xA0B');
13
+ });
14
+
15
+ it('formats for < 100 kilobytes', () => {
16
+ assert.deepEqual(i18n.ByteUtilities.bytesToString(5 * 1000), '5.0\xA0kB');
17
+ });
18
+
19
+ it('formats for < 1000 kilobytes', () => {
20
+ assert.deepEqual(i18n.ByteUtilities.bytesToString(500 * 1000), '500\xA0kB');
21
+ });
22
+
23
+ it('formats for < 100 megabytes', () => {
24
+ const oneAndAHalfMegabytes = 1500 * 1000;
25
+ assert.deepEqual(i18n.ByteUtilities.bytesToString(oneAndAHalfMegabytes), '1.5\xA0MB');
26
+ });
27
+
28
+ it('formats for > 100 megabytes', () => {
29
+ const oneMegabyte = 1000 * 1000;
30
+ const twoHundredAndTenMegabytes = oneMegabyte * 210;
31
+ assert.deepEqual(i18n.ByteUtilities.bytesToString(twoHundredAndTenMegabytes), '210\xA0MB');
32
+ });
33
+ });
34
+ });
@@ -0,0 +1,65 @@
1
+ // Copyright 2024 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import {defineFormatter} from './NumberFormatter.js';
6
+
7
+ const narrowBytes = defineFormatter({
8
+ style: 'unit',
9
+ unit: 'byte',
10
+ unitDisplay: 'narrow',
11
+ minimumFractionDigits: 0,
12
+ maximumFractionDigits: 0,
13
+ });
14
+
15
+ const narrowKilobytesDecimal = defineFormatter({
16
+ style: 'unit',
17
+ unit: 'kilobyte',
18
+ unitDisplay: 'narrow',
19
+ minimumFractionDigits: 1,
20
+ maximumFractionDigits: 1,
21
+ });
22
+
23
+ const narrowKilobytesInteger = defineFormatter({
24
+ style: 'unit',
25
+ unit: 'kilobyte',
26
+ unitDisplay: 'narrow',
27
+ minimumFractionDigits: 0,
28
+ maximumFractionDigits: 0,
29
+ });
30
+
31
+ const narrowMegabytesDecimal = defineFormatter({
32
+ style: 'unit',
33
+ unit: 'megabyte',
34
+ unitDisplay: 'narrow',
35
+ minimumFractionDigits: 1,
36
+ maximumFractionDigits: 1,
37
+ });
38
+
39
+ const narrowMegabytesInteger = defineFormatter({
40
+ style: 'unit',
41
+ unit: 'megabyte',
42
+ unitDisplay: 'narrow',
43
+ minimumFractionDigits: 0,
44
+ maximumFractionDigits: 0,
45
+ });
46
+
47
+ export const bytesToString = (bytes: number): string => {
48
+ if (bytes < 1000) {
49
+ return narrowBytes.format(bytes);
50
+ }
51
+
52
+ const kilobytes = bytes / 1000;
53
+ if (kilobytes < 100) {
54
+ return narrowKilobytesDecimal.format(kilobytes);
55
+ }
56
+ if (kilobytes < 1000) {
57
+ return narrowKilobytesInteger.format(kilobytes);
58
+ }
59
+
60
+ const megabytes = kilobytes / 1000;
61
+ if (megabytes < 100) {
62
+ return narrowMegabytesDecimal.format(megabytes);
63
+ }
64
+ return narrowMegabytesInteger.format(megabytes);
65
+ };
@@ -0,0 +1,75 @@
1
+ // Copyright 2024 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import {DevToolsLocale} from './DevToolsLocale.js';
6
+
7
+ export interface NumberFormatter {
8
+ format(value: number): string;
9
+ formatToParts(value: number): Intl.NumberFormatPart[];
10
+ }
11
+
12
+ /**
13
+ * Creates an instance of NumberFormatter.
14
+ *
15
+ * Safe to call in top-level of a module, since the creation of Intl.NumberFormat is deferred
16
+ * until first usage.
17
+ */
18
+ export function defineFormatter(options: Intl.NumberFormatOptions): NumberFormatter {
19
+ let intlNumberFormat: Intl.NumberFormat;
20
+
21
+ return {
22
+ format(value) {
23
+ if (!intlNumberFormat) {
24
+ intlNumberFormat = new Intl.NumberFormat(DevToolsLocale.instance().locale, options);
25
+ }
26
+ return formatAndEnsureSpace(intlNumberFormat, value);
27
+ },
28
+ formatToParts(value) {
29
+ if (!intlNumberFormat) {
30
+ intlNumberFormat = new Intl.NumberFormat(DevToolsLocale.instance().locale, options);
31
+ }
32
+ return intlNumberFormat.formatToParts(value);
33
+ },
34
+ };
35
+ }
36
+
37
+ /**
38
+ * When using 'narrow' unitDisplay, many locales exclude the space between the literal and the unit.
39
+ * We don't like that, so when there is no space literal we inject an nbsp manually.
40
+ */
41
+ function formatAndEnsureSpace(formatter: Intl.NumberFormat, value: number): string {
42
+ const parts = formatter.formatToParts(value);
43
+
44
+ let hasSpace = false;
45
+ for (const part of parts) {
46
+ if (part.type === 'literal') {
47
+ if (part.value === ' ') {
48
+ hasSpace = true;
49
+ part.value = '\xA0';
50
+ } else if (part.value === '\xA0') {
51
+ hasSpace = true;
52
+ }
53
+ }
54
+ }
55
+
56
+ if (hasSpace) {
57
+ return parts.map(part => part.value).join('');
58
+ }
59
+
60
+ const unitIndex = parts.findIndex(part => part.type === 'unit');
61
+
62
+ // Unexpected for there to be no unit, but just in case, handle that.
63
+ if (unitIndex === -1) {
64
+ return parts.map(part => part.value).join('');
65
+ }
66
+
67
+ // For locales where the unit comes first (sw), the space has to come after the unit.
68
+ if (unitIndex === 0) {
69
+ return parts[0].value + '\xA0' + parts.slice(1).map(part => part.value).join('');
70
+ }
71
+
72
+ // Otherwise, it comes before.
73
+ return parts.slice(0, unitIndex).map(part => part.value).join('') + '\xA0' +
74
+ parts.slice(unitIndex).map(part => part.value).join('');
75
+ }
@@ -2,12 +2,16 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import * as ByteUtilities from './ByteUtilities.js';
5
6
  import * as DevToolsLocale from './DevToolsLocale.js';
6
7
  import * as i18n from './i18nImpl.js';
8
+ import * as NumberFormatter from './NumberFormatter.js';
7
9
  import * as TimeUtilities from './time-utilities.js';
8
10
 
9
11
  export {
12
+ ByteUtilities,
10
13
  DevToolsLocale,
11
14
  i18n,
15
+ NumberFormatter,
12
16
  TimeUtilities,
13
17
  };
@@ -14,12 +14,30 @@ describeWithLocale('preciseMillisToString', () => {
14
14
  assert.strictEqual(outputString, '8\xA0ms');
15
15
  });
16
16
 
17
- it('formats without a given precision', () => {
17
+ it('formats big number without a given precision', () => {
18
+ const inputNumber = 723123;
19
+ const outputString = i18n.TimeUtilities.preciseMillisToString(inputNumber);
20
+ assert.strictEqual(outputString, '723,123\xA0ms');
21
+ });
22
+
23
+ it('formats with a given precision', () => {
18
24
  const inputNumber = 7.84;
19
25
  const precision = 2;
20
26
  const outputString = i18n.TimeUtilities.preciseMillisToString(inputNumber, precision);
21
27
  assert.strictEqual(outputString, '7.84\xA0ms');
22
28
  });
29
+
30
+ it('formats with a given precision, rounding as expected', () => {
31
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(5.55555, 2), '5.56\xA0ms');
32
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(-5.55555, 2), '-5.56\xA0ms');
33
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(5.555, 2), '5.56\xA0ms');
34
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(-5.55, 2), '-5.55\xA0ms'); // ties break towards zero!
35
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(9.99999, 1), '10.0\xA0ms');
36
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(9.95, 1), '10.0\xA0ms');
37
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(9.94, 1), '9.9\xA0ms');
38
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(1.001, 1), '1.0\xA0ms');
39
+ assert.strictEqual(i18n.TimeUtilities.preciseMillisToString(1.001, 0), '1\xA0ms');
40
+ });
23
41
  });
24
42
 
25
43
  describeWithLocale('formatMicroSecondsTime', () => {
@@ -121,7 +139,7 @@ describeWithLocale('millisToString', () => {
121
139
  it('formats less than 24 hours', () => {
122
140
  const inputNumber = 20000000;
123
141
  const outputString = i18n.TimeUtilities.millisToString(inputNumber);
124
- assert.strictEqual(outputString, '5.6\xA0hrs');
142
+ assert.strictEqual(outputString, '5.6\xA0hr');
125
143
  });
126
144
 
127
145
  it('formats days', () => {
@@ -2,128 +2,167 @@
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
+ /**
6
+ * @fileoverview Uses Intl.NumberFormat.
7
+ * @see go/cpq:i18n-units-design
8
+ */
9
+
5
10
  import * as Platform from '../platform/platform.js';
6
11
 
7
- import {getLocalizedString, registerUIStrings} from './i18nImpl.js';
8
-
9
- const UIStrings = {
10
- /**
11
- *@description μs is the short form of micro-seconds and the placeholder is a number
12
- * The shortest form or abbreviation of micro-seconds should be used, as there is
13
- * limited room in this UI.
14
- *@example {2} PH1
15
- */
16
- fmms: '{PH1} μs',
17
- /**
18
- *@description ms is the short form of milli-seconds and the placeholder is a decimal number
19
- * The shortest form or abbreviation of milli-seconds should be used, as there is
20
- * limited room in this UI.
21
- *@example {2.14} PH1
22
- */
23
- fms: '{PH1} ms',
24
- /**
25
- *@description s is short for seconds and the placeholder is a decimal number
26
- * The shortest form or abbreviation of seconds should be used, as there is
27
- * limited room in this UI.
28
- *@example {2.14} PH1
29
- */
30
- fs: '{PH1} s',
31
- /**
32
- *@description min is short for minutes and the placeholder is a decimal number
33
- *@example {2.2} PH1
34
- */
35
- fmin: '{PH1} min',
36
- /**
37
- *@description hrs is short for hours and the placeholder is a decimal number
38
- *@example {2.2} PH1
39
- */
40
- fhrs: '{PH1} hrs',
41
- /**
42
- *@description days formatting and the placeholder is a decimal number
43
- *@example {2.2} PH1
44
- */
45
- fdays: '{PH1} days',
46
-
47
- /**
48
- *@description describes a number of milliseconds (the unit should not abbreviated)
49
- *@example {2.14} PH1
50
- */
51
- fmsExpanded: '{PH1} milliseconds',
52
- };
53
-
54
- const str_ = registerUIStrings('core/i18n/time-utilities.ts', UIStrings);
55
- const i18nString = getLocalizedString.bind(undefined, str_);
56
-
57
- export const preciseMillisToString = function(ms: number, precision?: number): string {
58
- precision = precision || 0;
59
- return i18nString(UIStrings.fms, {PH1: ms.toFixed(precision)});
60
- };
61
-
62
- export function formatMicroSecondsTime(
63
- time: Platform.Timing.MicroSeconds,
64
- ): string {
12
+ import {defineFormatter, type NumberFormatter} from './NumberFormatter.js';
13
+
14
+ const narrowMillisecondsInteger = defineFormatter({
15
+ style: 'unit',
16
+ unit: 'millisecond',
17
+ unitDisplay: 'narrow',
18
+ minimumFractionDigits: 0,
19
+ maximumFractionDigits: 0,
20
+ });
21
+
22
+ const longMilliseconds = defineFormatter({
23
+ style: 'unit',
24
+ unit: 'millisecond',
25
+ unitDisplay: 'long',
26
+ minimumFractionDigits: 0,
27
+ maximumFractionDigits: 0,
28
+ });
29
+
30
+ const narrowMicrosecondsInteger = defineFormatter({
31
+ style: 'unit',
32
+ unit: 'microsecond',
33
+ unitDisplay: 'narrow',
34
+ minimumFractionDigits: 0,
35
+ maximumFractionDigits: 0,
36
+ });
37
+
38
+ const narrowMillisecondsDecimal = defineFormatter({
39
+ style: 'unit',
40
+ unit: 'millisecond',
41
+ unitDisplay: 'narrow',
42
+ minimumFractionDigits: 2,
43
+ maximumFractionDigits: 2,
44
+ });
45
+
46
+ const narrowSecondsDecimal = defineFormatter({
47
+ style: 'unit',
48
+ unit: 'second',
49
+ unitDisplay: 'narrow',
50
+ minimumFractionDigits: 2,
51
+ maximumFractionDigits: 2,
52
+ });
53
+
54
+ const shortMinutesDecimal = defineFormatter({
55
+ style: 'unit',
56
+ unit: 'minute',
57
+ unitDisplay: 'short',
58
+ minimumFractionDigits: 0,
59
+ maximumFractionDigits: 1,
60
+ });
61
+
62
+ const shortHoursDecimal = defineFormatter({
63
+ style: 'unit',
64
+ unit: 'hour',
65
+ unitDisplay: 'short',
66
+ minimumFractionDigits: 0,
67
+ maximumFractionDigits: 1,
68
+ });
69
+
70
+ const longDaysDecimal = defineFormatter({
71
+ style: 'unit',
72
+ unit: 'day',
73
+ unitDisplay: 'long',
74
+ minimumFractionDigits: 0,
75
+ maximumFractionDigits: 1,
76
+ });
77
+
78
+ export function formatMicroSecondsTime(time: Platform.Timing.MicroSeconds): string {
65
79
  return millisToString(Platform.Timing.microSecondsToMilliSeconds(time), true);
66
80
  }
67
81
 
68
- export function formatMicroSecondsAsMillisFixed(time: Platform.Timing.MicroSeconds, fractionDigits = 0): string {
69
- const milliseconds = Platform.Timing.microSecondsToMilliSeconds(
70
- time,
71
- );
72
- return i18nString(UIStrings.fms, {PH1: milliseconds.toFixed(fractionDigits)});
73
- }
74
- export function formatMicroSecondsAsMillisFixedExpanded(
75
- time: Platform.Timing.MicroSeconds, fractionDigits = 0): string {
76
- const milliseconds = Platform.Timing.microSecondsToMilliSeconds(
77
- time,
78
- );
79
- return i18nString(UIStrings.fmsExpanded, {PH1: milliseconds.toFixed(fractionDigits)});
82
+ export function formatMicroSecondsAsSeconds(time: Platform.Timing.MicroSeconds): string {
83
+ const milliseconds = Platform.Timing.microSecondsToMilliSeconds(time);
84
+ const seconds = Platform.Timing.milliSecondsToSeconds(milliseconds);
85
+ return narrowSecondsDecimal.format(seconds);
80
86
  }
81
87
 
82
- export function formatMicroSecondsAsSeconds(time: Platform.Timing.MicroSeconds): string {
83
- const milliseconds = Platform.Timing.microSecondsToMilliSeconds(
84
- time,
85
- );
88
+ export function formatPartsMicroSecondsAsSeconds(time: Platform.Timing.MicroSeconds): Intl.NumberFormatPart[] {
89
+ const milliseconds = Platform.Timing.microSecondsToMilliSeconds(time);
86
90
  const seconds = Platform.Timing.milliSecondsToSeconds(milliseconds);
87
- return i18nString(UIStrings.fs, {PH1: (seconds).toFixed(2)});
91
+ return narrowSecondsDecimal.formatToParts(seconds);
92
+ }
93
+
94
+ export function formatMicroSecondsAsMillisFixed(time: Platform.Timing.MicroSeconds): string {
95
+ const milliseconds = Platform.Timing.microSecondsToMilliSeconds(time);
96
+ return narrowMillisecondsInteger.format(milliseconds);
97
+ }
98
+
99
+ export function formatPartsMicroSecondsAsMillisFixed(time: Platform.Timing.MicroSeconds): Intl.NumberFormatPart[] {
100
+ const milliseconds = Platform.Timing.microSecondsToMilliSeconds(time);
101
+ return narrowMillisecondsInteger.formatToParts(milliseconds);
102
+ }
103
+
104
+ export function formatMicroSecondsAsMillisFixedExpanded(time: Platform.Timing.MicroSeconds): string {
105
+ const milliseconds = Platform.Timing.microSecondsToMilliSeconds(time);
106
+ return longMilliseconds.format(milliseconds);
88
107
  }
89
108
 
90
- export const millisToString = function(ms: number, higherResolution?: boolean): string {
109
+ /**
110
+ * @param higherResolution if true, the output may show as microsends or as milliseconds with a fractional component
111
+ */
112
+ export function millisToString(ms: number, higherResolution?: boolean): string {
91
113
  if (!isFinite(ms)) {
92
114
  return '-';
93
115
  }
94
116
 
95
117
  if (higherResolution && ms < 0.1) {
96
- return i18nString(UIStrings.fmms, {PH1: (ms * 1000).toFixed(0)});
118
+ return narrowMicrosecondsInteger.format(ms * 1000);
97
119
  }
98
120
  if (higherResolution && ms < 1000) {
99
- return i18nString(UIStrings.fms, {PH1: (ms).toFixed(2)});
121
+ return narrowMillisecondsDecimal.format(ms);
100
122
  }
101
123
  if (ms < 1000) {
102
- return i18nString(UIStrings.fms, {PH1: (ms).toFixed(0)});
124
+ return narrowMillisecondsInteger.format(ms);
103
125
  }
104
126
 
105
127
  const seconds = ms / 1000;
106
128
  if (seconds < 60) {
107
- return i18nString(UIStrings.fs, {PH1: (seconds).toFixed(2)});
129
+ return narrowSecondsDecimal.format(seconds);
108
130
  }
109
131
 
110
132
  const minutes = seconds / 60;
111
133
  if (minutes < 60) {
112
- return i18nString(UIStrings.fmin, {PH1: (minutes).toFixed(1)});
134
+ return shortMinutesDecimal.format(minutes);
113
135
  }
114
136
 
115
137
  const hours = minutes / 60;
116
138
  if (hours < 24) {
117
- return i18nString(UIStrings.fhrs, {PH1: (hours).toFixed(1)});
139
+ return shortHoursDecimal.format(hours);
118
140
  }
119
141
 
120
142
  const days = hours / 24;
121
- return i18nString(UIStrings.fdays, {PH1: (days).toFixed(1)});
122
- };
143
+ return longDaysDecimal.format(days);
144
+ }
123
145
 
124
- export const secondsToString = function(seconds: number, higherResolution?: boolean): string {
146
+ const preciseMillisToStringFormattersCache = new Map<number, NumberFormatter>();
147
+
148
+ export function preciseMillisToString(ms: number, precision = 0): string {
149
+ let formatter = preciseMillisToStringFormattersCache.get(precision);
150
+ if (!formatter) {
151
+ formatter = defineFormatter({
152
+ style: 'unit',
153
+ unit: 'millisecond',
154
+ unitDisplay: 'narrow',
155
+ minimumFractionDigits: precision,
156
+ maximumFractionDigits: precision,
157
+ });
158
+ preciseMillisToStringFormattersCache.set(precision, formatter);
159
+ }
160
+ return formatter.format(ms);
161
+ }
162
+
163
+ export function secondsToString(seconds: number, higherResolution?: boolean): string {
125
164
  if (!isFinite(seconds)) {
126
165
  return '-';
127
166
  }
128
167
  return millisToString(seconds * 1000, higherResolution);
129
- };
168
+ }