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,20 +1,22 @@
1
1
  // Copyright 2014 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
- /* eslint-disable @devtools/no-imperative-dom-api */
5
4
 
6
- import '../../ui/legacy/legacy.js';
5
+ import '../../ui/legacy/components/data_grid/data_grid.js';
7
6
 
8
7
  import * as Common from '../../core/common/common.js';
9
8
  import * as Host from '../../core/host/host.js';
10
9
  import * as i18n from '../../core/i18n/i18n.js';
11
10
  import * as SDK from '../../core/sdk/sdk.js';
12
- import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
11
+ import * as Buttons from '../../ui/components/buttons/buttons.js';
13
12
  import * as UI from '../../ui/legacy/legacy.js';
13
+ import {Directives, html, render} from '../../ui/lit/lit.js';
14
14
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
15
15
 
16
16
  import eventSourceMessagesViewStyles from './eventSourceMessagesView.css.js';
17
17
 
18
+ const {repeat} = Directives;
19
+
18
20
  const UIStrings = {
19
21
  /**
20
22
  * @description Text in Event Source Messages View of the Network panel
@@ -51,67 +53,89 @@ const UIStrings = {
51
53
  } as const;
52
54
  const str_ = i18n.i18n.registerUIStrings('panels/network/EventSourceMessagesView.ts', UIStrings);
53
55
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
56
+
57
+ export interface ViewInput {
58
+ messages: readonly SDK.NetworkRequest.EventSourceMessage[];
59
+ filterSetting: Common.Settings.Setting<string>;
60
+ onClear: () => void;
61
+ onFilterChanged: (event: Event) => void;
62
+ onRowContextMenu: (message: SDK.NetworkRequest.EventSourceMessage, event: MouseEvent) => void;
63
+ }
64
+
65
+ export type View = (input: ViewInput, output: unknown, target: HTMLElement) => void;
66
+
67
+ export const DEFAULT_VIEW: View = (input, _output, target) => {
68
+ // clang-format off
69
+ render(html`
70
+ <style>
71
+ ${eventSourceMessagesViewStyles}
72
+ </style>
73
+ <div class="event-source-messages-view">
74
+ <devtools-toolbar>
75
+ <devtools-button title=${i18nString(UIStrings.clearAll)} .iconName=${'clear'}
76
+ @click=${input.onClear}
77
+ .variant=${Buttons.Button.Variant.TOOLBAR}
78
+ .jslogContext=${'clear'}></devtools-button>
79
+ <devtools-toolbar-input
80
+ type="filter"
81
+ placeholder=${i18nString(UIStrings.filterByRegex)}
82
+ @change=${input.onFilterChanged}
83
+ .value=${input.filterSetting.get()}
84
+ style="flex-grow: 0.4"></devtools-toolbar-input>
85
+ </devtools-toolbar>
86
+ <devtools-data-grid name=${i18nString(UIStrings.eventSource)} autoscroll striped
87
+ .template=${html`
88
+ <table>
89
+ <thead>
90
+ <tr>
91
+ <th id="id" weight="8" sortable>${i18nString(UIStrings.id)}</th>
92
+ <th id="type" weight="8" sortable>${i18nString(UIStrings.type)}</th>
93
+ <th id="data" weight="88">${i18nString(UIStrings.data)}</th>
94
+ <th id="time" weight="8" sortable sort="ascending">${i18nString(UIStrings.time)}</th>
95
+ </tr>
96
+ </thead>
97
+ <tbody>
98
+ ${repeat(input.messages, message => message, message => {
99
+ const date = new Date(message.time * 1000);
100
+ return html`<tr @contextmenu=${(e: MouseEvent) => {
101
+ e.preventDefault();
102
+ input.onRowContextMenu(message, e);
103
+ }}>
104
+ <td>${message.eventId}</td>
105
+ <td>${message.eventName}</td>
106
+ <td>${message.data}</td>
107
+ <td title=${date.toLocaleString()} data-value=${message.time}>${formatTime(date)}</td></tr>`;
108
+ })}
109
+ </tbody>
110
+ </table>
111
+ `}>
112
+ </devtools-data-grid>
113
+ </div>
114
+ `, target);
115
+ // clang-format on
116
+ };
117
+
54
118
  export class EventSourceMessagesView extends UI.Widget.VBox {
55
119
  private readonly request: SDK.NetworkRequest.NetworkRequest;
56
- private dataGrid: DataGrid.SortableDataGrid.SortableDataGrid<EventSourceMessageNode>;
57
- private readonly mainToolbar: UI.Toolbar.Toolbar;
58
- private readonly clearAllButton: UI.Toolbar.ToolbarButton;
59
- private readonly filterTextInput: UI.Toolbar.ToolbarInput;
60
- private filterRegex: RegExp|null;
120
+ private messageFilterSetting: Common.Settings.Setting<string>;
121
+ private filterRegex: RegExp|null = null;
122
+ #view: View;
61
123
 
62
- private messageFilterSetting: Common.Settings.Setting<string> =
63
- Common.Settings.Settings.instance().createSetting('network-event-source-message-filter', '');
64
-
65
- constructor(request: SDK.NetworkRequest.NetworkRequest) {
124
+ constructor(request: SDK.NetworkRequest.NetworkRequest, view: View = DEFAULT_VIEW) {
66
125
  super({jslog: `${VisualLogging.pane('event-stream').track({resize: true})}`});
67
- this.registerRequiredCSS(eventSourceMessagesViewStyles);
68
-
69
- this.element.classList.add('event-source-messages-view');
126
+ this.#view = view;
70
127
  this.request = request;
71
128
 
72
- this.mainToolbar = this.element.createChild('devtools-toolbar');
73
-
74
- this.clearAllButton = new UI.Toolbar.ToolbarButton(i18nString(UIStrings.clearAll), 'clear');
75
- this.clearAllButton.addEventListener(UI.Toolbar.ToolbarButton.Events.CLICK, this.clearMessages, this);
76
- this.mainToolbar.appendToolbarItem(this.clearAllButton);
77
-
78
- const placeholder = i18nString(UIStrings.filterByRegex);
79
- this.filterTextInput = new UI.Toolbar.ToolbarFilter(placeholder, 0.4);
80
- this.filterTextInput.addEventListener(UI.Toolbar.ToolbarInput.Event.TEXT_CHANGED, this.updateFilterSetting, this);
129
+ this.messageFilterSetting =
130
+ Common.Settings.Settings.instance().createSetting('network-event-source-message-filter', '');
81
131
  const filter = this.messageFilterSetting.get();
82
- this.filterRegex = null;
83
132
  this.setFilter(filter);
84
- if (filter) {
85
- this.filterTextInput.setValue(filter);
86
- }
87
- this.mainToolbar.appendToolbarItem(this.filterTextInput);
88
-
89
- const columns: DataGrid.DataGrid.ColumnDescriptor[] = [
90
- {id: 'id', title: i18nString(UIStrings.id), sortable: true, weight: 8},
91
- {id: 'type', title: i18nString(UIStrings.type), sortable: true, weight: 8},
92
- {id: 'data', title: i18nString(UIStrings.data), sortable: false, weight: 88},
93
- {id: 'time', title: i18nString(UIStrings.time), sortable: true, weight: 8},
94
- ];
95
-
96
- this.dataGrid = new DataGrid.SortableDataGrid.SortableDataGrid({
97
- displayName: i18nString(UIStrings.eventSource),
98
- columns,
99
- });
100
- this.dataGrid.setStriped(true);
101
- this.dataGrid.setEnableAutoScrollToBottom(true);
102
- this.dataGrid.setRowContextMenuCallback(this.onRowContextMenu.bind(this));
103
- this.dataGrid.markColumnAsSortedBy('time', DataGrid.DataGrid.Order.Ascending);
104
- this.sortItems();
105
- this.dataGrid.addEventListener(DataGrid.DataGrid.Events.SORTING_CHANGED, this.sortItems, this);
106
-
107
- this.dataGrid.setName('event-source-messages-view');
108
- this.dataGrid.asWidget().show(this.element);
109
133
  }
110
134
 
111
135
  override wasShown(): void {
112
136
  super.wasShown();
113
- this.refresh();
114
137
  this.request.addEventListener(SDK.NetworkRequest.Events.EVENT_SOURCE_MESSAGE_ADDED, this.messageAdded, this);
138
+ this.requestUpdate();
115
139
  }
116
140
 
117
141
  override willHide(): void {
@@ -124,7 +148,7 @@ export class EventSourceMessagesView extends UI.Widget.VBox {
124
148
  if (!this.messageFilter(message)) {
125
149
  return;
126
150
  }
127
- this.dataGrid.insertChild(new EventSourceMessageNode(message));
151
+ this.requestUpdate();
128
152
  }
129
153
 
130
154
  private messageFilter(message: SDK.NetworkRequest.EventSourceMessage): boolean {
@@ -134,14 +158,15 @@ export class EventSourceMessagesView extends UI.Widget.VBox {
134
158
 
135
159
  private clearMessages(): void {
136
160
  clearMessageOffsets.set(this.request, this.request.eventSourceMessages().length);
137
- this.refresh();
161
+ this.requestUpdate();
138
162
  }
139
163
 
140
- private updateFilterSetting(): void {
141
- const text = this.filterTextInput.value();
164
+ private onFilterChanged(event: Event): void {
165
+ const inputElement = event.target as UI.Toolbar.ToolbarInputElement;
166
+ const text = inputElement.value;
142
167
  this.messageFilterSetting.set(text);
143
168
  this.setFilter(text);
144
- this.refresh();
169
+ this.requestUpdate();
145
170
  }
146
171
 
147
172
  private setFilter(text: string): void {
@@ -156,71 +181,37 @@ export class EventSourceMessagesView extends UI.Widget.VBox {
156
181
  }
157
182
  }
158
183
 
159
- private sortItems(): void {
160
- const sortColumnId = this.dataGrid.sortColumnId();
161
- if (!sortColumnId) {
162
- return;
163
- }
164
- const comparator =
165
- (Comparators[sortColumnId] as
166
- ((arg0: DataGrid.SortableDataGrid.SortableDataGridNode<EventSourceMessageNode>,
167
- arg1: DataGrid.SortableDataGrid.SortableDataGridNode<EventSourceMessageNode>) => number) |
168
- undefined);
169
- if (!comparator) {
170
- return;
171
- }
172
- this.dataGrid.sortNodes(comparator, !this.dataGrid.isSortOrderAscending());
173
- }
174
-
175
- private onRowContextMenu(
176
- contextMenu: UI.ContextMenu.ContextMenu,
177
- node: DataGrid.DataGrid.DataGridNode<DataGrid.ViewportDataGrid.ViewportDataGridNode<
178
- DataGrid.SortableDataGrid.SortableDataGridNode<EventSourceMessageNode>>>): void {
184
+ private onRowContextMenu(message: SDK.NetworkRequest.EventSourceMessage, event: MouseEvent): void {
185
+ const contextMenu = new UI.ContextMenu.ContextMenu(event);
179
186
  contextMenu.clipboardSection().appendItem(
180
187
  i18nString(UIStrings.copyMessage),
181
188
  Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText.bind(
182
- Host.InspectorFrontendHost.InspectorFrontendHostInstance, node.data.data),
189
+ Host.InspectorFrontendHost.InspectorFrontendHostInstance, message.data),
183
190
  {jslogContext: 'copy'});
191
+ void contextMenu.show();
184
192
  }
185
193
 
186
- refresh(): void {
187
- this.dataGrid.rootNode().removeChildren();
188
-
194
+ override performUpdate(): void {
189
195
  let messages = this.request.eventSourceMessages();
190
196
  const offset = clearMessageOffsets.get(this.request) || 0;
191
197
  messages = messages.slice(offset);
192
198
  messages = messages.filter(this.messageFilter.bind(this));
193
- messages.forEach(message => this.dataGrid.insertChild(new EventSourceMessageNode(message)));
194
- }
195
- }
196
199
 
197
- export class EventSourceMessageNode extends DataGrid.SortableDataGrid.SortableDataGridNode<EventSourceMessageNode> {
198
- readonly message: SDK.NetworkRequest.EventSourceMessage;
199
-
200
- constructor(message: SDK.NetworkRequest.EventSourceMessage) {
201
- const time = new Date(message.time * 1000);
202
- const timeText = ('0' + time.getHours()).substr(-2) + ':' + ('0' + time.getMinutes()).substr(-2) + ':' +
203
- ('0' + time.getSeconds()).substr(-2) + '.' + ('00' + time.getMilliseconds()).substr(-3);
204
- const timeNode = document.createElement('div');
205
- UI.UIUtils.createTextChild(timeNode, timeText);
206
- UI.Tooltip.Tooltip.install(timeNode, time.toLocaleString());
207
- super({id: message.eventId, type: message.eventName, data: message.data, time: timeNode});
208
- this.message = message;
200
+ const input: ViewInput = {
201
+ messages,
202
+ filterSetting: this.messageFilterSetting,
203
+ onClear: this.clearMessages.bind(this),
204
+ onFilterChanged: this.onFilterChanged.bind(this),
205
+ onRowContextMenu: this.onRowContextMenu.bind(this),
206
+ };
207
+
208
+ this.#view(input, {}, this.contentElement);
209
209
  }
210
210
  }
211
211
 
212
- function eventSourceMessageNodeComparator(
213
- fieldGetter: (arg0: SDK.NetworkRequest.EventSourceMessage) => (number | string), a: EventSourceMessageNode,
214
- b: EventSourceMessageNode): number {
215
- const aValue = fieldGetter(a.message);
216
- const bValue = fieldGetter(b.message);
217
- return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;
212
+ function formatTime(d: Date): string {
213
+ return ('0' + d.getHours()).substr(-2) + ':' + ('0' + d.getMinutes()).substr(-2) + ':' +
214
+ ('0' + d.getSeconds()).substr(-2) + '.' + ('00' + d.getMilliseconds()).substr(-3);
218
215
  }
219
216
 
220
- export const Comparators: Record<string, (arg0: EventSourceMessageNode, arg1: EventSourceMessageNode) => number> = {
221
- id: eventSourceMessageNodeComparator.bind(null, message => message.eventId),
222
- type: eventSourceMessageNodeComparator.bind(null, message => message.eventName),
223
- time: eventSourceMessageNodeComparator.bind(null, message => message.time),
224
- };
225
-
226
217
  const clearMessageOffsets = new WeakMap<SDK.NetworkRequest.NetworkRequest, number>();
@@ -72,7 +72,7 @@ const UIStrings = {
72
72
  /**
73
73
  * @description Text in Timeline UIUtils of the Performance panel
74
74
  */
75
- url: 'Url',
75
+ url: 'URL',
76
76
  /**
77
77
  * @description Column header in the Network log view of the Network panel
78
78
  */
@@ -137,7 +137,7 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
137
137
  NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER,
138
138
  {fillStyle: RequestTimeRangeNameToColor[NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER]});
139
139
  styleMap.set(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_PREPARATION, {
140
- fillStyle: RequestTimeRangeNameToColor[NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_PREPARATION]
140
+ fillStyle: RequestTimeRangeNameToColor[NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_PREPARATION],
141
141
  });
142
142
  styleMap.set(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH, {
143
143
  fillStyle: RequestTimeRangeNameToColor[NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH],
@@ -199,7 +199,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
199
199
  onCancel: input.onCancel,
200
200
  onBeginEdit: input.onBeginEdit,
201
201
  validator: val => input.validator(condition, val),
202
- lookUpRequestCount: input.lookUpRequestCount
202
+ lookUpRequestCount: input.lookUpRequestCount,
203
203
  })}
204
204
  </div>
205
205
  `)}
@@ -223,7 +223,7 @@ function renderItem({
223
223
  onCancel,
224
224
  onBeginEdit,
225
225
  validator,
226
- lookUpRequestCount
226
+ lookUpRequestCount,
227
227
  }: {
228
228
  condition: SDK.NetworkManager.RequestCondition,
229
229
  editing: boolean,
@@ -115,13 +115,13 @@ export const DEFAULT_VIEW: ViewFunction = (input, _output, target) => {
115
115
  ${input.requestCookies.cookies.length > 0 ? html`
116
116
  <devtools-widget ${widget(CookieTable.CookiesTable.CookiesTable, {
117
117
  cookiesData: input.requestCookies,
118
- inline: true
118
+ inline: true,
119
119
  })} class="cookie-table cookies-panel-item"></devtools-widget>
120
120
  ` : Lit.nothing}
121
121
 
122
122
  <div class="cookies-panel-item site-has-cookies-in-other-partition ${input.siteHasCookieInOtherPartition ? '' : 'hidden'}">
123
123
  ${uiI18n.getFormatLocalizedStringTemplate(str_, UIStrings.siteHasCookieInOtherPartition, {
124
- PH1: html`<devtools-link href="https://developer.chrome.com/en/docs/privacy-sandbox/chips/" .jslogContext=${'learn-more'}>${i18nString(UIStrings.learnMore)}</devtools-link>`
124
+ PH1: html`<devtools-link href="https://developer.chrome.com/en/docs/privacy-sandbox/chips/" .jslogContext=${'learn-more'}>${i18nString(UIStrings.learnMore)}</devtools-link>`,
125
125
  })}
126
126
  </div>
127
127
 
@@ -193,7 +193,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
193
193
  toReveal: input.toReveal,
194
194
  } as NetworkComponents.ResponseHeaderSection
195
195
  .ResponseHeaderSectionData}></devtools-early-hints-header-section>
196
- `
196
+ `,
197
197
  })}
198
198
  ${renderCategory({
199
199
  name: 'response-headers',
@@ -212,7 +212,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
212
212
  toReveal: input.toReveal,
213
213
  } as NetworkComponents.ResponseHeaderSection.ResponseHeaderSectionData} jslog=${
214
214
  VisualLogging.section('response-headers')}></devtools-response-header-section>
215
- `
215
+ `,
216
216
  })}
217
217
  ${renderCategory({
218
218
  name: 'request-headers',
@@ -228,11 +228,11 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
228
228
  <devtools-widget ${widget(NetworkComponents.RequestHeaderSection.RequestHeaderSection, {
229
229
  request: input.request,
230
230
  toReveal: input.toReveal,
231
- })} jslog=${VisualLogging.section('request-headers')}></devtools-widget>`
231
+ })} jslog=${VisualLogging.section('request-headers')}></devtools-widget>`,
232
232
  })}
233
233
  `,
234
- // clang-format on
235
- target, {container: {attributes: {jslog: `${VisualLogging.pane('headers').track({resize: true})}`}}});
234
+ // clang-format on
235
+ target, {container: {attributes: {jslog: `${VisualLogging.pane('headers').track({resize: true})}`}}});
236
236
  };
237
237
 
238
238
  /**
@@ -167,7 +167,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
167
167
  @contextmenu=${copyValueContextmenu(
168
168
  i18nString(UIStrings.copyValue),
169
169
  () => decodeURIComponent(param.value),
170
- 'copy-value'
170
+ 'copy-value',
171
171
  )}>
172
172
  ${param.name !== '' ? html`
173
173
  ${RequestPayloadView.formatParameter(param.name, 'payload-name', decodeParameters)}
@@ -175,7 +175,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
175
175
  ` : RequestPayloadView.formatParameter(
176
176
  i18nString(UIStrings.empty),
177
177
  'empty-request-payload',
178
- decodeParameters
178
+ decodeParameters,
179
179
  )}
180
180
  </li>
181
181
  `;
@@ -255,7 +255,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
255
255
  {
256
256
  decode: input.decodeQueryParameters,
257
257
  toggleDecode: () => input.setDecodeQueryParameters(!input.decodeQueryParameters),
258
- }
258
+ },
259
259
  )}
260
260
  @expanded=${(e: UI.TreeOutline.TreeViewElement.ExpandEvent) =>
261
261
  queryStringExpandedSetting.set(e.detail.expanded)}
@@ -287,7 +287,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
287
287
  {
288
288
  decode: input.decodeFormParameters,
289
289
  toggleDecode: () => input.setDecodeFormParameters(!input.decodeFormParameters),
290
- }
290
+ },
291
291
  )}
292
292
  @expanded=${(e: UI.TreeOutline.TreeViewElement.ExpandEvent) => formDataExpandedSetting.set(e.detail.expanded)}
293
293
  ?open=${formDataExpandedSetting.get()}
@@ -457,7 +457,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
457
457
 
458
458
  const throttledRequestTitle = input.wasThrottled ? i18nString(UIStrings.wasThrottled, {
459
459
  PH1: typeof input.wasThrottled.conditions.title === 'string' ? input.wasThrottled.conditions.title :
460
- input.wasThrottled.conditions.title()
460
+ input.wasThrottled.conditions.title(),
461
461
  }) :
462
462
  undefined;
463
463
 
@@ -486,7 +486,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
486
486
  <table
487
487
  class=${classes}
488
488
  jslog=${VisualLogging.pane('timing').track({
489
- resize: true
489
+ resize: true,
490
490
  })}>
491
491
  <colgroup>
492
492
  <col class=labels>
@@ -290,7 +290,7 @@ export class DirectSocketConnectionView extends UI.Widget.Widget<ShadowRoot> {
290
290
  },
291
291
  onCopyRow: () => {
292
292
  Host.userMetrics.actionTaken(Host.UserMetrics.Action.NetworkPanelCopyValue);
293
- }
293
+ },
294
294
  };
295
295
  this.#view(viewInput, undefined, this.contentElement);
296
296
  }
@@ -4,7 +4,16 @@
4
4
  * found in the LICENSE file.
5
5
  */
6
6
 
7
- .event-source-messages-view .data-grid {
8
- flex: auto;
9
- border: none;
7
+ @scope to (devtools-widget > *) {
8
+ .event-source-messages-view {
9
+ display: flex;
10
+ flex-direction: column;
11
+ height: 100%;
12
+ overflow: hidden;
13
+ }
14
+
15
+ .event-source-messages-view devtools-data-grid {
16
+ flex: auto;
17
+ border: none;
18
+ }
10
19
  }
@@ -78,7 +78,7 @@ table.network-timing-table > tr:not(.network-timing-table-header, .network-timin
78
78
  .network-timing-bar {
79
79
  position: absolute;
80
80
  min-width: 1px;
81
- inset: 0 attr(data-right %) 0 attr(data-left %); /* stylelint-disable-line declaration-property-value-no-unknown */
81
+ inset: 0 attr(data-right %) 0 attr(data-left %);
82
82
  }
83
83
 
84
84
  .network-timing-bar-title {
@@ -218,7 +218,7 @@ td.throttled {
218
218
  }
219
219
 
220
220
  .network-timing-bar.server-timing {
221
- background-color: attr(data-background type(<color>), var(--sys-color-neutral-container)); /* stylelint-disable-line declaration-property-value-no-unknown */
221
+ background-color: attr(data-background type(<color>), var(--sys-color-neutral-container));
222
222
  }
223
223
 
224
224
  tr.synthetic {
@@ -84,7 +84,7 @@ const DEFAULT_VIEW: PerformanceMonitorView = (input, output, target) => {
84
84
  <devtools-widget ${widget(ControlPane, {
85
85
  onMetricChanged: input.onMetricChanged,
86
86
  chartsInfo: input.chartsInfo,
87
- metrics: input.metrics
87
+ metrics: input.metrics,
88
88
  })} class=${classMap({suspended: input.suspended})}></devtools-widget>
89
89
  <div class="perfmon-chart-container ${classMap({suspended: input.suspended})}">
90
90
  <canvas tabindex="-1" aria-label=${i18nString(UIStrings.graphsDisplayingARealtimeViewOf)}
@@ -36,7 +36,7 @@ import * as Platform from '../../core/platform/platform.js';
36
36
  import type * as CPUProfile from '../../models/cpu_profile/cpu_profile.js';
37
37
  import type * as UI from '../../ui/legacy/legacy.js';
38
38
 
39
- import {type Formatter, ProfileDataGridNode, ProfileDataGridTree} from './ProfileDataGrid.js';
39
+ import {type Formatter, ProfileDataGridTree, ProfileEntry} from './ProfileDataGrid.js';
40
40
  import type {TopDownProfileDataGridTree} from './TopDownProfileDataGrid.js';
41
41
 
42
42
  export interface NodeInfo {
@@ -45,7 +45,7 @@ export interface NodeInfo {
45
45
  totalAccountedFor: boolean;
46
46
  }
47
47
 
48
- export class BottomUpProfileDataGridNode extends ProfileDataGridNode {
48
+ export class BottomUpProfileEntry extends ProfileEntry {
49
49
  remainingNodeInfos: NodeInfo[]|undefined;
50
50
 
51
51
  constructor(profileNode: CPUProfile.ProfileTreeModel.ProfileNode, owningTree: TopDownProfileDataGridTree) {
@@ -53,7 +53,7 @@ export class BottomUpProfileDataGridNode extends ProfileDataGridNode {
53
53
  this.remainingNodeInfos = [];
54
54
  }
55
55
 
56
- static sharedPopulate(container: BottomUpProfileDataGridNode|BottomUpProfileDataGridTree): void {
56
+ static sharedPopulate(container: BottomUpProfileEntry|BottomUpProfileDataGridTree): void {
57
57
  if (container.remainingNodeInfos === undefined) {
58
58
  return;
59
59
  }
@@ -64,8 +64,7 @@ export class BottomUpProfileDataGridNode extends ProfileDataGridNode {
64
64
  const nodeInfo = remainingNodeInfos[index];
65
65
  const ancestor = nodeInfo.ancestor;
66
66
  const focusNode = nodeInfo.focusNode;
67
- let child: BottomUpProfileDataGridNode|(BottomUpProfileDataGridNode | null) =
68
- (container.findChild(ancestor) as BottomUpProfileDataGridNode | null);
67
+ let child: BottomUpProfileEntry|null = (container.findChild(ancestor) as BottomUpProfileEntry | null);
69
68
 
70
69
  // If we already have this child, then merge the data together.
71
70
  if (child) {
@@ -77,7 +76,7 @@ export class BottomUpProfileDataGridNode extends ProfileDataGridNode {
77
76
  child.total += focusNode.total;
78
77
  }
79
78
  } else {
80
- child = new BottomUpProfileDataGridNode(ancestor, (container.tree as TopDownProfileDataGridTree));
79
+ child = new BottomUpProfileEntry(ancestor, (container.tree as TopDownProfileDataGridTree));
81
80
 
82
81
  if (ancestor !== focusNode) {
83
82
  // But the actual statistics from the "root" node (bottom of the callstack).
@@ -101,16 +100,16 @@ export class BottomUpProfileDataGridNode extends ProfileDataGridNode {
101
100
  delete container.remainingNodeInfos;
102
101
  }
103
102
 
104
- takePropertiesFromProfileDataGridNode(profileDataGridNode: ProfileDataGridNode): void {
103
+ takePropertiesFromProfileEntry(profileEntry: ProfileEntry): void {
105
104
  this.save();
106
- this.self = profileDataGridNode.self;
107
- this.total = profileDataGridNode.total;
105
+ this.self = profileEntry.self;
106
+ this.total = profileEntry.total;
108
107
  }
109
108
 
110
109
  /**
111
110
  * When focusing, we keep just the members of the callstack.
112
111
  */
113
- keepOnlyChild(child: ProfileDataGridNode): void {
112
+ keepOnlyChild(child: ProfileEntry): void {
114
113
  this.save();
115
114
 
116
115
  this.removeChildren();
@@ -128,7 +127,7 @@ export class BottomUpProfileDataGridNode extends ProfileDataGridNode {
128
127
  let index = this.children.length;
129
128
 
130
129
  while (index--) {
131
- (children[index] as BottomUpProfileDataGridNode).exclude(aCallUID);
130
+ (children[index] as BottomUpProfileEntry).exclude(aCallUID);
132
131
  }
133
132
 
134
133
  const child = this.childrenByCallUID.get(aCallUID);
@@ -146,13 +145,13 @@ export class BottomUpProfileDataGridNode extends ProfileDataGridNode {
146
145
  }
147
146
  }
148
147
 
149
- override merge(child: ProfileDataGridNode, shouldAbsorb: boolean): void {
148
+ override merge(child: ProfileEntry, shouldAbsorb: boolean): void {
150
149
  this.self -= child.self;
151
150
  super.merge(child, shouldAbsorb);
152
151
  }
153
152
 
154
153
  override populateChildren(): void {
155
- BottomUpProfileDataGridNode.sharedPopulate(this);
154
+ BottomUpProfileEntry.sharedPopulate(this);
156
155
  }
157
156
 
158
157
  willHaveChildren(profileNode: CPUProfile.ProfileTreeModel.ProfileNode): boolean {
@@ -231,7 +230,7 @@ export class BottomUpProfileDataGridTree extends ProfileDataGridTree {
231
230
  }
232
231
 
233
232
  // Populate the top level nodes.
234
- ProfileDataGridNode.populate(this);
233
+ ProfileEntry.populate(this);
235
234
 
236
235
  return this;
237
236
  }
@@ -239,32 +238,33 @@ export class BottomUpProfileDataGridTree extends ProfileDataGridTree {
239
238
  /**
240
239
  * When focusing, we keep the entire callstack up to this ancestor.
241
240
  */
242
- override focus(profileDataGridNode: ProfileDataGridNode): void {
241
+ override focus(profileDataGridNode: ProfileEntry): void {
243
242
  if (!profileDataGridNode) {
244
243
  return;
245
244
  }
246
245
 
247
246
  this.save();
248
247
 
249
- let currentNode: ProfileDataGridNode = profileDataGridNode;
250
- let focusNode: (ProfileDataGridNode&BottomUpProfileDataGridNode)|ProfileDataGridNode = profileDataGridNode;
248
+ let currentNode: ProfileEntry = profileDataGridNode;
249
+ let focusNode: (ProfileEntry&BottomUpProfileEntry)|ProfileEntry = profileDataGridNode;
251
250
 
252
- while (currentNode.parent && (currentNode instanceof BottomUpProfileDataGridNode)) {
253
- currentNode.takePropertiesFromProfileDataGridNode(profileDataGridNode);
251
+ while (currentNode instanceof BottomUpProfileEntry && currentNode.parent) {
252
+ currentNode.takePropertiesFromProfileEntry(profileDataGridNode);
254
253
 
255
254
  focusNode = currentNode;
256
- currentNode = (currentNode.parent as ProfileDataGridNode);
255
+ currentNode = (currentNode.parent as ProfileEntry);
257
256
 
258
- if (currentNode instanceof BottomUpProfileDataGridNode) {
257
+ if (currentNode instanceof BottomUpProfileEntry) {
259
258
  currentNode.keepOnlyChild(focusNode);
260
259
  }
261
260
  }
262
261
 
263
- this.children = [focusNode];
262
+ this.removeChildren();
263
+ this.appendChild(focusNode);
264
264
  this.total = profileDataGridNode.total;
265
265
  }
266
266
 
267
- override exclude(profileDataGridNode: ProfileDataGridNode): void {
267
+ override exclude(profileDataGridNode: ProfileEntry): void {
268
268
  if (!profileDataGridNode) {
269
269
  return;
270
270
  }
@@ -284,15 +284,11 @@ export class BottomUpProfileDataGridTree extends ProfileDataGridTree {
284
284
  const count = children.length;
285
285
 
286
286
  for (let index = 0; index < count; ++index) {
287
- (children[index] as BottomUpProfileDataGridNode).exclude(excludedCallUID);
288
- }
289
-
290
- if (this.lastComparator) {
291
- this.sort(this.lastComparator, true);
287
+ (children[index] as BottomUpProfileEntry).exclude(excludedCallUID);
292
288
  }
293
289
  }
294
290
 
295
291
  override populateChildren(): void {
296
- BottomUpProfileDataGridNode.sharedPopulate(this);
292
+ BottomUpProfileEntry.sharedPopulate(this);
297
293
  }
298
294
  }