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
@@ -2,7 +2,11 @@
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 type * as Common from '../../core/common/common.js';
5
6
  import * as i18n from '../../core/i18n/i18n.js';
7
+ import * as SDK from '../../core/sdk/sdk.js';
8
+ import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
9
+ import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
6
10
  import * as UI from '../../ui/legacy/legacy.js';
7
11
  import * as LitHtml from '../../ui/lit-html/lit-html.js';
8
12
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -25,6 +29,30 @@ const UIStrings = {
25
29
  *@description A link the user can follow to learn more about third party cookie usage
26
30
  */
27
31
  learnMoreLink: 'Learn more about how third-party cookies are used',
32
+ /**
33
+ *@description Column header for Cookie Report table. This column will contain the name of the cookie
34
+ */
35
+ name: 'Name',
36
+ /**
37
+ *@description Column header for Cookie Report table. This column will contain the domain of the cookie
38
+ */
39
+ domain: 'Domain',
40
+ /**
41
+ *@description Column header for Cookie Report table. This column will contain the type of the cookie. E.g. Advertisement, Marketing, etc.
42
+ */
43
+ type: 'Type',
44
+ /**
45
+ *@description Column header for Cookie Report table. This column will contain the third-party of the cookie. E.g. Amazon Analytics, etc.
46
+ */
47
+ platform: 'Platform',
48
+ /**
49
+ *@description Column header for Cookie Report table, This column will contain the actionable step the user can take (if any) for the cookie
50
+ */
51
+ recommendation: 'Recommendation',
52
+ /**
53
+ *@description Column header for Cookie Report table. This column will contain the blocked or allowed status of the cookie. See status strings below for more information on the different statuses
54
+ */
55
+ status: 'Status',
28
56
  /**
29
57
  *@description Status string in the cookie report for a third-party cookie that is allowed without any sort of exception. This is also used as filter chip text to allow the user to filter the table based on cookie status
30
58
  */
@@ -37,13 +65,34 @@ const UIStrings = {
37
65
  *@description Status string in the cookie report for a third-party cookie that was blocked. This is also used as filter chip text to allow the user to filter the table based on cookie status
38
66
  */
39
67
  blocked: 'Blocked',
68
+ /**
69
+ *@description String in the Cookie Report table. This is used when any data could not be fetched and that cell is unknown
70
+ */
71
+ unknown: 'Unknown',
72
+ /**
73
+ *@description Display name for the Cookie Report table. This string is used by the data grid for accessibility.
74
+ */
75
+ report: 'Third-Party Cookie Report',
76
+ /**
77
+ *@description The main string the user sees when there are no cookie issues to show. This will take place of the table
78
+ */
79
+ emptyReport: 'Not a crumb left',
80
+ /**
81
+ *@description Explanation to the user that there were no third-party cookie related issues found which is why they are not seeing the table/report
82
+ */
83
+ emptyReportExplanation: 'No issues with third-party cookies found',
40
84
  };
41
85
  const str_ = i18n.i18n.registerUIStrings('panels/security/CookieReportView.ts', UIStrings);
42
86
  export const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
43
87
 
44
- export interface ViewInput {}
88
+ export interface ViewInput {
89
+ gridData: DataGrid.DataGrid.DataGridNode<CookieReportNodeData>[];
90
+ onFilterChanged: () => void;
91
+ onSortingChanged: () => void;
92
+ }
45
93
  export interface ViewOutput {
46
94
  namedBitSetFilterUI?: UI.FilterBar.NamedBitSetFilterUI;
95
+ dataGrid?: DataGrid.DataGrid.DataGridImpl<CookieReportNodeData>;
47
96
  }
48
97
 
49
98
  export interface CookieReportNodeData {
@@ -79,10 +128,28 @@ const filterItems: UI.FilterBar.Item[] = [
79
128
  ];
80
129
 
81
130
  export class CookieReportView extends UI.Widget.VBox {
131
+ #issuesManager?: IssuesManager.IssuesManager.IssuesManager;
82
132
  namedBitSetFilterUI?: UI.FilterBar.NamedBitSetFilterUI;
133
+ #cookieRows: Map<string, IssuesManager.CookieIssue.CookieReportInfo> = new Map();
83
134
  #view: View;
135
+ dataGrid?: DataGrid.DataGrid.DataGridImpl<CookieReportNodeData>;
136
+ gridData: DataGrid.DataGrid.DataGridNode<CookieReportNodeData>[] = [];
84
137
 
85
138
  constructor(element?: HTMLElement, view: View = (input, output, target) => {
139
+ const dataGridOptions: DataGrid.DataGrid.DataGridWidgetOptions<CookieReportNodeData> = {
140
+ nodes: input.gridData,
141
+ displayName: i18nString(UIStrings.report),
142
+ columns: [
143
+ {id: 'name', title: i18nString(UIStrings.name), weight: 1, sortable: true},
144
+ {id: 'domain', title: i18nString(UIStrings.domain), weight: 1, sortable: true},
145
+ {id: 'type', title: i18nString(UIStrings.type), weight: 1, sortable: true},
146
+ {id: 'platform', title: i18nString(UIStrings.platform), weight: 1, sortable: true},
147
+ {id: 'status', title: i18nString(UIStrings.status), weight: 1, sortable: true},
148
+ {id: 'recommendation', title: i18nString(UIStrings.recommendation), weight: 1, sortable: true},
149
+ ],
150
+ striped: true,
151
+ };
152
+
86
153
  // clang-format off
87
154
  render(html `
88
155
  <div class="report overflow-auto">
@@ -90,15 +157,43 @@ export class CookieReportView extends UI.Widget.VBox {
90
157
  <div class="title">${i18nString(UIStrings.title)}</div>
91
158
  <div class="body">${i18nString(UIStrings.body)} <x-link class="x-link" href="https://developers.google.com/privacy-sandbox/cookies/prepare/audit-cookies" jslog=${VisualLogging.link('learn-more').track({click: true})}>${i18nString(UIStrings.learnMoreLink)}</x-link></div>
92
159
  </div>
93
- <devtools-named-bit-set-filter
94
- class="filter"
95
- .options=${{items: filterItems}}
96
- ${ref((el?: Element) => {
97
- if(el instanceof UI.FilterBar.NamedBitSetFilterUIElement){
98
- output.namedBitSetFilterUI = el.getOrCreateNamedBitSetFilterUI();
99
- }
100
- })}
101
- ></devtools-named-bit-set-filter>
160
+ ${input.gridData.length > 0 ?
161
+ html`
162
+ <devtools-named-bit-set-filter
163
+ class="filter"
164
+ @filterChanged=${input.onFilterChanged}
165
+ .options=${{items: filterItems}}
166
+ ${ref((el?: Element) => {
167
+ if(el instanceof UI.FilterBar.NamedBitSetFilterUIElement){
168
+ output.namedBitSetFilterUI = el.getOrCreateNamedBitSetFilterUI();
169
+ }
170
+ })}
171
+ ></devtools-named-bit-set-filter>
172
+ <!-- @ts-ignore -->
173
+ <devtools-data-grid-widget
174
+ @sortingChanged=${input.onSortingChanged}
175
+ .options=${dataGridOptions}
176
+ ${UI.Widget.widgetRef(DataGrid.DataGrid.DataGridWidget, w => {
177
+ output.dataGrid = w.dataGrid;
178
+ })}
179
+ ></devtools-data-grid-widget>
180
+ ` :
181
+ html `
182
+ <div class="empty-report">
183
+ <devtools-icon
184
+ class="cookie-off"
185
+ .name=${'cookie_off'}
186
+ ></devtools-icon>
187
+ <div class="empty-report-title">
188
+ ${i18nString(UIStrings.emptyReport)}
189
+ </div>
190
+ <div class="body">
191
+ ${i18nString(UIStrings.emptyReportExplanation)}
192
+ </div>
193
+ </div>
194
+ `
195
+ }
196
+
102
197
  </div>
103
198
  `, target, {host: this});
104
199
  // clang-format on
@@ -106,15 +201,116 @@ export class CookieReportView extends UI.Widget.VBox {
106
201
  super(true, undefined, element);
107
202
  this.#view = view;
108
203
 
109
- this.doUpdate();
204
+ SDK.TargetManager.TargetManager.instance().addModelListener(
205
+ SDK.ResourceTreeModel.ResourceTreeModel, SDK.ResourceTreeModel.Events.PrimaryPageChanged,
206
+ this.#onPrimaryPageChanged, this);
207
+
208
+ this.#issuesManager = IssuesManager.IssuesManager.IssuesManager.instance();
209
+ this.#issuesManager.addEventListener(
210
+ IssuesManager.IssuesManager.Events.ISSUE_ADDED, this.#onIssueEventReceived, this);
211
+ for (const issue of this.#issuesManager.issues()) {
212
+ if (issue instanceof IssuesManager.CookieIssue.CookieIssue) {
213
+ this.#onIssueAdded(issue);
214
+ }
215
+ }
216
+
217
+ this.update();
110
218
  }
111
219
 
112
- doUpdate(): void {
220
+ override async doUpdate(): Promise<void> {
221
+ this.gridData = this.#buildNodes();
113
222
  this.#view(this, this, this.contentElement);
114
223
  }
115
224
 
225
+ onFilterChanged(): void {
226
+ this.update();
227
+ }
228
+
229
+ onSortingChanged(): void {
230
+ this.update();
231
+ }
232
+
233
+ #onPrimaryPageChanged(): void {
234
+ this.#cookieRows.clear();
235
+ this.update();
236
+ }
237
+
238
+ #onIssueEventReceived(event: Common.EventTarget.EventTargetEvent<IssuesManager.IssuesManager.IssueAddedEvent>): void {
239
+ if (event.data.issue instanceof IssuesManager.CookieIssue.CookieIssue) {
240
+ if (this.#cookieRows.has(event.data.issue.cookieId())) {
241
+ return;
242
+ }
243
+ this.#onIssueAdded(event.data.issue);
244
+ this.update();
245
+ }
246
+ }
247
+
248
+ #onIssueAdded(issue: IssuesManager.CookieIssue.CookieIssue): void {
249
+ const info = issue.makeCookieReportEntry();
250
+ if (info) {
251
+ this.#cookieRows.set(issue.cookieId(), info);
252
+ }
253
+ }
254
+
255
+ #buildNodes(): DataGrid.DataGrid.DataGridNode<CookieReportNodeData>[] {
256
+ return [...this.#cookieRows.values()]
257
+ .filter(row => {
258
+ if (this.namedBitSetFilterUI) {
259
+ return this.namedBitSetFilterUI.accept(CookieReportView.getStatusString(row.status));
260
+ }
261
+ return true;
262
+ })
263
+ .sort((a, b) => {
264
+ if (!this.dataGrid) {
265
+ return 0;
266
+ }
267
+ const columnId = this.dataGrid.sortColumnId();
268
+ let result = 0;
269
+ if (columnId === 'name') {
270
+ result = a.name.localeCompare(b.name);
271
+ } else if (columnId === 'domain') {
272
+ result = a.domain.localeCompare(b.domain);
273
+ } else if (columnId === 'type') {
274
+ result = (a.type ?? i18nString(UIStrings.unknown)).localeCompare((b.type ?? i18nString(UIStrings.unknown)));
275
+ } else if (columnId === 'platform') {
276
+ result = (a.platform ?? i18nString(UIStrings.unknown))
277
+ .localeCompare((b.platform ?? i18nString(UIStrings.unknown)));
278
+ } else if (columnId === 'status') {
279
+ result =
280
+ CookieReportView.getStatusString(a.status).localeCompare(CookieReportView.getStatusString(b.status));
281
+ } else if (columnId === 'recommendation') {
282
+ result = (a.recommendation ?? i18nString(UIStrings.unknown))
283
+ .localeCompare((b.recommendation ?? i18nString(UIStrings.unknown)));
284
+ }
285
+ return this.dataGrid.isSortOrderAscending() ? result : -result;
286
+ })
287
+ .map(
288
+ row => new DataGrid.DataGrid.DataGridNode<CookieReportNodeData>(
289
+ {
290
+ name: row.name,
291
+ domain: row.domain,
292
+ type: row.type ?? i18nString(UIStrings.unknown),
293
+ platform: row.platform ?? i18nString(UIStrings.unknown),
294
+ status: CookieReportView.getStatusString(row.status),
295
+ recommendation: row.recommendation ?? i18nString(UIStrings.unknown),
296
+ } as CookieReportNodeData,
297
+ ));
298
+ }
299
+
116
300
  override wasShown(): void {
117
301
  super.wasShown();
118
302
  this.registerCSSFiles([cookieReportViewStyles]);
119
303
  }
304
+
305
+ static getStatusString(status: IssuesManager.CookieIssue.CookieStatus): string {
306
+ switch (status) {
307
+ case IssuesManager.CookieIssue.CookieStatus.BLOCKED:
308
+ return i18nString(UIStrings.blocked);
309
+ case IssuesManager.CookieIssue.CookieStatus.ALLOWED_BY_GRACE_PERIOD:
310
+ case IssuesManager.CookieIssue.CookieStatus.ALLOWED_BY_HEURISTICS:
311
+ return i18nString(UIStrings.allowedByException);
312
+ case IssuesManager.CookieIssue.CookieStatus.ALLOWED:
313
+ return i18nString(UIStrings.allowed);
314
+ }
315
+ }
120
316
  }
@@ -14,6 +14,7 @@ import * as UI from '../../ui/legacy/legacy.js';
14
14
  import * as LitHtml from '../../ui/lit-html/lit-html.js';
15
15
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
16
16
 
17
+ import {CookieControlsView} from './CookieControlsView.js';
17
18
  import {CookieReportView} from './CookieReportView.js';
18
19
  import lockIconStyles from './lockIcon.css.js';
19
20
  import mainViewStyles from './mainView.css.js';
@@ -572,6 +573,7 @@ export class SecurityPanel extends UI.Panel.Panel implements SDK.TargetManager.S
572
573
  slot="sidebar"
573
574
  .widgetClass=${SecurityPanelSidebar}
574
575
  @showCookieReport=${()=>output.setVisibleView(new CookieReportView())}
576
+ @showFlagControls=${() => output.setVisibleView(new CookieControlsView())}
575
577
  ${UI.Widget.widgetRef(SecurityPanelSidebar, e => {output.sidebar = e;})}>
576
578
  </devtools-widget>
577
579
  </devtools-split-widget>`,
@@ -580,7 +582,7 @@ export class SecurityPanel extends UI.Panel.Panel implements SDK.TargetManager.S
580
582
  }) {
581
583
  super('security');
582
584
 
583
- this.doUpdate();
585
+ void this.doUpdate();
584
586
 
585
587
  this.sidebar.setMinimumSize(100, 25);
586
588
  this.sidebar.element.classList.add('panel-sidebar');
@@ -640,7 +642,7 @@ export class SecurityPanel extends UI.Panel.Panel implements SDK.TargetManager.S
640
642
  return certificateButton;
641
643
  }
642
644
 
643
- private doUpdate(): void {
645
+ override async doUpdate(): Promise<void> {
644
646
  this.view({panel: this}, this, this.contentElement);
645
647
  }
646
648
 
@@ -825,7 +827,7 @@ export class SecurityPanel extends UI.Panel.Panel implements SDK.TargetManager.S
825
827
  const {frame} = event.data;
826
828
  const request = this.lastResponseReceivedForLoaderId.get(frame.loaderId);
827
829
 
828
- if (!(this.visibleView instanceof CookieReportView)) {
830
+ if (!(this.visibleView instanceof CookieReportView) && !(this.visibleView instanceof CookieControlsView)) {
829
831
  this.selectAndSwitchToMainView();
830
832
  }
831
833
  this.sidebar.clearOrigins();
@@ -8,6 +8,7 @@ import * as Platform from '../../core/platform/platform.js';
8
8
  import * as Protocol from '../../generated/protocol.js';
9
9
  import * as UI from '../../ui/legacy/legacy.js';
10
10
 
11
+ import {CookieControlsTreeElement} from './CookieControlsTreeElement.js';
11
12
  import {CookieReportTreeElement} from './CookieReportTreeElement.js';
12
13
  import lockIconStyles from './lockIcon.css.js';
13
14
  import {OriginTreeElement} from './OriginTreeElement.js';
@@ -33,6 +34,10 @@ const UIStrings = {
33
34
  *@description Sidebar element text in the Security panel
34
35
  */
35
36
  cookieReport: 'Third-party cookies',
37
+ /**
38
+ *@description Sidebar element text in the Security panel
39
+ */
40
+ flagControls: 'Controls',
36
41
  /**
37
42
  *@description Text in Security Panel of the Security panel
38
43
  */
@@ -90,6 +95,7 @@ export class SecurityPanelSidebar extends UI.Widget.VBox {
90
95
 
91
96
  if (Common.Settings.Settings.instance().getHostConfig().devToolsPrivacyUI?.enabled) {
92
97
  const privacyTreeSection = this.#addSidebarSection(i18nString(UIStrings.privacy), 'privacy');
98
+ privacyTreeSection.appendChild(new CookieControlsTreeElement(i18nString(UIStrings.flagControls)));
93
99
  privacyTreeSection.appendChild(new CookieReportTreeElement(i18nString(UIStrings.cookieReport)));
94
100
  }
95
101
 
@@ -148,7 +154,6 @@ export class SecurityPanelSidebar extends UI.Widget.VBox {
148
154
  #createOriginGroupElement(originGroupTitle: string): UI.TreeOutline.TreeElement {
149
155
  const originGroup = new UI.TreeOutline.TreeElement(originGroupTitle, true);
150
156
  originGroup.selectable = false;
151
- originGroup.setCollapsible(false);
152
157
  originGroup.expand();
153
158
  originGroup.listItemElement.classList.add('security-sidebar-origins');
154
159
  UI.ARIAUtils.setLabel(originGroup.childrenListElement, originGroupTitle);
@@ -0,0 +1,101 @@
1
+ /*
2
+ * Copyright 2024 The Chromium Authors. All rights reserved.
3
+ * Use of this source code is governed by a BSD-style license that can be
4
+ * found in the LICENSE file.
5
+ */
6
+
7
+ .overflow-auto {
8
+ height: 100%;
9
+ }
10
+
11
+ .controls {
12
+ display: flex;
13
+ flex-direction: column;
14
+ padding: var(--sys-size-5) var(--sys-size-8) var(--sys-size-5) var(--sys-size-5);
15
+ min-width: var(--sys-size-33);
16
+ }
17
+
18
+ .header {
19
+ padding-left: var(--sys-size-5);
20
+ }
21
+
22
+ .title {
23
+ font: var(--sys-typescale-headline4);
24
+ }
25
+
26
+ .card {
27
+ display: flex;
28
+ flex-direction: column;
29
+ padding: var(--sys-size-6) var(--sys-size-8);
30
+ gap: var(--sys-size-6);
31
+
32
+ &.enterprise-disabled {
33
+ color: var(--sys-color-token-subtle);
34
+ }
35
+ }
36
+
37
+ .card-header {
38
+ display: flex;
39
+ align-items: center;
40
+ }
41
+
42
+ .card-header > .lhs {
43
+ width: 100%;
44
+ display: flex;
45
+ justify-content: space-between;
46
+ align-items: center;
47
+ padding-right: var(--sys-size-9);
48
+
49
+ & > devtools-icon {
50
+ height: var(--sys-size-11);
51
+ width: var(--sys-size-11);
52
+ }
53
+ }
54
+
55
+ .text {
56
+ display: flex;
57
+ flex-direction: column;
58
+ gap: var(--sys-size-2);
59
+ }
60
+
61
+ .card-title {
62
+ font: var(--sys-typescale-headline5);
63
+ }
64
+
65
+ .body {
66
+ font: var(--sys-typescale-body4-regular);
67
+ }
68
+
69
+ .checkbox-label {
70
+ gap: var(--sys-size-8);
71
+ display: flex;
72
+ align-items: center;
73
+ }
74
+
75
+ .card-row {
76
+ padding-top: var(--sys-size-4);
77
+ padding-bottom: var(--sys-size-4);
78
+ padding-left: var(--sys-size-8);
79
+ }
80
+
81
+ .card-row-title {
82
+ font: var(--sys-typescale-body4-medium);
83
+ }
84
+
85
+ .x-link {
86
+ color: var(--sys-color-primary);
87
+ text-decoration-line: underline;
88
+ cursor: pointer;
89
+ }
90
+
91
+ .enterprise {
92
+ display: flex;
93
+ flex-direction: row;
94
+ gap: var(--sys-size-9);
95
+ padding: var(--sys-size-6) var(--sys-size-8) var(--sys-size-6) var(--sys-size-11);
96
+ align-items: center;
97
+ }
98
+
99
+ input[type="checkbox"] {
100
+ flex-shrink: 0;
101
+ }
@@ -27,10 +27,10 @@
27
27
  .title {
28
28
  font: var(--sys-typescale-headline4);
29
29
  }
30
+ }
30
31
 
31
- .body {
32
- font: var(--sys-typescale-body4-regular);
33
- }
32
+ .body {
33
+ font: var(--sys-typescale-body4-regular);
34
34
  }
35
35
 
36
36
  .x-link {
@@ -44,3 +44,26 @@
44
44
  padding-right: var(--sys-size-6);
45
45
  flex-shrink: 0;
46
46
  }
47
+
48
+ .data-grid {
49
+ flex: auto;
50
+ }
51
+
52
+ .empty-report {
53
+ display: flex;
54
+ flex-direction: column;
55
+ align-items: center;
56
+ gap: var(--sys-size-2);
57
+ padding: var(--sys-size-11) var(--sys-size-6) 0 var(--sys-size-6);
58
+ flex-shrink: 0;
59
+ min-width: var(--sys-size-31);
60
+ }
61
+
62
+ .empty-report-title {
63
+ font: var(--sys-typescale-headline5);
64
+ }
65
+
66
+ .cookie-off {
67
+ width: var(--sys-size-11);
68
+ height: var(--sys-size-11);
69
+ }
@@ -2,10 +2,14 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import * as CookieControlsView from './CookieControlsView.js';
6
+ import * as CookieReportView from './CookieReportView.js';
5
7
  import * as SecurityModel from './SecurityModel.js';
6
8
  import * as SecurityPanel from './SecurityPanel.js';
7
9
 
8
10
  export {
11
+ CookieControlsView,
12
+ CookieReportView,
9
13
  SecurityModel,
10
14
  SecurityPanel,
11
15
  };
@@ -46,7 +46,7 @@
46
46
  .tree-outline span {
47
47
  font: var(--sys-typescale-body4-medium);
48
48
 
49
- &:hover:not(:has(span[is="dt-checkbox"])) .selection {
49
+ &:hover:not(:has(dt-checkbox)) .selection {
50
50
  background: transparent;
51
51
  }
52
52
  }
@@ -303,7 +303,7 @@ export class KeybindsSettingsTab extends UI.Widget.VBox implements UI.ListContro
303
303
  }
304
304
  }
305
305
 
306
- update(): void {
306
+ override update(): void {
307
307
  if (this.editingItem) {
308
308
  this.stopEditing(this.editingItem);
309
309
  }
@@ -478,7 +478,8 @@ export class ShortcutListItem {
478
478
  UI.ARIAUtils.alert(i18nString(UIStrings.shortcutRemoved, {PH1: this.item.title()}));
479
479
  }));
480
480
  } else {
481
- const keys = shortcut.descriptors.flatMap(descriptor => descriptor.name.split(' + '));
481
+ const separator = Host.Platform.isMac() ? '\u2004' : ' + ';
482
+ const keys = shortcut.descriptors.flatMap(descriptor => descriptor.name.split(separator));
482
483
  keys.forEach(key => {
483
484
  shortcutElement.createChild('div', 'keybinds-key').createChild('span').textContent = key;
484
485
  });
@@ -35,6 +35,7 @@ import type * as Platform from '../../core/platform/platform.js';
35
35
  import * as Root from '../../core/root/root.js';
36
36
  import * as Buttons from '../../ui/components/buttons/buttons.js';
37
37
  import * as Cards from '../../ui/components/cards/cards.js';
38
+ import * as IconButton from '../../ui/components/icon_button/icon_button.js';
38
39
  import * as Components from '../../ui/legacy/components/utils/utils.js';
39
40
  import * as UI from '../../ui/legacy/legacy.js';
40
41
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -86,7 +87,7 @@ const UIStrings = {
86
87
  * @description Warning text shown when the user has entered text to filter the
87
88
  * list of experiments, but no experiments match the filter.
88
89
  */
89
- noResults: 'Warning: No experiments match the filter',
90
+ noResults: 'No experiments match the filter',
90
91
  /**
91
92
  *@description Text that is usually a hyperlink to more documentation
92
93
  */
@@ -467,6 +468,9 @@ export class ExperimentsSettingsTab extends SettingsTab {
467
468
 
468
469
  private createExperimentsWarningSubsection(warningMessage: string): HTMLElement {
469
470
  const subsection = document.createElement('div');
471
+ subsection.classList.add('experiments-warning-subsection');
472
+ const warningIcon = IconButton.Icon.create('warning');
473
+ subsection.appendChild(warningIcon);
470
474
  const warning = subsection.createChild('span');
471
475
  warning.textContent = warningMessage;
472
476
  return subsection;
@@ -51,7 +51,7 @@
51
51
  flex: auto;
52
52
  }
53
53
 
54
- .ignore-list-item > [is="dt-checkbox"] {
54
+ .ignore-list-item > dt-checkbox {
55
55
  width: 100%;
56
56
  }
57
57
 
@@ -29,6 +29,10 @@
29
29
  grid-template-rows: 1fr;
30
30
  grid-template-columns: 1fr 30px 2fr 30px 30px;
31
31
  border-bottom: var(--sys-size-1) solid var(--sys-color-divider);
32
+
33
+ &:last-of-type {
34
+ border-bottom: unset;
35
+ }
32
36
  }
33
37
 
34
38
  .keybinds-list-item:focus-visible {
@@ -110,7 +114,8 @@
110
114
  }
111
115
 
112
116
  .keybinds-list-item-wrapper:has(:not(.keybinds-category-header):hover),
113
- .keybinds-list-item-wrapper:has(.keybinds-list-item:not(.keybinds-editing)):focus-within {
117
+ .keybinds-list-item-wrapper:has(
118
+ .keybinds-list-item:not(.keybinds-editing)):focus-within {
114
119
  background: var(--sys-color-state-hover-on-subtle);
115
120
  }
116
121
 
@@ -101,7 +101,9 @@ UI.ViewManager.registerViewExtension({
101
101
  iconName: 'button-magic',
102
102
  settings: ['console-insights-enabled'],
103
103
  condition: config => {
104
- return (config?.devToolsConsoleInsights?.enabled || config?.devToolsFreestyler?.enabled) ?? false;
104
+ return (config?.aidaAvailability?.enabled &&
105
+ (config?.devToolsConsoleInsights?.enabled || config?.devToolsFreestyler?.enabled)) ??
106
+ false;
105
107
  },
106
108
  });
107
109
 
@@ -146,6 +146,16 @@ devtools-button.link-icon {
146
146
  overflow: visible !important; /* stylelint-disable-line declaration-no-important */
147
147
  }
148
148
 
149
+ .experiments-warning-subsection {
150
+ display: flex;
151
+ align-items: center;
152
+
153
+ > devtools-icon {
154
+ color: var(--sys-color-orange-bright);
155
+ margin-right: var(--sys-size-4);
156
+ }
157
+ }
158
+
149
159
  @media (forced-colors: active) {
150
160
  .settings-window-title {
151
161
  color: canvastext;
@@ -202,11 +202,11 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
202
202
  }
203
203
  }
204
204
 
205
- private update(): void {
205
+ override update(): void {
206
206
  void this.updateThrottler.schedule(() => this.doUpdate());
207
207
  }
208
208
 
209
- private async doUpdate(): Promise<void> {
209
+ override async doUpdate(): Promise<void> {
210
210
  this.locationPool.disposeAll();
211
211
 
212
212
  this.callFrameWarningsElement.classList.add('hidden');
@@ -1418,6 +1418,7 @@ export class NavigatorSourceTreeElement extends UI.TreeOutline.TreeElement {
1418
1418
  if (!this.aiButtonContainer) {
1419
1419
  this.aiButtonContainer = this.listItemElement.createChild('span', 'ai-button-container');
1420
1420
  const floatingButton = new FloatingButton.FloatingButton.FloatingButton({
1421
+ title: action.title(),
1421
1422
  iconName: 'smart-assistant',
1422
1423
  });
1423
1424
  floatingButton.addEventListener('click', ev => {
@@ -127,7 +127,7 @@
127
127
  }
128
128
 
129
129
  .tree-outline li:hover:not(.selected) .selection,
130
- .tree-outline li:hover:not(:has(span[is="dt-checkbox"])) .selection {
130
+ .tree-outline li:hover:not(:has(dt-checkbox)) .selection {
131
131
  forced-color-adjust: none;
132
132
  background-color: Highlight;
133
133
  }