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
@@ -299,7 +299,6 @@ export const enum ExperimentName {
299
299
  TIMELINE_OBSERVATIONS = 'timeline-observations',
300
300
  TIMELINE_ENHANCED_TRACES = 'timeline-enhanced-traces',
301
301
  TIMELINE_SERVER_TIMINGS = 'timeline-server-timings',
302
- EXTENSION_STORAGE_VIEWER = 'extension-storage-viewer',
303
302
  FLOATING_ENTRY_POINTS_FOR_AI_ASSISTANCE = 'floating-entry-points-for-ai-assistance',
304
303
  TIMELINE_EXPERIMENTAL_INSIGHTS = 'timeline-experimental-insights',
305
304
  TIMELINE_DIM_UNRELATED_EVENTS = 'timeline-dim-unrelated-events',
@@ -58,6 +58,56 @@ describeWithMockConnection('MultitargetNetworkManager', () => {
58
58
  }
59
59
  assert.isTrue(expectedCall.calledOnceWith({origin: 'https://example.com'}));
60
60
  });
61
+
62
+ it('blocking settings are consistent after change', async () => {
63
+ const multitargetNetworkManager = SDK.NetworkManager.MultitargetNetworkManager.instance({forceNew: true});
64
+ let eventCounter = 0;
65
+ multitargetNetworkManager.addEventListener(
66
+ SDK.NetworkManager.MultitargetNetworkManager.Events.BLOCKED_PATTERNS_CHANGED, () => eventCounter++);
67
+ const blockingEnabledSetting = Common.Settings.Settings.instance().moduleSetting('request-blocking-enabled');
68
+ const blockedPatternsSetting: Common.Settings.Setting<SDK.NetworkManager.BlockedPattern[]> =
69
+ Common.Settings.Settings.instance().createSetting('network-blocked-patterns', []);
70
+
71
+ // Change blocking setting via Common.Settings.Settings.
72
+ assert.isFalse(multitargetNetworkManager.isBlocking());
73
+ assert.isFalse(multitargetNetworkManager.blockingEnabled());
74
+ blockingEnabledSetting.set(true);
75
+ assert.strictEqual(eventCounter, 1);
76
+ assert.isFalse(multitargetNetworkManager.isBlocking());
77
+ assert.isTrue(multitargetNetworkManager.blockingEnabled());
78
+ blockedPatternsSetting.set([{url: 'example.com', enabled: true}]);
79
+ assert.strictEqual(eventCounter, 2);
80
+ assert.isTrue(multitargetNetworkManager.isBlocking());
81
+ assert.isTrue(multitargetNetworkManager.blockingEnabled());
82
+ blockedPatternsSetting.set([]);
83
+ assert.strictEqual(eventCounter, 3);
84
+ assert.isFalse(multitargetNetworkManager.isBlocking());
85
+ assert.isTrue(multitargetNetworkManager.blockingEnabled());
86
+ blockingEnabledSetting.set(false);
87
+ assert.strictEqual(eventCounter, 4);
88
+ assert.isFalse(multitargetNetworkManager.isBlocking());
89
+ assert.isFalse(multitargetNetworkManager.blockingEnabled());
90
+
91
+ // Change blocking setting via MultitargetNetworkManager.
92
+ assert.isFalse(multitargetNetworkManager.isBlocking());
93
+ assert.isFalse(multitargetNetworkManager.blockingEnabled());
94
+ multitargetNetworkManager.setBlockingEnabled(true);
95
+ assert.strictEqual(eventCounter, 5);
96
+ assert.isFalse(multitargetNetworkManager.isBlocking());
97
+ assert.isTrue(multitargetNetworkManager.blockingEnabled());
98
+ multitargetNetworkManager.setBlockedPatterns([{url: 'example.com', enabled: true}]);
99
+ assert.strictEqual(eventCounter, 6);
100
+ assert.isTrue(multitargetNetworkManager.isBlocking());
101
+ assert.isTrue(multitargetNetworkManager.blockingEnabled());
102
+ multitargetNetworkManager.setBlockedPatterns([]);
103
+ assert.strictEqual(eventCounter, 7);
104
+ assert.isFalse(multitargetNetworkManager.isBlocking());
105
+ assert.isTrue(multitargetNetworkManager.blockingEnabled());
106
+ multitargetNetworkManager.setBlockingEnabled(false);
107
+ assert.strictEqual(eventCounter, 8);
108
+ assert.isFalse(multitargetNetworkManager.isBlocking());
109
+ assert.isFalse(multitargetNetworkManager.blockingEnabled());
110
+ });
61
111
  });
62
112
 
63
113
  describe('NetworkDispatcher', () => {
@@ -1295,8 +1295,14 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
1295
1295
  this.#updatingInterceptionPatternsPromise = null;
1296
1296
 
1297
1297
  // TODO(allada) Remove these and merge it with request interception.
1298
+ const blockedPatternChanged: () => void = () => {
1299
+ this.updateBlockedPatterns();
1300
+ this.dispatchEventToListeners(MultitargetNetworkManager.Events.BLOCKED_PATTERNS_CHANGED);
1301
+ };
1298
1302
  this.#blockingEnabledSetting = Common.Settings.Settings.instance().moduleSetting('request-blocking-enabled');
1303
+ this.#blockingEnabledSetting.addChangeListener(blockedPatternChanged);
1299
1304
  this.#blockedPatternsSetting = Common.Settings.Settings.instance().createSetting('network-blocked-patterns', []);
1305
+ this.#blockedPatternsSetting.addChangeListener(blockedPatternChanged);
1300
1306
  this.#effectiveBlockedURLs = [];
1301
1307
  this.updateBlockedPatterns();
1302
1308
 
@@ -1537,8 +1543,6 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
1537
1543
 
1538
1544
  setBlockedPatterns(patterns: BlockedPattern[]): void {
1539
1545
  this.#blockedPatternsSetting.set(patterns);
1540
- this.updateBlockedPatterns();
1541
- this.dispatchEventToListeners(MultitargetNetworkManager.Events.BLOCKED_PATTERNS_CHANGED);
1542
1546
  }
1543
1547
 
1544
1548
  setBlockingEnabled(enabled: boolean): void {
@@ -1546,8 +1550,6 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
1546
1550
  return;
1547
1551
  }
1548
1552
  this.#blockingEnabledSetting.set(enabled);
1549
- this.updateBlockedPatterns();
1550
- this.dispatchEventToListeners(MultitargetNetworkManager.Events.BLOCKED_PATTERNS_CHANGED);
1551
1553
  }
1552
1554
 
1553
1555
  private updateBlockedPatterns(): void {
@@ -1239,12 +1239,12 @@ describeWithEnvironment('SourceMap', () => {
1239
1239
  // 'foo' calls 'bar', 'bar' calls 'baz'. 'bar' and 'baz' are inlined into 'foo'.
1240
1240
  const names: string[] = [];
1241
1241
  const originalScopes = [new OriginalScopeBuilder(names)
1242
- .start(0, 0, 'global')
1243
- .start(10, 0, 'function', 'foo')
1242
+ .start(0, 0, {kind: 'global'})
1243
+ .start(10, 0, {kind: 'function', name: 'foo'})
1244
1244
  .end(20, 0)
1245
- .start(30, 0, 'function', 'bar')
1245
+ .start(30, 0, {kind: 'function', name: 'bar'})
1246
1246
  .end(40, 0)
1247
- .start(50, 0, 'function', 'baz')
1247
+ .start(50, 0, {kind: 'function', name: 'baz'})
1248
1248
  .end(60, 0)
1249
1249
  .end(70, 0)
1250
1250
  .build()];
@@ -1252,7 +1252,7 @@ describeWithEnvironment('SourceMap', () => {
1252
1252
  const generatedRanges =
1253
1253
  new GeneratedRangeBuilder(names)
1254
1254
  .start(0, 0, {definition: {sourceIdx: 0, scopeIdx: 0}})
1255
- .start(0, 0, {definition: {sourceIdx: 0, scopeIdx: 1}, isFunctionScope: true})
1255
+ .start(0, 0, {definition: {sourceIdx: 0, scopeIdx: 1}, isStackFrame: true})
1256
1256
  .start(0, 5, {definition: {sourceIdx: 0, scopeIdx: 3}, callsite: {sourceIdx: 0, line: 15, column: 0}})
1257
1257
  .start(0, 5, {definition: {sourceIdx: 0, scopeIdx: 5}, callsite: {sourceIdx: 0, line: 35, column: 0}})
1258
1258
  .end(0, 10)
@@ -21,6 +21,7 @@ describeWithMockConnection('SourceMapScopeRemoteObject', () => {
21
21
  const originalScope: SDK.SourceMapScopes.OriginalScope = {
22
22
  start: {line: 0, column: 0},
23
23
  end: {line: 20, column: 0},
24
+ isStackFrame: false,
24
25
  kind: 'global',
25
26
  variables: ['variable1', 'variable2'],
26
27
  children: [],
@@ -43,6 +44,7 @@ describeWithMockConnection('SourceMapScopeRemoteObject', () => {
43
44
  const originalScope: SDK.SourceMapScopes.OriginalScope = {
44
45
  start: {line: 0, column: 0},
45
46
  end: {line: 20, column: 0},
47
+ isStackFrame: false,
46
48
  kind: 'global',
47
49
  variables: ['variable1'],
48
50
  children: [],
@@ -50,7 +52,8 @@ describeWithMockConnection('SourceMapScopeRemoteObject', () => {
50
52
  const range: SDK.SourceMapScopes.GeneratedRange = {
51
53
  start: {line: 0, column: 0},
52
54
  end: {line: 0, column: 200},
53
- isFunctionScope: false,
55
+ isStackFrame: false,
56
+ isHidden: false,
54
57
  values: ['a'],
55
58
  children: [],
56
59
  };
@@ -76,6 +79,7 @@ describeWithMockConnection('SourceMapScopeRemoteObject', () => {
76
79
  const originalScope: SDK.SourceMapScopes.OriginalScope = {
77
80
  start: {line: 0, column: 0},
78
81
  end: {line: 20, column: 0},
82
+ isStackFrame: false,
79
83
  kind: 'global',
80
84
  variables: ['variable1'],
81
85
  children: [],
@@ -83,7 +87,8 @@ describeWithMockConnection('SourceMapScopeRemoteObject', () => {
83
87
  const range: SDK.SourceMapScopes.GeneratedRange = {
84
88
  start: {line: 0, column: 0},
85
89
  end: {line: 0, column: 200},
86
- isFunctionScope: false,
90
+ isStackFrame: false,
91
+ isHidden: false,
87
92
  values: [[
88
93
  {from: {line: 0, column: 0}, to: {line: 0, column: 50}, value: 'a'}, // From 0..50 available as 'a'.
89
94
  {from: {line: 0, column: 50}, to: {line: 0, column: 150}}, // From 50..150 unavailable.
@@ -78,7 +78,7 @@ export class SourceMapScopeChainEntry implements ScopeChainEntry {
78
78
  case 'block':
79
79
  return Protocol.Debugger.ScopeType.Block;
80
80
  }
81
- return this.#scope.kind;
81
+ return this.#scope.kind ?? '';
82
82
  }
83
83
 
84
84
  typeName(): string {
@@ -90,7 +90,7 @@ export class SourceMapScopeChainEntry implements ScopeChainEntry {
90
90
  case 'block':
91
91
  return i18nString(UIStrings.block);
92
92
  }
93
- return this.#scope.kind;
93
+ return this.#scope.kind ?? '';
94
94
  }
95
95
 
96
96
  name(): string|undefined {
@@ -20,20 +20,36 @@ describe('decodeOriginalScopes', () => {
20
20
 
21
21
  it('throws for missing "end" item', () => {
22
22
  const names: string[] = [];
23
- const brokenScopes = new OriginalScopeBuilder(names).start(0, 0, 'global').build();
23
+ const brokenScopes = new OriginalScopeBuilder(names).start(0, 0, {kind: 'global'}).build();
24
24
  assert.throws(() => decodeOriginalScopes([brokenScopes], names), /Malformed/);
25
25
  });
26
26
 
27
27
  it('throws if positions of subsequent start/end items are not monotonically increasing', () => {
28
28
  const names: string[] = [];
29
- const scopes =
30
- new OriginalScopeBuilder(names).start(0, 40, 'global').start(0, 25, 'function').end(0, 30).end(0, 50).build();
29
+ const scopes = new OriginalScopeBuilder(names)
30
+ .start(0, 40, {kind: 'global'})
31
+ .start(0, 25, {kind: 'function'})
32
+ .end(0, 30)
33
+ .end(0, 50)
34
+ .build();
31
35
  assert.throws(() => decodeOriginalScopes([scopes], names), /Malformed/);
32
36
  });
33
37
 
38
+ it('decodes scopes without "kind"', () => {
39
+ const names: string[] = [];
40
+ const scope = new OriginalScopeBuilder(names).start(0, 0).end(5, 0).build();
41
+
42
+ const originalScopes = decodeOriginalScopes([scope], names);
43
+
44
+ assert.lengthOf(originalScopes, 1);
45
+ const {root} = originalScopes[0];
46
+
47
+ assert.isUndefined(root.kind);
48
+ });
49
+
34
50
  it('decodes a global scope', () => {
35
51
  const names: string[] = [];
36
- const scope = new OriginalScopeBuilder(names).start(0, 0, 'global').end(5, 0).build();
52
+ const scope = new OriginalScopeBuilder(names).start(0, 0, {kind: 'global'}).end(5, 0).build();
37
53
 
38
54
  const originalScopes = decodeOriginalScopes([scope], names);
39
55
 
@@ -48,8 +64,12 @@ describe('decodeOriginalScopes', () => {
48
64
 
49
65
  it('ignores all but the first global scope (multiple top-level siblings)', () => {
50
66
  const names: string[] = [];
51
- const scope =
52
- new OriginalScopeBuilder(names).start(0, 0, 'global').end(5, 0).start(10, 0, 'global').end(20, 0).build();
67
+ const scope = new OriginalScopeBuilder(names)
68
+ .start(0, 0, {kind: 'global'})
69
+ .end(5, 0)
70
+ .start(10, 0, {kind: 'global'})
71
+ .end(20, 0)
72
+ .build();
53
73
 
54
74
  const originalScopes = decodeOriginalScopes([scope], names);
55
75
 
@@ -65,9 +85,9 @@ describe('decodeOriginalScopes', () => {
65
85
  it('decodes nested scopes', () => {
66
86
  const names: string[] = [];
67
87
  const scope = new OriginalScopeBuilder(names)
68
- .start(0, 0, 'global')
69
- .start(2, 5, 'function')
70
- .start(4, 10, 'block')
88
+ .start(0, 0, {kind: 'global'})
89
+ .start(2, 5, {kind: 'function'})
90
+ .start(4, 10, {kind: 'block'})
71
91
  .end(6, 5)
72
92
  .end(8, 0)
73
93
  .end(40, 0)
@@ -93,10 +113,10 @@ describe('decodeOriginalScopes', () => {
93
113
  it('decodes sibling scopes', () => {
94
114
  const names: string[] = [];
95
115
  const scope = new OriginalScopeBuilder(names)
96
- .start(0, 0, 'global')
97
- .start(2, 5, 'function')
116
+ .start(0, 0, {kind: 'global'})
117
+ .start(2, 5, {kind: 'function'})
98
118
  .end(4, 0)
99
- .start(6, 6, 'function')
119
+ .start(6, 6, {kind: 'function'})
100
120
  .end(8, 0)
101
121
  .end(10, 0)
102
122
  .build();
@@ -119,9 +139,9 @@ describe('decodeOriginalScopes', () => {
119
139
  it('decodes scope names', () => {
120
140
  const names: string[] = [];
121
141
  const scope = new OriginalScopeBuilder(names)
122
- .start(0, 0, 'global')
123
- .start(2, 5, 'class', 'FooClass')
124
- .start(4, 10, 'function', 'fooMethod')
142
+ .start(0, 0, {kind: 'global'})
143
+ .start(2, 5, {kind: 'class', name: 'FooClass'})
144
+ .start(4, 10, {kind: 'function', name: 'fooMethod'})
125
145
  .end(6, 5)
126
146
  .end(8, 0)
127
147
  .end(40, 0)
@@ -141,9 +161,9 @@ describe('decodeOriginalScopes', () => {
141
161
  it('decodes variable names', () => {
142
162
  const names: string[] = [];
143
163
  const scope = new OriginalScopeBuilder(names)
144
- .start(0, 0, 'global')
145
- .start(2, 5, 'function', 'fooFunction', ['functionVarFoo'])
146
- .start(4, 10, 'block', undefined, ['blockVarFoo', 'blockVarBar'])
164
+ .start(0, 0, {kind: 'global'})
165
+ .start(2, 5, {kind: 'function', name: 'fooFunction', variables: ['functionVarFoo']})
166
+ .start(4, 10, {kind: 'block', variables: ['blockVarFoo', 'blockVarBar']})
147
167
  .end(6, 5)
148
168
  .end(8, 0)
149
169
  .end(40, 0)
@@ -252,8 +272,8 @@ describe('decodeGeneratedRanges', () => {
252
272
 
253
273
  it('throws if the definition references has an invalid source index', () => {
254
274
  const names: string[] = [];
255
- const originEncodedScpoes = new OriginalScopeBuilder(names).start(2, 0, 'function').end(5, 0).build();
256
- const originalScopes = decodeOriginalScopes([originEncodedScpoes], names);
275
+ const originEncodedScopes = new OriginalScopeBuilder(names).start(2, 0, {kind: 'function'}).end(5, 0).build();
276
+ const originalScopes = decodeOriginalScopes([originEncodedScopes], names);
257
277
  const range =
258
278
  new GeneratedRangeBuilder([]).start(0, 0, {definition: {sourceIdx: 1, scopeIdx: 0}}).end(0, 20).build();
259
279
 
@@ -262,8 +282,8 @@ describe('decodeGeneratedRanges', () => {
262
282
 
263
283
  it('throws if the definition references has an invalid scope index', () => {
264
284
  const names: string[] = [];
265
- const originEncodedScpoes = new OriginalScopeBuilder(names).start(2, 0, 'function').end(5, 0).build();
266
- const originalScopes = decodeOriginalScopes([originEncodedScpoes], names);
285
+ const originEncodedScopes = new OriginalScopeBuilder(names).start(2, 0, {kind: 'function'}).end(5, 0).build();
286
+ const originalScopes = decodeOriginalScopes([originEncodedScopes], names);
267
287
  const range =
268
288
  new GeneratedRangeBuilder([]).start(0, 0, {definition: {sourceIdx: 0, scopeIdx: 4}}).end(0, 20).build();
269
289
 
@@ -272,9 +292,13 @@ describe('decodeGeneratedRanges', () => {
272
292
 
273
293
  it('decodes original scope (definition) references', () => {
274
294
  const names: string[] = [];
275
- const originEncodedScpoes =
276
- new OriginalScopeBuilder(names).start(0, 0, 'global').start(5, 0, 'function').end(10, 0).end(20, 0).build();
277
- const originalScopes = decodeOriginalScopes([originEncodedScpoes], names);
295
+ const originEncodedScopes = new OriginalScopeBuilder(names)
296
+ .start(0, 0, {kind: 'global'})
297
+ .start(5, 0, {kind: 'function'})
298
+ .end(10, 0)
299
+ .end(20, 0)
300
+ .build();
301
+ const originalScopes = decodeOriginalScopes([originEncodedScopes], names);
278
302
  const range = new GeneratedRangeBuilder([])
279
303
  .start(0, 0, {definition: {sourceIdx: 0, scopeIdx: 0}})
280
304
  .start(0, 5, {definition: {sourceIdx: 0, scopeIdx: 1}})
@@ -292,10 +316,18 @@ describe('decodeGeneratedRanges', () => {
292
316
 
293
317
  it('decodes original scope (definition) references across multiple original sources', () => {
294
318
  const names: string[] = [];
295
- const originEncodedScopes1 =
296
- new OriginalScopeBuilder(names).start(0, 0, 'global').start(5, 0, 'function').end(10, 0).end(20, 0).build();
297
- const originEncodedScopes2 =
298
- new OriginalScopeBuilder(names).start(0, 0, 'global').start(5, 0, 'function').end(10, 0).end(20, 0).build();
319
+ const originEncodedScopes1 = new OriginalScopeBuilder(names)
320
+ .start(0, 0, {kind: 'global'})
321
+ .start(5, 0, {kind: 'function'})
322
+ .end(10, 0)
323
+ .end(20, 0)
324
+ .build();
325
+ const originEncodedScopes2 = new OriginalScopeBuilder(names)
326
+ .start(0, 0, {kind: 'global'})
327
+ .start(5, 0, {kind: 'function'})
328
+ .end(10, 0)
329
+ .end(20, 0)
330
+ .build();
299
331
  const originalScopes = decodeOriginalScopes([originEncodedScopes1, originEncodedScopes2], names);
300
332
  const range = new GeneratedRangeBuilder([])
301
333
  .start(0, 0)
@@ -314,8 +346,8 @@ describe('decodeGeneratedRanges', () => {
314
346
 
315
347
  it('throws if an inlined range\'s callsite references an invalid source index', () => {
316
348
  const names: string[] = [];
317
- const originEncodedScpoes = new OriginalScopeBuilder(names).start(2, 0, 'function').end(5, 0).build();
318
- const originalScopes = decodeOriginalScopes([originEncodedScpoes], names);
349
+ const originEncodedScopes = new OriginalScopeBuilder(names).start(2, 0, {kind: 'function'}).end(5, 0).build();
350
+ const originalScopes = decodeOriginalScopes([originEncodedScopes], names);
319
351
  const range =
320
352
  new GeneratedRangeBuilder([]).start(0, 0, {callsite: {sourceIdx: 1, line: 0, column: 0}}).end(0, 20).build();
321
353
 
@@ -324,9 +356,13 @@ describe('decodeGeneratedRanges', () => {
324
356
 
325
357
  it('decodes multiple callsite references in the same source file and the same line', () => {
326
358
  const names: string[] = [];
327
- const originEncodedScpoes =
328
- new OriginalScopeBuilder(names).start(0, 0, 'global').start(1, 0, 'function').end(4, 0).end(10, 0).build();
329
- const originalScopes = decodeOriginalScopes([originEncodedScpoes], names);
359
+ const originEncodedScopes = new OriginalScopeBuilder(names)
360
+ .start(0, 0, {kind: 'global'})
361
+ .start(1, 0, {kind: 'function'})
362
+ .end(4, 0)
363
+ .end(10, 0)
364
+ .build();
365
+ const originalScopes = decodeOriginalScopes([originEncodedScopes], names);
330
366
  const range =
331
367
  new GeneratedRangeBuilder([])
332
368
  .start(0, 0, {definition: {sourceIdx: 0, scopeIdx: 0}})
@@ -350,9 +386,13 @@ describe('decodeGeneratedRanges', () => {
350
386
  it('decodes multiple callsite refrences over multiple source files', () => {
351
387
  // A single function in the first file, is called in the first and second file. The bundler inlines both call-sites.
352
388
  const names: string[] = [];
353
- const originalEncodedScopes1 =
354
- new OriginalScopeBuilder(names).start(0, 0, 'global').start(1, 0, 'function').end(4, 0).end(10, 0).build();
355
- const originalEncodedScopes2 = new OriginalScopeBuilder(names).start(0, 0, 'global').end(10, 0).build();
389
+ const originalEncodedScopes1 = new OriginalScopeBuilder(names)
390
+ .start(0, 0, {kind: 'global'})
391
+ .start(1, 0, {kind: 'function'})
392
+ .end(4, 0)
393
+ .end(10, 0)
394
+ .build();
395
+ const originalEncodedScopes2 = new OriginalScopeBuilder(names).start(0, 0, {kind: 'global'}).end(10, 0).build();
356
396
  const originalScopes = decodeOriginalScopes([originalEncodedScopes1, originalEncodedScopes2], names);
357
397
  const range =
358
398
  new GeneratedRangeBuilder([])
@@ -381,8 +421,10 @@ describe('decodeGeneratedRanges', () => {
381
421
 
382
422
  it('decodes bindings that are available/unavailable for the full range', () => {
383
423
  const names: string[] = [];
384
- const originalEncodedScopes =
385
- new OriginalScopeBuilder(names).start(0, 0, 'global', undefined, ['foo', 'bar', 'baz']).end(10, 0).build();
424
+ const originalEncodedScopes = new OriginalScopeBuilder(names)
425
+ .start(0, 0, {kind: 'global', variables: ['foo', 'bar', 'baz']})
426
+ .end(10, 0)
427
+ .build();
386
428
  const originalScopes = decodeOriginalScopes([originalEncodedScopes], names);
387
429
  const range = new GeneratedRangeBuilder(names)
388
430
  .start(0, 0, {definition: {sourceIdx: 0, scopeIdx: 0}, bindings: ['x', undefined, 'y']})
@@ -398,7 +440,7 @@ describe('decodeGeneratedRanges', () => {
398
440
  it('decodes bindings that are available with different expressions throughout a range', () => {
399
441
  const names: string[] = [];
400
442
  const originalEncodedScopes =
401
- new OriginalScopeBuilder(names).start(0, 0, 'global', undefined, ['foo']).end(10, 0).build();
443
+ new OriginalScopeBuilder(names).start(0, 0, {kind: 'global', variables: ['foo']}).end(10, 0).build();
402
444
  const originalScopes = decodeOriginalScopes([originalEncodedScopes], names);
403
445
  const range = new GeneratedRangeBuilder(names)
404
446
  .start(0, 0, {
@@ -422,19 +464,44 @@ describe('decodeGeneratedRanges', () => {
422
464
  ]);
423
465
  });
424
466
 
425
- it('decodes the "isFunctionScope" flag', () => {
467
+ it('decodes the "isStackFrame" flag in original scopes', () => {
468
+ const names: string[] = [];
469
+ const originalEncodedScopes = new OriginalScopeBuilder(names).start(0, 0, {isStackFrame: true}).end(5, 0).build();
470
+
471
+ const [{root}] = decodeOriginalScopes([originalEncodedScopes], names);
472
+
473
+ assert.isTrue(root.isStackFrame);
474
+ });
475
+
476
+ it('decodes the "isStackFrame" flag in generated ranges', () => {
477
+ const range = new GeneratedRangeBuilder([])
478
+ .start(0, 0)
479
+ .start(5, 0, {isStackFrame: true})
480
+ .end(10, 0)
481
+ .start(20, 4, {isStackFrame: false})
482
+ .end(30, 0)
483
+ .end(40, 0)
484
+ .build();
485
+
486
+ const [generatedRange] = decodeGeneratedRanges(range, [], []);
487
+ assert.lengthOf(generatedRange.children, 2);
488
+ assert.isTrue(generatedRange.children[0].isStackFrame);
489
+ assert.isFalse(generatedRange.children[1].isStackFrame);
490
+ });
491
+
492
+ it('decodes the "isHidden" flag', () => {
426
493
  const range = new GeneratedRangeBuilder([])
427
494
  .start(0, 0)
428
- .start(5, 0, {isFunctionScope: true})
495
+ .start(5, 0, {isHidden: true})
429
496
  .end(10, 0)
430
- .start(20, 4, {isFunctionScope: false})
497
+ .start(20, 4)
431
498
  .end(30, 0)
432
499
  .end(40, 0)
433
500
  .build();
434
501
 
435
502
  const [generatedRange] = decodeGeneratedRanges(range, [], []);
436
503
  assert.lengthOf(generatedRange.children, 2);
437
- assert.isTrue(generatedRange.children[0].isFunctionScope);
438
- assert.isFalse(generatedRange.children[1].isFunctionScope);
504
+ assert.isTrue(generatedRange.children[0].isHidden);
505
+ assert.isFalse(generatedRange.children[1].isHidden);
439
506
  });
440
507
  });
@@ -26,8 +26,9 @@ export interface OriginalScope {
26
26
  * Other languages might require language-specific scope kinds, in which case we'll print the
27
27
  * kind as-is.
28
28
  */
29
- kind: string;
29
+ kind?: string;
30
30
  name?: string;
31
+ isStackFrame: boolean;
31
32
  variables: string[];
32
33
  children: OriginalScope[];
33
34
  parent?: OriginalScope;
@@ -44,7 +45,12 @@ export interface GeneratedRange {
44
45
  /**
45
46
  * Whether this generated range is an actual JavaScript function in the generated code.
46
47
  */
47
- isFunctionScope: boolean;
48
+ isStackFrame: boolean;
49
+ /**
50
+ * Whether calls to this generated range should be hidden from stack traces even if
51
+ * this range has an `originalScope`.
52
+ */
53
+ isHidden: boolean;
48
54
 
49
55
  /**
50
56
  * If this `GeneratedRange` is the result of inlining `originalScope`, then `callsite`
@@ -101,14 +107,22 @@ function decodeOriginalScope(encodedOriginalScope: string, names: string[]): Ori
101
107
  line += item.line;
102
108
  const {column} = item;
103
109
  if (isStart(item)) {
104
- kindIdx += item.kind;
105
- const kind = resolveName(kindIdx, names);
106
- if (kind === undefined) {
107
- throw new Error(`Scope does not have a valid kind '${kind}'`);
110
+ let kind: string|undefined;
111
+ if (item.kind !== undefined) {
112
+ kindIdx += item.kind;
113
+ kind = resolveName(kindIdx, names);
108
114
  }
109
115
  const name = resolveName(item.name, names);
110
116
  const variables = item.variables.map(idx => names[idx]);
111
- const scope: OriginalScope = {start: {line, column}, end: {line, column}, kind, name, variables, children: []};
117
+ const scope: OriginalScope = {
118
+ start: {line, column},
119
+ end: {line, column},
120
+ kind,
121
+ name,
122
+ isStackFrame: Boolean(item.flags & EncodedOriginalScopeFlag.IS_STACK_FRAME),
123
+ variables,
124
+ children: [],
125
+ };
112
126
  scopeStack.push(scope);
113
127
  scopeForItemIndex.set(index, scope);
114
128
  } else {
@@ -132,19 +146,25 @@ function decodeOriginalScope(encodedOriginalScope: string, names: string[]): Ori
132
146
  interface EncodedOriginalScopeStart {
133
147
  line: number;
134
148
  column: number;
135
- kind: number;
136
149
  flags: number;
137
150
  name?: number;
151
+ kind?: number;
138
152
  variables: number[];
139
153
  }
140
154
 
155
+ export const enum EncodedOriginalScopeFlag {
156
+ HAS_NAME = 0x1,
157
+ HAS_KIND = 0x2,
158
+ IS_STACK_FRAME = 0x4,
159
+ }
160
+
141
161
  interface EncodedOriginalScopeEnd {
142
162
  line: number;
143
163
  column: number;
144
164
  }
145
165
 
146
166
  function isStart(item: EncodedOriginalScopeStart|EncodedOriginalScopeEnd): item is EncodedOriginalScopeStart {
147
- return 'kind' in item;
167
+ return 'flags' in item;
148
168
  }
149
169
 
150
170
  function*
@@ -173,14 +193,16 @@ function*
173
193
  const startItem: EncodedOriginalScopeStart = {
174
194
  line,
175
195
  column,
176
- kind: iter.nextVLQ(),
177
196
  flags: iter.nextVLQ(),
178
197
  variables: [],
179
198
  };
180
199
 
181
- if (startItem.flags & 0x1) {
200
+ if (startItem.flags & EncodedOriginalScopeFlag.HAS_NAME) {
182
201
  startItem.name = iter.nextVLQ();
183
202
  }
203
+ if (startItem.flags & EncodedOriginalScopeFlag.HAS_KIND) {
204
+ startItem.kind = iter.nextVLQ();
205
+ }
184
206
 
185
207
  while (iter.hasNext() && iter.peek() !== ',') {
186
208
  startItem.variables.push(iter.nextVLQ());
@@ -196,7 +218,8 @@ export function decodeGeneratedRanges(
196
218
  const rangeStack: GeneratedRange[] = [{
197
219
  start: {line: 0, column: 0},
198
220
  end: {line: 0, column: 0},
199
- isFunctionScope: false,
221
+ isStackFrame: false,
222
+ isHidden: false,
200
223
  children: [],
201
224
  values: [],
202
225
  }];
@@ -207,7 +230,8 @@ export function decodeGeneratedRanges(
207
230
  const range: GeneratedRange = {
208
231
  start: {line: item.line, column: item.column},
209
232
  end: {line: item.line, column: item.column},
210
- isFunctionScope: Boolean(item.flags & EncodedGeneratedRangeFlag.IS_FUNCTION_SCOPE),
233
+ isStackFrame: Boolean(item.flags & EncodedGeneratedRangeFlag.IS_STACK_FRAME),
234
+ isHidden: Boolean(item.flags & EncodedGeneratedRangeFlag.IS_HIDDEN),
211
235
  values: [],
212
236
  children: [],
213
237
  };
@@ -308,7 +332,8 @@ interface EncodedGeneratedRangeEnd {
308
332
  export const enum EncodedGeneratedRangeFlag {
309
333
  HAS_DEFINITION = 0x1,
310
334
  HAS_CALLSITE = 0x2,
311
- IS_FUNCTION_SCOPE = 0x4,
335
+ IS_STACK_FRAME = 0x4,
336
+ IS_HIDDEN = 0x8,
312
337
  }
313
338
 
314
339
  function isRangeStart(item: EncodedGeneratedRangeStart|EncodedGeneratedRangeEnd): item is EncodedGeneratedRangeStart {