chrome-devtools-frontend 1.0.954777 → 1.0.955630

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 (315) hide show
  1. package/.eslintrc.js +1 -0
  2. package/config/owner/COMMON_OWNERS +2 -2
  3. package/front_end/core/common/Console.ts +1 -1
  4. package/front_end/core/common/ResolverBase.ts +1 -1
  5. package/front_end/core/common/Throttler.ts +1 -1
  6. package/front_end/core/common/Worker.ts +4 -4
  7. package/front_end/core/host/InspectorFrontendHost.ts +1 -1
  8. package/front_end/core/host/ResourceLoader.ts +2 -2
  9. package/front_end/core/i18n/DevToolsLocale.ts +0 -2
  10. package/front_end/core/i18n/i18nImpl.ts +0 -2
  11. package/front_end/core/i18n/locales/en-US.json +3 -0
  12. package/front_end/core/i18n/locales/en-XL.json +3 -0
  13. package/front_end/core/sdk/AccessibilityModel.ts +1 -1
  14. package/front_end/core/sdk/CPUProfilerModel.ts +2 -2
  15. package/front_end/core/sdk/CPUThrottlingManager.ts +2 -2
  16. package/front_end/core/sdk/CSSModel.ts +7 -7
  17. package/front_end/core/sdk/CSSProperty.ts +1 -1
  18. package/front_end/core/sdk/CSSStyleDeclaration.ts +1 -1
  19. package/front_end/core/sdk/ChildTargetManager.ts +6 -6
  20. package/front_end/core/sdk/Connections.ts +2 -2
  21. package/front_end/core/sdk/ConsoleModel.ts +1 -1
  22. package/front_end/core/sdk/DOMDebuggerModel.ts +16 -15
  23. package/front_end/core/sdk/DOMModel.ts +17 -17
  24. package/front_end/core/sdk/DebuggerModel.ts +24 -24
  25. package/front_end/core/sdk/EmulationModel.ts +16 -16
  26. package/front_end/core/sdk/EventBreakpointsModel.ts +2 -2
  27. package/front_end/core/sdk/IsolateManager.ts +2 -2
  28. package/front_end/core/sdk/IssuesModel.ts +1 -1
  29. package/front_end/core/sdk/LogModel.ts +3 -3
  30. package/front_end/core/sdk/NetworkManager.ts +25 -25
  31. package/front_end/core/sdk/OverlayModel.ts +23 -23
  32. package/front_end/core/sdk/PageResourceLoader.ts +1 -1
  33. package/front_end/core/sdk/PaintProfiler.ts +1 -1
  34. package/front_end/core/sdk/RemoteObject.ts +2 -2
  35. package/front_end/core/sdk/Resource.ts +2 -2
  36. package/front_end/core/sdk/ResourceTreeModel.ts +5 -5
  37. package/front_end/core/sdk/RuntimeModel.ts +11 -11
  38. package/front_end/core/sdk/ScreenCaptureModel.ts +3 -3
  39. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +7 -7
  40. package/front_end/core/sdk/ServiceWorkerManager.ts +4 -4
  41. package/front_end/core/sdk/SourceMapManager.ts +1 -1
  42. package/front_end/core/sdk/TargetManager.ts +2 -2
  43. package/front_end/core/sdk/TracingManager.ts +1 -1
  44. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +1 -1
  45. package/front_end/entrypoints/inspector_main/InspectorMain.ts +4 -4
  46. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +1 -1
  47. package/front_end/entrypoints/js_app/js_app.ts +2 -2
  48. package/front_end/entrypoints/main/MainImpl.ts +11 -11
  49. package/front_end/entrypoints/node_app/NodeMain.ts +6 -6
  50. package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
  51. package/front_end/generated/ARIAProperties.js +1 -1
  52. package/front_end/generated/InspectorBackendCommands.js +5 -1
  53. package/front_end/generated/SupportedCSSProperties.js +15 -15
  54. package/front_end/generated/protocol.d.ts +12 -0
  55. package/front_end/models/bindings/BreakpointManager.ts +21 -23
  56. package/front_end/models/bindings/CSSWorkspaceBinding.ts +3 -3
  57. package/front_end/models/bindings/CompilerScriptMapping.ts +1 -1
  58. package/front_end/models/bindings/ContentProviderBasedProject.ts +1 -1
  59. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +2 -2
  60. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +3 -3
  61. package/front_end/models/bindings/DefaultScriptMapping.ts +1 -1
  62. package/front_end/models/bindings/FileUtils.ts +5 -5
  63. package/front_end/models/bindings/IgnoreListManager.ts +4 -4
  64. package/front_end/models/bindings/LiveLocation.ts +9 -0
  65. package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +2 -1
  66. package/front_end/models/bindings/ResourceMapping.ts +1 -1
  67. package/front_end/models/bindings/ResourceScriptMapping.ts +9 -9
  68. package/front_end/models/bindings/StylesSourceMapping.ts +3 -3
  69. package/front_end/models/bindings/TempFile.ts +1 -1
  70. package/front_end/models/emulation/DeviceModeModel.ts +5 -5
  71. package/front_end/models/emulation/EmulatedDevices.ts +1 -1
  72. package/front_end/models/extensions/ExtensionPanel.ts +1 -1
  73. package/front_end/models/extensions/ExtensionServer.ts +8 -8
  74. package/front_end/models/formatter/SourceFormatter.ts +2 -2
  75. package/front_end/models/issues_manager/ContrastCheckTrigger.ts +1 -1
  76. package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +3 -3
  77. package/front_end/models/persistence/Automapping.ts +3 -3
  78. package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +3 -3
  79. package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
  80. package/front_end/models/persistence/IsolatedFileSystemManager.ts +2 -2
  81. package/front_end/models/persistence/NetworkPersistenceManager.ts +11 -11
  82. package/front_end/models/persistence/PersistenceActions.ts +3 -3
  83. package/front_end/models/persistence/PersistenceImpl.ts +2 -2
  84. package/front_end/models/persistence/WorkspaceSettingsTab.ts +1 -1
  85. package/front_end/models/workspace/UISourceCode.ts +2 -2
  86. package/front_end/models/workspace_diff/WorkspaceDiff.ts +2 -2
  87. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +4 -4
  88. package/front_end/panels/accessibility/AccessibilityNodeView.ts +3 -3
  89. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +7 -7
  90. package/front_end/panels/animation/AnimationModel.ts +6 -6
  91. package/front_end/panels/animation/AnimationTimeline.ts +3 -3
  92. package/front_end/panels/animation/AnimationUI.ts +3 -3
  93. package/front_end/panels/application/AppManifestView.ts +4 -4
  94. package/front_end/panels/application/ApplicationPanelCacheSection.ts +3 -3
  95. package/front_end/panels/application/ApplicationPanelSidebar.ts +15 -15
  96. package/front_end/panels/application/BackgroundServiceModel.ts +3 -3
  97. package/front_end/panels/application/BackgroundServiceView.ts +3 -3
  98. package/front_end/panels/application/CookieItemsView.ts +5 -5
  99. package/front_end/panels/application/DOMStorageItemsView.ts +4 -4
  100. package/front_end/panels/application/DOMStorageModel.ts +4 -4
  101. package/front_end/panels/application/DatabaseModel.ts +2 -2
  102. package/front_end/panels/application/DatabaseQueryView.ts +2 -2
  103. package/front_end/panels/application/DatabaseTableView.ts +1 -1
  104. package/front_end/panels/application/IndexedDBModel.ts +11 -11
  105. package/front_end/panels/application/IndexedDBViews.ts +5 -5
  106. package/front_end/panels/application/OpenedWindowDetailsView.ts +4 -4
  107. package/front_end/panels/application/ReportingApiView.ts +1 -1
  108. package/front_end/panels/application/ResourcesPanel.ts +2 -2
  109. package/front_end/panels/application/ServiceWorkerCacheViews.ts +7 -7
  110. package/front_end/panels/application/ServiceWorkersView.ts +15 -15
  111. package/front_end/panels/application/StorageView.ts +5 -5
  112. package/front_end/panels/application/TrustTokensTreeElement.ts +1 -1
  113. package/front_end/panels/application/components/BackForwardCacheStrings.ts +5 -1
  114. package/front_end/panels/application/components/BackForwardCacheView.ts +4 -4
  115. package/front_end/panels/application/components/FrameDetailsView.ts +3 -3
  116. package/front_end/panels/application/components/PermissionsPolicySection.ts +2 -2
  117. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +1 -1
  118. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +8 -7
  119. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +1 -1
  120. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +4 -4
  121. package/front_end/panels/changes/ChangesView.ts +4 -4
  122. package/front_end/panels/console/ConsoleContextSelector.ts +1 -1
  123. package/front_end/panels/console/ConsoleFilter.ts +17 -2
  124. package/front_end/panels/console/ConsoleFormat.ts +5 -4
  125. package/front_end/panels/console/ConsolePinPane.ts +4 -4
  126. package/front_end/panels/console/ConsolePrompt.ts +4 -4
  127. package/front_end/panels/console/ConsoleView.ts +96 -71
  128. package/front_end/panels/console/ConsoleViewMessage.ts +61 -19
  129. package/front_end/panels/console/consoleView.css +36 -0
  130. package/front_end/panels/console_counters/WarningErrorCounter.ts +2 -2
  131. package/front_end/panels/coverage/CoverageListView.ts +3 -3
  132. package/front_end/panels/coverage/CoverageModel.ts +3 -3
  133. package/front_end/panels/coverage/CoverageView.ts +6 -6
  134. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -3
  135. package/front_end/panels/css_overview/CSSOverviewModel.ts +2 -2
  136. package/front_end/panels/css_overview/CSSOverviewPanel.ts +1 -1
  137. package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
  138. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +1 -1
  139. package/front_end/panels/elements/AccessibilityTreeView.ts +5 -5
  140. package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
  141. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +10 -10
  142. package/front_end/panels/elements/ComputedStyleWidget.ts +2 -2
  143. package/front_end/panels/elements/DOMLinkifier.ts +2 -2
  144. package/front_end/panels/elements/ElementsPanel.ts +19 -19
  145. package/front_end/panels/elements/ElementsSidebarPane.ts +1 -1
  146. package/front_end/panels/elements/ElementsTreeElement.ts +21 -21
  147. package/front_end/panels/elements/ElementsTreeElementHighlighter.ts +1 -1
  148. package/front_end/panels/elements/ElementsTreeOutline.ts +4 -4
  149. package/front_end/panels/elements/InspectElementModeController.ts +3 -3
  150. package/front_end/panels/elements/LayoutSidebarPane.ts +2 -2
  151. package/front_end/panels/elements/MetricsSidebarPane.ts +2 -2
  152. package/front_end/panels/elements/StylePropertyHighlighter.ts +1 -1
  153. package/front_end/panels/elements/StylePropertyTreeElement.ts +16 -16
  154. package/front_end/panels/elements/StylesSidebarPane.ts +15 -15
  155. package/front_end/panels/elements/components/AccessibilityTreeNode.ts +1 -1
  156. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +8 -8
  157. package/front_end/panels/elements/elementsPanel.css +1 -0
  158. package/front_end/panels/elements/elementsTreeOutline.css +6 -1
  159. package/front_end/panels/emulation/DeviceModeToolbar.ts +1 -1
  160. package/front_end/panels/emulation/DeviceModeView.ts +2 -2
  161. package/front_end/panels/emulation/DeviceModeWrapper.ts +4 -4
  162. package/front_end/panels/emulation/MediaQueryInspector.ts +3 -3
  163. package/front_end/panels/event_listeners/EventListenersView.ts +3 -3
  164. package/front_end/panels/input/InputModel.ts +2 -2
  165. package/front_end/panels/input/InputTimeline.ts +6 -6
  166. package/front_end/panels/issues/AffectedCookiesView.ts +2 -2
  167. package/front_end/panels/issues/AffectedDirectivesView.ts +1 -1
  168. package/front_end/panels/issues/AffectedElementsView.ts +1 -1
  169. package/front_end/panels/issues/AffectedResourcesView.ts +2 -2
  170. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +1 -1
  171. package/front_end/panels/issues/ComboBoxOfCheckBoxes.ts +1 -1
  172. package/front_end/panels/issues/IssueView.ts +1 -1
  173. package/front_end/panels/issues/components/HideIssuesMenu.ts +1 -1
  174. package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -1
  175. package/front_end/panels/layer_viewer/LayerViewHost.ts +1 -1
  176. package/front_end/panels/layer_viewer/Layers3DView.ts +7 -7
  177. package/front_end/panels/layer_viewer/PaintProfilerView.ts +1 -1
  178. package/front_end/panels/layers/LayerPaintProfilerView.ts +3 -3
  179. package/front_end/panels/layers/LayerTreeModel.ts +4 -4
  180. package/front_end/panels/layers/LayersPanel.ts +4 -4
  181. package/front_end/panels/lighthouse/LighthouseController.ts +1 -1
  182. package/front_end/panels/lighthouse/LighthousePanel.ts +5 -5
  183. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +1 -1
  184. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -1
  185. package/front_end/panels/media/MediaModel.ts +1 -1
  186. package/front_end/panels/media/PlayerListView.ts +1 -1
  187. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +1 -1
  188. package/front_end/panels/network/BinaryResourceView.ts +1 -1
  189. package/front_end/panels/network/BlockedURLsPane.ts +5 -5
  190. package/front_end/panels/network/NetworkDataGridNode.ts +1 -1
  191. package/front_end/panels/network/NetworkItemView.ts +2 -2
  192. package/front_end/panels/network/NetworkLogView.ts +4 -4
  193. package/front_end/panels/network/NetworkLogViewColumns.ts +1 -1
  194. package/front_end/panels/network/NetworkPanel.ts +8 -8
  195. package/front_end/panels/network/NetworkTimeCalculator.ts +1 -1
  196. package/front_end/panels/network/RequestHeadersView.ts +4 -3
  197. package/front_end/panels/network/RequestPayloadView.ts +8 -8
  198. package/front_end/panels/network/RequestPreviewView.ts +1 -1
  199. package/front_end/panels/network/RequestResponseView.ts +2 -2
  200. package/front_end/panels/network/ResourceWebSocketFrameView.ts +1 -1
  201. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +2 -2
  202. package/front_end/panels/profiler/CPUProfileView.ts +4 -4
  203. package/front_end/panels/profiler/HeapProfileView.ts +6 -6
  204. package/front_end/panels/profiler/HeapProfilerPanel.ts +2 -2
  205. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +10 -10
  206. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +9 -8
  207. package/front_end/panels/profiler/HeapSnapshotView.ts +24 -24
  208. package/front_end/panels/profiler/LiveHeapProfileView.ts +4 -4
  209. package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +1 -1
  210. package/front_end/panels/profiler/ProfileView.ts +3 -3
  211. package/front_end/panels/profiler/ProfilesPanel.ts +3 -3
  212. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +3 -3
  213. package/front_end/panels/screencast/InputModel.ts +3 -3
  214. package/front_end/panels/screencast/ScreencastView.ts +10 -10
  215. package/front_end/panels/search/SearchResultsPane.ts +1 -1
  216. package/front_end/panels/search/SearchView.ts +2 -2
  217. package/front_end/panels/security/SecurityModel.ts +1 -1
  218. package/front_end/panels/security/SecurityPanel.ts +2 -2
  219. package/front_end/panels/sensors/SensorsView.ts +3 -2
  220. package/front_end/panels/settings/SettingsScreen.ts +5 -5
  221. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  222. package/front_end/panels/snippets/SnippetsQuickOpen.ts +1 -1
  223. package/front_end/panels/sources/BreakpointEditDialog.ts +2 -2
  224. package/front_end/panels/sources/CallStackSidebarPane.ts +4 -4
  225. package/front_end/panels/sources/CoveragePlugin.ts +3 -3
  226. package/front_end/panels/sources/DebuggerPlugin.ts +12 -12
  227. package/front_end/panels/sources/GoToLineQuickOpen.ts +1 -1
  228. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +3 -3
  229. package/front_end/panels/sources/JavaScriptBreakpointsSidebarPane.ts +3 -3
  230. package/front_end/panels/sources/NavigatorView.ts +6 -6
  231. package/front_end/panels/sources/OpenFileQuickOpen.ts +2 -2
  232. package/front_end/panels/sources/OutlineQuickOpen.ts +1 -1
  233. package/front_end/panels/sources/ScopeChainSidebarPane.ts +3 -3
  234. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +3 -3
  235. package/front_end/panels/sources/SearchSourcesView.ts +2 -2
  236. package/front_end/panels/sources/SourcesNavigator.ts +9 -9
  237. package/front_end/panels/sources/SourcesPanel.ts +27 -24
  238. package/front_end/panels/sources/SourcesSearchScope.ts +2 -2
  239. package/front_end/panels/sources/SourcesView.ts +4 -4
  240. package/front_end/panels/sources/TabbedEditorContainer.ts +1 -1
  241. package/front_end/panels/sources/UISourceCodeFrame.ts +2 -2
  242. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +4 -4
  243. package/front_end/panels/timeline/EventsTimelineTreeView.ts +1 -1
  244. package/front_end/panels/timeline/TimelineController.ts +1 -1
  245. package/front_end/panels/timeline/TimelineDetailsView.ts +2 -2
  246. package/front_end/panels/timeline/TimelineEventOverview.ts +2 -2
  247. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -5
  248. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +4 -7
  249. package/front_end/panels/timeline/TimelineHistoryManager.ts +1 -1
  250. package/front_end/panels/timeline/TimelineLayersView.ts +1 -1
  251. package/front_end/panels/timeline/TimelineLoader.ts +2 -2
  252. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +4 -4
  253. package/front_end/panels/timeline/TimelinePanel.ts +10 -10
  254. package/front_end/panels/timeline/TimelineUIUtils.ts +2 -2
  255. package/front_end/panels/timeline/components/WebVitalsTimeline.ts +2 -2
  256. package/front_end/panels/web_audio/WebAudioModel.ts +1 -1
  257. package/front_end/panels/web_audio/WebAudioView.ts +1 -1
  258. package/front_end/panels/webauthn/WebauthnPane.ts +7 -7
  259. package/front_end/ui/components/buttons/Button.ts +10 -10
  260. package/front_end/ui/components/data_grid/DataGrid.ts +14 -14
  261. package/front_end/ui/components/docs/tree_outline/basic.ts +2 -2
  262. package/front_end/ui/components/docs/tree_outline/custom-renderers.ts +1 -1
  263. package/front_end/ui/components/docs/tree_outline/lazy-children.ts +1 -1
  264. package/front_end/ui/components/helpers/scheduled-render.ts +1 -1
  265. package/front_end/ui/components/icon_button/Icon.ts +1 -1
  266. package/front_end/ui/components/issue_counter/IssueCounter.ts +1 -1
  267. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +2 -2
  268. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +2 -2
  269. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +5 -2
  270. package/front_end/ui/components/linkifier/LinkifierImpl.ts +1 -1
  271. package/front_end/ui/components/panel_feedback/FeedbackButton.ts +1 -1
  272. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
  273. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +3 -3
  274. package/front_end/ui/components/text_editor/cursor_tooltip.ts +1 -1
  275. package/front_end/ui/components/text_editor/javascript.ts +2 -2
  276. package/front_end/ui/components/tree_outline/TreeOutline.ts +8 -8
  277. package/front_end/ui/legacy/Context.ts +1 -1
  278. package/front_end/ui/legacy/ContextMenu.ts +1 -1
  279. package/front_end/ui/legacy/InspectorView.ts +2 -3
  280. package/front_end/ui/legacy/PopoverHelper.ts +1 -1
  281. package/front_end/ui/legacy/ShortcutRegistry.ts +1 -1
  282. package/front_end/ui/legacy/TabbedPane.ts +2 -2
  283. package/front_end/ui/legacy/ThrottledWidget.ts +1 -1
  284. package/front_end/ui/legacy/Toolbar.ts +3 -3
  285. package/front_end/ui/legacy/Treeoutline.ts +20 -13
  286. package/front_end/ui/legacy/ViewManager.ts +9 -9
  287. package/front_end/ui/legacy/components/color_picker/ContrastOverlay.ts +1 -1
  288. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +2 -2
  289. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +3 -3
  290. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +2 -2
  291. package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +3 -3
  292. package/front_end/ui/legacy/components/inline_editor/CSSAngleEditor.ts +1 -1
  293. package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +4 -4
  294. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +3 -3
  295. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +1 -1
  296. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +11 -11
  297. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +8 -8
  298. package/front_end/ui/legacy/components/perf_ui/GCActionDelegate.ts +1 -1
  299. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +1 -1
  300. package/front_end/ui/legacy/components/perf_ui/LiveHeapProfile.ts +3 -3
  301. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +2 -4
  302. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +2 -2
  303. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +5 -5
  304. package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -1
  305. package/front_end/ui/legacy/components/source_frame/ImageView.ts +3 -3
  306. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +1 -1
  307. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +5 -5
  308. package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
  309. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +1 -1
  310. package/front_end/ui/legacy/components/utils/Linkifier.ts +5 -5
  311. package/front_end/ui/legacy/components/utils/TargetDetachedDialog.ts +2 -2
  312. package/front_end/ui/legacy/toolbar.css +1 -0
  313. package/front_end/ui/legacy/treeoutline.css +4 -0
  314. package/package.json +1 -1
  315. package/scripts/eslint_rules/tests/check_license_header_test.js +10 -8
@@ -281,7 +281,7 @@ export class FrameDetailsReportView extends HTMLElement {
281
281
  if (!this.#permissionsPolicies && this.#frame) {
282
282
  this.#permissionsPolicies = this.#frame.getPermissionsPolicyState();
283
283
  }
284
- this.#render();
284
+ void this.#render();
285
285
  }
286
286
 
287
287
  async #render(): Promise<void> {
@@ -323,7 +323,7 @@ export class FrameDetailsReportView extends HTMLElement {
323
323
 
324
324
  const frame = this.#frame;
325
325
  const refreshOriginTrials: () => void = () => {
326
- frame.getOriginTrials().then(trials => {
326
+ void frame.getOriginTrials().then(trials => {
327
327
  this.#originTrialTreeView.data = {trials} as OriginTrialTreeViewData;
328
328
  });
329
329
  };
@@ -442,7 +442,7 @@ export class FrameDetailsReportView extends HTMLElement {
442
442
  i18nString(UIStrings.clickToRevealInNetworkPanelMight),
443
443
  ():
444
444
  void => {
445
- Common.Revealer.reveal(NetworkForward.UIFilter.UIRequestFilter.filters([
445
+ void Common.Revealer.reveal(NetworkForward.UIFilter.UIRequestFilter.filters([
446
446
  {
447
447
  filterType: NetworkForward.UIFilter.FilterType.Domain,
448
448
  filterValue: unreachableUrl.domain(),
@@ -89,7 +89,7 @@ export class PermissionsPolicySection extends HTMLElement {
89
89
 
90
90
  set data(data: PermissionsPolicySectionData) {
91
91
  this.#permissionsPolicySectionData = data;
92
- this.#render();
92
+ void this.#render();
93
93
  }
94
94
 
95
95
  connectedCallback(): void {
@@ -98,7 +98,7 @@ export class PermissionsPolicySection extends HTMLElement {
98
98
 
99
99
  #toggleShowPermissionsDisallowedDetails(): void {
100
100
  this.#permissionsPolicySectionData.showDetails = !this.#permissionsPolicySectionData.showDetails;
101
- this.#render();
101
+ void this.#render();
102
102
  }
103
103
 
104
104
  #renderAllowed(): LitHtml.TemplateResult|{} {
@@ -146,7 +146,7 @@ export abstract class CategorizedBreakpointsSidebarPane extends UI.Widget.VBox {
146
146
  return;
147
147
  }
148
148
 
149
- UI.ViewManager.ViewManager.instance().showView(this.#viewId);
149
+ void UI.ViewManager.ViewManager.instance().showView(this.#viewId);
150
150
  const category = this.#categories.get(breakpoint.category());
151
151
  if (category) {
152
152
  category.element.expand();
@@ -199,11 +199,12 @@ export class DOMBreakpointsSidebarPane extends UI.Widget.VBox implements
199
199
  const linkifiedNode = document.createElement('monospace');
200
200
  linkifiedNode.style.display = 'block';
201
201
  labelElement.appendChild(linkifiedNode);
202
- Common.Linkifier.Linkifier.linkify(item.node, {preventKeyboardFocus: true, tooltip: undefined}).then(linkified => {
203
- linkifiedNode.appendChild(linkified);
204
- UI.ARIAUtils.setAccessibleName(
205
- checkboxElement, i18nString(UIStrings.sS, {PH1: breakpointTypeText, PH2: linkified.deepTextContent()}));
206
- });
202
+ void Common.Linkifier.Linkifier.linkify(item.node, {preventKeyboardFocus: true, tooltip: undefined})
203
+ .then(linkified => {
204
+ linkifiedNode.appendChild(linkified);
205
+ UI.ARIAUtils.setAccessibleName(
206
+ checkboxElement, i18nString(UIStrings.sS, {PH1: breakpointTypeText, PH2: linkified.deepTextContent()}));
207
+ });
207
208
 
208
209
  labelElement.appendChild(description);
209
210
 
@@ -314,7 +315,7 @@ export class DOMBreakpointsSidebarPane extends UI.Widget.VBox implements
314
315
  contextMenu.defaultSection().appendItem(i18nString(UIStrings.removeAllDomBreakpoints), () => {
315
316
  breakpoint.domDebuggerModel.removeAllDOMBreakpoints();
316
317
  });
317
- contextMenu.show();
318
+ void contextMenu.show();
318
319
  }
319
320
 
320
321
  private checkboxClicked(breakpoint: SDK.DOMDebuggerModel.DOMBreakpoint, event: Event): void {
@@ -356,7 +357,7 @@ export class DOMBreakpointsSidebarPane extends UI.Widget.VBox implements
356
357
  if (this.#highlightedBreakpoint) {
357
358
  this.#list.refreshItem(this.#highlightedBreakpoint);
358
359
  }
359
- UI.ViewManager.ViewManager.instance().showView('sources.domBreakpoints');
360
+ void UI.ViewManager.ViewManager.instance().showView('sources.domBreakpoints');
360
361
  }
361
362
  wasShown(): void {
362
363
  super.wasShown();
@@ -62,7 +62,7 @@ export class ObjectEventListenersSidebarPane extends UI.Widget.VBox implements U
62
62
  return;
63
63
  }
64
64
  this.#lastRequestedContext = executionContext;
65
- Promise.all([this.windowObjectInContext(executionContext)])
65
+ void Promise.all([this.windowObjectInContext(executionContext)])
66
66
  .then(this.#eventListenersView.addObjects.bind(this.#eventListenersView));
67
67
  }
68
68
 
@@ -92,7 +92,7 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
92
92
 
93
93
  this.#addButton = new UI.Toolbar.ToolbarButton(i18nString(UIStrings.addXhrfetchBreakpoint), 'largeicon-add');
94
94
  this.#addButton.addEventListener(UI.Toolbar.ToolbarButton.Events.Click, () => {
95
- this.addButtonClicked();
95
+ void this.addButtonClicked();
96
96
  });
97
97
 
98
98
  this.#emptyElement.addEventListener('contextmenu', this.emptyElementContextMenu.bind(this), true);
@@ -115,7 +115,7 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
115
115
  private emptyElementContextMenu(event: Event): void {
116
116
  const contextMenu = new UI.ContextMenu.ContextMenu(event);
117
117
  contextMenu.defaultSection().appendItem(i18nString(UIStrings.addBreakpoint), this.addButtonClicked.bind(this));
118
- contextMenu.show();
118
+ void contextMenu.show();
119
119
  }
120
120
 
121
121
  private async addButtonClicked(): Promise<void> {
@@ -294,7 +294,7 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
294
294
  contextMenu.defaultSection().appendItem(i18nString(UIStrings.addBreakpoint), this.addButtonClicked.bind(this));
295
295
  contextMenu.defaultSection().appendItem(i18nString(UIStrings.removeBreakpoint), removeBreakpoint.bind(this));
296
296
  contextMenu.defaultSection().appendItem(removeAllTitle, removeAllBreakpoints.bind(this));
297
- contextMenu.show();
297
+ void contextMenu.show();
298
298
  }
299
299
 
300
300
  private checkboxClicked(url: string, checked: boolean): void {
@@ -372,7 +372,7 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
372
372
  return;
373
373
  }
374
374
  this.#list.refreshItem(url);
375
- UI.ViewManager.ViewManager.instance().showView('sources.xhrBreakpoints');
375
+ void UI.ViewManager.ViewManager.instance().showView('sources.xhrBreakpoints');
376
376
  }
377
377
 
378
378
  private restoreBreakpoints(): void {
@@ -122,7 +122,7 @@ export class ChangesView extends UI.Widget.VBox {
122
122
  if (!uiSourceCode) {
123
123
  return;
124
124
  }
125
- this.workspaceDiff.revertToOriginal(uiSourceCode);
125
+ void this.workspaceDiff.revertToOriginal(uiSourceCode);
126
126
  }
127
127
 
128
128
  private click(event: MouseEvent): void {
@@ -136,7 +136,7 @@ export class ChangesView extends UI.Widget.VBox {
136
136
  // Unfortunately, caretRangeFromPoint is broken in shadow
137
137
  // roots, which makes determining the character offset more
138
138
  // work than justified here.
139
- Common.Revealer.reveal(this.selectedUISourceCode.uiLocation(Number(number) - 1, 0), false);
139
+ void Common.Revealer.reveal(this.selectedUISourceCode.uiLocation(Number(number) - 1, 0), false);
140
140
  event.consume(true);
141
141
  }
142
142
  break;
@@ -159,11 +159,11 @@ export class ChangesView extends UI.Widget.VBox {
159
159
  }
160
160
 
161
161
  this.selectedUISourceCode = uiSourceCode;
162
- this.refreshDiff();
162
+ void this.refreshDiff();
163
163
  }
164
164
 
165
165
  wasShown(): void {
166
- this.refreshDiff();
166
+ void this.refreshDiff();
167
167
  this.registerCSSFiles([changesViewStyles]);
168
168
  }
169
169
 
@@ -79,7 +79,7 @@ export class ConsoleContextSelector implements SDK.TargetManager.SDKModelObserve
79
79
  if (to && to.frameId) {
80
80
  const frame = SDK.FrameManager.FrameManager.instance().getFrame(to.frameId);
81
81
  if (frame && !frame.isTopFrame()) {
82
- frame.highlight();
82
+ void frame.highlight();
83
83
  }
84
84
  }
85
85
  if (fromElement) {
@@ -6,7 +6,7 @@ import * as SDK from '../../core/sdk/sdk.js';
6
6
  import * as Protocol from '../../generated/protocol.js';
7
7
  import * as TextUtils from '../../models/text_utils/text_utils.js';
8
8
 
9
- import type {ConsoleViewMessage} from './ConsoleViewMessage.js';
9
+ import type {ConsoleGroupViewMessage, ConsoleViewMessage} from './ConsoleViewMessage.js';
10
10
 
11
11
  export type LevelsMask = {
12
12
  [x: string]: boolean,
@@ -68,13 +68,28 @@ export class ConsoleFilter {
68
68
  }
69
69
 
70
70
  if (message.type === SDK.ConsoleModel.FrontendMessageType.Command ||
71
- message.type === SDK.ConsoleModel.FrontendMessageType.Result || message.isGroupMessage()) {
71
+ message.type === SDK.ConsoleModel.FrontendMessageType.Result ||
72
+ message.type === Protocol.Runtime.ConsoleAPICalledEventType.EndGroup) {
72
73
  return true;
73
74
  }
75
+
74
76
  if (message.level && !this.levelsMask[message.level as string]) {
75
77
  return false;
76
78
  }
77
79
 
80
+ return this.applyFilter(viewMessage) || this.parentGroupHasMatch(viewMessage.consoleGroup());
81
+ }
82
+
83
+ // A message is visible if there is a match in any of the parent groups' titles.
84
+ parentGroupHasMatch(viewMessage: ConsoleGroupViewMessage|null): boolean {
85
+ if (viewMessage === null) {
86
+ return false;
87
+ }
88
+ return this.applyFilter(viewMessage) || this.parentGroupHasMatch(viewMessage.consoleGroup());
89
+ }
90
+
91
+ applyFilter(viewMessage: ConsoleViewMessage): boolean {
92
+ const message = viewMessage.consoleMessage();
78
93
  for (const filter of this.parsedFilters) {
79
94
  if (!filter.key) {
80
95
  if (filter.regex && viewMessage.matchesFilterRegex(filter.regex) === filter.negative) {
@@ -5,8 +5,9 @@
5
5
  import type * as SDK from '../../core/sdk/sdk.js';
6
6
 
7
7
  // VGA color palette
8
- const ANSI_COLORS = ['#000000', '#AA0000', '#00AA00', '#AA5500', '#0000AA', '#AA00AA', '#00AAAA', '#AAAAAA'];
9
- const ANSI_BRIGHT_COLORS = ['#555555', '#FF5555', '#55FF55', '#FFFF55', '#5555FF', '#FF55FF', '#55FFFF', '#FFFFFF'];
8
+ const ANSI_COLORS = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'gray'];
9
+ const ANSI_BRIGHT_COLORS =
10
+ ['darkgray', 'lightred', 'lightgreen', 'lightyellow', 'lightblue', 'lightmagenta', 'lightcyan', 'white'];
10
11
 
11
12
  export type FormatToken = {
12
13
  type: 'generic'|'optimal',
@@ -167,11 +168,11 @@ export const format = (fmt: string, args: SDK.RemoteObject.RemoteObject[]): {
167
168
  default: {
168
169
  const color = ANSI_COLORS[code - 30] ?? ANSI_BRIGHT_COLORS[code - 90];
169
170
  if (color !== undefined) {
170
- currentStyle.set('color', color);
171
+ currentStyle.set('color', `var(--console-color-${color})`);
171
172
  } else {
172
173
  const background = ANSI_COLORS[code - 40] ?? ANSI_BRIGHT_COLORS[code - 100];
173
174
  if (background !== undefined) {
174
- currentStyle.set('background', background);
175
+ currentStyle.set('background-color', `var(--console-color-${background})`);
175
176
  }
176
177
  }
177
178
  break;
@@ -100,7 +100,7 @@ export class ConsolePinPane extends UI.ThrottledWidget.ThrottledWidget {
100
100
  }
101
101
  }
102
102
  contextMenu.editSection().appendItem(i18nString(UIStrings.removeAllExpressions), this.removeAllPins.bind(this));
103
- contextMenu.show();
103
+ void contextMenu.show();
104
104
  }
105
105
 
106
106
  private removeAllPins(): void {
@@ -115,7 +115,7 @@ export class ConsolePinPane extends UI.ThrottledWidget.ThrottledWidget {
115
115
  this.pins.delete(pin);
116
116
  this.savePins();
117
117
  if (newFocusedPin) {
118
- newFocusedPin.focus();
118
+ void newFocusedPin.focus();
119
119
  } else {
120
120
  this.liveExpressionButton.focus();
121
121
  }
@@ -127,7 +127,7 @@ export class ConsolePinPane extends UI.ThrottledWidget.ThrottledWidget {
127
127
  this.pins.add(pin);
128
128
  this.savePins();
129
129
  if (userGesture) {
130
- pin.focus();
130
+ void pin.focus();
131
131
  }
132
132
  this.update();
133
133
  }
@@ -213,7 +213,7 @@ export class ConsolePin {
213
213
  this.pinPreview.addEventListener('mouseleave', this.setHovered.bind(this, false), false);
214
214
  this.pinPreview.addEventListener('click', (event: Event) => {
215
215
  if (this.lastNode) {
216
- Common.Revealer.reveal(this.lastNode);
216
+ void Common.Revealer.reveal(this.lastNode);
217
217
  event.consume();
218
218
  }
219
219
  }, false);
@@ -113,7 +113,7 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
113
113
  const enabled = this.eagerEvalSetting.get();
114
114
  this.eagerPreviewElement.classList.toggle('hidden', !enabled);
115
115
  if (enabled) {
116
- this.requestPreview();
116
+ void this.requestPreview();
117
117
  }
118
118
  }
119
119
 
@@ -210,7 +210,7 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
210
210
  {
211
211
  key: 'Enter',
212
212
  run: (): boolean => {
213
- this.handleEnter();
213
+ void this.handleEnter();
214
214
  return true;
215
215
  },
216
216
  shift: CodeMirror.insertNewlineAndIndent,
@@ -269,7 +269,7 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
269
269
  }
270
270
 
271
271
  private updatePromptIcon(): void {
272
- this.iconThrottler.schedule(async () => {
272
+ void this.iconThrottler.schedule(async () => {
273
273
  this.promptIcon.classList.toggle('console-prompt-incomplete', !(await this.enterWillEvaluate()));
274
274
  });
275
275
  }
@@ -280,7 +280,7 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
280
280
  const executionContext = currentExecutionContext;
281
281
  const message = SDK.ConsoleModel.ConsoleModel.instance().addCommandMessage(executionContext, text);
282
282
  const expression = ObjectUI.JavaScriptREPL.JavaScriptREPL.preprocessExpression(text);
283
- SDK.ConsoleModel.ConsoleModel.instance().evaluateCommandInConsole(
283
+ void SDK.ConsoleModel.ConsoleModel.instance().evaluateCommandInConsole(
284
284
  executionContext, message, expression, useCommandLineAPI);
285
285
  if (ConsolePanel.instance().isShowing()) {
286
286
  Host.userMetrics.actionTaken(Host.UserMetrics.Action.CommandEvaluatedInConsolePanel);
@@ -274,12 +274,10 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
274
274
  private viewportThrottler: Common.Throttler.Throttler;
275
275
  private pendingBatchResize: boolean;
276
276
  private readonly onMessageResizedBound: (e: Common.EventTarget.EventTargetEvent<UI.TreeOutline.TreeElement>) => void;
277
- private topGroup: ConsoleGroup;
278
- private currentGroup: ConsoleGroup;
279
277
  private readonly promptElement: HTMLElement;
280
278
  private readonly linkifier: Components.Linkifier.Linkifier;
281
279
  private consoleMessages: ConsoleViewMessage[];
282
- private readonly viewMessageSymbol: symbol;
280
+ private consoleGroupStarts: ConsoleGroupViewMessage[];
283
281
  private readonly consoleHistorySetting: Common.Settings.Setting<string[]>;
284
282
  private prompt: ConsolePrompt;
285
283
  private immediatelyFilterMessagesForTest?: boolean;
@@ -404,7 +402,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
404
402
  this.issueCounter.data = {
405
403
  clickHandler: (): void => {
406
404
  Host.userMetrics.issuesPanelOpenedFrom(Host.UserMetrics.IssueOpener.StatusBarIssuesCounter);
407
- UI.ViewManager.ViewManager.instance().showView('issues-pane');
405
+ void UI.ViewManager.ViewManager.instance().showView('issues-pane');
408
406
  },
409
407
  issuesManager: IssuesManager.IssuesManager.IssuesManager.instance(),
410
408
  accessibleName: i18nString(UIStrings.issueToolbarTooltipGeneral),
@@ -482,12 +480,9 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
482
480
  this.viewportThrottler = new Common.Throttler.Throttler(50);
483
481
  this.pendingBatchResize = false;
484
482
  this.onMessageResizedBound = (e: Common.EventTarget.EventTargetEvent<UI.TreeOutline.TreeElement>): void => {
485
- this.onMessageResized(e);
483
+ void this.onMessageResized(e);
486
484
  };
487
485
 
488
- this.topGroup = ConsoleGroup.createTopGroup();
489
- this.currentGroup = this.topGroup;
490
-
491
486
  this.promptElement = this.messagesElement.createChild('div', 'source-code');
492
487
  this.promptElement.id = 'console-prompt';
493
488
 
@@ -509,7 +504,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
509
504
  new Components.Linkifier.Linkifier(MaxLengthForLinks, /* useLinkDecorator */ undefined, refilterMessages);
510
505
 
511
506
  this.consoleMessages = [];
512
- this.viewMessageSymbol = Symbol('viewMessage');
507
+ this.consoleGroupStarts = [];
513
508
 
514
509
  this.consoleHistorySetting = Common.Settings.Settings.instance().createLocalSetting('consoleHistory', []);
515
510
 
@@ -801,6 +796,23 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
801
796
  const insertedInMiddle = insertAt < this.consoleMessages.length;
802
797
  this.consoleMessages.splice(insertAt, 0, viewMessage);
803
798
 
799
+ if (message.type !== SDK.ConsoleModel.FrontendMessageType.Command &&
800
+ message.type !== SDK.ConsoleModel.FrontendMessageType.Result) {
801
+ // Maintain group tree.
802
+ // Find parent group.
803
+ const consoleGroupStartIndex =
804
+ Platform.ArrayUtilities.upperBound(this.consoleGroupStarts, viewMessage, timeComparator) - 1;
805
+ if (consoleGroupStartIndex >= 0) {
806
+ const currentGroup = this.consoleGroupStarts[consoleGroupStartIndex];
807
+ addToGroup(viewMessage, currentGroup);
808
+ }
809
+ // Add new group.
810
+ if (message.isGroupStartMessage()) {
811
+ insertAt = Platform.ArrayUtilities.upperBound(this.consoleGroupStarts, viewMessage, timeComparator);
812
+ this.consoleGroupStarts.splice(insertAt, 0, viewMessage as ConsoleGroupViewMessage);
813
+ }
814
+ }
815
+
804
816
  this.filter.onMessageAdded(message);
805
817
  if (this.isSidebarOpen) {
806
818
  this.sidebar.onMessageAdded(viewMessage);
@@ -836,6 +848,29 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
836
848
  this.scheduleViewportRefresh();
837
849
  this.consoleMessageAddedForTest(viewMessage);
838
850
 
851
+ // Figure out whether the message should belong into this group or the parent group based on group end timestamp.
852
+ function addToGroup(viewMessage: ConsoleViewMessage, currentGroup: ConsoleGroupViewMessage): void {
853
+ const currentEnd = currentGroup.groupEnd();
854
+ if (currentEnd !== null) {
855
+ // Exceeds this group's end. It should belong into parent group.
856
+ if (timeComparator(viewMessage, currentEnd) > 0) {
857
+ const parent = currentGroup.consoleGroup();
858
+ // No parent group. We reached ungrouped messages. Don't establish group links.
859
+ if (parent === null) {
860
+ return;
861
+ } // Add to parent group.
862
+ addToGroup(viewMessage, parent);
863
+ return;
864
+ }
865
+ }
866
+ // Add message to this group, and set group of the message.
867
+ if (viewMessage.consoleMessage().type === Protocol.Runtime.ConsoleAPICalledEventType.EndGroup) {
868
+ currentGroup.setGroupEnd(viewMessage);
869
+ } else {
870
+ viewMessage.setConsoleGroup(currentGroup);
871
+ }
872
+ }
873
+
839
874
  function timeComparator(viewMessage1: ConsoleViewMessage, viewMessage2: ConsoleViewMessage): number {
840
875
  return (messagesSortedBySymbol.get(viewMessage1) || 0) - (messagesSortedBySymbol.get(viewMessage2) || 0);
841
876
  }
@@ -872,6 +907,18 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
872
907
  !this.showCorsErrorsSetting.get()) {
873
908
  return;
874
909
  }
910
+
911
+ const lastMessage = this.visibleViewMessages[this.visibleViewMessages.length - 1];
912
+ if (viewMessage.consoleMessage().type === Protocol.Runtime.ConsoleAPICalledEventType.EndGroup) {
913
+ if (lastMessage) {
914
+ const group = lastMessage.consoleGroup();
915
+ if (group && !group.messagesHidden()) {
916
+ lastMessage.incrementCloseGroupDecorationCount();
917
+ }
918
+ }
919
+ return;
920
+ }
921
+
875
922
  if (!this.shouldMessageBeVisible(viewMessage)) {
876
923
  this.hiddenByFilterCount++;
877
924
  return;
@@ -882,29 +929,36 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
882
929
  return;
883
930
  }
884
931
 
885
- const lastMessage = this.visibleViewMessages[this.visibleViewMessages.length - 1];
886
- if (viewMessage.consoleMessage().type === Protocol.Runtime.ConsoleAPICalledEventType.EndGroup) {
887
- if (lastMessage && !this.currentGroup.messagesHidden()) {
888
- lastMessage.incrementCloseGroupDecorationCount();
889
- }
890
- this.currentGroup = this.currentGroup.parentGroup() || this.currentGroup;
891
- return;
892
- }
893
- if (!this.currentGroup.messagesHidden()) {
932
+ const currentGroup = viewMessage.consoleGroup();
933
+
934
+ if (!currentGroup || !currentGroup.messagesHidden()) {
894
935
  const originatingMessage = viewMessage.consoleMessage().originatingMessage();
895
936
  if (lastMessage && originatingMessage && lastMessage.consoleMessage() === originatingMessage) {
896
937
  viewMessage.toMessageElement().classList.add('console-adjacent-user-command-result');
897
938
  }
898
-
939
+ showGroup(currentGroup, this.visibleViewMessages);
899
940
  this.visibleViewMessages.push(viewMessage);
900
941
  this.searchMessage(this.visibleViewMessages.length - 1);
901
942
  }
902
943
 
903
- if (viewMessage.consoleMessage().isGroupStartMessage()) {
904
- this.currentGroup = new ConsoleGroup(this.currentGroup, (viewMessage as ConsoleGroupViewMessage));
905
- }
906
-
907
944
  this.messageAppendedForTests();
945
+
946
+ // Show the group the message belongs to, and also show parent groups.
947
+ function showGroup(currentGroup: ConsoleGroupViewMessage|null, visibleViewMessages: ConsoleViewMessage[]): void {
948
+ if (currentGroup === null) {
949
+ return;
950
+ }
951
+ // Group is already being shown, no need to traverse to
952
+ // parent groups since they are also already being shown.
953
+ if (visibleViewMessages.includes(currentGroup)) {
954
+ return;
955
+ }
956
+ const parentGroup = currentGroup.consoleGroup();
957
+ if (parentGroup) {
958
+ showGroup(parentGroup, visibleViewMessages);
959
+ }
960
+ visibleViewMessages.push(currentGroup);
961
+ }
908
962
  }
909
963
 
910
964
  private messageAppendedForTests(): void {
@@ -912,29 +966,24 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
912
966
  }
913
967
 
914
968
  private createViewMessage(message: SDK.ConsoleModel.ConsoleMessage): ConsoleViewMessage {
915
- const nestingLevel = this.currentGroup.nestingLevel();
916
969
  switch (message.type) {
917
970
  case SDK.ConsoleModel.FrontendMessageType.Command:
918
971
  return new ConsoleCommand(
919
- message, this.linkifier, this.requestResolver, this.issueResolver, nestingLevel,
920
- this.onMessageResizedBound);
972
+ message, this.linkifier, this.requestResolver, this.issueResolver, this.onMessageResizedBound);
921
973
  case SDK.ConsoleModel.FrontendMessageType.Result:
922
974
  return new ConsoleCommandResult(
923
- message, this.linkifier, this.requestResolver, this.issueResolver, nestingLevel,
924
- this.onMessageResizedBound);
975
+ message, this.linkifier, this.requestResolver, this.issueResolver, this.onMessageResizedBound);
925
976
  case Protocol.Runtime.ConsoleAPICalledEventType.StartGroupCollapsed:
926
977
  case Protocol.Runtime.ConsoleAPICalledEventType.StartGroup:
927
978
  return new ConsoleGroupViewMessage(
928
- message, this.linkifier, this.requestResolver, this.issueResolver, nestingLevel,
929
- this.updateMessageList.bind(this), this.onMessageResizedBound);
979
+ message, this.linkifier, this.requestResolver, this.issueResolver, this.updateMessageList.bind(this),
980
+ this.onMessageResizedBound);
930
981
  case Protocol.Runtime.ConsoleAPICalledEventType.Table:
931
982
  return new ConsoleTableMessageView(
932
- message, this.linkifier, this.requestResolver, this.issueResolver, nestingLevel,
933
- this.onMessageResizedBound);
983
+ message, this.linkifier, this.requestResolver, this.issueResolver, this.onMessageResizedBound);
934
984
  default:
935
985
  return new ConsoleViewMessage(
936
- message, this.linkifier, this.requestResolver, this.issueResolver, nestingLevel,
937
- this.onMessageResizedBound);
986
+ message, this.linkifier, this.requestResolver, this.issueResolver, this.onMessageResizedBound);
938
987
  }
939
988
  }
940
989
 
@@ -970,6 +1019,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
970
1019
  this.linkifier.reset();
971
1020
  this.filter.clear();
972
1021
  this.requestResolver.clear();
1022
+ this.consoleGroupStarts = [];
973
1023
  if (hadFocus) {
974
1024
  this.prompt.focus();
975
1025
  }
@@ -980,7 +1030,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
980
1030
  const contextMenu = new UI.ContextMenu.ContextMenu(event);
981
1031
  const eventTarget = (event.target as Node);
982
1032
  if (eventTarget.isSelfOrDescendant(this.promptElement)) {
983
- contextMenu.show();
1033
+ void contextMenu.show();
984
1034
  return;
985
1035
  }
986
1036
 
@@ -1011,7 +1061,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
1011
1061
  }
1012
1062
  }
1013
1063
 
1014
- contextMenu.show();
1064
+ void contextMenu.show();
1015
1065
  }
1016
1066
 
1017
1067
  private async saveConsole(): Promise<void> {
@@ -1044,7 +1094,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
1044
1094
  progressIndicator.setWorked(messageIndex);
1045
1095
  }
1046
1096
 
1047
- stream.close();
1097
+ void stream.close();
1048
1098
  progressIndicator.done();
1049
1099
  }
1050
1100
 
@@ -1079,7 +1129,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
1079
1129
  return;
1080
1130
  }
1081
1131
  this.buildHiddenCacheTimeout =
1082
- this.element.window().requestAnimationFrame(this.buildHiddenCache.bind(this, i, viewMessages));
1132
+ this.element.window().requestAnimationFrame(this.buildHiddenCache.bind(this, i + 1, viewMessages));
1083
1133
  }
1084
1134
 
1085
1135
  private cancelBuildHiddenCache(): void {
@@ -1091,8 +1141,6 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
1091
1141
  }
1092
1142
 
1093
1143
  private updateMessageList(): void {
1094
- this.topGroup = ConsoleGroup.createTopGroup();
1095
- this.currentGroup = this.topGroup;
1096
1144
  this.regexMatchRanges = [];
1097
1145
  this.hiddenByFilterCount = 0;
1098
1146
  for (const visibleViewMessage of this.visibleViewMessages) {
@@ -1105,9 +1153,14 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
1105
1153
  } else {
1106
1154
  for (const consoleMessage of this.consoleMessages) {
1107
1155
  consoleMessage.setInSimilarGroup(false);
1156
+ if (consoleMessage.consoleMessage().isGroupable()) {
1157
+ // Since grouping similar messages is disabled, we need clear the
1158
+ // reference to the artificial console group start.
1159
+ consoleMessage.clearConsoleGroup();
1160
+ }
1108
1161
  this.appendMessageToEnd(
1109
1162
  consoleMessage,
1110
- true /* crbug.com/1082963: prevent collapse of same messages when "Group similar" is false */);
1163
+ true /* crbug.com/1082963: prevent collaps`e of same messages when "Group similar" is false */);
1111
1164
  }
1112
1165
  }
1113
1166
  this.updateFilterStatus();
@@ -1169,6 +1222,7 @@ export class ConsoleView extends UI.Widget.VBox implements UI.SearchableView.Sea
1169
1222
  for (const viewMessageInGroup of viewMessagesInGroup) {
1170
1223
  viewMessageInGroup.setInSimilarGroup(
1171
1224
  true, viewMessagesInGroup[viewMessagesInGroup.length - 1] === viewMessageInGroup);
1225
+ viewMessageInGroup.setConsoleGroup(startGroupViewMessage as ConsoleGroupViewMessage);
1172
1226
  this.appendMessageToEnd(viewMessageInGroup, true);
1173
1227
  alreadyAdded.add(viewMessageInGroup.consoleMessage());
1174
1228
  }
@@ -1621,7 +1675,7 @@ export class ConsoleViewFilter {
1621
1675
  for (const [level, levelText] of this.levelLabels.entries()) {
1622
1676
  contextMenu.defaultSection().appendCheckboxItem(levelText, toggleShowLevel.bind(null, level), levels[level]);
1623
1677
  }
1624
- contextMenu.show();
1678
+ void contextMenu.show();
1625
1679
 
1626
1680
  function toggleShowLevel(level: string): void {
1627
1681
  levels[level] = !levels[level];
@@ -1656,35 +1710,6 @@ export class ConsoleViewFilter {
1656
1710
  }
1657
1711
  }
1658
1712
 
1659
- export class ConsoleGroup {
1660
- private readonly parentGroupInternal: ConsoleGroup|null;
1661
- private readonly nestingLevelInternal: number;
1662
- private readonly messagesHiddenInternal: boolean;
1663
-
1664
- constructor(parentGroup: ConsoleGroup|null, groupMessage: ConsoleGroupViewMessage|null) {
1665
- this.parentGroupInternal = parentGroup;
1666
- this.nestingLevelInternal = parentGroup ? parentGroup.nestingLevel() + 1 : 0;
1667
- this.messagesHiddenInternal = groupMessage && groupMessage.collapsed() ||
1668
- this.parentGroupInternal && this.parentGroupInternal.messagesHidden() || false;
1669
- }
1670
-
1671
- static createTopGroup(): ConsoleGroup {
1672
- return new ConsoleGroup(null, null);
1673
- }
1674
-
1675
- messagesHidden(): boolean {
1676
- return this.messagesHiddenInternal;
1677
- }
1678
-
1679
- nestingLevel(): number {
1680
- return this.nestingLevelInternal;
1681
- }
1682
-
1683
- parentGroup(): ConsoleGroup|null {
1684
- return this.parentGroupInternal;
1685
- }
1686
- }
1687
-
1688
1713
  let actionDelegateInstance: ActionDelegate;
1689
1714
 
1690
1715
  export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {