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
@@ -139,6 +139,7 @@ describeWithMockConnection('CrUXManager', () => {
139
139
  'url-DESKTOP': mockResponse(),
140
140
  'url-PHONE': mockResponse(),
141
141
  'url-TABLET': null,
142
+ warnings: [],
142
143
  });
143
144
 
144
145
  assert.deepStrictEqual(fetchBodies, [
@@ -223,6 +224,7 @@ describeWithMockConnection('CrUXManager', () => {
223
224
  'url-DESKTOP': null,
224
225
  'url-PHONE': null,
225
226
  'url-TABLET': null,
227
+ warnings: [],
226
228
  });
227
229
  });
228
230
 
@@ -304,6 +306,17 @@ describeWithMockConnection('CrUXManager', () => {
304
306
 
305
307
  beforeEach(() => {
306
308
  getFieldDataMock = sinon.stub(cruxManager, 'getFieldDataForPage');
309
+ getFieldDataMock.resolves({
310
+ 'origin-ALL': mockResponse(),
311
+ 'origin-DESKTOP': mockResponse(),
312
+ 'origin-PHONE': mockResponse(),
313
+ 'origin-TABLET': null,
314
+ 'url-ALL': mockResponse(),
315
+ 'url-DESKTOP': mockResponse(),
316
+ 'url-PHONE': mockResponse(),
317
+ 'url-TABLET': null,
318
+ warnings: [],
319
+ });
307
320
  });
308
321
 
309
322
  afterEach(() => {
@@ -320,8 +333,9 @@ describeWithMockConnection('CrUXManager', () => {
320
333
  isPrimaryFrame: () => false,
321
334
  } as SDK.ResourceTreeModel.ResourceTreeFrame);
322
335
 
323
- await cruxManager.getFieldDataForCurrentPage();
336
+ const result = await cruxManager.getFieldDataForCurrentPage();
324
337
 
338
+ assert.deepStrictEqual(result.warnings, []);
325
339
  assert.strictEqual(getFieldDataMock.callCount, 1);
326
340
  assert.strictEqual(getFieldDataMock.firstCall.args[0], 'https://example.com/main/');
327
341
  });
@@ -331,8 +345,9 @@ describeWithMockConnection('CrUXManager', () => {
331
345
  cruxManager.getConfigSetting().set(
332
346
  {enabled: false, override: 'https://example.com/override', overrideEnabled: true});
333
347
 
334
- await cruxManager.getFieldDataForCurrentPage();
348
+ const result = await cruxManager.getFieldDataForCurrentPage();
335
349
 
350
+ assert.deepStrictEqual(result.warnings, ['Field data is configured for a different URL than the current page.']);
336
351
  assert.strictEqual(getFieldDataMock.callCount, 1);
337
352
  assert.strictEqual(getFieldDataMock.firstCall.args[0], 'https://example.com/override');
338
353
  });
@@ -347,8 +362,9 @@ describeWithMockConnection('CrUXManager', () => {
347
362
  }],
348
363
  });
349
364
 
350
- await cruxManager.getFieldDataForCurrentPage();
365
+ const result = await cruxManager.getFieldDataForCurrentPage();
351
366
 
367
+ assert.deepStrictEqual(result.warnings, ['Field data is configured for a different URL than the current page.']);
352
368
  assert.strictEqual(getFieldDataMock.callCount, 1);
353
369
  assert.strictEqual(getFieldDataMock.firstCall.args[0], 'https://example.com/inspected');
354
370
  });
@@ -365,8 +381,9 @@ describeWithMockConnection('CrUXManager', () => {
365
381
  }],
366
382
  });
367
383
 
368
- await cruxManager.getFieldDataForCurrentPage();
384
+ const result = await cruxManager.getFieldDataForCurrentPage();
369
385
 
386
+ assert.deepStrictEqual(result.warnings, ['Field data is configured for a different URL than the current page.']);
370
387
  assert.strictEqual(getFieldDataMock.callCount, 1);
371
388
  assert.strictEqual(getFieldDataMock.firstCall.args[0], 'https://google.com');
372
389
  });
@@ -374,8 +391,9 @@ describeWithMockConnection('CrUXManager', () => {
374
391
  it('should use inspected URL if main document is unavailable', async () => {
375
392
  target.setInspectedURL('https://example.com/inspected' as Platform.DevToolsPath.UrlString);
376
393
 
377
- await cruxManager.getFieldDataForCurrentPage();
394
+ const result = await cruxManager.getFieldDataForCurrentPage();
378
395
 
396
+ assert.deepStrictEqual(result.warnings, []);
379
397
  assert.strictEqual(getFieldDataMock.callCount, 1);
380
398
  assert.strictEqual(getFieldDataMock.firstCall.args[0], 'https://example.com/inspected');
381
399
  });
@@ -389,8 +407,9 @@ describeWithMockConnection('CrUXManager', () => {
389
407
 
390
408
  target.setInspectedURL('https://example.com/awaitInspected' as Platform.DevToolsPath.UrlString);
391
409
 
392
- await finishPromise;
410
+ const result = await finishPromise;
393
411
 
412
+ assert.deepStrictEqual(result.warnings, []);
394
413
  assert.strictEqual(getFieldDataMock.callCount, 1);
395
414
  assert.strictEqual(getFieldDataMock.firstCall.args[0], 'https://example.com/awaitInspected');
396
415
  });
@@ -3,8 +3,19 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as Common from '../../core/common/common.js';
6
+ import * as i18n from '../../core/i18n/i18n.js';
6
7
  import * as SDK from '../../core/sdk/sdk.js';
7
8
 
9
+ const UIStrings = {
10
+ /**
11
+ * @description Warning message indicating that the user will see real user data for a URL which is different from the URL they are currently looking at.
12
+ */
13
+ fieldOverrideWarning: 'Field data is configured for a different URL than the current page.',
14
+ };
15
+
16
+ const str_ = i18n.i18n.registerUIStrings('models/crux-manager/CrUXManager.ts', UIStrings);
17
+ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
18
+
8
19
  // This key is expected to be visible in the frontend.
9
20
  // b/349721878
10
21
  const CRUX_API_KEY = 'AIzaSyCCSOx25vrb5z0tbedCB3_JRzzbVW6Uwgw';
@@ -67,6 +78,8 @@ export interface CrUXResponse {
67
78
 
68
79
  export type PageResult = {
69
80
  [K in`${PageScope}-${DeviceScope}`]: CrUXResponse|null;
81
+ }&{
82
+ warnings: string[],
70
83
  };
71
84
 
72
85
  export interface OriginMapping {
@@ -161,6 +174,7 @@ export class CrUXManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
161
174
  'url-DESKTOP': null,
162
175
  'url-PHONE': null,
163
176
  'url-TABLET': null,
177
+ warnings: [],
164
178
  };
165
179
 
166
180
  try {
@@ -212,10 +226,15 @@ export class CrUXManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
212
226
  * the main document URL cannot be found.
213
227
  */
214
228
  async getFieldDataForCurrentPage(): Promise<PageResult> {
215
- const pageUrl = this.#configSetting.get().overrideEnabled ?
216
- this.#configSetting.get().override || '' :
217
- this.#getMappedUrl(this.#mainDocumentUrl || await this.#getInspectedURL());
218
- return this.getFieldDataForPage(pageUrl);
229
+ const currentUrl = this.#mainDocumentUrl || await this.#getInspectedURL();
230
+ const urlForCrux = this.#configSetting.get().overrideEnabled ? this.#configSetting.get().override || '' :
231
+ this.#getMappedUrl(currentUrl);
232
+
233
+ const result = await this.getFieldDataForPage(urlForCrux);
234
+ if (currentUrl !== urlForCrux) {
235
+ result.warnings.push(i18nString(UIStrings.fieldOverrideWarning));
236
+ }
237
+ return result;
219
238
  }
220
239
 
221
240
  async #getInspectedURL(): Promise<string> {
@@ -704,6 +704,20 @@ describe('ExtensionServer', () => {
704
704
  assert.isTrue(Extensions.ExtensionServer.ExtensionServer.canInspectURL(url), url);
705
705
  }
706
706
  });
707
+
708
+ it('cannot inspect non-HTTP URL schemes', () => {
709
+ const blockedUrls = [
710
+ 'devtools://devtools/bundled/front_end/devtools_app.html',
711
+ 'devtools://devtools/anything',
712
+ 'chrome://extensions',
713
+ 'chrome-untrusted://extensions',
714
+ 'chrome-error://crash',
715
+ 'chrome-search://foo/bar',
716
+ ];
717
+ for (const url of blockedUrls as Platform.DevToolsPath.UrlString[]) {
718
+ assert.isFalse(Extensions.ExtensionServer.ExtensionServer.canInspectURL(url), url);
719
+ }
720
+ });
707
721
  });
708
722
 
709
723
  function assertIsStatus<T>(value: T|
@@ -56,6 +56,7 @@ import {RecorderExtensionEndpoint} from './RecorderExtensionEndpoint.js';
56
56
  import {RecorderPluginManager} from './RecorderPluginManager.js';
57
57
 
58
58
  const extensionOrigins: WeakMap<MessagePort, Platform.DevToolsPath.UrlString> = new WeakMap();
59
+ const kPermittedSchemes = ['http:', 'https:', 'file:', 'data:', 'chrome-extension:', 'about:'];
59
60
 
60
61
  declare global {
61
62
  interface Window {
@@ -63,8 +64,6 @@ declare global {
63
64
  }
64
65
  }
65
66
 
66
- const kAllowedOrigins = [].map(url => (new URL(url)).origin);
67
-
68
67
  let extensionServerInstance: ExtensionServer|null;
69
68
 
70
69
  export class HostsPolicy {
@@ -1406,19 +1405,8 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
1406
1405
  } catch (exception) {
1407
1406
  return false;
1408
1407
  }
1409
- if (kAllowedOrigins.includes(parsedURL.origin)) {
1410
- return true;
1411
- }
1412
- if (parsedURL.protocol === 'chrome:' || parsedURL.protocol === 'devtools:' ||
1413
- parsedURL.protocol === 'chrome-untrusted:' || parsedURL.protocol === 'chrome-error:' ||
1414
- parsedURL.protocol === 'chrome-search:') {
1415
- return false;
1416
- }
1417
- if (parsedURL.protocol.startsWith('http') && parsedURL.hostname.match(/^chrome\.google\.com\.?$/) &&
1418
- parsedURL.pathname.startsWith('/webstore')) {
1419
- return false;
1420
- }
1421
- if (parsedURL.protocol.startsWith('http') && parsedURL.hostname.match(/^chromewebstore\.google\.com\.?$/)) {
1408
+
1409
+ if (!kPermittedSchemes.includes(parsedURL.protocol)) {
1422
1410
  return false;
1423
1411
  }
1424
1412
 
@@ -1428,9 +1416,34 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
1428
1416
  return false;
1429
1417
  }
1430
1418
 
1419
+ if (this.#isUrlFromChromeWebStore(parsedURL)) {
1420
+ return false;
1421
+ }
1422
+
1431
1423
  return true;
1432
1424
  }
1433
1425
 
1426
+ /**
1427
+ * Tests whether a given URL is from the Chrome web store to prevent the extension server from
1428
+ * being injected. This is treated as separate from the `getOriginsForbiddenForExtensions` API because
1429
+ * DevTools might not be being run from a native origin and we still want to lock down this specific
1430
+ * origin from DevTools extensions.
1431
+ *
1432
+ * @param parsedURL The URL to check
1433
+ * @returns `true` if the URL corresponds to the Chrome web store; otherwise `false`
1434
+ */
1435
+ static #isUrlFromChromeWebStore(parsedURL: URL): boolean {
1436
+ if (parsedURL.protocol.startsWith('http') && parsedURL.hostname.match(/^chrome\.google\.com\.?$/) &&
1437
+ parsedURL.pathname.startsWith('/webstore')) {
1438
+ return true;
1439
+ }
1440
+ if (parsedURL.protocol.startsWith('http') && parsedURL.hostname.match(/^chromewebstore\.google\.com\.?$/)) {
1441
+ return true;
1442
+ }
1443
+
1444
+ return false;
1445
+ }
1446
+
1434
1447
  private disableExtensions(): void {
1435
1448
  this.extensionsEnabled = false;
1436
1449
  }
@@ -8,6 +8,7 @@ import * as i18n from '../../core/i18n/i18n.js';
8
8
  import type * as Platform from '../../core/platform/platform.js';
9
9
  import * as SDK from '../../core/sdk/sdk.js';
10
10
  import * as Protocol from '../../generated/protocol.js';
11
+ import * as ThirdPartyWeb from '../../third_party/third-party-web/third-party-web.js';
11
12
 
12
13
  import {Issue, IssueCategory, IssueKind} from './Issue.js';
13
14
  import {
@@ -67,6 +68,23 @@ export const enum CookieIssueSubCategory {
67
68
  THIRD_PARTY_PHASEOUT_COOKIE = 'ThirdPartyPhaseoutCookie',
68
69
  }
69
70
 
71
+ // Enum to show cookie status from the security panel's third-party cookie report tool
72
+ export const enum CookieStatus {
73
+ BLOCKED = 0,
74
+ ALLOWED = 1,
75
+ ALLOWED_BY_GRACE_PERIOD = 2,
76
+ ALLOWED_BY_HEURISTICS = 3,
77
+ }
78
+
79
+ export interface CookieReportInfo {
80
+ name: string;
81
+ domain: string;
82
+ type?: string;
83
+ platform?: string;
84
+ status: CookieStatus;
85
+ recommendation?: string;
86
+ }
87
+
70
88
  export class CookieIssue extends Issue {
71
89
  #issueDetails: Protocol.Audits.CookieIssueDetails;
72
90
 
@@ -77,7 +95,7 @@ export class CookieIssue extends Issue {
77
95
  this.#issueDetails = issueDetails;
78
96
  }
79
97
 
80
- #cookieId(): string {
98
+ cookieId(): string {
81
99
  if (this.#issueDetails.cookie) {
82
100
  const {domain, path, name} = this.#issueDetails.cookie;
83
101
  const cookieId = `${domain};${path};${name}`;
@@ -88,7 +106,7 @@ export class CookieIssue extends Issue {
88
106
 
89
107
  primaryKey(): string {
90
108
  const requestId = this.#issueDetails.request ? this.#issueDetails.request.requestId : 'no-request';
91
- return `${this.code()}-(${this.#cookieId()})-(${requestId})`;
109
+ return `${this.code()}-(${this.cookieId()})-(${requestId})`;
92
110
  }
93
111
 
94
112
  /**
@@ -197,6 +215,14 @@ export class CookieIssue extends Issue {
197
215
  reason === Protocol.Audits.CookieWarningReason.WarnSameSiteLaxCrossDowngradeStrict) {
198
216
  return [Protocol.Audits.InspectorIssueCode.CookieIssue, 'WarnCrossDowngrade', operation, secure].join('::');
199
217
  }
218
+
219
+ if (reason === Protocol.Audits.CookieExclusionReason.ExcludePortMismatch) {
220
+ return [Protocol.Audits.InspectorIssueCode.CookieIssue, 'ExcludePortMismatch'].join('::');
221
+ }
222
+
223
+ if (reason === Protocol.Audits.CookieExclusionReason.ExcludeSchemeMismatch) {
224
+ return [Protocol.Audits.InspectorIssueCode.CookieIssue, 'ExcludeSchemeMismatch'].join('::');
225
+ }
200
226
  return [Protocol.Audits.InspectorIssueCode.CookieIssue, reason, operation].join('::');
201
227
  }
202
228
 
@@ -245,6 +271,45 @@ export class CookieIssue extends Issue {
245
271
  return IssueKind.BREAKING_CHANGE;
246
272
  }
247
273
 
274
+ makeCookieReportEntry(): CookieReportInfo|undefined {
275
+ const status = CookieIssue.getCookieStatus(this.#issueDetails);
276
+ if (this.#issueDetails.cookie && this.#issueDetails.cookieUrl && status !== undefined) {
277
+ const entity = ThirdPartyWeb.ThirdPartyWeb.getEntity(this.#issueDetails.cookieUrl);
278
+ return {
279
+ name: this.#issueDetails.cookie.name,
280
+ domain: this.#issueDetails.cookie.domain,
281
+ type: entity?.category,
282
+ platform: entity?.name,
283
+ status,
284
+ };
285
+ }
286
+
287
+ return;
288
+ }
289
+
290
+ static getCookieStatus(cookieIssueDetails: Protocol.Audits.CookieIssueDetails): CookieStatus|undefined {
291
+ if (cookieIssueDetails.cookieExclusionReasons.includes(
292
+ Protocol.Audits.CookieExclusionReason.ExcludeThirdPartyPhaseout)) {
293
+ return CookieStatus.BLOCKED;
294
+ }
295
+
296
+ if (cookieIssueDetails.cookieWarningReasons.includes(
297
+ Protocol.Audits.CookieWarningReason.WarnDeprecationTrialMetadata)) {
298
+ return CookieStatus.ALLOWED_BY_GRACE_PERIOD;
299
+ }
300
+
301
+ if (cookieIssueDetails.cookieWarningReasons.includes(
302
+ Protocol.Audits.CookieWarningReason.WarnThirdPartyCookieHeuristic)) {
303
+ return CookieStatus.ALLOWED_BY_HEURISTICS;
304
+ }
305
+
306
+ if (cookieIssueDetails.cookieWarningReasons.includes(Protocol.Audits.CookieWarningReason.WarnThirdPartyPhaseout)) {
307
+ return CookieStatus.ALLOWED;
308
+ }
309
+
310
+ return;
311
+ }
312
+
248
313
  static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
249
314
  CookieIssue[] {
250
315
  const cookieIssueDetails = inspectorIssue.details.cookieIssueDetails;
@@ -542,6 +607,16 @@ const cookieCrossSiteRedirectDowngrade: LazyMarkdownIssueDescription = {
542
607
  }],
543
608
  };
544
609
 
610
+ const ExcludePortMismatch: LazyMarkdownIssueDescription = {
611
+ file: 'cookieExcludePortMismatch.md',
612
+ links: [],
613
+ };
614
+
615
+ const ExcludeSchemeMismatch: LazyMarkdownIssueDescription = {
616
+ file: 'cookieExcludeSchemeMismatch.md',
617
+ links: [],
618
+ };
619
+
545
620
  // This description will be used by cookie issues that need to be added to the
546
621
  // issueManager, but aren't intended to be surfaced in the issues pane. This
547
622
  // is why they are using a placeholder description
@@ -600,4 +675,6 @@ const issueDescriptions: Map<string, LazyMarkdownIssueDescription> = new Map([
600
675
  ['CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie', cookieExcludeThirdPartyPhaseoutRead],
601
676
  ['CookieIssue::ExcludeThirdPartyPhaseout::SetCookie', cookieExcludeThirdPartyPhaseoutSet],
602
677
  ['CookieIssue::CrossSiteRedirectDowngradeChangesInclusion', cookieCrossSiteRedirectDowngrade],
678
+ ['CookieIssue::ExcludePortMismatch', ExcludePortMismatch],
679
+ ['CookieIssue::ExcludeSchemeMismatch', ExcludeSchemeMismatch],
603
680
  ]);
@@ -129,7 +129,7 @@ const issueCodeHandlers = new Map<
129
129
  * Each issue reported by the backend can result in multiple `Issue` instances.
130
130
  * Handlers are simple functions hard-coded into a map.
131
131
  */
132
- function createIssuesFromProtocolIssue(
132
+ export function createIssuesFromProtocolIssue(
133
133
  issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue): Issue[] {
134
134
  const handler = issueCodeHandlers.get(inspectorIssue.code);
135
135
  if (handler) {
@@ -0,0 +1,8 @@
1
+ # Cookie was not sent due to port mismatch
2
+
3
+ Cookies can only be accessed by origins that share the same port as the origin
4
+ that initially set the cookie.
5
+
6
+ If this cookie is required for the request, the cookie will need to be set by an
7
+ origin with the same port as the request. Alternatively, you can utilize the
8
+ Domain attribute, which allows access to a cookie with a mismatched port.
@@ -0,0 +1,7 @@
1
+ # Cookie was not sent due to scheme mismatch
2
+
3
+ The cookie can only be accessed by origins that share the same scheme as
4
+ the origin that initially set it.
5
+
6
+ If this cookie is required for the request, the cookie will need to be set
7
+ by an origin with the same scheme as the request.
@@ -322,6 +322,11 @@ export const NativeFunctions = [
322
322
  signatures: [["thisArg","...args"]],
323
323
  receivers: ["CallableFunction","NewableFunction"]
324
324
  },
325
+ {
326
+ name: "bind",
327
+ signatures: [["innerFunction","?thisArg","...args"]],
328
+ receivers: ["Performance"]
329
+ },
325
330
  {
326
331
  name: "charAt",
327
332
  signatures: [["pos"]]
@@ -812,6 +817,11 @@ export const NativeFunctions = [
812
817
  name: "push",
813
818
  signatures: [["...items"]]
814
819
  },
820
+ {
821
+ name: "reverse",
822
+ signatures: [["input","?options"]],
823
+ receivers: ["MLGraphBuilder"]
824
+ },
815
825
  {
816
826
  name: "sort",
817
827
  signatures: [["?compareFn"]],
@@ -6506,10 +6516,6 @@ export const NativeFunctions = [
6506
6516
  name: "setHTML",
6507
6517
  signatures: [["html","?options"]]
6508
6518
  },
6509
- {
6510
- name: "getInnerHTML",
6511
- signatures: [["?options"]]
6512
- },
6513
6519
  {
6514
6520
  name: "scrollIntoViewIfNeeded",
6515
6521
  signatures: [["?centerIfNeeded"]]
@@ -7727,6 +7733,10 @@ export const NativeFunctions = [
7727
7733
  name: "takePhoto",
7728
7734
  signatures: [["?photoSettings"]]
7729
7735
  },
7736
+ {
7737
+ name: "getAllRecords",
7738
+ signatures: [["?options"]]
7739
+ },
7730
7740
  {
7731
7741
  name: "only",
7732
7742
  signatures: [["value"]]
@@ -96,7 +96,7 @@ export class EditFileSystemView extends UI.Widget.VBox implements UI.ListWidget.
96
96
  ];
97
97
 
98
98
  const excludedFoldersHeader = this.contentElement.createChild('div', 'excluded-folder-header');
99
- excludedFoldersHeader.createChild('span').textContent = i18nString(UIStrings.url);
99
+ excludedFoldersHeader.createChild('span', 'url-header').textContent = i18nString(UIStrings.url);
100
100
  excludedFoldersHeader.createChild('span', 'excluded-folder-url').textContent = fileSystemPath;
101
101
 
102
102
  const excludeSubFoldersText = this.contentElement.createChild('span', 'exclude-subfolders-text');
@@ -128,7 +128,7 @@ export class EditFileSystemView extends UI.Widget.VBox implements UI.ListWidget.
128
128
  return IsolatedFileSystemManager.instance().fileSystem(this.fileSystemPath) as PlatformFileSystem;
129
129
  }
130
130
 
131
- private update(): void {
131
+ override update(): void {
132
132
  if (this.muteUpdate) {
133
133
  return;
134
134
  }
@@ -7,14 +7,17 @@
7
7
  .excluded-folder-header {
8
8
  display: flex;
9
9
  flex-direction: column;
10
- height: var(--sys-size-16);
10
+ min-height: var(--sys-size-16);
11
11
  border-bottom: var(--sys-size-1) solid var(--sys-color-divider);
12
12
  padding: var(--sys-size-5) var(--sys-size-6);
13
13
 
14
+ & > .url-header {
15
+ height: var(--sys-size-9);
16
+ }
17
+
14
18
  & > .excluded-folder-url {
15
19
  color: var(--sys-color-on-surface-subtle);
16
- overflow: hidden;
17
- text-overflow: ellipsis;
20
+ overflow-wrap: break-word;
18
21
  }
19
22
  }
20
23
 
@@ -32,12 +32,12 @@ label {
32
32
  }
33
33
 
34
34
  .add-button-container {
35
- max-width: var(--sys-size-37);
35
+ max-width: var(--sys-size-35);
36
36
  margin-left: var(--sys-size-8);
37
37
  width: 100%;
38
38
 
39
39
  & .add-folder {
40
40
  min-width: var(--sys-size-31);
41
- max-width: var(--sys-size-37);
41
+ max-width: var(--sys-size-35);
42
42
  }
43
43
  }
@@ -13,11 +13,12 @@ describeWithEnvironment('Trace Metadata', () => {
13
13
  sinon.stub(cpuThrottlingManager, 'getHardwareConcurrency').returns(Promise.resolve(1));
14
14
  sinon.stub(cpuThrottlingManager, 'cpuThrottlingRate').returns(2);
15
15
  const networkManager = SDK.NetworkManager.MultitargetNetworkManager.instance({forceNew: true});
16
+ sinon.stub(networkManager, 'isThrottling').returns(true);
16
17
  sinon.stub(networkManager, 'networkConditions').returns({
17
18
  title: 'Slow 3G',
18
19
  download: 1,
19
- upload: 1,
20
- latency: 1,
20
+ upload: 2,
21
+ latency: 3,
21
22
  });
22
23
  const metadata = await Trace.Extras.Metadata.forNewRecording(/* isCpuProfile= */ false);
23
24
  assert.deepEqual(metadata, {
@@ -25,7 +26,17 @@ describeWithEnvironment('Trace Metadata', () => {
25
26
  startTime: undefined,
26
27
  cpuThrottling: 2,
27
28
  networkThrottling: 'Slow 3G',
29
+ networkThrottlingConditions: {
30
+ download: 1,
31
+ latency: 3,
32
+ upload: 2,
33
+ packetLoss: undefined,
34
+ packetQueueLength: undefined,
35
+ packetReordering: undefined,
36
+ targetLatency: undefined,
37
+ },
28
38
  dataOrigin: Trace.Types.File.DataOrigin.TRACE_EVENTS,
39
+ emulatedDeviceTitle: undefined,
29
40
  hardwareConcurrency: 1,
30
41
  });
31
42
  });
@@ -36,6 +47,7 @@ describeWithEnvironment('Trace Metadata', () => {
36
47
  sinon.stub(cpuThrottlingManager, 'getHardwareConcurrency').returns(Promise.resolve(1));
37
48
  sinon.stub(cpuThrottlingManager, 'cpuThrottlingRate').returns(2);
38
49
  const networkManager = SDK.NetworkManager.MultitargetNetworkManager.instance({forceNew: true});
50
+ sinon.stub(networkManager, 'isThrottling').returns(true);
39
51
  sinon.stub(networkManager, 'networkConditions').returns({
40
52
  title: () => 'Slow 3G',
41
53
  download: 1,
@@ -48,6 +60,16 @@ describeWithEnvironment('Trace Metadata', () => {
48
60
  startTime: undefined,
49
61
  cpuThrottling: 2,
50
62
  networkThrottling: 'Slow 3G',
63
+ networkThrottlingConditions: {
64
+ download: 1,
65
+ latency: 1,
66
+ upload: 1,
67
+ packetLoss: undefined,
68
+ packetQueueLength: undefined,
69
+ packetReordering: undefined,
70
+ targetLatency: undefined,
71
+ },
72
+ emulatedDeviceTitle: undefined,
51
73
  dataOrigin: Trace.Types.File.DataOrigin.TRACE_EVENTS,
52
74
  hardwareConcurrency: 1,
53
75
  });
@@ -59,6 +81,7 @@ describeWithEnvironment('Trace Metadata', () => {
59
81
  const getHardwareConcurrencyStub = sinon.stub(cpuThrottlingManager, 'getHardwareConcurrency');
60
82
  sinon.stub(cpuThrottlingManager, 'cpuThrottlingRate').returns(2);
61
83
  const networkManager = SDK.NetworkManager.MultitargetNetworkManager.instance({forceNew: true});
84
+ sinon.stub(networkManager, 'isThrottling').returns(true);
62
85
  sinon.stub(networkManager, 'networkConditions').returns({
63
86
  title: () => 'Slow 3G',
64
87
  download: 1,
@@ -71,7 +94,17 @@ describeWithEnvironment('Trace Metadata', () => {
71
94
  startTime: undefined,
72
95
  cpuThrottling: 2,
73
96
  networkThrottling: 'Slow 3G',
97
+ networkThrottlingConditions: {
98
+ download: 1,
99
+ latency: 1,
100
+ upload: 1,
101
+ packetLoss: undefined,
102
+ packetQueueLength: undefined,
103
+ packetReordering: undefined,
104
+ targetLatency: undefined,
105
+ },
74
106
  dataOrigin: Trace.Types.File.DataOrigin.TRACE_EVENTS,
107
+ emulatedDeviceTitle: undefined,
75
108
  hardwareConcurrency: undefined,
76
109
  });
77
110
  assert.strictEqual(getHardwareConcurrencyStub.callCount, 0);
@@ -5,7 +5,8 @@
5
5
  import * as SDK from '../../../core/sdk/sdk.js';
6
6
  import * as Types from '../types/types.js';
7
7
 
8
- export async function forNewRecording(isCpuProfile: boolean, recordStartTime?: number): Promise<Types.File.MetaData> {
8
+ export async function forNewRecording(
9
+ isCpuProfile: boolean, recordStartTime?: number, emulatedDeviceTitle?: string): Promise<Types.File.MetaData> {
9
10
  try {
10
11
  if (isCpuProfile) {
11
12
  // For CPU profile, only specify data origin
@@ -36,15 +37,33 @@ export async function forNewRecording(isCpuProfile: boolean, recordStartTime?: n
36
37
  const hardwareConcurrency =
37
38
  cpuThrottlingManager.hasPrimaryPageTargetSet() ? await getConcurrencyOrTimeout() : undefined;
38
39
  const cpuThrottling = SDK.CPUThrottlingManager.CPUThrottlingManager.instance().cpuThrottlingRate();
39
- const networkConditions = SDK.NetworkManager.MultitargetNetworkManager.instance().networkConditions();
40
- const networkTitle =
41
- typeof networkConditions.title === 'function' ? networkConditions.title() : networkConditions.title;
40
+ const networkConditions = SDK.NetworkManager.MultitargetNetworkManager.instance().isThrottling() ?
41
+ SDK.NetworkManager.MultitargetNetworkManager.instance().networkConditions() :
42
+ undefined;
43
+
44
+ let networkThrottlingConditions;
45
+ let networkTitle;
46
+ if (networkConditions) {
47
+ networkThrottlingConditions = {
48
+ download: networkConditions.download,
49
+ upload: networkConditions.upload,
50
+ latency: networkConditions.latency,
51
+ packetLoss: networkConditions.packetLoss,
52
+ packetQueueLength: networkConditions.packetQueueLength,
53
+ packetReordering: networkConditions.packetReordering,
54
+ targetLatency: networkConditions.targetLatency,
55
+ };
56
+ networkTitle =
57
+ typeof networkConditions.title === 'function' ? networkConditions.title() : networkConditions.title;
58
+ }
42
59
 
43
60
  return {
44
61
  source: 'DevTools',
45
62
  startTime: recordStartTime ? new Date(recordStartTime).toJSON() : undefined, // ISO-8601 timestamp
46
- cpuThrottling,
63
+ emulatedDeviceTitle,
64
+ cpuThrottling: cpuThrottling !== 1 ? cpuThrottling : undefined,
47
65
  networkThrottling: networkTitle,
66
+ networkThrottlingConditions,
48
67
  hardwareConcurrency,
49
68
  dataOrigin: Types.File.DataOrigin.TRACE_EVENTS,
50
69
  };