chrome-devtools-frontend 1.0.1664496 → 1.0.1665921

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 (407) hide show
  1. package/.agents/skills/devtools-testing-guidance/SKILL.md +48 -0
  2. package/.agents/skills/devtools-ux-writing-refactor/SKILL.md +3 -3
  3. package/.agents/skills/repro-flaky-tests/SKILL.md +2 -2
  4. package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +7 -1
  5. package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +2 -0
  6. package/.agents/skills/version-control/SKILL.md +4 -3
  7. package/docs/ui_engineering.md +89 -0
  8. package/eslint.config.mjs +9 -2
  9. package/front_end/Images/rollup.config.mjs +1 -1
  10. package/front_end/Tests.js +15 -16
  11. package/front_end/core/common/Gzip.ts +2 -2
  12. package/front_end/core/common/Settings.ts +4 -20
  13. package/front_end/core/common/Srcset.ts +1 -1
  14. package/front_end/core/common/VersionController.ts +1 -1
  15. package/front_end/core/host/AidaClient.ts +19 -4
  16. package/front_end/core/host/AidaGcaTranslation.ts +2 -2
  17. package/front_end/core/host/GcaClient.ts +2 -2
  18. package/front_end/core/host/GdpClient.ts +3 -3
  19. package/front_end/core/host/InspectorFrontendHostStub.ts +1 -1
  20. package/front_end/core/host/ResourceLoader.ts +15 -15
  21. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -2
  22. package/front_end/core/protocol_client/InspectorBackend.ts +1 -1
  23. package/front_end/core/root/Runtime.ts +0 -1
  24. package/front_end/core/sdk/CSSMatchedStyles.ts +78 -3
  25. package/front_end/core/sdk/CSSMetadata.ts +17 -12
  26. package/front_end/core/sdk/CSSProperty.ts +1 -1
  27. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +2 -2
  28. package/front_end/core/sdk/CSSRule.ts +3 -3
  29. package/front_end/core/sdk/CSSStyleSheetHeader.ts +3 -3
  30. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
  31. package/front_end/core/sdk/Connections.ts +1 -1
  32. package/front_end/core/sdk/DebuggerModel.ts +13 -13
  33. package/front_end/core/sdk/NetworkManager.ts +19 -19
  34. package/front_end/core/sdk/NetworkRequest.ts +57 -57
  35. package/front_end/core/sdk/OverlayModel.ts +1 -1
  36. package/front_end/core/sdk/PageResourceLoader.ts +2 -2
  37. package/front_end/core/sdk/RehydratingConnection.ts +5 -5
  38. package/front_end/core/sdk/ScreenCaptureModel.ts +1 -1
  39. package/front_end/core/sdk/Script.ts +2 -2
  40. package/front_end/core/sdk/ServerTiming.ts +7 -7
  41. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +1 -1
  42. package/front_end/core/sdk/ServiceWorkerManager.ts +11 -11
  43. package/front_end/core/sdk/SourceMapScopeChainEntry.ts +2 -2
  44. package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
  45. package/front_end/core/sdk/StorageKeyManager.ts +1 -1
  46. package/front_end/core/sdk/sdk-meta.ts +98 -98
  47. package/front_end/devtools_compatibility.js +15 -13
  48. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +4 -8
  49. package/front_end/entrypoints/main/MainImpl.ts +2 -3
  50. package/front_end/entrypoints/main/main-meta.ts +1 -16
  51. package/front_end/entrypoints/shell/shell.ts +1 -0
  52. package/front_end/entrypoints/trace_app/trace_app.ts +1 -0
  53. package/front_end/foundation/README.md +1 -1
  54. package/front_end/foundation/Universe.test.api.ts +73 -0
  55. package/front_end/foundation/Universe.ts +22 -0
  56. package/front_end/generated/InspectorBackendCommands.ts +2 -2
  57. package/front_end/generated/SupportedCSSProperties.js +1 -1
  58. package/front_end/generated/protocol.ts +19 -0
  59. package/front_end/models/ai_assistance/AiAgent2.ts +1 -1
  60. package/front_end/models/ai_assistance/AiConversation.ts +1 -1
  61. package/front_end/models/ai_assistance/BuiltInAi.ts +1 -1
  62. package/front_end/models/ai_assistance/ChangeManager.ts +0 -70
  63. package/front_end/models/ai_assistance/ExtensionScope.ts +2 -36
  64. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +9 -9
  65. package/front_end/models/ai_assistance/agents/AiAgent.ts +10 -2
  66. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -4
  67. package/front_end/models/ai_assistance/agents/ExecuteJavascript.ts +1 -1
  68. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +21 -21
  69. package/front_end/models/ai_assistance/agents/StorageAgent.ts +4 -4
  70. package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
  71. package/front_end/models/ai_assistance/ai_assistance.ts +0 -5
  72. package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +11 -4
  73. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +8 -2
  74. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +14 -11
  75. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +2 -2
  76. package/front_end/models/ai_assistance/performance/AICallTree.ts +2 -2
  77. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +1 -1
  78. package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +9 -2
  79. package/front_end/models/ai_assistance/tools/GetStyles.ts +4 -4
  80. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +2 -5
  81. package/front_end/models/ai_code_completion/AiCodeCompletion.ts +2 -2
  82. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +2 -2
  83. package/front_end/models/badges/badges-meta.ts +27 -0
  84. package/front_end/models/bindings/CSSWorkspaceBinding.ts +4 -3
  85. package/front_end/models/bindings/ContentProviderBasedProject.ts +1 -1
  86. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +6 -7
  87. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +5 -4
  88. package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +72 -29
  89. package/front_end/models/bindings/ResourceMapping.ts +38 -32
  90. package/front_end/models/bindings/ResourceScriptMapping.ts +5 -7
  91. package/front_end/models/breakpoints/BreakpointManager.ts +2 -1
  92. package/front_end/models/har/Writer.ts +2 -2
  93. package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +1 -1
  94. package/front_end/models/issues_manager/GenericIssue.ts +1 -1
  95. package/front_end/models/issues_manager/IssuesManager.ts +14 -5
  96. package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +1 -1
  97. package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +2 -2
  98. package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +13 -2
  99. package/front_end/models/issues_manager/issues_manager.ts +0 -2
  100. package/front_end/models/live-metrics/LiveMetrics.ts +22 -5
  101. package/front_end/models/live-metrics/web-vitals-injected/rollup.config.mjs +1 -1
  102. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +10 -4
  103. package/front_end/models/logs/logs-meta.ts +23 -16
  104. package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +2 -2
  105. package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
  106. package/front_end/models/persistence/IsolatedFileSystemManager.ts +1 -1
  107. package/front_end/models/source_map_scopes/NamesResolver.ts +104 -86
  108. package/front_end/models/source_map_scopes/ScopeChainModel.ts +6 -2
  109. package/front_end/models/stack_trace/StackTraceModel.ts +1 -1
  110. package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -1
  111. package/front_end/models/trace/handlers/UserTimingsHandler.ts +17 -6
  112. package/front_end/models/trace/helpers/SamplesIntegrator.ts +1 -1
  113. package/front_end/models/trace/helpers/Timing.ts +1 -1
  114. package/front_end/models/trace/insights/Common.ts +1 -1
  115. package/front_end/models/trace/insights/DocumentLatency.ts +3 -3
  116. package/front_end/models/trace/insights/LCPDiscovery.ts +1 -1
  117. package/front_end/models/trace/insights/ModernHTTP.ts +1 -1
  118. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +2 -2
  119. package/front_end/models/workspace_diff/WorkspaceDiff.ts +14 -9
  120. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +2 -15
  121. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -2
  122. package/front_end/panels/ai_assistance/components/ChatInput.ts +23 -19
  123. package/front_end/panels/ai_assistance/components/ChatMessage.ts +9 -18
  124. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -35
  125. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
  126. package/front_end/panels/ai_assistance/components/ExploreWidget.ts +4 -4
  127. package/front_end/panels/ai_assistance/components/ImageResize.ts +74 -0
  128. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +2 -2
  129. package/front_end/panels/animation/AnimationGroupPreviewUI.ts +28 -29
  130. package/front_end/panels/animation/AnimationTimeline.ts +3 -3
  131. package/front_end/panels/animation/animationTimeline.css +0 -2
  132. package/front_end/panels/application/AppManifestView.ts +1 -1
  133. package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -1
  134. package/front_end/panels/application/CookieItemsView.ts +1 -1
  135. package/front_end/panels/application/CrashReportContextView.ts +3 -3
  136. package/front_end/panels/application/DeviceBoundSessionsModel.ts +1 -1
  137. package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +1 -1
  138. package/front_end/panels/application/DeviceBoundSessionsView.ts +1 -1
  139. package/front_end/panels/application/IndexedDBViews.ts +1 -1
  140. package/front_end/panels/application/KeyValueStorageItemsView.ts +1 -1
  141. package/front_end/panels/application/OriginTrialTreeView.ts +1 -1
  142. package/front_end/panels/application/ServiceWorkersView.ts +6 -6
  143. package/front_end/panels/application/StorageBucketsTreeElement.ts +1 -1
  144. package/front_end/panels/application/StorageItemsToolbar.ts +3 -3
  145. package/front_end/panels/application/WebMCPView.ts +7 -5
  146. package/front_end/panels/application/components/AdsView.ts +21 -6
  147. package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
  148. package/front_end/panels/application/components/ProtocolHandlersView.ts +1 -1
  149. package/front_end/panels/application/components/StorageMetadataView.ts +1 -1
  150. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +2 -2
  151. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +2 -1
  152. package/front_end/panels/application/preloading/components/PreloadingString.ts +3 -3
  153. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -1
  154. package/front_end/panels/autofill/AutofillView.ts +1 -1
  155. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
  156. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +2 -2
  157. package/front_end/panels/changes/ChangesSidebar.ts +2 -2
  158. package/front_end/panels/changes/ChangesView.ts +4 -5
  159. package/front_end/panels/changes/CombinedDiffView.ts +3 -3
  160. package/front_end/panels/changes/changes-meta.ts +2 -2
  161. package/front_end/panels/common/AiCodeCompletionTeaser.ts +1 -1
  162. package/front_end/panels/common/AiCodeGenerationTeaser.ts +3 -3
  163. package/front_end/panels/common/BadgeNotification.ts +8 -8
  164. package/front_end/panels/common/DOMLinkifier.ts +1 -1
  165. package/front_end/panels/common/GdpSignUpDialog.ts +2 -2
  166. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
  167. package/front_end/panels/common/aiCodeCompletionDisclaimer.css +0 -1
  168. package/front_end/panels/console/ConsoleInsightTeaser.ts +1 -1
  169. package/front_end/panels/console/ConsolePinPane.ts +3 -3
  170. package/front_end/panels/console/ConsolePrompt.ts +6 -4
  171. package/front_end/panels/console/ConsoleSidebar.ts +8 -10
  172. package/front_end/panels/console_counters/WarningErrorCounter.ts +10 -11
  173. package/front_end/panels/coverage/CoverageView.ts +2 -2
  174. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -3
  175. package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +1 -1
  176. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +1 -1
  177. package/front_end/panels/elements/CSSRuleValidator.ts +1 -1
  178. package/front_end/panels/elements/ComputedStyleWidget.ts +3 -2
  179. package/front_end/panels/elements/ElementsTreeElement.ts +3 -3
  180. package/front_end/panels/elements/EventListenersWidget.ts +1 -3
  181. package/front_end/panels/elements/LayoutPane.ts +23 -13
  182. package/front_end/panels/elements/StandaloneStylesContainer.ts +7 -7
  183. package/front_end/panels/elements/StylePropertiesSection.ts +33 -5
  184. package/front_end/panels/elements/StylePropertyTreeElement.ts +5 -5
  185. package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +6 -6
  186. package/front_end/panels/elements/StylesSidebarPane.ts +4 -3
  187. package/front_end/panels/elements/elements-meta.ts +18 -2
  188. package/front_end/panels/emulation/DeviceModeToolbar.ts +100 -40
  189. package/front_end/panels/emulation/DeviceModeView.ts +5 -4
  190. package/front_end/panels/emulation/MediaQueryInspector.ts +35 -19
  191. package/front_end/panels/event_listeners/EventListenersView.ts +4 -4
  192. package/front_end/panels/explain/components/ConsoleInsight.ts +8 -9
  193. package/front_end/panels/explain/explain-meta.ts +3 -3
  194. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +135 -167
  195. package/front_end/panels/layer_viewer/Layers3DView.ts +10 -23
  196. package/front_end/panels/layer_viewer/layer_viewer-meta.ts +27 -0
  197. package/front_end/panels/lighthouse/LighthouseController.ts +44 -55
  198. package/front_end/panels/lighthouse/LighthousePanel.ts +9 -9
  199. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
  200. package/front_end/panels/lighthouse/LighthouseStartView.ts +9 -12
  201. package/front_end/panels/lighthouse/LighthouseStatusView.ts +33 -33
  202. package/front_end/panels/lighthouse/RadioSetting.ts +1 -1
  203. package/front_end/panels/lighthouse/lighthouse-meta.ts +131 -1
  204. package/front_end/panels/media/EventDisplayTable.ts +67 -94
  205. package/front_end/panels/media/PlayerListView.ts +1 -1
  206. package/front_end/panels/media/eventDisplayTable.css +9 -4
  207. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +5 -5
  208. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +1 -1
  209. package/front_end/panels/network/EventSourceMessagesView.ts +98 -107
  210. package/front_end/panels/network/NetworkLogViewColumns.ts +1 -1
  211. package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -1
  212. package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
  213. package/front_end/panels/network/RequestCookiesView.ts +2 -2
  214. package/front_end/panels/network/RequestHeadersView.ts +5 -5
  215. package/front_end/panels/network/RequestPayloadView.ts +4 -4
  216. package/front_end/panels/network/RequestTimingView.ts +2 -2
  217. package/front_end/panels/network/components/DirectSocketConnectionView.ts +1 -1
  218. package/front_end/panels/network/eventSourceMessagesView.css +12 -3
  219. package/front_end/panels/network/networkTimingTable.css +2 -2
  220. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
  221. package/front_end/panels/profiler/BottomUpProfileDataGrid.ts +25 -29
  222. package/front_end/panels/profiler/HeapProfileView.ts +308 -247
  223. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +13 -3
  224. package/front_end/panels/profiler/HeapSnapshotView.ts +30 -10
  225. package/front_end/panels/profiler/HeapTimelineOverview.ts +5 -2
  226. package/front_end/panels/profiler/ProfileDataGrid.ts +128 -157
  227. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +17 -5
  228. package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
  229. package/front_end/panels/profiler/TopDownProfileDataGrid.ts +17 -21
  230. package/front_end/panels/profiler/profilesPanel.css +9 -13
  231. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +2 -2
  232. package/front_end/panels/recorder/CreateRecordingView.ts +4 -4
  233. package/front_end/panels/recorder/RecorderPanel.ts +6 -6
  234. package/front_end/panels/recorder/RecordingView.ts +1 -1
  235. package/front_end/panels/recorder/ReplaySection.ts +1 -1
  236. package/front_end/panels/recorder/StepView.ts +1 -1
  237. package/front_end/panels/recorder/injected/rollup.config.mjs +1 -1
  238. package/front_end/panels/search/SearchView.ts +1 -1
  239. package/front_end/panels/security/SecurityPanel.ts +54 -41
  240. package/front_end/panels/sensors/LocationsSettingsTab.ts +246 -233
  241. package/front_end/panels/sensors/SensorsView.ts +1 -1
  242. package/front_end/panels/settings/AISettingsTab.ts +11 -10
  243. package/front_end/panels/settings/SettingsScreen.ts +29 -24
  244. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +2 -2
  245. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +5 -5
  246. package/front_end/panels/sources/BreakpointEditDialog.ts +2 -2
  247. package/front_end/panels/sources/BreakpointsView.ts +1 -1
  248. package/front_end/panels/sources/CallStackSidebarPane.ts +2 -2
  249. package/front_end/panels/sources/DebuggerPausedMessage.ts +2 -2
  250. package/front_end/panels/sources/DebuggerPlugin.ts +25 -22
  251. package/front_end/panels/sources/ScopeChainSidebarPane.ts +3 -1
  252. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +7 -5
  253. package/front_end/panels/sources/sources-meta.ts +1 -1
  254. package/front_end/panels/timeline/CountersGraph.ts +1 -2
  255. package/front_end/panels/timeline/ExtensionTrackAppender.ts +1 -1
  256. package/front_end/panels/timeline/TimelineDetailsView.ts +2 -2
  257. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +2 -2
  258. package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -4
  259. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
  260. package/front_end/panels/timeline/TimelinePanel.ts +53 -81
  261. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +10 -3
  262. package/front_end/panels/timeline/TimelineUIUtils.ts +18 -4
  263. package/front_end/panels/timeline/TrackConfigBanner.ts +1 -1
  264. package/front_end/panels/timeline/components/ExportTraceOptions.ts +1 -1
  265. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +8 -9
  266. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +1 -1
  267. package/front_end/panels/timeline/components/TimelineRangeSummaryView.ts +1 -1
  268. package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +2 -2
  269. package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +1 -1
  270. package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +1 -1
  271. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +2 -2
  272. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +5 -0
  273. package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +13 -8
  274. package/front_end/panels/timeline/overlays/components/timespanBreakdownOverlay.css +1 -0
  275. package/front_end/panels/timeline/timeline-meta.ts +169 -0
  276. package/front_end/panels/timeline/timelineFlameChartView.css +5 -0
  277. package/front_end/panels/webauthn/WebauthnPane.ts +1 -1
  278. package/front_end/panels/whats_new/ReleaseNoteText.ts +9 -9
  279. package/front_end/panels/whats_new/resources/WNDT.md +7 -8
  280. package/front_end/third_party/chromium/README.chromium +1 -1
  281. package/front_end/third_party/web-vitals/README.chromium +2 -2
  282. package/front_end/third_party/web-vitals/package/README.md +120 -19
  283. package/front_end/third_party/web-vitals/package/attribution.d.ts +16 -0
  284. package/front_end/third_party/web-vitals/package/attribution.js +18 -0
  285. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.d.ts +1 -1
  286. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.d.ts +1 -7
  287. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.js +53 -32
  288. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.d.ts +2 -2
  289. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +43 -12
  290. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +1 -1
  291. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +21 -3
  292. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.d.ts +1 -1
  293. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.js +30 -24
  294. package/front_end/third_party/web-vitals/package/dist/modules/lib/FCPEntryManager.d.ts +3 -0
  295. package/front_end/third_party/web-vitals/package/dist/modules/lib/FCPEntryManager.js +18 -0
  296. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +2 -1
  297. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +18 -2
  298. package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.d.ts +1 -0
  299. package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.js +1 -0
  300. package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
  301. package/front_end/third_party/web-vitals/package/dist/modules/lib/generateUniqueID.js +1 -1
  302. package/front_end/third_party/web-vitals/package/dist/modules/lib/getLoadState.d.ts +1 -1
  303. package/front_end/third_party/web-vitals/package/dist/modules/lib/getLoadState.js +7 -7
  304. package/front_end/third_party/web-vitals/package/dist/modules/lib/getSelector.js +1 -1
  305. package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.d.ts +1 -1
  306. package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.js +4 -1
  307. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +7 -3
  308. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.js +20 -11
  309. package/front_end/third_party/web-vitals/package/dist/modules/lib/initUnique.js +8 -3
  310. package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.d.ts +3 -1
  311. package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.js +19 -4
  312. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/interactionCountPolyfill.js +1 -1
  313. package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.d.ts +3 -0
  314. package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +38 -0
  315. package/front_end/third_party/web-vitals/package/dist/modules/lib/whenIdleOrHidden.js +5 -1
  316. package/front_end/third_party/web-vitals/package/dist/modules/onCLS.d.ts +1 -1
  317. package/front_end/third_party/web-vitals/package/dist/modules/onCLS.js +30 -11
  318. package/front_end/third_party/web-vitals/package/dist/modules/onFCP.d.ts +1 -1
  319. package/front_end/third_party/web-vitals/package/dist/modules/onFCP.js +36 -4
  320. package/front_end/third_party/web-vitals/package/dist/modules/onINP.d.ts +1 -1
  321. package/front_end/third_party/web-vitals/package/dist/modules/onINP.js +42 -22
  322. package/front_end/third_party/web-vitals/package/dist/modules/onLCP.d.ts +1 -1
  323. package/front_end/third_party/web-vitals/package/dist/modules/onLCP.js +109 -30
  324. package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.d.ts +1 -1
  325. package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.js +25 -7
  326. package/front_end/third_party/web-vitals/package/dist/modules/types/base.d.ts +24 -1
  327. package/front_end/third_party/web-vitals/package/dist/modules/types/fcp.d.ts +1 -1
  328. package/front_end/third_party/web-vitals/package/dist/modules/types/inp.d.ts +14 -6
  329. package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +1 -1
  330. package/front_end/third_party/web-vitals/package/dist/modules/types/ttfb.d.ts +2 -2
  331. package/front_end/third_party/web-vitals/package/dist/modules/types.d.ts +26 -4
  332. package/front_end/third_party/web-vitals/package/package.json +21 -22
  333. package/front_end/third_party/web-vitals/package/src/attribution/onCLS.ts +1 -1
  334. package/front_end/third_party/web-vitals/package/src/attribution/onFCP.ts +62 -39
  335. package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +52 -15
  336. package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +25 -7
  337. package/front_end/third_party/web-vitals/package/src/attribution/onTTFB.ts +43 -37
  338. package/front_end/third_party/web-vitals/package/src/lib/{polyfills/getFirstHiddenTimePolyfill.ts → FCPEntryManager.ts} +4 -14
  339. package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +22 -2
  340. package/front_end/third_party/web-vitals/package/src/lib/LCPEntryManager.ts +1 -0
  341. package/front_end/third_party/web-vitals/package/src/lib/bindReporter.ts +1 -1
  342. package/front_end/third_party/web-vitals/package/src/lib/generateUniqueID.ts +1 -1
  343. package/front_end/third_party/web-vitals/package/src/lib/getLoadState.ts +11 -12
  344. package/front_end/third_party/web-vitals/package/src/lib/getSelector.ts +1 -1
  345. package/front_end/third_party/web-vitals/package/src/lib/getVisibilityWatcher.ts +4 -1
  346. package/front_end/third_party/web-vitals/package/src/lib/initMetric.ts +24 -11
  347. package/front_end/third_party/web-vitals/package/src/lib/initUnique.ts +12 -4
  348. package/front_end/third_party/web-vitals/package/src/lib/observe.ts +26 -5
  349. package/front_end/third_party/web-vitals/package/src/lib/polyfills/interactionCountPolyfill.ts +1 -1
  350. package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +48 -0
  351. package/front_end/third_party/web-vitals/package/src/lib/whenIdleOrHidden.ts +12 -4
  352. package/front_end/third_party/web-vitals/package/src/onCLS.ts +75 -18
  353. package/front_end/third_party/web-vitals/package/src/onFCP.ts +66 -7
  354. package/front_end/third_party/web-vitals/package/src/onINP.ts +100 -39
  355. package/front_end/third_party/web-vitals/package/src/onLCP.ts +169 -34
  356. package/front_end/third_party/web-vitals/package/src/onTTFB.ts +50 -13
  357. package/front_end/third_party/web-vitals/package/src/types/base.ts +31 -10
  358. package/front_end/third_party/web-vitals/package/src/types/fcp.ts +1 -1
  359. package/front_end/third_party/web-vitals/package/src/types/inp.ts +14 -6
  360. package/front_end/third_party/web-vitals/package/src/types/lcp.ts +1 -1
  361. package/front_end/third_party/web-vitals/package/src/types/ttfb.ts +2 -2
  362. package/front_end/third_party/web-vitals/package/src/types.ts +32 -9
  363. package/front_end/third_party/web-vitals/patches/0001-Add-onEachInteraction-to-onINP-options.patch +11 -11
  364. package/front_end/third_party/web-vitals/rebuild.sh +2 -2
  365. package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +2 -0
  366. package/front_end/ui/components/buttons/Button.ts +16 -0
  367. package/front_end/ui/components/dialogs/Dialog.ts +1 -1
  368. package/front_end/ui/components/highlighting/HighlightManager.ts +6 -1
  369. package/front_end/ui/components/highlighting/highlighting.ts +1 -1
  370. package/front_end/ui/components/icon_button/FileSourceIcon.ts +1 -1
  371. package/front_end/ui/components/linkifier/LinkifierImpl.ts +1 -1
  372. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +2 -2
  373. package/front_end/ui/components/settings/SettingCheckbox.ts +12 -7
  374. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +2 -2
  375. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +6 -6
  376. package/front_end/ui/components/text_editor/javascript.ts +3 -1
  377. package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
  378. package/front_end/ui/legacy/ContextMenu.ts +12 -2
  379. package/front_end/ui/legacy/ListControl.ts +1 -1
  380. package/front_end/ui/legacy/SelectMenu.docs.ts +17 -19
  381. package/front_end/ui/legacy/Toolbar.ts +4 -1
  382. package/front_end/ui/legacy/Treeoutline.ts +1 -1
  383. package/front_end/ui/legacy/components/color_picker/spectrum.css +1 -2
  384. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
  385. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +50 -4
  386. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +3 -1
  387. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +4 -4
  388. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +8 -7
  389. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +14 -11
  390. package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +1 -1
  391. package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +15 -5
  392. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +4 -4
  393. package/front_end/ui/legacy/components/utils/Linkifier.ts +5 -1
  394. package/front_end/ui/lit/render.ts +1 -1
  395. package/front_end/ui/settings/SettingUIRegistration.ts +8 -3
  396. package/front_end/ui/visual_logging/KnownContextValues.ts +8 -0
  397. package/front_end/ui/visual_logging/LoggingEvents.ts +1 -1
  398. package/inspector_overlay/main.ts +1 -1
  399. package/mcp/mcp.ts +5 -4
  400. package/package.json +13 -13
  401. package/front_end/models/ai_assistance/AgentProject.ts +0 -261
  402. package/front_end/models/ai_assistance/agents/PatchAgent.ts +0 -306
  403. package/front_end/models/issues_manager/CheckFormsIssuesTrigger.ts +0 -45
  404. package/front_end/models/text_utils/text_utils.ts +0 -5
  405. package/front_end/panels/ai_assistance/PatchWidget.ts +0 -867
  406. package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +0 -368
  407. package/front_end/panels/ai_assistance/selectWorkspaceDialog.css +0 -92
@@ -1,6 +1,6 @@
1
- From 0655370c830a309d8808ef365dff611725ea73b1 Mon Sep 17 00:00:00 2001
1
+ From e75293ce1c04be22600fa0eda58ce28cfb2fe7ab Mon Sep 17 00:00:00 2001
2
2
  From: Barry Pollard <barrypollard@google.com>
3
- Date: Tue, 21 Apr 2026 12:43:38 +0100
3
+ Date: Tue, 21 Apr 2026 14:20:47 +0100
4
4
  Subject: [PATCH] Add onEachInteraction to onINP options
5
5
 
6
6
  This adds an "onEachInteraction" option to onINP, which exposes to us
@@ -8,18 +8,18 @@ each interaction. It also calls attributeINP on each value given to the
8
8
  callback.
9
9
 
10
10
  ---
11
- src/attribution/onINP.ts | 35 ++++++++++++++++++++++++++++++++++-
11
+ src/attribution/onINP.ts | 36 +++++++++++++++++++++++++++++++++++-
12
12
  src/types/inp.ts | 1 +
13
- 2 files changed, 35 insertions(+), 1 deletion(-)
13
+ 2 files changed, 36 insertions(+), 1 deletion(-)
14
14
 
15
15
  diff --git a/src/attribution/onINP.ts b/src/attribution/onINP.ts
16
- index 0d6d098..3fe5050 100644
16
+ index 051bc74..82e3e6e 100644
17
17
  --- a/src/attribution/onINP.ts
18
18
  +++ b/src/attribution/onINP.ts
19
- @@ -260,7 +260,40 @@ export const onINP = (
19
+ @@ -261,7 +261,41 @@ export const onINP = (
20
20
  cleanupPending = false;
21
21
  };
22
-
22
+
23
23
  - interactionManager._onBeforeProcessingEntry = groupEntriesByRenderTime;
24
24
  + async function handleOnEachInteractionCallback(
25
25
  + entry: PerformanceEventTiming,
@@ -43,6 +43,7 @@ index 0d6d098..3fe5050 100644
43
43
  + rating: 'good',
44
44
  + value: entry.duration,
45
45
  + delta: entry.duration,
46
+ + navigationId: (entry as any).navigationId,
46
47
  + navigationType: 'navigate',
47
48
  + id: 'N/A',
48
49
  + });
@@ -56,7 +57,7 @@ index 0d6d098..3fe5050 100644
56
57
  + groupEntriesByRenderTime(entry);
57
58
  + };
58
59
  interactionManager._onAfterProcessingINPCandidate = saveInteractionTarget;
59
-
60
+
60
61
  const getIntersectingLoAFs = (
61
62
  diff --git a/src/types/inp.ts b/src/types/inp.ts
62
63
  index 6041b2d..9b6bd2e 100644
@@ -68,8 +69,7 @@ index 6041b2d..9b6bd2e 100644
68
69
  includeProcessedEventEntries?: boolean;
69
70
  + onEachInteraction?: (interaction: INPMetricWithAttribution) => void;
70
71
  }
71
-
72
+
72
73
  /**
73
- --
74
+ --
74
75
  2.50.1 (Apple Git-155)
75
-
@@ -4,8 +4,8 @@ set -euo pipefail
4
4
 
5
5
  SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
6
6
 
7
- VERSION=5.2.0
8
- GIT_SHA=331486c02721e1d37835177ffc89589a580ba57e # web-vitals does not tag releases.
7
+ VERSION=6.0.0
8
+ GIT_SHA=67a9ddb4cf77f8d1cb2c877ccd870b9c821aa853 # web-vitals does not tag releases.
9
9
 
10
10
  # Note: this is just to handle updating README.chromium.
11
11
  # For the actual sources, below we checkout the repo, apply local patches, then build with tsc.
@@ -10,6 +10,7 @@
10
10
  "package/dist/modules/attribution/onLCP.js",
11
11
  "package/dist/modules/attribution/onTTFB.js",
12
12
  "package/dist/modules/index.js",
13
+ "package/dist/modules/lib/FCPEntryManager.js",
13
14
  "package/dist/modules/lib/InteractionManager.js",
14
15
  "package/dist/modules/lib/LCPEntryManager.js",
15
16
  "package/dist/modules/lib/LayoutShiftManager.js",
@@ -27,6 +28,7 @@
27
28
  "package/dist/modules/lib/observe.js",
28
29
  "package/dist/modules/lib/polyfills/interactionCountPolyfill.js",
29
30
  "package/dist/modules/lib/runOnce.js",
31
+ "package/dist/modules/lib/softNavs.js",
30
32
  "package/dist/modules/lib/whenActivated.js",
31
33
  "package/dist/modules/lib/whenIdleOrHidden.js",
32
34
  "package/dist/modules/onCLS.js",
@@ -62,6 +62,7 @@ interface ButtonState {
62
62
  jslogContext?: string;
63
63
  longClickable?: boolean;
64
64
  inverseColorTheme?: boolean;
65
+ accessibleExpanded?: boolean;
65
66
  }
66
67
 
67
68
  interface CommonButtonData {
@@ -87,6 +88,10 @@ interface CommonButtonData {
87
88
  * Sets aria-label on the internal <button> element.
88
89
  */
89
90
  accessibleLabel?: string;
91
+ /**
92
+ * Sets aria-expanded on the internal <button> element.
93
+ */
94
+ accessibleExpanded?: boolean;
90
95
  }
91
96
 
92
97
  export type ButtonData = CommonButtonData&(|{
@@ -166,6 +171,7 @@ export class Button extends HTMLElement {
166
171
  this.accessibleLabel = data.accessibleLabel;
167
172
  }
168
173
 
174
+ this.#props.accessibleExpanded = data.accessibleExpanded;
169
175
  this.#props.jslogContext = data.jslogContext;
170
176
  this.#props.longClickable = data.longClickable;
171
177
  this.#props.inverseColorTheme = data.inverseColorTheme;
@@ -211,6 +217,15 @@ export class Button extends HTMLElement {
211
217
  return this.getAttribute('accessibleLabel') || undefined;
212
218
  }
213
219
 
220
+ set accessibleExpanded(expanded: boolean|undefined) {
221
+ this.#props.accessibleExpanded = expanded;
222
+ this.#render();
223
+ }
224
+
225
+ get accessibleExpanded(): boolean|undefined {
226
+ return this.#props.accessibleExpanded;
227
+ }
228
+
214
229
  set reducedFocusRing(reducedFocusRing: boolean) {
215
230
  this.#props.reducedFocusRing = reducedFocusRing;
216
231
  this.#render();
@@ -385,6 +400,7 @@ export class Button extends HTMLElement {
385
400
  ?disabled=${this.#props.disabled}
386
401
  class=${classMap(classes)}
387
402
  aria-pressed=${ifDefined(this.#props.toggled)}
403
+ aria-expanded=${ifDefined(this.#props.accessibleExpanded)}
388
404
  aria-label=${ifDefined(this.accessibleLabel || this.title || undefined)}
389
405
  jslog=${ifDefined(jslog)}>
390
406
  ${hasIcon ? html`
@@ -776,7 +776,7 @@ export const enum DialogVerticalPosition {
776
776
  export const enum DialogState {
777
777
  EXPANDED = 'expanded',
778
778
  COLLAPSED = 'collapsed',
779
- DISABLED = 'disabled'
779
+ DISABLED = 'disabled',
780
780
  }
781
781
 
782
782
  export const enum DialogHorizontalAlignment {
@@ -88,7 +88,8 @@ interface HighlightState {
88
88
  currentRange?: TextUtils.TextRange.SourceRange;
89
89
  }
90
90
 
91
- let highlightManagerInstance: HighlightManager;
91
+ let highlightManagerInstance: HighlightManager|null;
92
+
92
93
  export class HighlightManager {
93
94
  #highlights = new Highlight();
94
95
  #currentHighlights = new Highlight();
@@ -110,6 +111,10 @@ export class HighlightManager {
110
111
  return highlightManagerInstance;
111
112
  }
112
113
 
114
+ static removeInstance(): void {
115
+ highlightManagerInstance = null;
116
+ }
117
+
113
118
  addHighlights(ranges: Range[]): void {
114
119
  ranges.forEach(this.addHighlight.bind(this));
115
120
  }
@@ -11,6 +11,6 @@ export {
11
11
  highlightedCurrentSearchResultClassName,
12
12
  highlightedSearchResultClassName,
13
13
  highlightRangesWithStyleClass,
14
- revertDomChanges
14
+ revertDomChanges,
15
15
  } from './MarkupHighlight.js';
16
16
  export {HighlightManager};
@@ -52,7 +52,7 @@ export class FileSourceIcon extends HTMLElement {
52
52
  dot: Boolean(this.#hasDotBadge),
53
53
  purple: Boolean(this.#hasDotBadge && this.#isDotPurple),
54
54
  green: Boolean(this.#hasDotBadge && !this.#isDotPurple),
55
- ...(this.#contentType ? {[this.#contentType]: this.#contentType} : null)
55
+ ...(this.#contentType ? {[this.#contentType]: this.#contentType} : null),
56
56
  });
57
57
 
58
58
  // clang-format off
@@ -63,7 +63,7 @@ export class Linkifier extends HTMLElement {
63
63
  lineNumber: this.#lineNumber,
64
64
  columnNumber: this.#columnNumber,
65
65
  linkText: this.#linkText,
66
- title: this.#title
66
+ title: this.#title,
67
67
  };
68
68
  return node;
69
69
  }
@@ -68,14 +68,14 @@ export const markdownLinks = new Map<string, string>([
68
68
  ['componentParameterReq', 'https://www.rfc-editor.org/rfc/rfc9421.html#content-request-response'],
69
69
  [
70
70
  'unencodedDigestHeader',
71
- 'https://lpardue.github.io/draft-pardue-http-identity-digest/draft-pardue-httpbis-identity-digest.html'
71
+ 'https://lpardue.github.io/draft-pardue-http-identity-digest/draft-pardue-httpbis-identity-digest.html',
72
72
  ],
73
73
  ['storagePartitioningExplainer', 'https://developers.google.com/privacy-sandbox/cookies/storage-partitioning'],
74
74
  ['storageAccessAPI', 'https://developer.mozilla.org/en-US/docs/Web/API/StorageAccessHandle/createObjectURL'],
75
75
  ['https://goo.gle/ps-status', 'https://goo.gle/ps-status'],
76
76
  [
77
77
  'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/',
78
- 'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/'
78
+ 'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/',
79
79
  ],
80
80
  ['urlPatternSpec', 'https://urlpattern.spec.whatwg.org/'],
81
81
  [
@@ -11,6 +11,7 @@ import type * as Common from '../../../core/common/common.js';
11
11
  import * as Host from '../../../core/host/host.js';
12
12
  import * as i18n from '../../../core/i18n/i18n.js';
13
13
  import * as Lit from '../../lit/lit.js';
14
+ import * as SettingUIRegistration from '../../settings/settings.js';
14
15
  import * as VisualLogging from '../../visual_logging/visual_logging.js';
15
16
  import * as Buttons from '../buttons/buttons.js';
16
17
  import * as Input from '../input/input.js';
@@ -67,7 +68,8 @@ export class SettingCheckbox extends HTMLElement {
67
68
  this.#setting.deprecation}></devtools-setting-deprecation-warning>`;
68
69
  }
69
70
 
70
- const learnMore = this.#setting.learnMore();
71
+ const uiDescriptor = SettingUIRegistration.SettingUIRegistration.maybeResolve(this.#setting.descriptor());
72
+ const learnMore = uiDescriptor?.learnMore ?? this.#setting.learnMore();
71
73
  if (learnMore) {
72
74
  const jsLogContext = `${this.#setting.name}-documentation`;
73
75
  const data: Buttons.Button.ButtonData = {
@@ -136,8 +138,12 @@ export class SettingCheckbox extends HTMLElement {
136
138
  throw new Error('No "Setting" object provided for rendering');
137
139
  }
138
140
 
141
+ const uiDescriptor = SettingUIRegistration.SettingUIRegistration.maybeResolve(this.#setting.descriptor());
142
+ const learnMore = uiDescriptor?.learnMore ?? this.#setting.learnMore();
143
+ const titleText = uiDescriptor?.title?.() ?? this.#setting.title();
144
+
139
145
  const icon = this.icon();
140
- const title = `${this.#setting.learnMore() ? this.#setting.learnMore()?.tooltip?.() : ''}`;
146
+ const title = learnMore?.tooltip?.() ?? '';
141
147
  const disabledReasons = this.#setting.disabledReasons();
142
148
  const reason = disabledReasons.length ?
143
149
  html`
@@ -146,8 +152,7 @@ export class SettingCheckbox extends HTMLElement {
146
152
  onclick}></devtools-button>
147
153
  ` :
148
154
  Lit.nothing;
149
- Lit.render(
150
- html`
155
+ Lit.render(html`
151
156
  <style>${Input.checkboxStyles}</style>
152
157
  <style>${settingCheckboxStyles}</style>
153
158
  <p>
@@ -158,13 +163,13 @@ export class SettingCheckbox extends HTMLElement {
158
163
  ?disabled=${this.#setting.disabled()}
159
164
  @change=${this.#checkboxChanged}
160
165
  jslog=${VisualLogging.toggle().track({change: true}).context(this.#setting.name)}
161
- aria-label=${this.#setting.title()}
166
+ aria-label=${titleText}
162
167
  />
163
- ${this.#textOverride || this.#setting.title()}${reason}
168
+ ${this.#textOverride || titleText}${reason}
164
169
  </label>
165
170
  ${icon}
166
171
  </p>`,
167
- this.#shadow, {host: this});
172
+ this.#shadow, {host: this});
168
173
  }
169
174
 
170
175
  #checkboxChanged(e: Event): void {
@@ -374,7 +374,7 @@ export class AiCodeCompletionProvider {
374
374
  clearCachedRequest: this.clearCache.bind(this),
375
375
  onImpression: this.#aiCodeCompletion?.registerUserImpression.bind(this.#aiCodeCompletion),
376
376
  source: AiSuggestionSource.COMPLETION,
377
- })
377
+ }),
378
378
  });
379
379
  }
380
380
  if (fromCache) {
@@ -580,7 +580,7 @@ function aiCodeCompletionTeaserExtension(teaser: PanelCommon.AiCodeCompletionTea
580
580
  return true;
581
581
  }
582
582
  return false;
583
- }
583
+ },
584
584
  },
585
585
  });
586
586
  }
@@ -206,8 +206,8 @@ export class AiCodeGenerationProvider {
206
206
  }
207
207
  }
208
208
  return false;
209
- }
210
- }
209
+ },
210
+ },
211
211
  ];
212
212
  }
213
213
 
@@ -248,7 +248,7 @@ export class AiCodeGenerationProvider {
248
248
  effects: [
249
249
  setAiCodeGenerationTeaserMode.of(AiCodeGenerationTeaserMode.DISMISSED),
250
250
  setAiAutoCompleteSuggestion.of(null),
251
- ]
251
+ ],
252
252
  });
253
253
  }
254
254
 
@@ -372,8 +372,8 @@ export class AiCodeGenerationProvider {
372
372
  onImpression: this.#aiCodeGeneration?.registerUserImpression.bind(this.#aiCodeGeneration),
373
373
  source: AiSuggestionSource.GENERATION,
374
374
  }),
375
- setAiCodeGenerationTeaserMode.of(AiCodeGenerationTeaserMode.ACTIVE)
376
- ]
375
+ setAiCodeGenerationTeaserMode.of(AiCodeGenerationTeaserMode.ACTIVE),
376
+ ],
377
377
  });
378
378
  this.#generationTeaser.displayState =
379
379
  PanelCommon.AiCodeGenerationTeaser.AiCodeGenerationTeaserDisplayState.GENERATED;
@@ -498,7 +498,7 @@ function aiCodeGenerationTeaserExtension(teaser: PanelCommon.AiCodeGenerationTea
498
498
  return true;
499
499
  }
500
500
  return false;
501
- }
501
+ },
502
502
  },
503
503
  });
504
504
  }
@@ -411,8 +411,10 @@ async function completeExpressionInScope(): Promise<CompletionSet> {
411
411
  return result;
412
412
  }
413
413
 
414
+ const debuggerWorkspaceBinding = Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance();
414
415
  const scopes = await Promise.all(selectedFrame.scopeChain().map(
415
- scope => SourceMapScopes.NamesResolver.resolveScopeInObject(scope).getAllProperties(false, false)));
416
+ scope => SourceMapScopes.NamesResolver.resolveScopeInObject(scope, debuggerWorkspaceBinding)
417
+ .getAllProperties(false, false)));
416
418
  for (const scope of scopes) {
417
419
  for (const property of scope.properties || []) {
418
420
  result.add({
@@ -100,7 +100,7 @@ const positioningUtils = {
100
100
 
101
101
  return rect1 && rect1.left === rect2.left && rect1.top === rect2.top && rect1.width === rect2.width &&
102
102
  rect1.height === rect2.height;
103
- }
103
+ },
104
104
  };
105
105
 
106
106
  export const proposedRectForRichTooltip = ({inspectorViewRect, anchorRect, currentPopoverRect, preferredPositions}: {
@@ -947,8 +947,18 @@ export class ContextMenu extends SubMenu {
947
947
  private static pendingMenu: ContextMenu|null = null;
948
948
  private static useSoftMenu = false;
949
949
  static readonly groupWeights = [
950
- 'header', 'new', 'reveal', 'edit', 'clipboard', 'debug', 'view', 'default', 'override', 'save', 'annotation',
951
- 'footer'
950
+ 'header',
951
+ 'new',
952
+ 'reveal',
953
+ 'edit',
954
+ 'clipboard',
955
+ 'debug',
956
+ 'view',
957
+ 'default',
958
+ 'override',
959
+ 'save',
960
+ 'annotation',
961
+ 'footer',
952
962
  ];
953
963
  }
954
964
 
@@ -392,7 +392,7 @@ export class ListControl<T> {
392
392
  element.setAttribute('jslog', `${VisualLogging.item().track({
393
393
  click: true,
394
394
  resize: true,
395
- keydown: 'ArrowUp|ArrowDown|PageUp|PageDown|Home|End'
395
+ keydown: 'ArrowUp|ArrowDown|PageUp|PageDown|Home|End',
396
396
  })}`);
397
397
  }
398
398
  this.itemToElement.set(item, element);
@@ -30,24 +30,23 @@ export function render(container: HTMLElement) {
30
30
 
31
31
  {
32
32
  const simpleMenuHTML = createDivWithP('Simple item select with lit-html');
33
- Lit.render(
34
- html`<select id="menu" aria-label="Select an option"
33
+ Lit.render(html`<select id="menu" aria-label="Select an option"
35
34
  @change=${onChange}>
36
35
  <option hidden>Select an option</option>
37
36
  <option id="option-1" jslog=${VisualLogging.item('option-1').track({
38
- click: true
39
- })}
37
+ click: true,
38
+ })}
40
39
  value="Option1">Option 1</option>
41
40
  <option jslog=${VisualLogging.item('option-2').track({
42
- click: true
43
- })}
41
+ click: true,
42
+ })}
44
43
  value="Option2">Option 2</option>
45
44
  <option disabled jslog=${VisualLogging.item('option-3').track({
46
- click: true
47
- })}
45
+ click: true,
46
+ })}
48
47
  value="Option3">Option 3</option>
49
48
  </select>`,
50
- simpleMenuHTML);
49
+ simpleMenuHTML);
51
50
  }
52
51
 
53
52
  {
@@ -57,7 +56,7 @@ export function render(container: HTMLElement) {
57
56
  html`<select disabled aria-label="Select an option" @change=${onChange}>
58
57
  <option hidden>Select an option</option>
59
58
  <option jslog=${VisualLogging.item('option-1').track({
60
- click: true
59
+ click: true,
61
60
  })} value="Option1">Option 1</option>
62
61
  </select>`,
63
62
  disabledMenuHTML);
@@ -66,27 +65,26 @@ export function render(container: HTMLElement) {
66
65
 
67
66
  {
68
67
  const groupMenuHTML = createDivWithP('Select with groups with lit-html');
69
- Lit.render(
70
- html`<select aria-label="Select an option"
68
+ Lit.render(html`<select aria-label="Select an option"
71
69
  @change=${onChange}>
72
70
  <optgroup label="Group 1">
73
71
  <option jslog=${VisualLogging.item('option-1').track({
74
- click: true
75
- })}
72
+ click: true,
73
+ })}
76
74
  value="Option1">Option 1</option>
77
75
  </optgroup>
78
76
  <optgroup label="Group 2">
79
77
  <option jslog=${VisualLogging.item('option-2').track({
80
- click: true
81
- })}
78
+ click: true,
79
+ })}
82
80
  value="Option2">Option 2</option>
83
81
  <option jslog=${VisualLogging.item('option-3').track({
84
- click: true
85
- })}
82
+ click: true,
83
+ })}
86
84
  value="Option3">Option 3</option>
87
85
  </optgroup>
88
86
  </select>`,
89
- groupMenuHTML);
87
+ groupMenuHTML);
90
88
  }
91
89
 
92
90
  {
@@ -12,6 +12,7 @@ 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
14
  import {nothing, render, type TemplateResult} from '../lit/lit.js';
15
+ import * as SettingUIRegistration from '../settings/settings.js';
15
16
 
16
17
  import {type Action, Events as ActionEvents} from './ActionRegistration.js';
17
18
  import {ActionRegistry} from './ActionRegistry.js';
@@ -1429,7 +1430,9 @@ export class ToolbarSettingCheckbox extends ToolbarCheckbox {
1429
1430
  constructor(
1430
1431
  setting: Common.Settings.Setting<boolean>, tooltip?: Common.UIString.LocalizedString,
1431
1432
  alternateTitle?: Common.UIString.LocalizedString) {
1432
- super(alternateTitle || setting.title(), tooltip, undefined, setting.name);
1433
+ const uiDescriptor = SettingUIRegistration.SettingUIRegistration.maybeResolve(setting.descriptor());
1434
+ const title = alternateTitle || uiDescriptor?.title?.() || setting.title();
1435
+ super(title, tooltip, undefined, setting.name);
1433
1436
  bindCheckbox(this.element as CheckboxLabel, setting);
1434
1437
  }
1435
1438
  }
@@ -1692,7 +1692,7 @@ function getTreeNodes(nodeList: NodeList|Node[]): Array<HTMLLIElement|TreeElemen
1692
1692
  return [
1693
1693
  node,
1694
1694
  ...node.querySelectorAll<HTMLLIElement|TreeElementWrapper>(
1695
- 'ul[role="group"] li[role="treeitem"],ul[role="group"] devtools-tree-wrapper')
1695
+ 'ul[role="group"] li[role="treeitem"],ul[role="group"] devtools-tree-wrapper'),
1696
1696
  ];
1697
1697
  }
1698
1698
  if (node instanceof HTMLElement) {
@@ -72,12 +72,11 @@
72
72
 
73
73
  .spectrum-hue {
74
74
  top: 16px;
75
- /* stylelint-disable-next-line plugin/use_theme_colors, declaration-property-value-no-unknown */
75
+ /* stylelint-disable-next-line plugin/use_theme_colors */
76
76
  background: linear-gradient(to left in hsl longer hue, #f00 0 100%);
77
77
  }
78
78
 
79
79
  .spectrum-hue.display-p3 {
80
- /* stylelint-disable-next-line declaration-property-value-no-unknown */
81
80
  background: linear-gradient(
82
81
  to left in hsl longer hue,
83
82
  color(display-p3 1 0 0) 0 100%
@@ -1779,7 +1779,7 @@ export class DataGridNode<T> {
1779
1779
  this.elementInternal = document.createElement('tr');
1780
1780
  this.elementInternal.setAttribute('jslog', `${VisualLogging.tableRow().track({
1781
1781
  resize: true,
1782
- keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space'
1782
+ keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space',
1783
1783
  })}`);
1784
1784
  this.elementInternal.classList.add('data-grid-data-grid-node');
1785
1785
  if (this.dataGrid) {
@@ -17,7 +17,7 @@ import {
17
17
  DataType,
18
18
  Events as DataGridEvents,
19
19
  Order,
20
- type ResizeMethod
20
+ type ResizeMethod,
21
21
  } from './DataGrid.js';
22
22
  import {SortableDataGrid, SortableDataGridNode} from './SortableDataGrid.js';
23
23
 
@@ -57,7 +57,7 @@ type DataGridElementNode = SortableNode|DynamicHeightNode;
57
57
  const elementToNode = new WeakMap<Element, DataGridElementNode>();
58
58
 
59
59
  export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate {
60
- static readonly observedAttributes = ['striped', 'name', 'inline', 'resize'];
60
+ static readonly observedAttributes = ['striped', 'name', 'inline', 'resize', 'highlight'];
61
61
 
62
62
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
63
  #dataGrid!: DataGridImpl<any>;
@@ -66,6 +66,13 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
66
66
  this.#dataGrid.onResize();
67
67
  }
68
68
  });
69
+ #scrollResizeObserver = new ResizeObserver(() => {
70
+ if (this.hasAttribute('autoscroll') && this.#stickToBottom) {
71
+ const scroll = this.#dataGrid.scrollContainer;
72
+ scroll.scrollTop = scroll.scrollHeight;
73
+ }
74
+ });
75
+ #stickToBottom = true;
69
76
  #shadowRoot: ShadowRoot;
70
77
  #columns: ColumnDescriptor[] = [];
71
78
  #hideableColumns = new Set<string>();
@@ -109,7 +116,7 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
109
116
  DataGridEvents.COLLAPSED_NODE,
110
117
  e => (e.data as DataGridElementNode).configElement.dispatchEvent(new CustomEvent('collapse')));
111
118
  this.#dataGrid.addEventListener(DataGridEvents.SORTING_CHANGED, () => this.dispatchEvent(new CustomEvent('sort', {
112
- detail: {columnId: this.#dataGrid.sortColumnId(), ascending: this.#dataGrid.isSortOrderAscending()}
119
+ detail: {columnId: this.#dataGrid.sortColumnId(), ascending: this.#dataGrid.isSortOrderAscending()},
113
120
  })));
114
121
  this.#dataGrid.setRowContextMenuCallback((menu, node) => {
115
122
  (node as DataGridElementNode).configElement.dispatchEvent(new CustomEvent('contextmenu', {detail: menu}));
@@ -136,6 +143,22 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
136
143
  this.addNodes(this.templateRoot.querySelectorAll('tr'));
137
144
  }
138
145
 
146
+ connectedCallback(): void {
147
+ const scroll = this.#dataGrid.scrollContainer;
148
+ scroll.addEventListener('scroll', this.#onScroll);
149
+ this.#scrollResizeObserver.observe(scroll.firstElementChild || scroll);
150
+ }
151
+
152
+ disconnectedCallback(): void {
153
+ const scroll = this.#dataGrid.scrollContainer;
154
+ scroll.removeEventListener('scroll', this.#onScroll);
155
+ this.#scrollResizeObserver.disconnect();
156
+ }
157
+
158
+ #onScroll = (): void => {
159
+ this.#stickToBottom = UI.UIUtils.isScrolledToBottom(this.#dataGrid.scrollContainer);
160
+ };
161
+
139
162
  attributeChangedCallback(name: string, oldValue: string|null, newValue: string|null): void {
140
163
  if (oldValue === newValue) {
141
164
  return;
@@ -153,6 +176,11 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
153
176
  case 'resize':
154
177
  this.#dataGrid.setResizeMethod(newValue as ResizeMethod);
155
178
  break;
179
+ case 'highlight':
180
+ queueMicrotask(() => {
181
+ this.#revealHighlightedNode(Number(newValue));
182
+ });
183
+ break;
156
184
  }
157
185
  }
158
186
 
@@ -209,6 +237,24 @@ export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate
209
237
  dataGridNode.setHasChildren(hasChildren);
210
238
  }
211
239
 
240
+ #revealHighlightedNode(index: number): void {
241
+ if (isNaN(index) || index < 1) {
242
+ return;
243
+ }
244
+ let count = 0;
245
+ let node = this.#dataGrid.rootNode().traverseNextNode(true) as DataGridElementNode | null;
246
+ while (node) {
247
+ if (node.configElement.hasAttribute('highlighted')) {
248
+ count++;
249
+ if (count === index) {
250
+ node.revealAndSelect();
251
+ return;
252
+ }
253
+ }
254
+ node = node.traverseNextNode(true) as DataGridElementNode | null;
255
+ }
256
+ }
257
+
212
258
  #updateColumns(): void {
213
259
  for (const column of Object.keys(this.#dataGrid.columns)) {
214
260
  this.#dataGrid.removeColumn(column);
@@ -681,7 +727,7 @@ export interface DataGridInternalToken {
681
727
  }
682
728
 
683
729
  const INTERNAL_TOKEN: DataGridInternalToken = {
684
- token: 'DataGridInternalToken'
730
+ token: 'DataGridInternalToken',
685
731
  };
686
732
 
687
733
  class IfExpandedDirective extends Lit.Directive.Directive {
@@ -3,6 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as SDK from '../../../../core/sdk/sdk.js';
6
+ import * as Bindings from '../../../../models/bindings/bindings.js';
6
7
  import * as Formatter from '../../../../models/formatter/formatter.js';
7
8
  import * as SourceMapScopes from '../../../../models/source_map_scopes/source_map_scopes.js';
8
9
  import * as Acorn from '../../../../third_party/acorn/acorn.js';
@@ -56,7 +57,8 @@ export class JavaScriptREPL {
56
57
  let expression = text;
57
58
  const callFrame = executionContext.debuggerModel.selectedCallFrame();
58
59
  if (callFrame?.script.isJavaScript()) {
59
- const nameMap = await SourceMapScopes.NamesResolver.allVariablesInCallFrame(callFrame);
60
+ const nameMap = await SourceMapScopes.NamesResolver.allVariablesInCallFrame(
61
+ callFrame, Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance());
60
62
  try {
61
63
  expression =
62
64
  await Formatter.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(expression, nameMap);