chrome-devtools-frontend 1.0.1690116 → 1.0.1695017

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 (421) hide show
  1. package/.agents/skills/devtools-model-management/SKILL.md +3 -3
  2. package/.agents/skills/foundation-test-migration/SKILL.md +2 -2
  3. package/.agents/skills/merging-devtools-module/SKILL.md +5 -5
  4. package/AUTHORS +3 -0
  5. package/config/typescript/tsconfig.base.json +1 -0
  6. package/docs/get_the_code.md +4 -9
  7. package/front_end/Images/src/comment-mode-cursor.svg +23 -0
  8. package/front_end/Tests.js +1 -1
  9. package/front_end/application_tokens.css +5 -0
  10. package/front_end/core/common/ColorConverter.ts +3 -3
  11. package/front_end/core/host/UserMetrics.ts +27 -0
  12. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +0 -46
  13. package/front_end/core/protocol_client/InspectorBackend.ts +6 -6
  14. package/front_end/core/root/Runtime.ts +1 -0
  15. package/front_end/core/sdk/CSSLocation.ts +32 -0
  16. package/front_end/core/sdk/CSSModel.ts +2 -22
  17. package/front_end/core/sdk/CSSQuery.ts +2 -1
  18. package/front_end/core/sdk/CSSRule.ts +29 -0
  19. package/front_end/core/sdk/DebuggerModel.ts +5 -1
  20. package/front_end/core/sdk/NetworkManager.ts +2 -0
  21. package/front_end/core/sdk/NetworkRequest.ts +63 -4
  22. package/front_end/core/sdk/NetworkRequestAccess.ts +191 -0
  23. package/front_end/core/sdk/ResourceTreeModel.ts +72 -23
  24. package/front_end/core/sdk/SecurityOrigin.ts +97 -12
  25. package/front_end/core/sdk/Target.ts +18 -0
  26. package/front_end/core/sdk/sdk.ts +4 -0
  27. package/front_end/entrypoints/main/MainImpl.ts +8 -1
  28. package/front_end/foundation/Universe.ts +14 -11
  29. package/front_end/generated/Deprecation.ts +8 -0
  30. package/front_end/generated/InspectorBackendCommands.ts +9 -8
  31. package/front_end/generated/SupportedCSSProperties.ts +14 -4
  32. package/front_end/generated/protocol.ts +24 -0
  33. package/front_end/models/ai_assistance/AiAgent2.ts +46 -10
  34. package/front_end/models/ai_assistance/AiConversation.ts +35 -24
  35. package/front_end/models/ai_assistance/README.md +5 -3
  36. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +1 -0
  37. package/front_end/models/ai_assistance/agents/AiAgent.ts +28 -34
  38. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +13 -17
  39. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +5 -3
  40. package/front_end/models/ai_assistance/agents/StorageAgent.ts +16 -10
  41. package/front_end/models/ai_assistance/agents/StylingAgent.ts +3 -4
  42. package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
  43. package/front_end/models/ai_assistance/contexts/AccessibilityContext.ts +11 -2
  44. package/front_end/models/ai_assistance/contexts/DOMNodeContext.ts +17 -5
  45. package/front_end/models/ai_assistance/contexts/FileContext.ts +13 -6
  46. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +52 -25
  47. package/front_end/models/ai_assistance/contexts/RequestContext.ts +18 -34
  48. package/front_end/models/ai_assistance/contexts/StorageContext.ts +14 -3
  49. package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +2 -5
  50. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +135 -58
  51. package/front_end/models/ai_assistance/tools/CookieUtils.ts +25 -35
  52. package/front_end/models/ai_assistance/tools/DOMStorageUtils.ts +6 -3
  53. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +9 -2
  54. package/front_end/models/ai_assistance/tools/GetCookieValues.ts +1 -1
  55. package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +3 -2
  56. package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +3 -5
  57. package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +1 -1
  58. package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +8 -11
  59. package/front_end/models/ai_assistance/tools/GetResourceContent.ts +2 -4
  60. package/front_end/models/ai_assistance/tools/GetSourceContent.ts +6 -13
  61. package/front_end/models/ai_assistance/tools/GetStorageBreakdown.ts +1 -1
  62. package/front_end/models/ai_assistance/tools/GetStorageValues.ts +9 -9
  63. package/front_end/models/ai_assistance/tools/GetStyles.ts +3 -2
  64. package/front_end/models/ai_assistance/tools/ListCookies.ts +1 -1
  65. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +6 -14
  66. package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +10 -15
  67. package/front_end/models/ai_assistance/tools/ListSources.ts +5 -7
  68. package/front_end/models/ai_assistance/tools/ListStorageKeys.ts +9 -9
  69. package/front_end/models/ai_assistance/tools/README.md +4 -2
  70. package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +3 -2
  71. package/front_end/models/ai_assistance/tools/Tool.ts +27 -3
  72. package/front_end/models/comment_manager/CD4ABridge.ts +128 -0
  73. package/front_end/models/comment_manager/CommentManager.ts +50 -8
  74. package/front_end/models/comment_manager/comment_manager.ts +2 -0
  75. package/front_end/models/emulation/DeviceModeModel.ts +37 -47
  76. package/front_end/models/javascript_metadata/NativeFunctions.ts +9 -1
  77. package/front_end/models/live-metrics/web-vitals-injected/README.md +1 -1
  78. package/front_end/models/source_map_scopes/NamesResolver.ts +9 -7
  79. package/front_end/models/trace/ModelImpl.ts +2 -0
  80. package/front_end/models/trace/Processor.ts +6 -4
  81. package/front_end/models/trace/handlers/LayerTreeHandler.ts +3 -3
  82. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -1
  83. package/front_end/models/trace/helpers/SyntheticEvents.ts +23 -1
  84. package/front_end/models/trace/types/Configuration.ts +7 -0
  85. package/front_end/models/trace/types/TraceEvents.ts +20 -4
  86. package/front_end/panels/accessibility/ARIAAttributesView.ts +3 -0
  87. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingListView.ts +177 -0
  88. package/front_end/panels/accessibility/accessibility.ts +2 -0
  89. package/front_end/panels/accessibility/accessibilityAnnouncementRecordingListView.css +33 -0
  90. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +25 -15
  91. package/front_end/panels/ai_assistance/components/ChatMessage.ts +6 -35
  92. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +4 -3
  93. package/front_end/panels/ai_assistance/components/chatMessage.css +3 -1
  94. package/front_end/panels/animation/AnimationTimeline.ts +1 -0
  95. package/front_end/panels/application/CrashReportContextView.ts +0 -1
  96. package/front_end/panels/application/FrameDetailsView.ts +5 -4
  97. package/front_end/panels/application/IndexedDBViews.ts +4 -4
  98. package/front_end/panels/application/components/BackForwardCacheView.ts +1 -1
  99. package/front_end/panels/application/components/EndpointsGrid.ts +2 -1
  100. package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -1
  101. package/front_end/panels/application/components/ServiceWorkerRouterView.ts +1 -1
  102. package/front_end/panels/application/components/TrustTokensView.ts +1 -1
  103. package/front_end/panels/application/indexedDBViews.css +0 -14
  104. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +2 -1
  105. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +2 -1
  106. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +1 -1
  107. package/front_end/panels/common/CPUThrottlingOption.ts +12 -6
  108. package/front_end/panels/common/DOMLinkifier.ts +1 -1
  109. package/front_end/panels/common/ExtensionView.ts +2 -1
  110. package/front_end/panels/console/ConsoleContextSelector.ts +12 -5
  111. package/front_end/panels/console/ConsolePinPane.ts +4 -2
  112. package/front_end/panels/console/ConsoleSidebar.ts +6 -2
  113. package/front_end/panels/console/ConsoleViewMessage.ts +12 -8
  114. package/front_end/panels/console/PromptBuilder.ts +1 -1
  115. package/front_end/panels/coverage/CoverageListView.ts +1 -1
  116. package/front_end/panels/coverage/CoverageModel.ts +6 -4
  117. package/front_end/panels/coverage/coverageView.css +8 -8
  118. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +13 -14
  119. package/front_end/panels/css_overview/CSSOverviewPanel.ts +3 -3
  120. package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +2 -2
  121. package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +3 -3
  122. package/front_end/panels/css_overview/CSSOverviewStartView.ts +3 -3
  123. package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
  124. package/front_end/panels/developer_resources/developerResourcesView.css +3 -3
  125. package/front_end/panels/elements/ComputedStyleWidget.ts +1 -1
  126. package/front_end/panels/elements/ElementsTreeElement.ts +43 -15
  127. package/front_end/panels/elements/ElementsTreeOutline.ts +185 -109
  128. package/front_end/panels/elements/MetricsSidebarPane.ts +1 -1
  129. package/front_end/panels/elements/PropertyNameCategories.ts +1 -1
  130. package/front_end/panels/elements/ShortcutTreeElement.ts +6 -1
  131. package/front_end/panels/elements/StandaloneStylesContainer.ts +1 -1
  132. package/front_end/panels/elements/StylePropertiesSection.ts +2 -35
  133. package/front_end/panels/elements/StylesSidebarPane.ts +3 -2
  134. package/front_end/panels/elements/components/CSSPropertyIconResolver.ts +5 -4
  135. package/front_end/panels/elements/components/StylePropertyEditor.ts +161 -148
  136. package/front_end/panels/elements/components/computedStyleProperty.css +5 -5
  137. package/front_end/panels/elements/components/computedStyleTrace.css +5 -5
  138. package/front_end/panels/elements/components/cssHintDetailsView.css +1 -1
  139. package/front_end/panels/elements/components/cssPropertyDocsView.css +3 -3
  140. package/front_end/panels/elements/components/cssVariableValueView.css +4 -4
  141. package/front_end/panels/elements/components/elementsBreadcrumbs.css +3 -3
  142. package/front_end/panels/elements/components/elementsTreeExpandButton.css +5 -5
  143. package/front_end/panels/elements/components/queryContainer.css +2 -2
  144. package/front_end/panels/elements/elementsTreeOutline.css +20 -4
  145. package/front_end/panels/emulation/MediaQueryInspector.ts +2 -1
  146. package/front_end/panels/event_listeners/eventListenersView.css +1 -1
  147. package/front_end/panels/issues/AffectedElementsView.ts +3 -0
  148. package/front_end/panels/issues/AffectedLazyLoadImagesView.ts +1 -1
  149. package/front_end/panels/issues/issues.ts +2 -0
  150. package/front_end/panels/layer_viewer/LayerDetailsView.ts +12 -10
  151. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +1 -0
  152. package/front_end/panels/layer_viewer/Layers3DView.ts +13 -11
  153. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +1 -1
  154. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspectorUtils.ts +2 -2
  155. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +1 -1
  156. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
  157. package/front_end/panels/linear_memory_inspector/components/linearMemoryHighlightChipList.css +11 -11
  158. package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +2 -2
  159. package/front_end/panels/linear_memory_inspector/components/linearMemoryNavigator.css +1 -1
  160. package/front_end/panels/linear_memory_inspector/components/linearMemoryValueInterpreter.css +5 -5
  161. package/front_end/panels/linear_memory_inspector/components/linearMemoryViewer.css +6 -6
  162. package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +6 -6
  163. package/front_end/panels/linear_memory_inspector/components/valueInterpreterSettings.css +2 -2
  164. package/front_end/panels/media/PlayerPropertiesView.ts +1 -1
  165. package/front_end/panels/media/TickingFlameChart.ts +3 -2
  166. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +2 -1
  167. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +1 -1
  168. package/front_end/panels/mobile_throttling/ThrottlingPresets.ts +2 -1
  169. package/front_end/panels/network/NetworkDataGridNode.ts +11 -9
  170. package/front_end/panels/network/NetworkLogView.ts +4 -1
  171. package/front_end/panels/network/NetworkLogViewColumns.ts +5 -2
  172. package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
  173. package/front_end/panels/network/RequestHeadersView.ts +47 -11
  174. package/front_end/panels/network/RequestPayloadView.ts +1 -1
  175. package/front_end/panels/network/RequestResponseView.ts +1 -1
  176. package/front_end/panels/network/RequestTimingView.ts +1 -1
  177. package/front_end/panels/network/ShowMoreDetailsWidget.ts +1 -1
  178. package/front_end/panels/network/components/RequestHeadersView.css +12 -0
  179. package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
  180. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +3 -3
  181. package/front_end/panels/profiler/HeapProfileView.ts +1 -1
  182. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +1 -1
  183. package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
  184. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +3 -3
  185. package/front_end/panels/recorder/RecordingListView.ts +0 -6
  186. package/front_end/panels/recorder/RecordingView.ts +0 -6
  187. package/front_end/panels/recorder/controlButton.css +10 -10
  188. package/front_end/panels/recorder/startView.css +1 -1
  189. package/front_end/panels/screencast/ScreencastView.ts +4 -2
  190. package/front_end/panels/search/SearchView.ts +1 -1
  191. package/front_end/panels/security/SecurityPanel.ts +46 -35
  192. package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
  193. package/front_end/panels/sources/CallStackSidebarPane.ts +1 -1
  194. package/front_end/panels/sources/DebuggerPausedMessage.ts +8 -6
  195. package/front_end/panels/sources/ProfilePlugin.ts +2 -1
  196. package/front_end/panels/sources/ScopeChainSidebarPane.ts +1 -1
  197. package/front_end/panels/timeline/IsolateSelector.ts +1 -1
  198. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +1 -1
  199. package/front_end/panels/timeline/NetworkTrackAppender.ts +1 -1
  200. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
  201. package/front_end/panels/timeline/TimelineFlameChartView.ts +0 -32
  202. package/front_end/panels/timeline/TimelineHistoryManager.ts +1 -1
  203. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +7 -3
  204. package/front_end/panels/timeline/TimelinePanel.ts +3 -20
  205. package/front_end/panels/timeline/TimelineTreeView.ts +1 -1
  206. package/front_end/panels/timeline/TimelineUIUtils.ts +4 -4
  207. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +4 -3
  208. package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
  209. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +25 -24
  210. package/front_end/panels/timeline/components/RelatedInsightChips.ts +4 -3
  211. package/front_end/panels/timeline/components/Sidebar.ts +1 -1
  212. package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +4 -3
  213. package/front_end/panels/timeline/components/cwvMetrics.css +2 -2
  214. package/front_end/panels/timeline/components/insights/checklist.css +1 -1
  215. package/front_end/panels/timeline/components/insights/table.css +3 -3
  216. package/front_end/panels/timeline/overlays/components/entriesLinkOverlay.css +4 -4
  217. package/front_end/panels/timeline/overlays/components/entryLabelOverlay.css +4 -4
  218. package/front_end/panels/timeline/overlays/components/timeRangeOverlay.css +2 -2
  219. package/front_end/panels/timeline/overlays/components/timespanBreakdownOverlay.css +4 -4
  220. package/front_end/panels/timeline/timelinePanel.css +0 -74
  221. package/front_end/panels/timeline/utils/Helpers.ts +1 -1
  222. package/front_end/panels/timeline/utils/ImageCache.ts +5 -3
  223. package/front_end/panels/web_audio/WebAudioView.ts +3 -3
  224. package/front_end/panels/web_audio/webAudio.css +5 -5
  225. package/front_end/panels/webauthn/WebauthnPane.ts +5 -11
  226. package/front_end/third_party/acorn/acorn.ts +3 -3
  227. package/front_end/third_party/chromium/README.chromium +1 -1
  228. package/front_end/third_party/chromium/ahem/ahem.d.ts +1 -0
  229. package/front_end/third_party/csp_evaluator/package/csp.ts +4 -4
  230. package/front_end/third_party/csp_evaluator/package/parser.ts +3 -1
  231. package/front_end/third_party/csp_evaluator/package/tsconfig.json +1 -0
  232. package/front_end/third_party/csp_evaluator/package/utils.ts +1 -1
  233. package/front_end/third_party/diff/DiffWrapper.ts +1 -8
  234. package/front_end/third_party/diff/diff_match_patch.d.ts +10 -0
  235. package/front_end/third_party/json5/json5.ts +2 -2
  236. package/front_end/third_party/puppeteer/README.chromium +2 -2
  237. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +183 -4
  238. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +708 -122
  239. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +85 -3
  240. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
  241. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js +84 -11
  242. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
  243. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/ScreenRecording.d.ts +75 -0
  244. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/ScreenRecording.d.ts.map +1 -0
  245. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/ScreenRecording.js +102 -0
  246. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/ScreenRecording.js.map +1 -0
  247. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.d.ts +1 -0
  248. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.d.ts.map +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.js +1 -0
  250. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.js.map +1 -1
  251. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +6 -1
  252. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js +7 -0
  254. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ScreenRecording.d.ts +31 -0
  256. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ScreenRecording.d.ts.map +1 -0
  257. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ScreenRecording.js +138 -0
  258. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ScreenRecording.js.map +1 -0
  259. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.d.ts +1 -0
  260. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.d.ts.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.js +1 -0
  262. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.js.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts +6 -0
  264. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js +23 -0
  266. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +6 -1
  268. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts.map +1 -1
  269. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js +7 -0
  270. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js.map +1 -1
  271. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.d.ts +31 -0
  272. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.d.ts.map +1 -0
  273. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js +131 -0
  274. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js.map +1 -0
  275. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.d.ts +1 -0
  276. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.d.ts.map +1 -1
  277. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.js +1 -0
  278. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.js.map +1 -1
  279. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +7 -4
  280. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
  281. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.d.ts +4 -1
  282. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -1
  283. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js +5 -1
  284. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
  285. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts +42 -0
  286. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  287. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Device.d.ts +2 -2
  288. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Device.d.ts.map +1 -1
  289. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Device.js +265 -1
  290. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Device.js.map +1 -1
  291. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts +4 -0
  292. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  293. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js +24 -3
  294. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js.map +1 -1
  295. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts +23 -2
  296. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -1
  297. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +49 -3
  298. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
  299. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  300. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  301. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  302. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts.map +1 -1
  303. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  304. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js.map +1 -1
  305. package/front_end/third_party/puppeteer/package/lib/types.d.ts +183 -4
  306. package/front_end/third_party/puppeteer/package/package.json +4 -4
  307. package/front_end/third_party/puppeteer/package/src/api/Page.ts +143 -11
  308. package/front_end/third_party/puppeteer/package/src/api/ScreenRecording.ts +145 -0
  309. package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -0
  310. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +11 -0
  311. package/front_end/third_party/puppeteer/package/src/bidi/ScreenRecording.ts +106 -0
  312. package/front_end/third_party/puppeteer/package/src/bidi/bidi.ts +1 -0
  313. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +41 -0
  314. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +11 -0
  315. package/front_end/third_party/puppeteer/package/src/cdp/ScreenRecording.ts +101 -0
  316. package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
  317. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +17 -9
  318. package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +4 -0
  319. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +46 -0
  320. package/front_end/third_party/puppeteer/package/src/common/Device.ts +287 -1
  321. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +30 -1
  322. package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +73 -2
  323. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  324. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  325. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +3 -0
  326. package/front_end/tsconfig.json +1 -2
  327. package/front_end/ui/comments/CommentAnchorResolver.ts +8 -3
  328. package/front_end/ui/comments/CommentOverlayManager.ts +53 -12
  329. package/front_end/ui/comments/CommentsOverlayWidget.ts +3 -3
  330. package/front_end/ui/comments/CommentsStatusBarPill.ts +96 -0
  331. package/front_end/ui/comments/comments-meta.ts +21 -0
  332. package/front_end/ui/comments/comments.ts +2 -0
  333. package/front_end/ui/comments/commentsOverlay.css +22 -3
  334. package/front_end/ui/components/buttons/floatingButton.css +25 -0
  335. package/front_end/ui/components/markdown_view/MarkdownView.ts +31 -1
  336. package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +1 -1
  337. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +45 -25
  338. package/front_end/ui/kit/icons/Icon.ts +0 -1
  339. package/front_end/ui/kit/link/Link.ts +8 -1
  340. package/front_end/ui/legacy/ContextMenu.ts +2 -2
  341. package/front_end/ui/legacy/DropTarget.ts +6 -1
  342. package/front_end/ui/legacy/EmptyWidget.ts +1 -1
  343. package/front_end/ui/legacy/GlassPane.ts +1 -1
  344. package/front_end/ui/legacy/InspectorView.ts +17 -1
  345. package/front_end/ui/legacy/ShortcutRegistry.ts +2 -2
  346. package/front_end/ui/legacy/SplitWidget.ts +18 -3
  347. package/front_end/ui/legacy/StackedPane.ts +1 -1
  348. package/front_end/ui/legacy/StatusBar.ts +78 -0
  349. package/front_end/ui/legacy/TargetCrashedScreen.ts +1 -1
  350. package/front_end/ui/legacy/TextPrompt.ts +2 -1
  351. package/front_end/ui/legacy/Toolbar.ts +5 -1
  352. package/front_end/ui/legacy/Treeoutline.ts +91 -48
  353. package/front_end/ui/legacy/UIUtils.ts +8 -4
  354. package/front_end/ui/legacy/ViewManager.ts +1 -1
  355. package/front_end/ui/legacy/ViewRegistration.ts +1 -0
  356. package/front_end/ui/legacy/Widget.ts +1 -1
  357. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +7 -1
  358. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
  359. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +3 -2
  360. package/front_end/ui/legacy/components/data_grid/dataGrid.css +23 -23
  361. package/front_end/ui/legacy/components/inline_editor/AnimationTimingModel.ts +1 -1
  362. package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +48 -44
  363. package/front_end/ui/legacy/components/inline_editor/CSSAngleUtils.ts +1 -1
  364. package/front_end/ui/legacy/components/inline_editor/PositionAreaEditor.docs.ts +83 -0
  365. package/front_end/ui/legacy/components/inline_editor/PositionAreaEditor.ts +600 -0
  366. package/front_end/ui/legacy/components/inline_editor/animationNameSwatch.css +1 -1
  367. package/front_end/ui/legacy/components/inline_editor/colorMixSwatch.css +4 -4
  368. package/front_end/ui/legacy/components/inline_editor/cssAngleSwatch.css +3 -3
  369. package/front_end/ui/legacy/components/inline_editor/inline_editor.ts +2 -0
  370. package/front_end/ui/legacy/components/inline_editor/linkSwatch.css +1 -1
  371. package/front_end/ui/legacy/components/inline_editor/positionAreaEditor.css +154 -0
  372. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +224 -127
  373. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +10 -7
  374. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +25 -106
  375. package/front_end/ui/legacy/components/object_ui/customPreviewComponent.css +7 -3
  376. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +1 -1
  377. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +0 -66
  378. package/front_end/ui/legacy/components/perf_ui/perf_ui.ts +0 -2
  379. package/front_end/ui/legacy/components/perf_ui/pieChart.css +7 -5
  380. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +8 -5
  381. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +1 -1
  382. package/front_end/ui/legacy/components/utils/Linkifier.ts +5 -5
  383. package/front_end/ui/legacy/inspectorCommon.css +41 -6
  384. package/front_end/ui/legacy/legacy.ts +2 -0
  385. package/front_end/ui/legacy/statusBar.css +18 -0
  386. package/front_end/ui/visual_logging/Debugging.ts +2 -1
  387. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -1
  388. package/front_end/ui/visual_logging/LoggingDriver.ts +3 -3
  389. package/front_end/ui/visual_logging/LoggingEvents.ts +5 -5
  390. package/front_end/ui/visual_logging/LoggingState.ts +1 -1
  391. package/front_end/ui/visual_logging/visual_logging.ts +67 -56
  392. package/inspector_overlay/main.ts +8 -8
  393. package/mcp/mcp.ts +5 -0
  394. package/package.json +2 -8
  395. package/front_end/Images/generate-css-vars.js +0 -52
  396. package/front_end/Images/rollup.config.mjs +0 -36
  397. package/front_end/models/ai_assistance/AiOrigins.ts +0 -107
  398. package/front_end/models/live-metrics/web-vitals-injected/rollup.config.mjs +0 -20
  399. package/front_end/panels/recorder/injected/rollup.config.mjs +0 -20
  400. package/front_end/panels/timeline/EasterEgg.d.ts +0 -6
  401. package/front_end/panels/timeline/easter-egg-tsconfig.json +0 -8
  402. package/front_end/panels/timeline/enable-easter-egg.js +0 -20
  403. package/front_end/third_party/acorn/acorn-tsconfig.json +0 -12
  404. package/front_end/third_party/acorn/estree-tsconfig.json +0 -8
  405. package/front_end/third_party/chromium/client-variations/client-variations-tsconfig.json +0 -8
  406. package/front_end/third_party/codemirror/codemirror-legacy-types-tsconfig.json +0 -8
  407. package/front_end/third_party/codemirror/codemirror-tsconfig.json +0 -15
  408. package/front_end/third_party/codemirror.next/bundle-tsconfig.json +0 -24
  409. package/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +0 -16
  410. package/front_end/third_party/json5/json5-tsconfig.json +0 -8
  411. package/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +0 -8
  412. package/front_end/third_party/lighthouse/lighthouse-tsconfig.json +0 -11
  413. package/front_end/third_party/lighthouse/report/bundle-tsconfig.json +0 -8
  414. package/front_end/third_party/lit/lit-tsconfig.json +0 -15
  415. package/front_end/third_party/marked/marked-tsconfig.json +0 -8
  416. package/front_end/third_party/puppeteer-replay/puppeteer-replay-tsconfig.json +0 -8
  417. package/front_end/third_party/third-party-web/third-party-web-tsconfig.json +0 -8
  418. package/front_end/third_party/wasmparser/wasmparser-tsconfig.json +0 -9
  419. package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +0 -47
  420. package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +0 -606
  421. package/inspector_overlay/loadCSS.rollup.js +0 -29
@@ -97,7 +97,12 @@ export class DropTarget {
97
97
  }
98
98
  }
99
99
 
100
- export const Type = {
100
+ export interface DropTargetType {
101
+ kind: string;
102
+ type: RegExp;
103
+ }
104
+
105
+ export const Type: Record<'URI'|'Folder'|'File'|'WebFile'|'ImageFile', DropTargetType> = {
101
106
  URI: {kind: 'string', type: /text\/uri-list/},
102
107
  Folder: {kind: 'file', type: /$^/},
103
108
  File: {kind: 'file', type: /.*/},
@@ -52,7 +52,7 @@ export class EmptyWidget extends VBox {
52
52
  #link: Platform.DevToolsPath.UrlString|undefined|null;
53
53
  #view: View;
54
54
 
55
- constructor(headerOrElement: string|HTMLElement, text = '', element?: HTMLElement, view = DEFAULT_VIEW) {
55
+ constructor(headerOrElement: string|HTMLElement, text = '', element?: HTMLElement, view: View = DEFAULT_VIEW) {
56
56
  const header = typeof headerOrElement === 'string' ? headerOrElement : '';
57
57
  if (!element && headerOrElement instanceof HTMLElement) {
58
58
  element = headerOrElement;
@@ -372,4 +372,4 @@ const containers = new Map<Document, Element>();
372
372
  const panes = new Set<GlassPane>();
373
373
 
374
374
  /** Exported for layout tests. **/
375
- export const GlassPanePanes = panes;
375
+ export const GlassPanePanes: Set<GlassPane> = panes;
@@ -10,6 +10,7 @@ import * as Root from '../../core/root/root.js';
10
10
  import * as SDK from '../../core/sdk/sdk.js';
11
11
  import * as Buttons from '../../ui/components/buttons/buttons.js';
12
12
  import {createIcon, type Icon} from '../kit/kit.js';
13
+ import * as Lit from '../lit/lit.js';
13
14
  import * as SettingsUI from '../settings/settings.js';
14
15
  import * as VisualLogging from '../visual_logging/visual_logging.js';
15
16
 
@@ -26,12 +27,15 @@ import {InspectorDrawerView} from './InspectorDrawerView.js';
26
27
  import {KeyboardShortcut} from './KeyboardShortcut.js';
27
28
  import type {Panel} from './Panel.js';
28
29
  import {type ShowMode, SplitWidget} from './SplitWidget.js';
30
+ import {StatusBarWidget} from './StatusBar.js';
29
31
  import {type EventData, Events as TabbedPaneEvents, type TabbedPane, type TabbedPaneTabDelegate} from './TabbedPane.js';
30
32
  import {Tooltip} from './Tooltip.js';
31
33
  import {UIUserMetrics} from './UIUserMetrics.js';
32
34
  import type {TabbedViewLocation, View, ViewLocation, ViewLocationResolver} from './View.js';
33
35
  import {ViewManager} from './ViewManager.js';
34
- import {VBox, type Widget, WidgetFocusRestorer} from './Widget.js';
36
+ import {VBox, type Widget, widget, WidgetFocusRestorer} from './Widget.js';
37
+
38
+ const {html} = Lit;
35
39
 
36
40
  const UIStrings = {
37
41
  /**
@@ -166,6 +170,7 @@ export class InspectorView extends VBox implements ViewLocationResolver {
166
170
  #resizeObserver: ResizeObserver;
167
171
  #drawerShowModeBeforeDockSideChange: ShowMode|null = null;
168
172
  #drawerMinimizedBeforeDockSideChange: boolean|null = null;
173
+ #statusBarContainer?: HTMLDivElement;
169
174
 
170
175
  constructor() {
171
176
  super();
@@ -848,6 +853,17 @@ export class InspectorView extends VBox implements ViewLocationResolver {
848
853
  }
849
854
  }
850
855
 
856
+ renderStatusBar(): void {
857
+ if (!this.#statusBarContainer) {
858
+ this.#statusBarContainer = document.createElement('div');
859
+ this.#statusBarContainer.style.display = 'contents';
860
+ this.element.appendChild(this.#statusBarContainer);
861
+ }
862
+ // eslint-disable-next-line @devtools/no-lit-render-outside-of-view
863
+ Lit.render(html`<devtools-widget class="flex-none" ${widget(StatusBarWidget)}></devtools-widget>`,
864
+ this.#statusBarContainer);
865
+ }
866
+
851
867
  private createInfoBarDiv(): void {
852
868
  if (!this.infoBarDiv) {
853
869
  this.infoBarDiv = document.createElement('div');
@@ -514,10 +514,10 @@ export class ShortcutTreeNode {
514
514
  }
515
515
 
516
516
  export class ForwardedShortcut {
517
- static instance = new ForwardedShortcut();
517
+ static instance: ForwardedShortcut = new ForwardedShortcut();
518
518
  }
519
519
 
520
- export const ForwardedActions = new Set<string>([
520
+ export const ForwardedActions: Set<string> = new Set<string>([
521
521
  'main.toggle-dock',
522
522
  'debugger.toggle-breakpoints-active',
523
523
  'debugger.toggle-pause',
@@ -81,7 +81,14 @@ export class SplitWidget extends SplitWidgetBase {
81
81
  const mainSlot = this.#mainElement.createChild('slot');
82
82
  mainSlot.name = 'main';
83
83
  mainSlot.addEventListener('slotchange', (_: Event) => {
84
- const assignedNode = mainSlot.assignedNodes()[0];
84
+ const assignedNode = mainSlot.assignedNodes().find(node => {
85
+ const widget = node instanceof HTMLElement ? Widget.get(node) : null;
86
+ if (widget) {
87
+ return widget === this.#mainWidget || widget.isShowing();
88
+ }
89
+ return node instanceof HTMLElement && !node.classList.contains('hidden');
90
+ }) ??
91
+ mainSlot.assignedNodes()[0];
85
92
  const widget = assignedNode instanceof HTMLElement ? Widget.getOrCreateWidget(assignedNode) : null;
86
93
  if (widget && widget !== this.#mainWidget) {
87
94
  this.setMainWidget(widget);
@@ -90,7 +97,14 @@ export class SplitWidget extends SplitWidgetBase {
90
97
  const sidebarSlot = this.#sidebarElement.createChild('slot');
91
98
  sidebarSlot.name = 'sidebar';
92
99
  sidebarSlot.addEventListener('slotchange', (_: Event) => {
93
- const assignedNode = sidebarSlot.assignedNodes()[0];
100
+ const assignedNode = sidebarSlot.assignedNodes().find(node => {
101
+ const widget = node instanceof HTMLElement ? Widget.get(node) : null;
102
+ if (widget) {
103
+ return widget === this.#sidebarWidget || widget.isShowing();
104
+ }
105
+ return node instanceof HTMLElement && !node.classList.contains('hidden');
106
+ }) ??
107
+ sidebarSlot.assignedNodes()[0];
94
108
  const widget = assignedNode instanceof HTMLElement ? Widget.getOrCreateWidget(assignedNode) : null;
95
109
  if (widget && widget !== this.#sidebarWidget) {
96
110
  this.setSidebarWidget(widget);
@@ -888,7 +902,8 @@ export class SplitWidget extends SplitWidgetBase {
888
902
  }
889
903
 
890
904
  export class SplitWidgetElement extends WidgetElement<SplitWidget> {
891
- static readonly observedAttributes = ['direction', 'sidebar-position', 'sidebar-initial-size', 'sidebar-visibility'];
905
+ static readonly observedAttributes: string[] =
906
+ ['direction', 'sidebar-position', 'sidebar-initial-size', 'sidebar-visibility'];
892
907
 
893
908
  constructor() {
894
909
  super();
@@ -157,7 +157,7 @@ export class ExpandableContainerWidget extends VBox {
157
157
  const expandableContainerForView = new WeakMap<View, ExpandableContainerWidget>();
158
158
 
159
159
  export class StackedPane extends VBox {
160
- readonly expandableContainers = new Map<string, ExpandableContainerWidget>();
160
+ readonly expandableContainers: Map<string, ExpandableContainerWidget> = new Map<string, ExpandableContainerWidget>();
161
161
  constructor(
162
162
  private readonly createToolbar: CreateToolbarFn,
163
163
  private readonly setWidgetForView: SetWidgetForViewFn,
@@ -0,0 +1,78 @@
1
+ // Copyright 2026 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import * as Lit from '../lit/lit.js';
6
+
7
+ import statusBarStyles from './statusBar.css.js';
8
+ import {ViewManager} from './ViewManager.js';
9
+ import {ViewLocationValues} from './ViewRegistration.js';
10
+ import {type AnyWidget, Widget} from './Widget.js';
11
+
12
+ const {html, render} = Lit;
13
+
14
+ export const DEFAULT_VIEW = (_input: undefined, _output: undefined, target: HTMLElement): void => {
15
+ // clang-format off
16
+ render(html`
17
+ <style>${statusBarStyles}</style>
18
+ <div class="status-bar"></div>
19
+ `, target);
20
+ // clang-format on
21
+ };
22
+
23
+ type View = typeof DEFAULT_VIEW;
24
+
25
+ export class StatusBarWidget extends Widget {
26
+ readonly #view: View;
27
+ #containerElement?: HTMLElement;
28
+ readonly #widgets: AnyWidget[] = [];
29
+ #viewsLoadedPromise?: Promise<void>;
30
+
31
+ constructor(
32
+ element: HTMLElement|undefined,
33
+ view: View = DEFAULT_VIEW,
34
+ ) {
35
+ super(element);
36
+ this.#view = view;
37
+ }
38
+
39
+ viewsLoadedForTest(): Promise<void> {
40
+ return this.#viewsLoadedPromise ?? Promise.resolve();
41
+ }
42
+
43
+ #attachWidgets(): void {
44
+ if (!this.#containerElement) {
45
+ return;
46
+ }
47
+ for (const widget of this.#widgets) {
48
+ if (!widget.isShowing()) {
49
+ widget.show(this.#containerElement);
50
+ }
51
+ }
52
+ }
53
+
54
+ async #loadViews(): Promise<void> {
55
+ const views = ViewManager.instance().viewsForLocation(
56
+ ViewLocationValues.STATUS_BAR,
57
+ );
58
+ for (const view of views) {
59
+ const widget = await view.widget();
60
+ if (widget instanceof Widget && !this.#widgets.includes(widget)) {
61
+ this.#widgets.push(widget);
62
+ }
63
+ }
64
+ this.#attachWidgets();
65
+ }
66
+
67
+ override wasShown(): void {
68
+ super.wasShown();
69
+ this.requestUpdate();
70
+ this.#viewsLoadedPromise = this.#loadViews();
71
+ }
72
+
73
+ override performUpdate(): void {
74
+ this.#view(undefined, undefined, this.contentElement);
75
+ this.#containerElement = this.contentElement.querySelector('.status-bar') ?? undefined;
76
+ this.#attachWidgets();
77
+ }
78
+ }
@@ -35,7 +35,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
35
35
 
36
36
  export class TargetCrashedScreen extends VBox {
37
37
  private readonly hideCallback: () => void;
38
- constructor(hideCallback: () => void, view = DEFAULT_VIEW) {
38
+ constructor(hideCallback: () => void, view: View = DEFAULT_VIEW) {
39
39
  super({useShadowDom: true});
40
40
  view({}, {}, this.contentElement);
41
41
  this.hideCallback = hideCallback;
@@ -68,7 +68,8 @@ import {cloneCustomElement, ElementFocusRestorer} from './UIUtils.js';
68
68
  * @attribute value Sets the initial text value that's edited when editing starts. If not provided, the slot's inner text is used.
69
69
  */
70
70
  export class TextPromptElement extends HTMLElement {
71
- static readonly observedAttributes = ['editing', 'completions', 'placeholder', 'cancel-on-blur', 'render-as-block'];
71
+ static readonly observedAttributes: string[] =
72
+ ['editing', 'completions', 'placeholder', 'cancel-on-blur', 'render-as-block'];
72
73
  static formAssociated = true;
73
74
  readonly #shadow = this.attachShadow({mode: 'open'});
74
75
  readonly #internals = this.attachInternals();
@@ -873,11 +873,15 @@ export class ToolbarFilter extends ToolbarInput {
873
873
  toggledIconName: regexIconName,
874
874
  toggleType: Buttons.Button.ToggleType.PRIMARY,
875
875
  toggled: false,
876
+ checked: false,
876
877
  title: i18nString(UIStrings.useRegularExpression),
877
878
  jslogContext: regexIconName,
878
879
  };
880
+ regexButton.style.setProperty('--dot-toggle-top', 'calc(100% - var(--sys-size-3) - var(--sys-size-1))');
881
+ regexButton.style.setProperty('--dot-toggle-left', 'calc(100% - var(--sys-size-3) - var(--sys-size-1))');
879
882
  ARIAUtils.setLabel(regexButton, i18nString(UIStrings.useRegularExpression));
880
883
  regexButton.addEventListener('click', () => {
884
+ regexButton.checked = regexButton.toggled;
881
885
  onRegexToggle?.();
882
886
  });
883
887
  this.insertTrailingElement(regexButton);
@@ -886,7 +890,7 @@ export class ToolbarFilter extends ToolbarInput {
886
890
  }
887
891
 
888
892
  export class ToolbarInputElement extends HTMLElement {
889
- static observedAttributes = ['value', 'disabled', 'regex'];
893
+ static observedAttributes: string[] = ['value', 'disabled', 'regex'];
890
894
 
891
895
  item?: ToolbarInput;
892
896
  datalist: HTMLDataListElement|null = null;
@@ -459,6 +459,19 @@ export class TreeOutlineInShadow extends TreeOutline {
459
459
  this.contentElement.classList.toggle('tree-outline-dense', dense);
460
460
  }
461
461
 
462
+ setDisclosureClass(disclosureClass: string): void {
463
+ const isHideOverflow = this.disclosureElement.classList.contains('tree-outline-disclosure-hide-overflow');
464
+ this.disclosureElement.className = 'tree-outline-disclosure';
465
+ if (isHideOverflow) {
466
+ this.disclosureElement.classList.add('tree-outline-disclosure-hide-overflow');
467
+ }
468
+ for (const cls of disclosureClass.split(/\s+/)) {
469
+ if (cls) {
470
+ this.disclosureElement.classList.add(cls);
471
+ }
472
+ }
473
+ }
474
+
462
475
  override onStartedEditingTitle(treeElement: TreeElement): void {
463
476
  const selection = this.shadowRoot.getSelection();
464
477
  if (selection) {
@@ -467,7 +480,7 @@ export class TreeOutlineInShadow extends TreeOutline {
467
480
  }
468
481
  }
469
482
 
470
- export const treeElementBylistItemNode = new WeakMap<Node, TreeElement>();
483
+ export const treeElementBylistItemNode: WeakMap<Node, TreeElement> = new WeakMap<Node, TreeElement>();
471
484
  export class TreeElement {
472
485
  treeOutline: TreeOutline|null;
473
486
  parent: TreeElement|null;
@@ -663,6 +676,7 @@ export class TreeElement {
663
676
  for (let current = child.firstChild(); this.treeOutline && current;
664
677
  current = current.traverseNextTreeElement(false, child, true)) {
665
678
  this.treeOutline.bindTreeElement(current);
679
+ current.ensureSelection();
666
680
  }
667
681
  child.onattach();
668
682
  child.ensureSelection();
@@ -945,7 +959,7 @@ export class TreeElement {
945
959
  }
946
960
  }
947
961
 
948
- private ensureSelection(): void {
962
+ protected ensureSelection(): void {
949
963
  if (!this.treeOutline?.renderSelection) {
950
964
  return;
951
965
  }
@@ -1001,12 +1015,17 @@ export class TreeElement {
1001
1015
  return;
1002
1016
  }
1003
1017
 
1018
+ if (event.defaultPrevented) {
1019
+ return;
1020
+ }
1021
+
1004
1022
  const handled = this.ondblclick(event);
1005
1023
  if (handled) {
1006
1024
  return;
1007
1025
  }
1008
1026
  if (this.expandable && !this.expanded) {
1009
1027
  void this.#setExpandedFromUser(true, false);
1028
+ this.listItemElement.focus();
1010
1029
  }
1011
1030
  }
1012
1031
 
@@ -1591,11 +1610,9 @@ export namespace TreeSearch {
1591
1610
  }
1592
1611
 
1593
1612
  class TreeViewTreeElement extends TreeElement {
1594
- static readonly CLONED_ATTRIBUTES = SDK.DOMModel.ARIA_ATTRIBUTES.union(new Set(['jslog', 'draggable']));
1613
+ static readonly CLONED_ATTRIBUTES = SDK.DOMModel.ARIA_ATTRIBUTES.union(new Set(['jslog', 'draggable', 'style']));
1595
1614
  #clonedAttributes = new Set<string>();
1596
1615
  #clonedClasses = new Set<string>();
1597
- #userExpanded = false;
1598
- #isProcessingAttribute = false;
1599
1616
  #previousOpenAttributeValue?: string|null;
1600
1617
  #refreshScheduled = false;
1601
1618
 
@@ -1609,39 +1626,16 @@ class TreeViewTreeElement extends TreeElement {
1609
1626
  this.refresh();
1610
1627
  }
1611
1628
 
1612
- override onexpand(): void {
1613
- if (!this.#isProcessingAttribute) {
1614
- this.#userExpanded = true;
1615
- }
1616
- }
1617
-
1618
- override oncollapse(): void {
1619
- if (!this.#isProcessingAttribute) {
1620
- this.#userExpanded = false;
1621
- }
1622
- }
1623
-
1624
1629
  updateExpansionFromAttribute(): void {
1625
- this.#isProcessingAttribute = true;
1626
- try {
1627
- const openAttr = this.configElement.getAttribute('open');
1628
- if (openAttr === this.#previousOpenAttributeValue) {
1629
- return;
1630
- }
1631
- this.#previousOpenAttributeValue = openAttr;
1632
- if (openAttr === null) {
1633
- if (this.#userExpanded) {
1634
- this.expand();
1635
- } else {
1636
- this.collapse();
1637
- }
1638
- } else if (openAttr === 'false') {
1639
- this.collapse();
1640
- } else {
1641
- this.expand();
1642
- }
1643
- } finally {
1644
- this.#isProcessingAttribute = false;
1630
+ const openAttr = this.configElement.getAttribute('open');
1631
+ if (openAttr === this.#previousOpenAttributeValue) {
1632
+ return;
1633
+ }
1634
+ this.#previousOpenAttributeValue = openAttr;
1635
+ if (openAttr !== null && openAttr !== 'false') {
1636
+ this.expand();
1637
+ } else {
1638
+ this.collapse();
1645
1639
  }
1646
1640
  }
1647
1641
 
@@ -1680,6 +1674,7 @@ class TreeViewTreeElement extends TreeElement {
1680
1674
  }
1681
1675
 
1682
1676
  refresh(): void {
1677
+ const hadFocus = this.listItemElement.hasFocus();
1683
1678
  this.titleElement.textContent = '';
1684
1679
  this.updateAttributes();
1685
1680
  const childUl = this.configElement.querySelector(':scope > ul[role="group"]');
@@ -1698,12 +1693,29 @@ class TreeViewTreeElement extends TreeElement {
1698
1693
  this.updateExpansionFromAttribute();
1699
1694
 
1700
1695
  Highlighting.HighlightManager.HighlightManager.instance().apply(this.titleElement);
1696
+ if (hadFocus) {
1697
+ this.listItemElement.focus();
1698
+ }
1701
1699
  }
1702
1700
 
1703
1701
  static get(configElement: Node|undefined): TreeViewTreeElement|undefined {
1704
1702
  return configElement && TreeViewTreeElement.#elementToTreeElement.get(configElement);
1705
1703
  }
1706
1704
 
1705
+ override onselect(selectedByUser?: boolean): boolean {
1706
+ this.listItemElement.dispatchEvent(new TreeViewElement.SelectEvent({selectedByUser: Boolean(selectedByUser)}));
1707
+ return super.onselect(selectedByUser);
1708
+ }
1709
+
1710
+ override onenter(): boolean {
1711
+ const enterEvent = new TreeViewElement.EnterEvent();
1712
+ const shouldExpand = this.listItemElement.dispatchEvent(enterEvent);
1713
+ if (!shouldExpand) {
1714
+ return false;
1715
+ }
1716
+ return super.onenter();
1717
+ }
1718
+
1707
1719
  remove(): void {
1708
1720
  removeNode(this,
1709
1721
  Boolean(this.parent &&
@@ -1828,12 +1840,20 @@ function removeNode(node: TreeElement, preserveParentExpandable = false): void {
1828
1840
  * @attribute hide-overflow
1829
1841
  */
1830
1842
  export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
1831
- static readonly observedAttributes =
1832
- ['navigation-variant', 'hide-overflow', 'dense', 'show-selection-on-keyboard-focus'];
1843
+ static readonly observedAttributes: string[] =
1844
+ ['navigation-variant', 'hide-overflow', 'dense', 'show-selection-on-keyboard-focus', 'disclosure-class'];
1833
1845
  readonly #treeOutline = new TreeOutlineInShadow(undefined, this, true);
1846
+ readonly #syncedTreeClasses = new Set<string>();
1834
1847
 
1835
1848
  constructor() {
1836
1849
  super();
1850
+ this.#treeOutline.contentElement.removeAttribute('jslog');
1851
+ if (!this.hasAttribute('jslog')) {
1852
+ this.setAttribute('jslog', `${VisualLogging.tree()}`);
1853
+ }
1854
+ if (this.hasAttribute('disclosure-class')) {
1855
+ this.#treeOutline.setDisclosureClass(this.getAttribute('disclosure-class') ?? '');
1856
+ }
1837
1857
  this.addEventListener('focusin', (event: Event) => {
1838
1858
  const actualTarget = event.composedPath()[0];
1839
1859
  if (actualTarget === this.#treeOutline.contentElement && !this.#treeOutline.selectedTreeElement &&
@@ -1841,11 +1861,6 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
1841
1861
  this.#treeOutline.firstChild()?.select(/* omitFocus */ true, /* selectedByUser */ false);
1842
1862
  }
1843
1863
  });
1844
- this.#treeOutline.addEventListener(Events.ElementSelected, event => {
1845
- if (event.data instanceof TreeViewTreeElement) {
1846
- event.data.listItemElement.dispatchEvent(new TreeViewElement.SelectEvent());
1847
- }
1848
- });
1849
1864
  this.#treeOutline.addEventListener(Events.ElementExpanded, event => {
1850
1865
  // TODO(crbug.com/1166669): This is a stopgap. We can remove the global event once devtools-tree-wrapper is no longer needed.
1851
1866
  this.dispatchEvent(new TreeViewElement.TreeElementExpandEvent(event.data, true));
@@ -1899,6 +1914,24 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
1899
1914
  }
1900
1915
 
1901
1916
  protected override updateNode(node: Node, attributeName: string|null): void {
1917
+ if (node instanceof HTMLUListElement && node.role === 'tree') {
1918
+ if (attributeName === null || attributeName === 'class') {
1919
+ for (const cls of this.#syncedTreeClasses) {
1920
+ if (!node.classList.contains(cls)) {
1921
+ this.#treeOutline.contentElement.classList.remove(cls);
1922
+ }
1923
+ }
1924
+ this.#syncedTreeClasses.clear();
1925
+ for (const cls of node.classList) {
1926
+ if (cls) {
1927
+ this.#syncedTreeClasses.add(cls);
1928
+ this.#treeOutline.contentElement.classList.add(cls);
1929
+ }
1930
+ }
1931
+ this.#treeOutline.contentElement.classList.add('tree-outline');
1932
+ }
1933
+ return;
1934
+ }
1902
1935
  let current: Node|null = node;
1903
1936
  while (current?.parentNode && !(current instanceof HTMLElement)) {
1904
1937
  current = current.parentNode;
@@ -2039,14 +2072,17 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
2039
2072
  case 'show-selection-on-keyboard-focus':
2040
2073
  this.#treeOutline.setShowSelectionOnKeyboardFocus(booleanValueIsTrue);
2041
2074
  break;
2075
+ case 'disclosure-class':
2076
+ this.#treeOutline.setDisclosureClass(newValue ?? '');
2077
+ break;
2042
2078
  }
2043
2079
  }
2044
2080
  }
2045
2081
 
2046
2082
  export namespace TreeViewElement {
2047
- export class SelectEvent extends CustomEvent<void> {
2048
- constructor() {
2049
- super('select');
2083
+ export class SelectEvent extends CustomEvent<{selectedByUser?: boolean}> {
2084
+ constructor(detail?: {selectedByUser?: boolean}) {
2085
+ super('select', {detail});
2050
2086
  }
2051
2087
  }
2052
2088
 
@@ -2056,6 +2092,12 @@ export namespace TreeViewElement {
2056
2092
  }
2057
2093
  }
2058
2094
 
2095
+ export class EnterEvent extends CustomEvent<void> {
2096
+ constructor() {
2097
+ super('enter', {bubbles: true, cancelable: true, composed: true});
2098
+ }
2099
+ }
2100
+
2059
2101
  /**
2060
2102
  * @deprecated
2061
2103
  */
@@ -2104,7 +2146,8 @@ class IfExpandedDirective extends Lit.Directive.Directive {
2104
2146
  return node.expanded;
2105
2147
  }
2106
2148
  }
2107
- export const ifExpanded = Lit.Directive.directive(IfExpandedDirective);
2149
+ export const ifExpanded: (content: Lit.LitTemplate|Iterable<Lit.LitTemplate>) =>
2150
+ Lit.DirectiveResult<typeof IfExpandedDirective> = Lit.Directive.directive(IfExpandedDirective);
2108
2151
 
2109
2152
  export class TreeElementWrapper extends HTMLElement {
2110
2153
  #treeElement?: TreeElement;
@@ -71,7 +71,8 @@ declare global {
71
71
  'dt-small-bubble': DevToolsSmallBubble;
72
72
  }
73
73
  }
74
- const {Directives, render} = Lit;
74
+ const Directives: typeof Lit.Directives = Lit.Directives;
75
+ const render: typeof Lit.render = Lit.render;
75
76
 
76
77
  const UIStrings = {
77
78
  /**
@@ -753,7 +754,8 @@ class AnimateOnDirective extends Lit.Directive.Directive {
753
754
  }
754
755
  }
755
756
 
756
- export const animateOn = Lit.Directive.directive(AnimateOnDirective);
757
+ export const animateOn: (_condition: boolean, _className: string) => Lit.DirectiveResult<typeof AnimateOnDirective> =
758
+ Lit.Directive.directive(AnimateOnDirective);
757
759
 
758
760
  export function measurePreferredSize(element: Element, containerElement?: Element|null): Geometry.Size {
759
761
  const oldParent = element.parentElement;
@@ -1195,7 +1197,8 @@ export function setTitle(element: HTMLElement, title: string): void {
1195
1197
  }
1196
1198
 
1197
1199
  export class CheckboxLabel extends HTMLElement {
1198
- static readonly observedAttributes = ['checked', 'disabled', 'indeterminate', 'name', 'title', 'aria-label', 'small'];
1200
+ static readonly observedAttributes: string[] =
1201
+ ['checked', 'disabled', 'indeterminate', 'name', 'title', 'aria-label', 'small'];
1199
1202
 
1200
1203
  readonly #shadowRoot!: DocumentFragment;
1201
1204
  #checkboxElement!: HTMLInputElement;
@@ -2080,7 +2083,8 @@ export class HTMLElementWithLightDOMTemplate extends HTMLElement {
2080
2083
  const clones: Node[] = [];
2081
2084
  for (const cloneRef of cloneSet) {
2082
2085
  const clone = cloneRef.deref();
2083
- if (clone) {
2086
+ const root = clone?.getRootNode();
2087
+ if (clone && (root instanceof Document || root instanceof DocumentFragment)) {
2084
2088
  clones.push(clone);
2085
2089
  } else {
2086
2090
  cloneSet.delete(cloneRef);
@@ -173,7 +173,7 @@ export interface EventTypes {
173
173
  }
174
174
 
175
175
  export class ViewManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
176
- readonly views = new Map<string, View>();
176
+ readonly views: Map<string, View> = new Map<string, View>();
177
177
  private readonly locationNameByViewId = new Map<string, string>();
178
178
  private readonly locationOverrideSetting: Common.Settings.Setting<Record<string, string>>;
179
179
 
@@ -60,6 +60,7 @@ export const enum ViewLocationValues {
60
60
  NETWORK_SIDEBAR = 'network-sidebar',
61
61
  SOURCES_SIDEBAR_TOP = 'sources.sidebar-top',
62
62
  SOURCES_SIDEBAR_TABS = 'sources.sidebar-tabs',
63
+ STATUS_BAR = 'status-bar',
63
64
  }
64
65
 
65
66
  export interface ViewRegistration {
@@ -212,7 +212,7 @@ function runNextUpdate(): void {
212
212
  }
213
213
 
214
214
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
215
- export const widgetConfigs = new WeakMap<HTMLElement, WidgetConfig<any>>();
215
+ export const widgetConfigs: WeakMap<HTMLElement, WidgetConfig<any>> = new WeakMap<HTMLElement, WidgetConfig<any>>();
216
216
 
217
217
  export function registerWidgetConfig<WidgetT extends AnyWidget>(element: HTMLElement,
218
218
  config: WidgetConfig<WidgetT>): void {
@@ -1645,7 +1645,13 @@ const MaterialPaletteShades = new Map([
1645
1645
  ],
1646
1646
  ]);
1647
1647
 
1648
- export const MaterialPalette = {
1648
+ export const MaterialPalette: {
1649
+ title: string,
1650
+ mutable: boolean,
1651
+ matchUserFormat: boolean,
1652
+ colors: string[],
1653
+ colorNames: string[],
1654
+ } = {
1649
1655
  title: 'Material',
1650
1656
  mutable: false,
1651
1657
  matchUserFormat: true,
@@ -1756,7 +1756,7 @@ export class DataGridNode<T> {
1756
1756
  selectable = true;
1757
1757
  isRoot = false;
1758
1758
  nodeAccessibleText = '';
1759
- cellAccessibleTextMap = new Map<string, string>();
1759
+ cellAccessibleTextMap: Map<string, string> = new Map<string, string>();
1760
1760
  isCreationNode = false;
1761
1761
  #data: DataGridData;
1762
1762
  #hasChildren: boolean;
@@ -58,7 +58,7 @@ type DataGridElementNode = SortableNode|DynamicHeightNode;
58
58
  const elementToNode = new WeakMap<Element, DataGridElementNode>();
59
59
 
60
60
  export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate {
61
- static readonly observedAttributes = ['striped', 'name', 'inline', 'resize', 'highlight'];
61
+ static readonly observedAttributes: string[] = ['striped', 'name', 'inline', 'resize', 'highlight'];
62
62
 
63
63
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
64
  #dataGrid!: DataGridImpl<any>;
@@ -805,7 +805,8 @@ class IfExpandedDirective extends Lit.Directive.Directive {
805
805
  return node.expanded;
806
806
  }
807
807
  }
808
- export const ifExpanded = Lit.Directive.directive(IfExpandedDirective);
808
+ export const ifExpanded: (content: Lit.LitTemplate|Iterable<Lit.LitTemplate>) =>
809
+ Lit.DirectiveResult<typeof IfExpandedDirective> = Lit.Directive.directive(IfExpandedDirective);
809
810
 
810
811
  function getNode(element: Element|undefined): DataGridElementNode|undefined {
811
812
  return element ? elementToNode.get(element) : undefined;