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
@@ -99,28 +99,6 @@ const UIStrings = {
99
99
  * @description Text that appears when user drag and drop something (for example, a file) in Timeline Panel of the Performance panel
100
100
  */
101
101
  dropTimelineFileOrUrlHere: 'Drop trace file or URL here',
102
- /**
103
- * @description Title of disable capture jsprofile setting in timeline panel of the performance panel
104
- */
105
- disableJavascriptSamples: 'Disable JavaScript samples',
106
- /**
107
- *@description Title of capture layers and pictures setting in timeline panel of the performance panel
108
- */
109
- enableAdvancedPaint: 'Enable advanced paint instrumentation (slow)',
110
- /**
111
- * @description Title of CSS selector stats setting in timeline panel of the performance panel
112
- */
113
- enableSelectorStats: 'Enable CSS selector stats (slow)',
114
- /**
115
- * @description Title of show screenshots setting in timeline panel of the performance panel
116
- */
117
- screenshots: 'Screenshots',
118
- /**
119
- * @description Label for the screenshot capture preset dropdown in the performance panel settings pane. The dropdown
120
- * picks the per-frame resolution and maximum frame count used when capturing screenshots. Every preset is sized to
121
- * stay within the same per-session memory budget.
122
- */
123
- screenshotCapture: 'Screenshot capture',
124
102
  /**
125
103
  * @description Dropdown option in the performance panel for the default screenshot capture preset (500 x 500 pixels,
126
104
  * up to 450 frames).
@@ -141,10 +119,6 @@ const UIStrings = {
141
119
  * so many of them fit in the per-session memory budget (100 x 100 pixels, up to 11250 frames).
142
120
  */
143
121
  screenshotPresetTiny: '100 x 100 px, up to 11250 frames',
144
- /**
145
- * @description Text for the memory of the page
146
- */
147
- memory: 'Memory',
148
122
  /**
149
123
  * @description Text to clear content
150
124
  */
@@ -274,11 +248,6 @@ const UIStrings = {
274
248
  * @description Tooltip description for a checkbox that toggles the visibility of data added by extensions of this panel (Performance).
275
249
  */
276
250
  showDataAddedByExtensions: 'Show data added by extensions of the Performance panel',
277
- /**
278
- * Label for a checkbox that toggles the visibility of data added by extensions of this panel (Performance).
279
- */
280
- showCustomtracks: 'Show custom tracks',
281
-
282
251
  /**
283
252
  * @description Tooltip for the the sidebar toggle in the Performance panel. Command to open/show the sidebar.
284
253
  */
@@ -324,10 +293,6 @@ const UIStrings = {
324
293
  * @description Description of the Timeline scrolling & panning instructions that appear in the shortcuts dialog.
325
294
  */
326
295
  timelineScrollPan: 'Scroll & Pan',
327
- /**
328
- * @description Title for the Dim 3rd Parties checkbox.
329
- */
330
- dimThirdParties: 'Dim 3rd parties',
331
296
  /**
332
297
  * @description Description for the Dim 3rd Parties checkbox tooltip describing how 3rd parties are classified.
333
298
  */
@@ -378,7 +343,6 @@ const SCREENSHOT_CAPTURE_PRESETS: ReadonlyArray<{
378
343
  label: () => i18nString(UIStrings.screenshotPresetTiny),
379
344
  },
380
345
  ];
381
- const DEFAULT_SCREENSHOT_CAPTURE_PRESET_KEY = SCREENSHOT_CAPTURE_PRESETS[0].key;
382
346
 
383
347
  let timelinePanelInstance: TimelinePanel|undefined;
384
348
 
@@ -559,38 +523,26 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
559
523
 
560
524
  this.traceLoadStart = null;
561
525
 
562
- this.disableCaptureJSProfileSetting = Common.Settings.Settings.instance().createSetting(
563
- 'timeline-disable-js-sampling', false, Common.Settings.SettingStorageType.SESSION);
564
- this.disableCaptureJSProfileSetting.setTitle(i18nString(UIStrings.disableJavascriptSamples));
565
- this.captureLayersAndPicturesSetting = Common.Settings.Settings.instance().createSetting(
566
- 'timeline-capture-layers-and-pictures', false, Common.Settings.SettingStorageType.SESSION);
567
- this.captureLayersAndPicturesSetting.setTitle(i18nString(UIStrings.enableAdvancedPaint));
568
- this.captureSelectorStatsSetting = Common.Settings.Settings.instance().createSetting(
569
- 'timeline-capture-selector-stats', false, Common.Settings.SettingStorageType.SESSION);
570
- this.captureSelectorStatsSetting.setTitle(i18nString(UIStrings.enableSelectorStats));
571
- this.screenshotCaptureModeSetting = Common.Settings.Settings.instance().createSetting(
572
- 'timeline-screenshot-capture-mode', DEFAULT_SCREENSHOT_CAPTURE_PRESET_KEY,
573
- Common.Settings.SettingStorageType.SESSION);
574
- this.screenshotCaptureModeSetting.setTitle(i18nString(UIStrings.screenshotCapture));
575
-
576
- this.showScreenshotsSetting =
577
- Common.Settings.Settings.instance().createSetting('timeline-show-screenshots', !this.#isNode);
578
- this.showScreenshotsSetting.setTitle(i18nString(UIStrings.screenshots));
526
+ this.disableCaptureJSProfileSetting =
527
+ Common.Settings.Settings.instance().moduleSetting('timeline-disable-js-sampling');
528
+ this.captureLayersAndPicturesSetting =
529
+ Common.Settings.Settings.instance().moduleSetting('timeline-capture-layers-and-pictures');
530
+ this.captureSelectorStatsSetting =
531
+ Common.Settings.Settings.instance().moduleSetting('timeline-capture-selector-stats');
532
+ this.screenshotCaptureModeSetting =
533
+ Common.Settings.Settings.instance().moduleSetting('timeline-screenshot-capture-mode');
534
+
535
+ this.showScreenshotsSetting = Common.Settings.Settings.instance().moduleSetting('timeline-show-screenshots');
579
536
  this.showScreenshotsSetting.addChangeListener(this.updateMiniMap, this);
580
537
 
581
- this.showMemorySetting = Common.Settings.Settings.instance().createSetting(
582
- 'timeline-show-memory', false, Common.Settings.SettingStorageType.SESSION);
583
- this.showMemorySetting.setTitle(i18nString(UIStrings.memory));
538
+ this.showMemorySetting = Common.Settings.Settings.instance().moduleSetting('timeline-show-memory');
584
539
  this.showMemorySetting.addChangeListener(this.onMemoryModeChanged, this);
585
540
 
586
- this.#dimThirdPartiesSetting = Common.Settings.Settings.instance().createSetting(
587
- 'timeline-dim-third-parties', false, Common.Settings.SettingStorageType.SESSION);
588
- this.#dimThirdPartiesSetting.setTitle(i18nString(UIStrings.dimThirdParties));
541
+ this.#dimThirdPartiesSetting = Common.Settings.Settings.instance().moduleSetting('timeline-dim-third-parties');
589
542
  this.#dimThirdPartiesSetting.addChangeListener(this.onDimThirdPartiesChanged, this);
590
543
 
591
544
  this.#thirdPartyTracksSetting = TimelinePanel.extensionDataVisibilitySetting();
592
545
  this.#thirdPartyTracksSetting.addChangeListener(this.#extensionDataVisibilityChanged, this);
593
- this.#thirdPartyTracksSetting.setTitle(i18nString(UIStrings.showCustomtracks));
594
546
 
595
547
  const timelineToolbarContainer = this.element.createChild('div', 'timeline-toolbar-container');
596
548
  timelineToolbarContainer.setAttribute('jslog', `${VisualLogging.toolbar()}`);
@@ -830,7 +782,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
830
782
  static extensionDataVisibilitySetting(): Common.Settings.Setting<boolean> {
831
783
  // Calling this multiple times doesn't recreate the setting.
832
784
  // Instead, after the second call, the cached setting is returned.
833
- return Common.Settings.Settings.instance().createSetting('timeline-show-extension-data', true);
785
+ return Common.Settings.Settings.instance().moduleSetting('timeline-show-extension-data');
834
786
  }
835
787
  override searchableView(): UI.SearchableView.SearchableView|null {
836
788
  return this.#searchableView;
@@ -1285,9 +1237,10 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1285
1237
  {
1286
1238
  title: i18nString(UIStrings.timelineZoom),
1287
1239
  rows: [
1288
- [{key: 'Scroll ↕'}], [{key: 'W'}, {key: 'S'}, {joinText: 'or'}, {key: '+'}, {key: '-'}],
1289
- {footnote: 'hold shift for fast zoom'}
1290
- ]
1240
+ [{key: 'Scroll ↕'}],
1241
+ [{key: 'W'}, {key: 'S'}, {joinText: 'or'}, {key: '+'}, {key: '-'}],
1242
+ {footnote: 'hold shift for fast zoom'},
1243
+ ],
1291
1244
  },
1292
1245
  {
1293
1246
  title: i18nString(UIStrings.timelineScrollPan),
@@ -1295,11 +1248,17 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1295
1248
  [{key: 'Shift'}, {joinText: '+'}, {key: 'Scroll ↕'}],
1296
1249
  [{key: 'Scroll ↔'}, {joinText: 'or'}, {key: 'A'}, {key: 'D'}],
1297
1250
  [
1298
- {key: 'Drag'}, {joinText: 'or'}, {key: 'Shift'}, {joinText: '+'}, {key: '↑'}, {key: '↓'}, {key: '←'},
1299
- {key: ''}
1251
+ {key: 'Drag'},
1252
+ {joinText: 'or'},
1253
+ {key: 'Shift'},
1254
+ {joinText: '+'},
1255
+ {key: '↑'},
1256
+ {key: '↓'},
1257
+ {key: '←'},
1258
+ {key: '→'},
1300
1259
  ],
1301
- ]
1302
- }
1260
+ ],
1261
+ },
1303
1262
  ];
1304
1263
  }
1305
1264
 
@@ -1309,23 +1268,36 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1309
1268
  title: i18nString(UIStrings.timelineZoom),
1310
1269
  rows: [
1311
1270
  [{key: metaKey}, {joinText: '+'}, {key: 'Scroll ↕'}],
1312
- [{key: 'W'}, {key: 'S'}, {joinText: 'or'}, {key: '+'}, {key: '-'}], {footnote: ''}
1313
- ]
1271
+ [{key: 'W'}, {key: 'S'}, {joinText: 'or'}, {key: '+'}, {key: '-'}],
1272
+ {footnote: ''},
1273
+ ],
1314
1274
  },
1315
1275
  {
1316
1276
  title: i18nString(UIStrings.timelineScrollPan),
1317
1277
  rows: [
1318
1278
  [{key: 'Scroll ↕'}],
1319
1279
  [
1320
- {key: 'Shift'}, {joinText: '+'}, {key: 'Scroll ↕'}, {joinText: 'or'}, {key: 'Scroll ↔'}, {joinText: 'or'},
1321
- {key: 'A'}, {key: 'D'}
1280
+ {key: 'Shift'},
1281
+ {joinText: '+'},
1282
+ {key: 'Scroll ↕'},
1283
+ {joinText: 'or'},
1284
+ {key: 'Scroll ↔'},
1285
+ {joinText: 'or'},
1286
+ {key: 'A'},
1287
+ {key: 'D'},
1322
1288
  ],
1323
1289
  [
1324
- {key: 'Drag'}, {joinText: 'or'}, {key: 'Shift'}, {joinText: '+'}, {key: '↑'}, {key: '↓'}, {key: '←'},
1325
- {key: ''}
1290
+ {key: 'Drag'},
1291
+ {joinText: 'or'},
1292
+ {key: 'Shift'},
1293
+ {joinText: '+'},
1294
+ {key: '↑'},
1295
+ {key: '↓'},
1296
+ {key: '←'},
1297
+ {key: '→'},
1326
1298
  ],
1327
- ]
1328
- }
1299
+ ],
1300
+ },
1329
1301
  ];
1330
1302
  }
1331
1303
 
@@ -2237,7 +2209,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2237
2209
  const exclusiveFilter = this.#exclusiveFilterPerTrace.get(traceIndex) ?? null;
2238
2210
  this.#applyActiveFilters(parsedTrace.data.Meta.traceIsGeneric, exclusiveFilter);
2239
2211
  (this.saveButton.element as TimelineComponents.ExportTraceOptions.ExportTraceOptions).updateContentVisibility({
2240
- annotationsExist: currentManager ? currentManager.getAnnotations()?.length > 0 : false
2212
+ annotationsExist: currentManager ? currentManager.getAnnotations()?.length > 0 : false,
2241
2213
  });
2242
2214
 
2243
2215
  // Add ModificationsManager listeners for annotations change to update the
@@ -2375,7 +2347,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2375
2347
  const annotationEntryToColorMap = this.buildColorsAnnotationsMap(annotations);
2376
2348
  this.#sideBar.setAnnotations(annotations, annotationEntryToColorMap);
2377
2349
  (this.saveButton.element as TimelineComponents.ExportTraceOptions.ExportTraceOptions).updateContentVisibility({
2378
- annotationsExist: currentManager ? currentManager.getAnnotations()?.length > 0 : false
2350
+ annotationsExist: currentManager ? currentManager.getAnnotations()?.length > 0 : false,
2379
2351
  });
2380
2352
  }
2381
2353
 
@@ -2448,7 +2420,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2448
2420
  },
2449
2421
  onShowTrackConfigurationMode: () => {
2450
2422
  this.flameChart.enterMainChartTrackConfigurationMode();
2451
- }
2423
+ },
2452
2424
  });
2453
2425
  if (maybeOverlay) {
2454
2426
  this.flameChart.addOverlay(maybeOverlay);
@@ -2732,7 +2704,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2732
2704
  const initiator = {
2733
2705
  target: null,
2734
2706
  frameId: script.frame as Protocol.Page.FrameId,
2735
- initiatorUrl: script.url as Platform.DevToolsPath.UrlString
2707
+ initiatorUrl: script.url as Platform.DevToolsPath.UrlString,
2736
2708
  };
2737
2709
  rawSourceMap = await SDK.SourceMapManager.tryLoadSourceMap(
2738
2710
  this.#resourceLoader, script.sourceMapUrl as Platform.DevToolsPath.UrlString, initiator);
@@ -2844,7 +2816,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2844
2816
  const initiator = {
2845
2817
  target: debuggerModelForFrameId.get(frame)?.target() ?? null,
2846
2818
  frameId: frame,
2847
- initiatorUrl: sourceUrl
2819
+ initiatorUrl: sourceUrl,
2848
2820
  };
2849
2821
  const payload = await SDK.SourceMapManager.tryLoadSourceMap(
2850
2822
  TimelinePanel.instance().#resourceLoader, sourceMapUrl, initiator);
@@ -227,8 +227,12 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
227
227
  menu.defaultSection().appendItem(i18nString(UIStrings.copyTable), () => {
228
228
  const tableData = [];
229
229
  const columnName = [
230
- i18nString(UIStrings.elapsed), i18nString(UIStrings.matchAttempts), i18nString(UIStrings.matchCount),
231
- i18nString(UIStrings.slowPathNonMatches), i18nString(UIStrings.selector), i18nString(UIStrings.styleSheetId)
230
+ i18nString(UIStrings.elapsed),
231
+ i18nString(UIStrings.matchAttempts),
232
+ i18nString(UIStrings.matchCount),
233
+ i18nString(UIStrings.slowPathNonMatches),
234
+ i18nString(UIStrings.selector),
235
+ i18nString(UIStrings.styleSheetId),
232
236
  ];
233
237
  tableData.push(columnName.join('\t'));
234
238
  for (const timing of this.#timings) {
@@ -321,7 +325,10 @@ export class TimelineSelectorStatsView extends UI.Widget.VBox {
321
325
  // aggregate invalidated nodes per (Selector + Recalc timestamp + Frame)
322
326
  for (const selector of invalidatedNode.selectorList) {
323
327
  const key = [
324
- selector.selector, selector.styleSheetId, invalidatedNode.frame, invalidatedNode.lastRecalcStyleEventTs
328
+ selector.selector,
329
+ selector.styleSheetId,
330
+ invalidatedNode.frame,
331
+ invalidatedNode.lastRecalcStyleEventTs,
325
332
  ].join('-');
326
333
  if (invalidatedNodeMap.has(key)) {
327
334
  const nodes = invalidatedNodeMap.get(key);
@@ -77,7 +77,7 @@ const UIStrings = {
77
77
  * @description Text that only contain a placeholder
78
78
  * @example {100ms (at 200ms)} PH1
79
79
  */
80
- emptyPlaceholder: '{PH1}', // eslint-disable-line @devtools/l10n-no-locked-or-placeholder-only-phrase
80
+ emptyPlaceholder: '{PH1}', // eslint-disable-line @devtools/l10n-uistrings-text-style
81
81
  /**
82
82
  * @description Text for timestamps of items
83
83
  */
@@ -193,7 +193,7 @@ const UIStrings = {
193
193
  /**
194
194
  * @description Text to refer to the URL associated with a given event.
195
195
  */
196
- url: 'Url',
196
+ url: 'URL',
197
197
  /**
198
198
  * @description Text to indicate to the user the size of the cache (as a filesize - e.g. 5mb).
199
199
  */
@@ -477,6 +477,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
477
477
 
478
478
  /** Look for scheme:// plus text and exclude any punctuation at the end. **/
479
479
  export const URL_REGEX = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/)[^\s"]{2,}[^\s"'\)\}\],:;.!?]/u;
480
+ const ALWAYS_LINKIFIED_SCHEMES = new Set(['http', 'https']);
480
481
 
481
482
  let eventDispatchDesciptors: EventDispatchTypeDescriptor[];
482
483
 
@@ -859,7 +860,7 @@ export class TimelineUIUtils {
859
860
 
860
861
  static maybeCreateLinkElement(url: string): Element|null {
861
862
  const parsedURL = new Common.ParsedURL.ParsedURL(url);
862
- if (!parsedURL.scheme) {
863
+ if (!TimelineUIUtils.isLinkifiableScheme(parsedURL.scheme)) {
863
864
  return null;
864
865
  }
865
866
 
@@ -879,6 +880,19 @@ export class TimelineUIUtils {
879
880
  return LegacyComponents.Linkifier.Linkifier.linkifyURL(rawURL as Platform.DevToolsPath.UrlString, options);
880
881
  }
881
882
 
883
+ /**
884
+ * Don't linkify URLs to privileged schemes. See https://crbug.com/530450502.
885
+ */
886
+ static isLinkifiableScheme(scheme: string): boolean {
887
+ if (ALWAYS_LINKIFIED_SCHEMES.has(scheme)) {
888
+ return true;
889
+ }
890
+ if (LegacyComponents.Linkifier.Linkifier.isRegisteredLinkHandlerScheme(scheme + ':')) {
891
+ return true;
892
+ }
893
+ return false;
894
+ }
895
+
882
896
  /**
883
897
  * Takes an input string and parses it to look for links. It does this by
884
898
  * looking for URLs in the input string. The returned fragment will contain
@@ -1043,7 +1057,7 @@ export class TimelineUIUtils {
1043
1057
  const hasExclusiveLink = typeof userDetail === 'object' && typeof userDetail.url === 'string' &&
1044
1058
  typeof userDetail.description === 'string';
1045
1059
  if (hasExclusiveLink && Boolean(Root.Runtime.hostConfig.devToolsDeepLinksViaExtensibilityApi?.enabled)) {
1046
- const linkElement = this.maybeCreateLinkElement(String(userDetail.url));
1060
+ const linkElement = TimelineUIUtils.maybeCreateLinkElement(String(userDetail.url));
1047
1061
  if (linkElement) {
1048
1062
  contentHelper.appendElementRow(String(userDetail.description), linkElement);
1049
1063
  // Now remove so we don't render them in renderObjectJson.
@@ -84,7 +84,7 @@ export function createHiddenTracksOverlay(parsedTrace: Trace.TraceModel.ParsedTr
84
84
  delegate: callbacks.onShowTrackConfigurationMode,
85
85
  dismiss: true,
86
86
  buttonVariant: Buttons.Button.Variant.PRIMARY,
87
- }
87
+ },
88
88
  ],
89
89
  );
90
90
  infobarForTrace.setCloseCallback(() => {
@@ -163,7 +163,7 @@ export class ExportTraceOptions extends HTMLElement {
163
163
  ...this.#state,
164
164
  displayAnnotationsCheckbox: options.annotationsExist,
165
165
  displayResourceContentCheckbox: true,
166
- displaySourceMapsCheckbox: true
166
+ displaySourceMapsCheckbox: true,
167
167
  };
168
168
  }
169
169
 
@@ -144,15 +144,14 @@ export class LayoutShiftDetails extends UI.Widget.Widget {
144
144
  }
145
145
 
146
146
  override performUpdate(): Promise<void>|void {
147
- this.#view(
148
- {
149
- event: this.#event,
150
- parsedTrace: this.#parsedTrace,
151
- isFreshRecording: this.#isFreshRecording,
152
- togglePopover: e => this.#togglePopover(e),
153
- onEventClick: e => this.#handleTraceEventClick(e)
154
- },
155
- {}, this.contentElement);
147
+ this.#view({
148
+ event: this.#event,
149
+ parsedTrace: this.#parsedTrace,
150
+ isFreshRecording: this.#isFreshRecording,
151
+ togglePopover: e => this.#togglePopover(e),
152
+ onEventClick: e => this.#handleTraceEventClick(e),
153
+ },
154
+ {}, this.contentElement);
156
155
  }
157
156
  }
158
157
 
@@ -179,7 +179,7 @@ export class NetworkRequestTooltip extends UI.Widget.Widget {
179
179
  sdkNetworkRequest.networkRequest);
180
180
  const throttledTitle = wasThrottled ? i18nString(UIStrings.wasThrottled, {
181
181
  PH1: typeof wasThrottled.conditions.title === 'string' ? wasThrottled.conditions.title :
182
- wasThrottled.conditions.title()
182
+ wasThrottled.conditions.title(),
183
183
  }) :
184
184
  undefined;
185
185
 
@@ -70,7 +70,7 @@ export const TIMELINE_RANGE_SUMMARY_VIEW_DEFAULT_VIEW: View = (input, _output, t
70
70
  categories,
71
71
  total,
72
72
  isInAIWidget: input.isInAIWidget,
73
- }
73
+ },
74
74
  })}
75
75
  ></devtools-widget>
76
76
  ${input.thirdPartyTreeTemplate ?? Lit.nothing}
@@ -90,7 +90,7 @@ export class DuplicatedJavaScript extends BaseInsightComponent<DuplicatedJavaScr
90
90
  ],
91
91
  overlays,
92
92
  };
93
- })
93
+ }),
94
94
  };
95
95
  });
96
96
 
@@ -99,7 +99,7 @@ export class DuplicatedJavaScript extends BaseInsightComponent<DuplicatedJavaScr
99
99
  treemapButton = html`<devtools-button
100
100
  .variant=${Buttons.Button.Variant.OUTLINED}
101
101
  jslog=${VisualLogging.action(`timeline.treemap.${this.internalName}-insight`).track({
102
- click: true
102
+ click: true,
103
103
  })}
104
104
  @click=${this.#openTreemap.bind(this)}
105
105
  >View Treemap</devtools-button>`;
@@ -121,7 +121,7 @@ export class LCPBreakdown extends BaseInsightComponent<LCPBreakdownInsightModel>
121
121
  headers: [i18nString(UIStrings.subpart), i18nString(UIStrings.duration)],
122
122
  rows,
123
123
  }})}
124
- </div>`
124
+ </div>`,
125
125
  ];
126
126
  // clang-format on
127
127
 
@@ -82,7 +82,7 @@ export class LegacyJavaScript extends BaseInsightComponent<LegacyJavaScriptInsig
82
82
  () => this.#revealLocation(
83
83
  script, match)} title=${`${script.url}:${match.line}:${match.column}`}>${match.name}</span>`],
84
84
  };
85
- })
85
+ }),
86
86
  };
87
87
  });
88
88
 
@@ -131,7 +131,7 @@ export class SlowCSSSelector extends BaseInsightComponent<SlowCSSSelectorInsight
131
131
  insight: this,
132
132
  headers: [`${i18nString(UIStrings.topSelectorElapsedTime)}: ${time(Trace.Types.Timing.Micro(selector['elapsed (us)']))}`],
133
133
  rows: [{
134
- values: [html`${selector.selector} ${Lit.Directives.until(this.getSelectorLinks(cssModel, selector))}`]}]
134
+ values: [html`${selector.selector} ${Lit.Directives.until(this.getSelectorLinks(cssModel, selector))}`]}],
135
135
  }})}
136
136
  </div>
137
137
  `);
@@ -149,7 +149,7 @@ export class SlowCSSSelector extends BaseInsightComponent<SlowCSSSelectorInsight
149
149
  headers: [`${i18nString(UIStrings.topSelectorMatchAttempt)}: ${selector['match_attempts']}`],
150
150
  rows: [{
151
151
  values: [html`${selector.selector} ${Lit.Directives.until(this.getSelectorLinks(cssModel, selector))}` as unknown as string],
152
- }]
152
+ }],
153
153
  }})}
154
154
  </div>
155
155
  `);
@@ -914,6 +914,10 @@ export class Overlays extends EventTarget {
914
914
  return;
915
915
  }
916
916
 
917
+ const isPositionedByEvent =
918
+ overlay.entry && (overlay.renderLocation === 'BELOW_EVENT' || overlay.renderLocation === 'ABOVE_EVENT');
919
+ element.classList.toggle('positioned-by-event', Boolean(isPositionedByEvent));
920
+
917
921
  const component = element.querySelector('.devtools-timespan-breakdown-overlay');
918
922
 
919
923
  if (!component) {
@@ -981,6 +985,7 @@ export class Overlays extends EventTarget {
981
985
 
982
986
  const top = bottom - height;
983
987
  widget.top = top;
988
+ widget.maxHeight = height;
984
989
  }
985
990
  }
986
991
  }
@@ -30,13 +30,18 @@ const renderSection =
30
30
  const style = Directives.styleMap(
31
31
  {left: position ? `${position.left}px` : undefined, width: position ? `${position.width}px` : undefined});
32
32
 
33
+ const durationText =
34
+ section.showDuration ? i18n.TimeUtilities.formatMicroSecondsAsMillisFixed(section.bounds.range) : '';
35
+ const labelText = section.label instanceof HTMLElement ? (section.label.textContent || '') : section.label;
36
+ const tooltip = durationText ? `${durationText} ${labelText}` : labelText;
37
+
33
38
  // clang-format off
34
39
  return html`
35
- <div class="timespan-breakdown-overlay-section" style=${style}>
40
+ <div class="timespan-breakdown-overlay-section" style=${style} title=${tooltip}>
36
41
  <div class="timespan-breakdown-overlay-label">
37
42
  ${
38
43
  section.showDuration ?
39
- html`<span class="duration-text">${i18n.TimeUtilities.formatMicroSecondsAsMillisFixed(section.bounds.range)}</span> ` :
44
+ html`<span class="duration-text">${durationText}</span> ` :
40
45
  nothing
41
46
  }
42
47
  <span class="section-label-text">${section.label}</span>
@@ -47,11 +52,11 @@ const renderSection =
47
52
 
48
53
  export const DEFAULT_VIEW = (input: Input, _output: undefined, target: HTMLElement): void => {
49
54
  const style = Directives.styleMap({
50
- left: input.left ? `${input.left}px` : undefined,
51
- width: input.width ? `${input.width}px` : undefined,
52
- top: input.top ? `${input.top}px` : undefined,
53
- maxHeight: input.maxHeight ? `${input.maxHeight}px` : undefined,
54
- position: 'relative'
55
+ left: input.left !== null ? `${input.left}px` : undefined,
56
+ width: input.width !== null ? `${input.width}px` : undefined,
57
+ top: input.top !== null ? `${input.top}px` : undefined,
58
+ maxHeight: input.maxHeight !== null ? `${input.maxHeight}px` : undefined,
59
+ position: 'relative',
55
60
  });
56
61
  // clang-format off
57
62
  render(
@@ -252,7 +257,7 @@ export class TimespanBreakdownOverlay extends UI.Widget.Widget {
252
257
  width: this.#width,
253
258
  top: this.#top,
254
259
  maxHeight: this.#maxHeight,
255
- className
260
+ className,
256
261
  }, undefined, this.contentElement);
257
262
 
258
263
  this.checkSectionLabelPositioning();
@@ -6,6 +6,7 @@
6
6
 
7
7
  @scope to (devtools-widget > *) {
8
8
  .timespan-breakdown-overlay-section {
9
+ pointer-events: auto;
9
10
  border: solid;
10
11
  border-color: var(--sys-color-on-surface);
11
12
  border-width: 4px 1px 0;