chrome-devtools-frontend 1.0.1662965 → 1.0.1664496

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 (273) hide show
  1. package/.agents/skills/{creating-a-model → devtools-model-management}/SKILL.md +0 -1
  2. package/.agents/skills/devtools-ux-writing-refactor/SKILL.md +2 -1
  3. package/.agents/skills/fixing-skipped-tests/SKILL.md +3 -3
  4. package/.agents/skills/merging-devtools-module/SKILL.md +1 -1
  5. package/.agents/skills/migrate-chromium-test/SKILL.md +3 -2
  6. package/.agents/skills/repro-flaky-tests/SKILL.md +71 -31
  7. package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +1 -0
  8. package/docs/ui_engineering.md +2 -0
  9. package/eslint.config.mjs +1 -0
  10. package/front_end/core/common/Settings.ts +75 -0
  11. package/front_end/core/protocol_client/PuppeteerDevToolsConnection.ts +112 -0
  12. package/front_end/core/sdk/CPUProfilerModel.ts +21 -13
  13. package/front_end/core/sdk/CSSContainerQuery.ts +1 -1
  14. package/front_end/core/sdk/CSSLayer.ts +1 -1
  15. package/front_end/core/sdk/CSSMedia.ts +1 -1
  16. package/front_end/core/sdk/CSSModel.ts +1 -1
  17. package/front_end/core/sdk/CSSNavigation.ts +1 -1
  18. package/front_end/core/sdk/CSSProperty.ts +1 -1
  19. package/front_end/core/sdk/CSSQuery.ts +1 -1
  20. package/front_end/core/sdk/CSSRule.ts +1 -1
  21. package/front_end/core/sdk/CSSScope.ts +1 -1
  22. package/front_end/core/sdk/CSSStartingStyle.ts +1 -1
  23. package/front_end/core/sdk/CSSStyleDeclaration.ts +1 -1
  24. package/front_end/core/sdk/CSSStyleSheetHeader.ts +1 -1
  25. package/front_end/core/sdk/CSSSupports.ts +1 -1
  26. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
  27. package/front_end/core/sdk/NetworkManager.ts +1 -1
  28. package/front_end/core/sdk/NetworkRequest.ts +7 -7
  29. package/front_end/core/sdk/Resource.ts +1 -1
  30. package/front_end/core/sdk/ScopeTreeCache.ts +1 -1
  31. package/front_end/core/sdk/Script.ts +1 -1
  32. package/front_end/core/sdk/ServerSentEvents.ts +1 -1
  33. package/front_end/core/sdk/SourceMap.ts +1 -1
  34. package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
  35. package/front_end/core/sdk/sdk-meta.ts +3 -3
  36. package/front_end/{models → core}/text_utils/ContentProvider.ts +4 -6
  37. package/front_end/{models → core}/text_utils/StaticContentProvider.ts +4 -6
  38. package/front_end/{models → core}/text_utils/StreamingContentData.ts +1 -2
  39. package/front_end/{models → core}/text_utils/TextRange.ts +6 -3
  40. package/front_end/{models → core}/text_utils/TextUtils.ts +7 -7
  41. package/front_end/{models → core}/text_utils/WasmDisassembly.ts +2 -2
  42. package/front_end/core/text_utils/text_utils.ts +27 -0
  43. package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +1 -1
  44. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +1 -1
  45. package/front_end/entrypoints/main/MainImpl.ts +14 -1
  46. package/front_end/foundation/Universe.ts +1 -1
  47. package/front_end/models/ai_assistance/AgentProject.ts +1 -1
  48. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +3 -6
  49. package/front_end/models/ai_assistance/agents/AiAgent.ts +1 -1
  50. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +19 -11
  51. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +2 -2
  52. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +23 -10
  53. package/front_end/models/ai_assistance/agents/StorageAgent.ts +19 -18
  54. package/front_end/models/ai_assistance/agents/StylingAgent.ts +2 -3
  55. package/front_end/models/ai_assistance/contexts/FileContext.ts +7 -3
  56. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +39 -11
  57. package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +6 -3
  58. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +1 -1
  59. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +4 -4
  60. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +8 -8
  61. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +76 -3
  62. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +11 -1
  63. package/front_end/models/badges/AiExplorerBadge.ts +8 -3
  64. package/front_end/models/badges/Badge.ts +1 -0
  65. package/front_end/models/badges/UserBadges.ts +11 -5
  66. package/front_end/models/bindings/CompilerScriptMapping.ts +1 -1
  67. package/front_end/models/bindings/ContentProviderBasedProject.ts +1 -1
  68. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +2 -2
  69. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -1
  70. package/front_end/models/bindings/DefaultScriptMapping.ts +1 -1
  71. package/front_end/models/bindings/FileUtils.ts +1 -1
  72. package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +7 -10
  73. package/front_end/models/bindings/ResourceMapping.ts +1 -1
  74. package/front_end/models/bindings/ResourceScriptMapping.ts +1 -1
  75. package/front_end/models/bindings/SASSSourceMapping.ts +1 -1
  76. package/front_end/models/bindings/StylesSourceMapping.ts +1 -1
  77. package/front_end/models/breakpoints/BreakpointManager.ts +1 -1
  78. package/front_end/models/crux-manager/CrUXManager.ts +1 -1
  79. package/front_end/models/emulation/EmulatedDevices.ts +3 -2
  80. package/front_end/models/har/Importer.ts +1 -1
  81. package/front_end/models/har/Writer.ts +1 -1
  82. package/front_end/models/issues_manager/IssueAggregator.ts +9 -0
  83. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  84. package/front_end/models/issues_manager/LazyLoadImageIssue.ts +76 -0
  85. package/front_end/models/issues_manager/descriptions/lazyLoadImageZeroSize.md +7 -0
  86. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  87. package/front_end/models/javascript_metadata/NativeFunctions.js +9 -10
  88. package/front_end/models/live-metrics/LiveMetrics.ts +2 -3
  89. package/front_end/models/logs/NetworkLog.ts +4 -3
  90. package/front_end/models/logs/logs-meta.ts +3 -3
  91. package/front_end/models/network_time_calculator/NetworkTimeCalculator.ts +4 -4
  92. package/front_end/models/persistence/Automapping.ts +1 -1
  93. package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +2 -2
  94. package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +1 -1
  95. package/front_end/models/persistence/IsolatedFileSystem.ts +2 -2
  96. package/front_end/models/persistence/NetworkPersistenceManager.ts +1 -1
  97. package/front_end/models/persistence/PersistenceImpl.ts +1 -1
  98. package/front_end/models/persistence/PlatformFileSystem.ts +1 -1
  99. package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +1 -1
  100. package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
  101. package/front_end/models/text_utils/text_utils.ts +2 -24
  102. package/front_end/models/trace/insights/ImageDelivery.ts +2 -2
  103. package/front_end/models/trace/insights/LegacyJavaScript.ts +1 -1
  104. package/front_end/models/trace/insights/RenderBlocking.ts +1 -1
  105. package/front_end/models/trace/insights/ThirdParties.ts +1 -1
  106. package/front_end/models/workspace/FileManager.ts +1 -1
  107. package/front_end/models/workspace/UISourceCode.ts +1 -1
  108. package/front_end/models/workspace/WorkspaceImpl.ts +1 -1
  109. package/front_end/models/workspace_diff/WorkspaceDiff.ts +1 -1
  110. package/front_end/panels/accessibility/AccessibilityNodeView.ts +1 -1
  111. package/front_end/panels/accessibility/AccessibilityStrings.ts +2 -2
  112. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +1 -1
  113. package/front_end/panels/ai_assistance/ExportConversation.ts +1 -1
  114. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +1 -1
  115. package/front_end/panels/ai_assistance/components/ChatMessage.ts +1 -1
  116. package/front_end/panels/application/AppManifestView.ts +4 -4
  117. package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -2
  118. package/front_end/panels/application/CrashReportContextView.ts +1 -1
  119. package/front_end/panels/application/DOMStorageItemsView.ts +1 -1
  120. package/front_end/panels/application/DeviceBoundSessionsView.ts +4 -4
  121. package/front_end/panels/application/ExtensionStorageItemsView.ts +1 -1
  122. package/front_end/panels/application/FrameDetailsView.ts +1 -1
  123. package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +12 -2
  124. package/front_end/panels/application/ServiceWorkerCacheViews.ts +1 -1
  125. package/front_end/panels/application/application.ts +2 -0
  126. package/front_end/panels/application/components/BackForwardCacheView.ts +21 -5
  127. package/front_end/panels/application/components/CrashReportContextGrid.ts +1 -1
  128. package/front_end/panels/application/components/TrustTokensView.ts +2 -2
  129. package/front_end/panels/application/preloading/PreloadingView.ts +1 -1
  130. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -2
  131. package/front_end/panels/application/preloading/components/PreloadingString.ts +2 -2
  132. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +4 -4
  133. package/front_end/panels/autofill/AutofillView.ts +1 -1
  134. package/front_end/panels/common/AiCodeCompletionTeaser.ts +1 -1
  135. package/front_end/panels/common/ExtensionServer.ts +1 -1
  136. package/front_end/panels/console/ConsoleFilter.ts +1 -1
  137. package/front_end/panels/console/ConsoleSidebar.ts +1 -1
  138. package/front_end/panels/console/ConsoleView.ts +1 -1
  139. package/front_end/panels/console/ConsoleViewMessage.ts +1 -1
  140. package/front_end/panels/console/PromptBuilder.ts +1 -1
  141. package/front_end/panels/coverage/CoverageDecorationManager.ts +9 -1
  142. package/front_end/panels/coverage/CoverageModel.ts +1 -1
  143. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +1 -1
  144. package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
  145. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +1 -1
  146. package/front_end/panels/elements/AccessibilityTreeView.ts +38 -3
  147. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +1 -1
  148. package/front_end/panels/elements/ElementIssueUtils.ts +2 -2
  149. package/front_end/panels/elements/ElementsTreeElement.ts +10 -3
  150. package/front_end/panels/elements/StandaloneStylesContainer.ts +1 -1
  151. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  152. package/front_end/panels/elements/StylePropertyTreeElement.ts +1 -1
  153. package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +1 -1
  154. package/front_end/panels/elements/StylesContainer.ts +1 -1
  155. package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
  156. package/front_end/panels/elements/components/CSSPropertyDocsView.ts +1 -1
  157. package/front_end/panels/explain/components/ConsoleInsight.ts +2 -2
  158. package/front_end/panels/issues/AffectedLazyLoadImagesView.ts +76 -0
  159. package/front_end/panels/issues/AffectedResourcesView.ts +1 -1
  160. package/front_end/panels/issues/CorsIssueDetailsView.ts +1 -1
  161. package/front_end/panels/issues/IssueView.ts +2 -0
  162. package/front_end/panels/issues/issues.ts +2 -0
  163. package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
  164. package/front_end/panels/lighthouse/LighthouseController.ts +5 -0
  165. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -1
  166. package/front_end/panels/network/BinaryResourceView.ts +1 -1
  167. package/front_end/panels/network/NetworkDataGridNode.ts +29 -7
  168. package/front_end/panels/network/NetworkLogView.ts +1 -1
  169. package/front_end/panels/network/NetworkLogViewColumns.ts +6 -6
  170. package/front_end/panels/network/NetworkPanel.ts +4 -4
  171. package/front_end/panels/network/NetworkSearchScope.ts +1 -1
  172. package/front_end/panels/network/RequestConditionsDrawer.ts +1 -1
  173. package/front_end/panels/network/RequestHTMLView.ts +1 -1
  174. package/front_end/panels/network/RequestPayloadView.ts +1 -1
  175. package/front_end/panels/network/RequestPreviewView.ts +1 -1
  176. package/front_end/panels/network/RequestResponseView.ts +1 -1
  177. package/front_end/panels/network/ResourceChunkView.ts +1 -1
  178. package/front_end/panels/network/ResourceDirectSocketChunkView.ts +1 -1
  179. package/front_end/panels/network/ResourceWebSocketFrameView.ts +1 -1
  180. package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
  181. package/front_end/panels/network/forward/UIRequestLocation.ts +1 -1
  182. package/front_end/panels/network/network-meta.ts +3 -3
  183. package/front_end/panels/profiler/HeapProfileView.ts +6 -6
  184. package/front_end/panels/profiler/HeapSnapshotView.ts +1 -1
  185. package/front_end/panels/profiler/ProfileDataGrid.ts +12 -8
  186. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +1 -1
  187. package/front_end/panels/recorder/RecorderPanel.ts +493 -381
  188. package/front_end/panels/recorder/RecordingListView.ts +8 -37
  189. package/front_end/panels/recorder/RecordingView.ts +54 -27
  190. package/front_end/panels/recorder/SelectorPicker.ts +0 -13
  191. package/front_end/panels/recorder/StepEditor.ts +6 -14
  192. package/front_end/panels/recorder/StepView.ts +36 -105
  193. package/front_end/panels/search/SearchResultsPane.ts +1 -1
  194. package/front_end/panels/security/SecurityPanel.ts +3 -3
  195. package/front_end/panels/settings/AISettingsTab.ts +4 -4
  196. package/front_end/panels/settings/components/SyncSection.ts +4 -4
  197. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +3 -3
  198. package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +1 -1
  199. package/front_end/panels/sources/BreakpointsView.ts +1 -1
  200. package/front_end/panels/sources/CoveragePlugin.ts +1 -1
  201. package/front_end/panels/sources/DebuggerPlugin.ts +4 -4
  202. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +27 -3
  203. package/front_end/panels/sources/NavigatorView.ts +1 -1
  204. package/front_end/panels/sources/PersistenceActions.ts +1 -1
  205. package/front_end/panels/sources/SourcesNavigator.ts +1 -1
  206. package/front_end/panels/sources/SourcesSearchScope.ts +1 -1
  207. package/front_end/panels/sources/TabbedEditorContainer.ts +3 -3
  208. package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
  209. package/front_end/panels/sources/components/HeadersView.ts +1 -1
  210. package/front_end/panels/sources/filteredUISourceCodeListProvider.css +12 -1
  211. package/front_end/panels/sources/sources-meta.ts +1 -1
  212. package/front_end/panels/timeline/StatusDialog.ts +1 -1
  213. package/front_end/panels/timeline/TimelineController.ts +24 -3
  214. package/front_end/panels/timeline/TimelinePanel.ts +116 -25
  215. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +2 -2
  216. package/front_end/panels/timeline/TimelineUIUtils.ts +1 -1
  217. package/front_end/panels/timeline/components/CWVMetrics.ts +1 -1
  218. package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -1
  219. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -2
  220. package/front_end/panels/timeline/timeline-meta.ts +13 -0
  221. package/front_end/services/tracing/TracingManager.ts +27 -2
  222. package/front_end/third_party/chromium/README.chromium +1 -1
  223. package/front_end/third_party/lighthouse/README.chromium +2 -2
  224. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1418 -1413
  225. package/front_end/third_party/lighthouse/locales/en-US.json +12 -6
  226. package/front_end/third_party/lighthouse/locales/en-XL.json +12 -6
  227. package/front_end/third_party/lighthouse/report-assets/report-generator.mjs +1 -1
  228. package/front_end/third_party/puppeteer/puppeteer.ts +20 -1
  229. package/front_end/ui/components/highlighting/HighlightElement.ts +4 -1
  230. package/front_end/ui/components/highlighting/HighlightManager.ts +1 -1
  231. package/front_end/ui/components/highlighting/MarkupHighlight.ts +1 -1
  232. package/front_end/ui/components/markdown_view/MarkdownView.ts +46 -2
  233. package/front_end/ui/components/markdown_view/markdownView.css +23 -0
  234. package/front_end/ui/components/text_editor/config.ts +1 -1
  235. package/front_end/ui/components/tree_outline/TreeOutline.ts +7 -1
  236. package/front_end/ui/legacy/Infobar.ts +1 -1
  237. package/front_end/ui/legacy/InspectorView.ts +12 -7
  238. package/front_end/ui/legacy/SuggestBox.ts +1 -1
  239. package/front_end/ui/legacy/TextPrompt.ts +1 -1
  240. package/front_end/ui/legacy/Toolbar.ts +5 -2
  241. package/front_end/ui/legacy/Treeoutline.ts +26 -7
  242. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +1 -1
  243. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +1 -1
  244. package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +1 -1
  245. package/front_end/ui/legacy/components/data_grid/dataGrid.css +1 -1
  246. package/front_end/ui/legacy/components/inline_editor/AnimationTimingUI.ts +27 -13
  247. package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +5 -2
  248. package/front_end/ui/legacy/components/inline_editor/CSSLinearEasingModel.ts +23 -0
  249. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +161 -54
  250. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -1
  251. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +1 -1
  252. package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -1
  253. package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
  254. package/front_end/ui/legacy/components/source_frame/JSONView.ts +105 -115
  255. package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +1 -1
  256. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +1 -1
  257. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +3 -3
  258. package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +1 -1
  259. package/front_end/ui/legacy/components/source_frame/XMLView.ts +5 -1
  260. package/front_end/ui/legacy/components/source_frame/jsonView.css +4 -0
  261. package/front_end/ui/legacy/components/utils/Linkifier.ts +1 -1
  262. package/front_end/ui/legacy/inspectorCommon.css +6 -2
  263. package/front_end/ui/settings/SettingUIRegistration.ts +105 -0
  264. package/front_end/ui/settings/settings.ts +9 -0
  265. package/front_end/ui/visual_logging/KnownContextValues.ts +13 -0
  266. package/mcp/mcp.ts +1 -0
  267. package/package.json +1 -1
  268. /package/.agents/skills/{verification → devtools-verification}/SKILL.md +0 -0
  269. /package/front_end/{models → core}/text_utils/CodeMirrorUtils.ts +0 -0
  270. /package/front_end/{models → core}/text_utils/ContentData.ts +0 -0
  271. /package/front_end/{models → core}/text_utils/Text.ts +0 -0
  272. /package/front_end/{models → core}/text_utils/TextCursor.ts +0 -0
  273. /package/front_end/{models → core}/text_utils/TextUtils.snapshot.txt +0 -0
@@ -603,7 +603,7 @@
603
603
  "message": "Failing Rule"
604
604
  },
605
605
  "core/audits/agentic/agent-accessibility-tree.js | description": {
606
- "message": "A well-formed [accessibility tree](http://goo.gle/lighthouse-agentic-a11y) helps AI agents to navigate and interact with the page."
606
+ "message": "A well-formed [accessibility tree](https://developer.chrome.com/docs/lighthouse/agentic-browsing/accessibility-for-agents) helps AI agents to navigate and interact with the page."
607
607
  },
608
608
  "core/audits/agentic/agent-accessibility-tree.js | displayValuePassed": {
609
609
  "message": "All audits passed"
@@ -618,7 +618,7 @@
618
618
  "message": "Accessibility tree is well-formed"
619
619
  },
620
620
  "core/audits/agentic/llms-txt.js | description": {
621
- "message": "If your llms.txt file does not follow recommendations, large language models may not be able to understand how you want your website to be crawled or used for training. The [llms.txt](https://llmstxt.org/) file should be a Markdown file containing at least one H1 header."
621
+ "message": "If your llms.txt file does not follow recommendations, large language models may not be able to understand how you want your website to be crawled or used for training. The [llms.txt](https://llmstxt.org/) file should be a Markdown file containing at least one H1 header. [Learn more about the llms.txt audit](https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt)."
622
622
  },
623
623
  "core/audits/agentic/llms-txt.js | displayValueHttpBadCode": {
624
624
  "message": "Failed with HTTP status {statusCode}"
@@ -626,6 +626,9 @@
626
626
  "core/audits/agentic/llms-txt.js | explanation": {
627
627
  "message": "Fetch of llms.txt failed"
628
628
  },
629
+ "core/audits/agentic/llms-txt.js | explanationWithError": {
630
+ "message": "Fetch of llms.txt failed: {error}"
631
+ },
629
632
  "core/audits/agentic/llms-txt.js | failureTitle": {
630
633
  "message": "llms.txt does not follow recommendations"
631
634
  },
@@ -1263,7 +1266,10 @@
1263
1266
  "message": "{itemCount, plural,\n =1 {1 error found}\n other {# errors found}\n }"
1264
1267
  },
1265
1268
  "core/audits/seo/robots-txt.js | explanation": {
1266
- "message": "Lighthouse was unable to download a robots.txt file"
1269
+ "message": "Fetch of robots.txt failed"
1270
+ },
1271
+ "core/audits/seo/robots-txt.js | explanationWithError": {
1272
+ "message": "Fetch of robots.txt failed: {error}"
1267
1273
  },
1268
1274
  "core/audits/seo/robots-txt.js | failureTitle": {
1269
1275
  "message": "robots.txt is not valid"
@@ -1350,7 +1356,7 @@
1350
1356
  "message": "Form"
1351
1357
  },
1352
1358
  "core/audits/webmcp-form-coverage.js | description": {
1353
- "message": "Consider adding [WebMCP](http://goo.gle/webmcp-docs) annotations to the forms listed below. This helps AI agents identify and interact with these forms more reliably."
1359
+ "message": "Consider adding [WebMCP](https://developer.chrome.com/docs/ai/webmcp) annotations to the forms listed below. This helps AI agents identify and interact with these forms more reliably."
1354
1360
  },
1355
1361
  "core/audits/webmcp-form-coverage.js | displayValue": {
1356
1362
  "message": "{itemCount, plural,\n =1 {1 form missing annotations}\n other {# forms missing annotations}\n }"
@@ -1374,7 +1380,7 @@
1374
1380
  "message": "Tool name"
1375
1381
  },
1376
1382
  "core/audits/webmcp-registered-tools.js | description": {
1377
- "message": "Lists the [WebMCP tools](http://goo.gle/webmcp-docs) registered at the time of analysis."
1383
+ "message": "Lists the [WebMCP tools](https://developer.chrome.com/docs/ai/webmcp) registered at the time of analysis."
1378
1384
  },
1379
1385
  "core/audits/webmcp-registered-tools.js | title": {
1380
1386
  "message": "WebMCP tools registered"
@@ -1392,7 +1398,7 @@
1392
1398
  "message": "Issue"
1393
1399
  },
1394
1400
  "core/audits/webmcp-schema-validity.js | description": {
1395
- "message": "Valid [WebMCP schemas](http://goo.gle/webmcp-docs) are required for AI agents to understand and interact with tools correctly. Please fix any errors or warnings reported by the browser."
1401
+ "message": "Valid [WebMCP schemas](https://developer.chrome.com/docs/ai/webmcp) are required for AI agents to understand and interact with tools correctly. Please fix any errors or warnings reported by the browser."
1396
1402
  },
1397
1403
  "core/audits/webmcp-schema-validity.js | failureTitle": {
1398
1404
  "message": "WebMCP schemas are invalid"
@@ -603,7 +603,7 @@
603
603
  "message": "F̂áîĺîńĝ Ŕûĺê"
604
604
  },
605
605
  "core/audits/agentic/agent-accessibility-tree.js | description": {
606
- "message": "Â ẃêĺl̂-f́ôŕm̂éd̂ [áĉćêśŝíb̂íl̂ít̂ý t̂ŕêé](http://goo.gle/lighthouse-agentic-a11y) ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ t́ô ńâv́îǵât́ê án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́ê ṕâǵê."
606
+ "message": "Â ẃêĺl̂-f́ôŕm̂éd̂ [áĉćêśŝíb̂íl̂ít̂ý t̂ŕêé](https://developer.chrome.com/docs/lighthouse/agentic-browsing/accessibility-for-agents) ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ t́ô ńâv́îǵât́ê án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́ê ṕâǵê."
607
607
  },
608
608
  "core/audits/agentic/agent-accessibility-tree.js | displayValuePassed": {
609
609
  "message": "Âĺl̂ áûd́ît́ŝ ṕâśŝéd̂"
@@ -618,7 +618,7 @@
618
618
  "message": "Âćĉéŝśîb́îĺît́ŷ t́r̂éê íŝ ẃêĺl̂-f́ôŕm̂éd̂"
619
619
  },
620
620
  "core/audits/agentic/llms-txt.js | description": {
621
- "message": "Îf́ ŷóûŕ l̂ĺm̂ś.t̂x́t̂ f́îĺê d́ôéŝ ńôt́ f̂ól̂ĺôẃ r̂éĉóm̂ḿêńd̂át̂íôńŝ, ĺâŕĝé l̂án̂ǵûáĝé m̂ód̂él̂ś m̂áŷ ńôt́ b̂é âb́l̂é t̂ó ûńd̂ér̂śt̂án̂d́ ĥóŵ ýôú ŵán̂t́ ŷóûŕ ŵéb̂śît́ê t́ô b́ê ćr̂áŵĺêd́ ôŕ ûśêd́ f̂ór̂ t́r̂áîńîńĝ. T́ĥé [l̂ĺm̂ś.t̂x́t̂](https://llmstxt.org/) f́îĺê śĥóûĺd̂ b́ê á M̂ár̂ḱd̂óŵń f̂íl̂é ĉón̂t́âín̂ín̂ǵ ât́ l̂éâśt̂ ón̂é Ĥ1 h́êád̂ér̂."
621
+ "message": "Îf́ ŷóûŕ l̂ĺm̂ś.t̂x́t̂ f́îĺê d́ôéŝ ńôt́ f̂ól̂ĺôẃ r̂éĉóm̂ḿêńd̂át̂íôńŝ, ĺâŕĝé l̂án̂ǵûáĝé m̂ód̂él̂ś m̂áŷ ńôt́ b̂é âb́l̂é t̂ó ûńd̂ér̂śt̂án̂d́ ĥóŵ ýôú ŵán̂t́ ŷóûŕ ŵéb̂śît́ê t́ô b́ê ćr̂áŵĺêd́ ôŕ ûśêd́ f̂ór̂ t́r̂áîńîńĝ. T́ĥé [l̂ĺm̂ś.t̂x́t̂](https://llmstxt.org/) f́îĺê śĥóûĺd̂ b́ê á M̂ár̂ḱd̂óŵń f̂íl̂é ĉón̂t́âín̂ín̂ǵ ât́ l̂éâśt̂ ón̂é Ĥ1 h́êád̂ér̂. [Ĺêár̂ń m̂ór̂é âb́ôút̂ t́ĥé l̂ĺm̂ś.t̂x́t̂ áûd́ît́](https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt)."
622
622
  },
623
623
  "core/audits/agentic/llms-txt.js | displayValueHttpBadCode": {
624
624
  "message": "F̂áîĺêd́ ŵít̂h́ ĤT́T̂Ṕ ŝt́ât́ûś {statusCode}"
@@ -626,6 +626,9 @@
626
626
  "core/audits/agentic/llms-txt.js | explanation": {
627
627
  "message": "F̂ét̂ćĥ óf̂ ĺl̂ḿŝ.t́x̂t́ f̂áîĺêd́"
628
628
  },
629
+ "core/audits/agentic/llms-txt.js | explanationWithError": {
630
+ "message": "F̂ét̂ćĥ óf̂ ĺl̂ḿŝ.t́x̂t́ f̂áîĺêd́: {error}"
631
+ },
629
632
  "core/audits/agentic/llms-txt.js | failureTitle": {
630
633
  "message": "l̂ĺm̂ś.t̂x́t̂ d́ôéŝ ńôt́ f̂ól̂ĺôẃ r̂éĉóm̂ḿêńd̂át̂íôńŝ"
631
634
  },
@@ -1263,7 +1266,10 @@
1263
1266
  "message": "{itemCount, plural,\n =1 {1 êŕr̂ór̂ f́ôún̂d́}\n other {# êŕr̂ór̂ś f̂óûńd̂}\n }"
1264
1267
  },
1265
1268
  "core/audits/seo/robots-txt.js | explanation": {
1266
- "message": "L̂íĝh́h́ôúŝé ŵáŝ ún̂b̂ĺê ô d́ôẃn̂ĺôád̂ á r̂ób̂ót̂ś.t̂x́ f́îĺê"
1269
+ "message": "F̂ét̂ćĥ óf̂ ŕôb́ôt́ŝ.t́x̂t́ f̂áîĺê"
1270
+ },
1271
+ "core/audits/seo/robots-txt.js | explanationWithError": {
1272
+ "message": "F̂ét̂ćĥ óf̂ ŕôb́ôt́ŝ.t́x̂t́ f̂áîĺêd́: {error}"
1267
1273
  },
1268
1274
  "core/audits/seo/robots-txt.js | failureTitle": {
1269
1275
  "message": "r̂ób̂ót̂ś.t̂x́t̂ íŝ ńôt́ v̂ál̂íd̂"
@@ -1350,7 +1356,7 @@
1350
1356
  "message": "F̂ór̂ḿ"
1351
1357
  },
1352
1358
  "core/audits/webmcp-form-coverage.js | description": {
1353
- "message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ [Ŵéb̂ḾĈṔ](http://goo.gle/webmcp-docs) âńn̂ót̂át̂íôńŝ t́ô t́ĥé f̂ór̂ḿŝ ĺîśt̂éd̂ b́êĺôẃ. T̂h́îś ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ íd̂én̂t́îf́ŷ án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́êśê f́ôŕm̂ś m̂ór̂é r̂él̂íâb́l̂ý."
1359
+ "message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ [Ŵéb̂ḾĈṔ](https://developer.chrome.com/docs/ai/webmcp) âńn̂ót̂át̂íôńŝ t́ô t́ĥé f̂ór̂ḿŝ ĺîśt̂éd̂ b́êĺôẃ. T̂h́îś ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ íd̂én̂t́îf́ŷ án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́êśê f́ôŕm̂ś m̂ór̂é r̂él̂íâb́l̂ý."
1354
1360
  },
1355
1361
  "core/audits/webmcp-form-coverage.js | displayValue": {
1356
1362
  "message": "{itemCount, plural,\n =1 {1 f̂ór̂ḿ m̂íŝśîńĝ án̂ńôt́ât́îón̂ś}\n other {# f̂ór̂ḿŝ ḿîśŝín̂ǵ âńn̂ót̂át̂íôńŝ}\n }"
@@ -1374,7 +1380,7 @@
1374
1380
  "message": "T̂óôĺ n̂ám̂é"
1375
1381
  },
1376
1382
  "core/audits/webmcp-registered-tools.js | description": {
1377
- "message": "L̂íŝt́ŝ t́ĥé [Ŵéb̂ḾĈṔ t̂óôĺŝ](http://goo.gle/webmcp-docs) ŕêǵîśt̂ér̂éd̂ át̂ t́ĥé t̂ím̂é ôf́ âńâĺŷśîś."
1383
+ "message": "L̂íŝt́ŝ t́ĥé [Ŵéb̂ḾĈṔ t̂óôĺŝ](https://developer.chrome.com/docs/ai/webmcp) ŕêǵîśt̂ér̂éd̂ át̂ t́ĥé t̂ím̂é ôf́ âńâĺŷśîś."
1378
1384
  },
1379
1385
  "core/audits/webmcp-registered-tools.js | title": {
1380
1386
  "message": "Ŵéb̂ḾĈṔ t̂óôĺŝ ŕêǵîśt̂ér̂éd̂"
@@ -1392,7 +1398,7 @@
1392
1398
  "message": "Îśŝúê"
1393
1399
  },
1394
1400
  "core/audits/webmcp-schema-validity.js | description": {
1395
- "message": "V̂ál̂íd̂ [Ẃêb́M̂ĆP̂ śĉh́êḿâś](http://goo.gle/webmcp-docs) âŕê ŕêq́ûír̂éd̂ f́ôŕ ÂÍ âǵêńt̂ś t̂ó ûńd̂ér̂śt̂án̂d́ âńd̂ ín̂t́êŕâćt̂ ẃît́ĥ t́ôól̂ś ĉór̂ŕêćt̂ĺŷ. Ṕl̂éâśê f́îx́ âńŷ ér̂ŕôŕŝ ór̂ ẃâŕn̂ín̂ǵŝ ŕêṕôŕt̂éd̂ b́ŷ t́ĥé b̂ŕôẃŝér̂."
1401
+ "message": "V̂ál̂íd̂ [Ẃêb́M̂ĆP̂ śĉh́êḿâś](https://developer.chrome.com/docs/ai/webmcp) âŕê ŕêq́ûír̂éd̂ f́ôŕ ÂÍ âǵêńt̂ś t̂ó ûńd̂ér̂śt̂án̂d́ âńd̂ ín̂t́êŕâćt̂ ẃît́ĥ t́ôól̂ś ĉór̂ŕêćt̂ĺŷ. Ṕl̂éâśê f́îx́ âńŷ ér̂ŕôŕŝ ór̂ ẃâŕn̂ín̂ǵŝ ŕêṕôŕt̂éd̂ b́ŷ t́ĥé b̂ŕôẃŝér̂."
1396
1402
  },
1397
1403
  "core/audits/webmcp-schema-validity.js | failureTitle": {
1398
1404
  "message": "Ŵéb̂ḾĈṔ ŝćĥém̂áŝ ár̂é îńv̂ál̂íd̂"
@@ -35,7 +35,7 @@
35
35
  ReportGenerator: () => ReportGenerator
36
36
  });
37
37
 
38
- // replace-modules:/Users/cjamcl/src/lighthouse/report/generator/flow-report-assets.js
38
+ // replace-modules:/usr/local/google/home/lusazhan/Git/lighthouse/report/generator/flow-report-assets.js
39
39
  var flowReportAssets = {};
40
40
 
41
41
  // report/generator/report-assets.js
@@ -9,5 +9,24 @@ import { CdpFrame } from './package/lib/puppeteer/cdp/Frame.js';
9
9
  import { CdpElementHandle } from './package/lib/puppeteer/cdp/ElementHandle.js';
10
10
  import { CdpPage } from './package/lib/puppeteer/cdp/Page.js';
11
11
  import { CdpTarget } from './package/lib/puppeteer/cdp/Target.js';
12
+ import { CDPSession, CDPSessionEvent } from './package/lib/puppeteer/api/CDPSession.js';
13
+ import type { Handler } from './package/lib/puppeteer/common/EventEmitter.js';
14
+
15
+ type CDPSessionEventSessionAttached = typeof CDPSessionEvent.SessionAttached;
16
+ type CDPSessionEventSessionDetached = typeof CDPSessionEvent.SessionDetached;
17
+
18
+ export {
19
+ CdpBrowser as Browser,
20
+ CdpTarget as Target,
21
+ Connection,
22
+ ConnectionTransport,
23
+ CdpElementHandle as ElementHandle,
24
+ CdpFrame as Frame,
25
+ CdpPage as Page,
26
+ CDPSession,
27
+ CDPSessionEvent,
28
+ type Handler,
29
+ type CDPSessionEventSessionAttached,
30
+ type CDPSessionEventSessionDetached,
31
+ };
12
32
 
13
- export { CdpBrowser as Browser, CdpTarget as Target, Connection, ConnectionTransport, CdpElementHandle as ElementHandle, CdpFrame as Frame, CdpPage as Page };
@@ -3,7 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/enforce-custom-element-definitions-location */
5
5
 
6
- import * as TextUtils from '../../../models/text_utils/text_utils.js';
6
+ import * as TextUtils from '../../../core/text_utils/text_utils.js';
7
7
 
8
8
  import {HighlightManager} from './HighlightManager.js';
9
9
  import {type HighlightChange, highlightRangesWithStyleClass, revertDomChanges} from './MarkupHighlight.js';
@@ -25,6 +25,9 @@ export class HighlightElement extends HTMLElement {
25
25
  break;
26
26
  case 'current-range':
27
27
  this.#currentRange = parseRanges(newValue)[0];
28
+ if (this.#currentRange && oldValue !== newValue) {
29
+ queueMicrotask(() => this.scrollIntoView({block: 'nearest'}));
30
+ }
28
31
  break;
29
32
  case 'type':
30
33
  this.#type = newValue || 'css';
@@ -2,7 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- import type * as TextUtils from '../../../models/text_utils/text_utils.js';
5
+ import type * as TextUtils from '../../../core/text_utils/text_utils.js';
6
6
 
7
7
  export class RangeWalker {
8
8
  #offset = 0;
@@ -2,7 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- import * as TextUtils from '../../../models/text_utils/text_utils.js';
5
+ import * as TextUtils from '../../../core/text_utils/text_utils.js';
6
6
 
7
7
  export const highlightedSearchResultClassName = 'highlighted-search-result';
8
8
  export const highlightedCurrentSearchResultClassName = 'current-search-result';
@@ -130,6 +130,22 @@ declare global {
130
130
  'devtools-markdown-view': MarkdownView;
131
131
  }
132
132
  }
133
+ const BLOCK_TOKEN_TYPES = new Set<Marked.Marked.Token['type']>([
134
+ 'list',
135
+ 'code',
136
+ 'table',
137
+ 'heading',
138
+ 'paragraph',
139
+ 'blockquote',
140
+ ]);
141
+
142
+ /**
143
+ * Identifies block-level tokens (such as nested lists, headings, or tables)
144
+ * that should be rendered outside of the inline typing animation spans.
145
+ */
146
+ function isBlockToken(token: Marked.Marked.Token): boolean {
147
+ return BLOCK_TOKEN_TYPES.has(token.type);
148
+ }
133
149
 
134
150
  /**
135
151
  * Default renderer is used for the IssuesPanel and allows only well-known images and links to be embedded.
@@ -231,8 +247,36 @@ export class MarkdownLitRenderer {
231
247
  return html`<ul class=${this.customClassMapForToken('list')}>${token.items.map(token => {
232
248
  return this.renderToken(token);
233
249
  })}</ul>`;
234
- case 'list_item':
235
- return html`<li class=${this.customClassMapForToken('list_item')}>${this.renderChildTokens(token)}</li>`;
250
+ case 'list_item': {
251
+ // Group consecutive inline tokens into a `.markdown-list-item-content` span
252
+ // so that the typing animation (requiring `overflow: hidden`) applies to the text
253
+ // instead of the parent `<li>` element. This keeps the list marker (bullet point)
254
+ // visible immediately. Block-level children (like nested lists) are kept outside
255
+ // of this span to prevent nesting layout issues.
256
+ const childTokens = (token as Marked.Marked.Tokens.ListItem).tokens || [];
257
+ const renderedParts: Lit.TemplateResult[] = [];
258
+ let currentInline: Marked.Marked.Token[] = [];
259
+
260
+ const flushInline = (): void => {
261
+ if (currentInline.length > 0) {
262
+ renderedParts.push(
263
+ html`<span class="markdown-list-item-content">${currentInline.map(t => this.renderToken(t))}</span>`);
264
+ currentInline = [];
265
+ }
266
+ };
267
+
268
+ for (const child of childTokens) {
269
+ if (isBlockToken(child)) {
270
+ flushInline();
271
+ renderedParts.push(html`${this.renderToken(child)}`);
272
+ } else {
273
+ currentInline.push(child);
274
+ }
275
+ }
276
+ flushInline();
277
+
278
+ return html`<li class=${this.customClassMapForToken('list_item')}>${renderedParts}</li>`;
279
+ }
236
280
  case 'text':
237
281
  return this.renderText(token);
238
282
  case 'codespan':
@@ -72,6 +72,29 @@ devtools-code-block.animating {
72
72
  list-style-type: disc;
73
73
  }
74
74
 
75
+ .message li.animating {
76
+ /*
77
+ * The JS animation controller applies the `pending` and `animating` classes to the <li>.
78
+ * We need `pending` (which is `display: none`) on the <li> to hide the bullet point
79
+ * before it starts animating.
80
+ *
81
+ * Once animating, we must override the default `.animating` styles on the <li> itself
82
+ * to prevent the bullet point from being clipped by `overflow: hidden`.
83
+ * Instead, we apply the typing animation to the inner `.markdown-list-item-content` span.
84
+ */
85
+ overflow: visible;
86
+ white-space: normal;
87
+ animation: none;
88
+ }
89
+
90
+ .message li.animating > .markdown-list-item-content {
91
+ display: inline-block;
92
+ vertical-align: top;
93
+ overflow: hidden;
94
+ white-space: nowrap;
95
+ animation: typing 0.4s steps(40, end);
96
+ }
97
+
75
98
  .message code {
76
99
  color: var(--sys-color-on-surface);
77
100
  font-family: var(--monospace-font-family);
@@ -6,7 +6,7 @@
6
6
  import * as Common from '../../../core/common/common.js';
7
7
  import type * as Host from '../../../core/host/host.js';
8
8
  import * as i18n from '../../../core/i18n/i18n.js';
9
- import * as TextUtils from '../../../models/text_utils/text_utils.js';
9
+ import * as TextUtils from '../../../core/text_utils/text_utils.js';
10
10
  import * as CM from '../../../third_party/codemirror.next/codemirror.next.js';
11
11
  import {Icon} from '../../kit/kit.js';
12
12
  import * as UI from '../../legacy/legacy.js';
@@ -74,9 +74,15 @@ export class ItemContextMenuEvent<TreeNodeDataType> extends Event {
74
74
  };
75
75
 
76
76
  constructor(node: TreeNode<TreeNodeDataType>, originalEvent: MouseEvent) {
77
- super(ItemContextMenuEvent.eventName, {bubbles: true, composed: true});
77
+ super(ItemContextMenuEvent.eventName, {bubbles: true, composed: true, cancelable: true});
78
78
  this.data = {node, originalEvent};
79
79
  }
80
+
81
+ createContextMenu(): UI.ContextMenu.ContextMenu {
82
+ this.preventDefault();
83
+ this.stopPropagation();
84
+ return new UI.ContextMenu.ContextMenu(this.data.originalEvent);
85
+ }
80
86
  }
81
87
 
82
88
  export class ItemMouseOutEvent<TreeNodeDataType> extends Event {
@@ -19,7 +19,7 @@ const UIStrings = {
19
19
  /**
20
20
  * @description Text on a button to close the infobar and never show the infobar in the future
21
21
  */
22
- dontShowAgain: 'Don\'t show again',
22
+ dontShowAgain: 'Dont show again',
23
23
  /**
24
24
  * @description Text to close something
25
25
  */
@@ -81,7 +81,7 @@ const UIStrings = {
81
81
  * is configured with a different locale than Chrome. This option means DevTools will
82
82
  * always try and display the DevTools UI in the same language as Chrome.
83
83
  */
84
- setToBrowserLanguage: 'Always match Chrome\'s language',
84
+ setToBrowserLanguage: 'Always match Chromes language',
85
85
  /**
86
86
  * @description An option the user can select when DevTools notices that DevTools
87
87
  * is configured with a different locale than Chrome. This option means DevTools UI
@@ -365,12 +365,17 @@ export class InspectorView extends VBox implements ViewLocationResolver {
365
365
 
366
366
  #observedResize(): void {
367
367
  const rect = this.element.getBoundingClientRect();
368
- this.element.style.setProperty('--devtools-window-left', `${rect.left}px`);
369
- this.element.style.setProperty('--devtools-window-right', `${window.innerWidth - rect.right}px`);
370
- this.element.style.setProperty('--devtools-window-width', `${rect.width}px`);
371
- this.element.style.setProperty('--devtools-window-top', `${rect.top}px`);
372
- this.element.style.setProperty('--devtools-window-bottom', `${window.innerHeight - rect.bottom}px`);
373
- this.element.style.setProperty('--devtools-window-height', `${rect.height}px`);
368
+ // Set custom properties on the root element so top-layer elements
369
+ // (such as native popovers inside Shadow DOM) can inherit them.
370
+ // Top-layer popovers inside Shadow DOM roots inherit CSS custom properties
371
+ // from documentElement rather than local parent elements or shadow hosts.
372
+ const root = this.element.ownerDocument.documentElement;
373
+ root.style.setProperty('--devtools-window-left', `${rect.left}px`);
374
+ root.style.setProperty('--devtools-window-right', `${window.innerWidth - rect.right}px`);
375
+ root.style.setProperty('--devtools-window-width', `${rect.width}px`);
376
+ root.style.setProperty('--devtools-window-top', `${rect.top}px`);
377
+ root.style.setProperty('--devtools-window-bottom', `${window.innerHeight - rect.bottom}px`);
378
+ root.style.setProperty('--devtools-window-height', `${rect.height}px`);
374
379
  }
375
380
 
376
381
  override wasShown(): void {
@@ -6,8 +6,8 @@
6
6
 
7
7
  import * as i18n from '../../core/i18n/i18n.js';
8
8
  import * as Platform from '../../core/platform/platform.js';
9
+ import type * as TextUtils from '../../core/text_utils/text_utils.js';
9
10
  import * as Geometry from '../../models/geometry/geometry.js';
10
- import type * as TextUtils from '../../models/text_utils/text_utils.js';
11
11
  import * as VisualLogging from '../visual_logging/visual_logging.js';
12
12
 
13
13
  import * as ARIAUtils from './ARIAUtils.js';
@@ -34,7 +34,7 @@
34
34
 
35
35
  import * as Common from '../../core/common/common.js';
36
36
  import * as Platform from '../../core/platform/platform.js';
37
- import * as TextUtils from '../../models/text_utils/text_utils.js';
37
+ import * as TextUtils from '../../core/text_utils/text_utils.js';
38
38
  import * as VisualLogging from '../visual_logging/visual_logging.js';
39
39
 
40
40
  import * as ARIAUtils from './ARIAUtils.js';
@@ -11,7 +11,7 @@ import * as Root from '../../core/root/root.js';
11
11
  import * as Buttons from '../../ui/components/buttons/buttons.js';
12
12
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
13
13
  import {createIcon} from '../kit/kit.js';
14
- import type {TemplateResult} from '../lit/lit.js';
14
+ import {nothing, render, type TemplateResult} from '../lit/lit.js';
15
15
 
16
16
  import {type Action, Events as ActionEvents} from './ActionRegistration.js';
17
17
  import {ActionRegistry} from './ActionRegistry.js';
@@ -412,10 +412,13 @@ export class Toolbar extends HTMLElement {
412
412
  const widget = Widget.get(item.element);
413
413
  if (widget) {
414
414
  widget.detach();
415
+ } else {
416
+ item.element.remove();
415
417
  }
416
418
  }
417
419
  this.items = [];
418
- this.removeChildren();
420
+ // eslint-disable-next-line @devtools/no-lit-render-outside-of-view
421
+ render(nothing, this);
419
422
  }
420
423
 
421
424
  hideSeparatorDupes(): void {
@@ -37,7 +37,7 @@
37
37
  import * as Common from '../../core/common/common.js';
38
38
  import * as Platform from '../../core/platform/platform.js';
39
39
  import * as SDK from '../../core/sdk/sdk.js';
40
- import type * as TextUtils from '../../models/text_utils/text_utils.js';
40
+ import type * as TextUtils from '../../core/text_utils/text_utils.js';
41
41
  import type * as Buttons from '../components/buttons/buttons.js';
42
42
  import * as Highlighting from '../components/highlighting/highlighting.js';
43
43
  import type {Icon} from '../kit/kit.js';
@@ -1427,8 +1427,8 @@ function hasBooleanAttribute(element: Element, name: string): boolean {
1427
1427
  return element.hasAttribute(name) && element.getAttribute(name) !== 'false';
1428
1428
  }
1429
1429
 
1430
- interface TreeNode<NodeT> {
1431
- children(): NodeT[];
1430
+ export interface TreeNode<NodeT> {
1431
+ treeNodeChildren(): Iterable<NodeT>;
1432
1432
  }
1433
1433
 
1434
1434
  export interface TreeSearchResult<NodeT> {
@@ -1438,17 +1438,23 @@ export interface TreeSearchResult<NodeT> {
1438
1438
  }
1439
1439
 
1440
1440
  export class TreeSearch < NodeT extends TreeNode<NodeT>,
1441
- SearchResultT extends TreeSearchResult<NodeT >= TreeSearchResult<NodeT>> {
1441
+ SearchResultT extends TreeSearchResult<NodeT >= TreeSearchResult<NodeT>> extends
1442
+ Common.ObjectWrapper.ObjectWrapper<TreeSearch.EventTypes> {
1442
1443
  #matches: SearchResultT[] = [];
1443
1444
  #currentMatchIndex = 0;
1444
1445
  #nodeMatchMap: WeakMap<NodeT, SearchResultT[]>|undefined;
1445
1446
 
1446
- reset(): void {
1447
+ #reset(): void {
1447
1448
  this.#matches = [];
1448
1449
  this.#nodeMatchMap = undefined;
1449
1450
  this.#currentMatchIndex = 0;
1450
1451
  }
1451
1452
 
1453
+ reset(): void {
1454
+ this.#reset();
1455
+ this.dispatchEventToListeners(TreeSearch.Events.SEARCH_CHANGED);
1456
+ }
1457
+
1452
1458
  currentMatch(): SearchResultT|undefined {
1453
1459
  return this.#matches.at(this.#currentMatchIndex);
1454
1460
  }
@@ -1497,11 +1503,13 @@ export class TreeSearch < NodeT extends TreeNode<NodeT>,
1497
1503
 
1498
1504
  next(): SearchResultT|undefined {
1499
1505
  this.#currentMatchIndex = Platform.NumberUtilities.mod(this.#currentMatchIndex + 1, this.#matches.length);
1506
+ this.dispatchEventToListeners(TreeSearch.Events.SEARCH_CHANGED);
1500
1507
  return this.currentMatch();
1501
1508
  }
1502
1509
 
1503
1510
  prev(): SearchResultT|undefined {
1504
1511
  this.#currentMatchIndex = Platform.NumberUtilities.mod(this.#currentMatchIndex - 1, this.#matches.length);
1512
+ this.dispatchEventToListeners(TreeSearch.Events.SEARCH_CHANGED);
1505
1513
  return this.currentMatch();
1506
1514
  }
1507
1515
 
@@ -1529,7 +1537,7 @@ export class TreeSearch < NodeT extends TreeNode<NodeT>,
1529
1537
  this.#matches.push(...preOrderMatches);
1530
1538
  updateCurrentMatchIndex(/* isPostOrder=*/ false);
1531
1539
  yield* preOrderMatches.values();
1532
- for (const child of node.children()) {
1540
+ for (const child of node.treeNodeChildren()) {
1533
1541
  yield* this.#innerSearch(child, currentMatch, jumpBackwards, match);
1534
1542
  }
1535
1543
  const postOrderMatches = match(node, /* isPostOrder=*/ true);
@@ -1540,16 +1548,27 @@ export class TreeSearch < NodeT extends TreeNode<NodeT>,
1540
1548
 
1541
1549
  search(node: NodeT, jumpBackwards: boolean, match: (node: NodeT, isPostOrder: boolean) => SearchResultT[]): number {
1542
1550
  const currentMatch = this.currentMatch();
1543
- this.reset();
1551
+ this.#reset();
1544
1552
  // eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-unused-vars
1545
1553
  for (const _ of this.#innerSearch(node, currentMatch, jumpBackwards, match)) {
1546
1554
  // run the generator
1547
1555
  }
1548
1556
  this.#currentMatchIndex = Platform.NumberUtilities.mod(this.#currentMatchIndex, this.#matches.length);
1557
+ this.dispatchEventToListeners(TreeSearch.Events.SEARCH_CHANGED);
1549
1558
  return this.#matches.length;
1550
1559
  }
1551
1560
  }
1552
1561
 
1562
+ export namespace TreeSearch {
1563
+ export const enum Events {
1564
+ SEARCH_CHANGED = 'SearchChanged',
1565
+ }
1566
+
1567
+ export interface EventTypes {
1568
+ [Events.SEARCH_CHANGED]: void;
1569
+ }
1570
+ }
1571
+
1553
1572
  class TreeViewTreeElement extends TreeElement {
1554
1573
  static readonly CLONED_ATTRIBUTES = SDK.DOMModel.ARIA_ATTRIBUTES.union(new Set(['jslog']));
1555
1574
  #clonedAttributes = new Set<string>();
@@ -38,7 +38,7 @@ import * as Host from '../../../../core/host/host.js';
38
38
  import * as i18n from '../../../../core/i18n/i18n.js';
39
39
  import * as Platform from '../../../../core/platform/platform.js';
40
40
  import * as SDK from '../../../../core/sdk/sdk.js';
41
- import * as TextUtils from '../../../../models/text_utils/text_utils.js';
41
+ import * as TextUtils from '../../../../core/text_utils/text_utils.js';
42
42
  import * as SrgbOverlay from '../../../components/srgb_overlay/srgb_overlay.js';
43
43
  import {createIcon, Icon} from '../../../kit/kit.js';
44
44
  import * as VisualLogging from '../../../visual_logging/visual_logging.js';
@@ -4,7 +4,7 @@
4
4
  /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import type * as Platform from '../../../../core/platform/platform.js';
7
- import type * as TextUtils from '../../../../models/text_utils/text_utils.js';
7
+ import type * as TextUtils from '../../../../core/text_utils/text_utils.js';
8
8
  import * as Lit from '../../../lit/lit.js';
9
9
  import * as UI from '../../legacy.js';
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as Common from '../../../../core/common/common.js';
6
6
  import * as Platform from '../../../../core/platform/platform.js';
7
- import type * as TextUtils from '../../../../models/text_utils/text_utils.js';
7
+ import type * as TextUtils from '../../../../core/text_utils/text_utils.js';
8
8
  import * as RenderCoordinator from '../../../components/render_coordinator/render_coordinator.js';
9
9
 
10
10
  import {type DataGridData, DataGridImpl, DataGridNode, Events as DataGridEvents, type Parameters} from './DataGrid.js';
@@ -36,7 +36,7 @@
36
36
  position: sticky;
37
37
  top: 0;
38
38
  height: 21px;
39
- z-index: 1;
39
+ z-index: 2;
40
40
  }
41
41
 
42
42
  .data-grid .aria-live-label {