chrome-devtools-frontend 1.0.1526203 → 1.0.1528866

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 (328) hide show
  1. package/docs/ui_engineering.md +159 -0
  2. package/eslint.config.mjs +6 -1
  3. package/front_end/core/i18n/i18nImpl.ts +5 -0
  4. package/front_end/core/protocol_client/protocol_client.ts +1 -1
  5. package/front_end/core/root/Runtime.ts +28 -4
  6. package/front_end/core/sdk/CSSMatchedStyles.ts +50 -7
  7. package/front_end/core/sdk/CSSRule.ts +35 -6
  8. package/front_end/core/sdk/ChildTargetManager.ts +2 -0
  9. package/front_end/core/sdk/Connections.ts +2 -1
  10. package/front_end/core/sdk/DOMModel.ts +4 -0
  11. package/front_end/core/sdk/DebuggerModel.ts +5 -1
  12. package/front_end/core/sdk/NetworkManager.ts +214 -31
  13. package/front_end/core/sdk/PreloadingModel.ts +82 -17
  14. package/front_end/core/sdk/RehydratingConnection.snapshot.txt +1 -1
  15. package/front_end/core/sdk/RehydratingConnection.ts +29 -4
  16. package/front_end/core/sdk/ScopeTreeCache.ts +8 -3
  17. package/front_end/core/sdk/SourceMap.ts +37 -11
  18. package/front_end/core/sdk/SourceMapManager.ts +13 -2
  19. package/front_end/core/sdk/SourceMapScopesInfo.ts +17 -0
  20. package/front_end/core/sdk/TargetManager.ts +0 -22
  21. package/front_end/core/sdk/TraceObject.ts +8 -7
  22. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +81 -0
  23. package/front_end/entrypoints/inspector_main/InspectorMain.ts +3 -1
  24. package/front_end/entrypoints/main/GlobalAiButton.ts +1 -0
  25. package/front_end/entrypoints/main/MainImpl.ts +20 -25
  26. package/front_end/generated/InspectorBackendCommands.js +4 -3
  27. package/front_end/generated/protocol-mapping.d.ts +3 -1
  28. package/front_end/generated/protocol-proxy-api.d.ts +3 -1
  29. package/front_end/generated/protocol.ts +17 -3
  30. package/front_end/models/ai_assistance/BuiltInAi.ts +111 -0
  31. package/front_end/models/ai_assistance/ai_assistance.ts +53 -24
  32. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +105 -0
  33. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +6 -1
  34. package/front_end/models/extensions/ExtensionView.ts +3 -0
  35. package/front_end/models/javascript_metadata/NativeFunctions.js +23 -27
  36. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +31 -29
  37. package/front_end/models/persistence/EditFileSystemView.ts +1 -0
  38. package/front_end/models/source_map_scopes/NamesResolver.ts +5 -11
  39. package/front_end/models/stack_trace/Trie.ts +9 -0
  40. package/front_end/models/trace/lantern/types/Lantern.ts +1 -1
  41. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -0
  42. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -0
  43. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +120 -113
  44. package/front_end/panels/ai_assistance/PatchWidget.ts +9 -8
  45. package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +2 -0
  46. package/front_end/panels/ai_assistance/components/ChatView.ts +29 -29
  47. package/front_end/panels/ai_assistance/components/UserActionRow.ts +1 -0
  48. package/front_end/panels/animation/AnimationTimeline.ts +1 -0
  49. package/front_end/panels/application/CookieItemsView.ts +1 -0
  50. package/front_end/panels/application/KeyValueStorageItemsView.ts +1 -0
  51. package/front_end/panels/application/ServiceWorkerCacheViews.ts +2 -0
  52. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +11 -5
  53. package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +2 -2
  54. package/front_end/panels/application/preloading/components/PreloadingString.ts +7 -5
  55. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +22 -10
  56. package/front_end/panels/changes/CombinedDiffView.ts +1 -0
  57. package/front_end/panels/console/ConsoleInsightTeaser.ts +106 -0
  58. package/front_end/panels/console/ConsolePanel.ts +2 -0
  59. package/front_end/panels/console/ConsolePrompt.ts +12 -2
  60. package/front_end/panels/console/ConsoleSidebar.ts +1 -1
  61. package/front_end/panels/console/ConsoleView.ts +12 -0
  62. package/front_end/panels/console/ConsoleViewMessage.ts +27 -0
  63. package/front_end/panels/{explain → console}/PromptBuilder.ts +12 -7
  64. package/front_end/panels/console/console.ts +6 -0
  65. package/front_end/panels/console/consoleInsightTeaser.css +55 -0
  66. package/front_end/panels/coverage/CoverageListView.ts +141 -277
  67. package/front_end/panels/coverage/CoverageView.ts +330 -324
  68. package/front_end/panels/coverage/coverageView.css +17 -0
  69. package/front_end/panels/elements/ComputedStyleWidget.ts +1 -0
  70. package/front_end/panels/elements/LayoutPane.ts +1 -0
  71. package/front_end/panels/elements/NodeStackTraceWidget.ts +1 -0
  72. package/front_end/panels/elements/StylePropertyTreeElement.ts +5 -1
  73. package/front_end/panels/elements/stylePropertiesTreeOutline.css +17 -0
  74. package/front_end/panels/emulation/DeviceModeView.ts +2 -0
  75. package/front_end/panels/explain/ActionDelegate.ts +1 -2
  76. package/front_end/panels/explain/components/ConsoleInsight.ts +14 -12
  77. package/front_end/panels/explain/explain.ts +0 -1
  78. package/front_end/panels/js_timeline/js_timeline-meta.ts +1 -1
  79. package/front_end/panels/layer_viewer/Layers3DView.ts +2 -0
  80. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +1 -0
  81. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +12 -19
  82. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +27 -43
  83. package/front_end/panels/media/MainView.ts +1 -0
  84. package/front_end/panels/media/TickingFlameChart.ts +2 -0
  85. package/front_end/panels/network/BlockedURLsPane.ts +111 -85
  86. package/front_end/panels/network/EventSourceMessagesView.ts +1 -0
  87. package/front_end/panels/network/NetworkItemView.ts +1 -0
  88. package/front_end/panels/network/NetworkLogView.ts +9 -7
  89. package/front_end/panels/network/NetworkOverview.ts +1 -0
  90. package/front_end/panels/network/RequestCookiesView.ts +1 -0
  91. package/front_end/panels/network/RequestHTMLView.ts +1 -0
  92. package/front_end/panels/network/RequestInitiatorView.ts +1 -0
  93. package/front_end/panels/network/RequestPayloadView.ts +1 -0
  94. package/front_end/panels/network/RequestPreviewView.ts +1 -0
  95. package/front_end/panels/network/RequestResponseView.ts +2 -1
  96. package/front_end/panels/network/RequestTimingView.ts +2 -0
  97. package/front_end/panels/network/ResourceDirectSocketChunkView.ts +1 -0
  98. package/front_end/panels/network/ResourceWebSocketFrameView.ts +1 -0
  99. package/front_end/panels/network/components/RequestHeadersView.ts +2 -0
  100. package/front_end/panels/network/components/RequestTrustTokensView.ts +2 -0
  101. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +2 -0
  102. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +2 -0
  103. package/front_end/panels/profiler/HeapSnapshotView.ts +7 -0
  104. package/front_end/panels/profiler/IsolateSelector.ts +1 -0
  105. package/front_end/panels/profiler/LiveHeapProfileView.ts +1 -0
  106. package/front_end/panels/profiler/ProfileView.ts +1 -0
  107. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +1 -0
  108. package/front_end/panels/recorder/RecorderPanel.ts +2 -0
  109. package/front_end/panels/screencast/ScreencastView.ts +1 -0
  110. package/front_end/panels/search/SearchView.ts +1 -0
  111. package/front_end/panels/settings/AISettingsTab.ts +3 -3
  112. package/front_end/panels/settings/WorkspaceSettingsTab.ts +2 -0
  113. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +2 -2
  114. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +12 -0
  115. package/front_end/panels/sources/BreakpointsView.ts +1 -0
  116. package/front_end/panels/sources/DebuggerPlugin.ts +1 -0
  117. package/front_end/panels/sources/UISourceCodeFrame.ts +17 -2
  118. package/front_end/panels/timeline/README.md +2 -2
  119. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
  120. package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -3
  121. package/front_end/panels/timeline/TimelineLayersView.ts +1 -0
  122. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +114 -37
  123. package/front_end/panels/timeline/TimelinePanel.ts +43 -62
  124. package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
  125. package/front_end/panels/timeline/components/LiveMetricsView.ts +4 -8
  126. package/front_end/panels/timeline/components/Sidebar.ts +2 -0
  127. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -1
  128. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +7 -7
  129. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -1
  130. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +4 -4
  131. package/front_end/panels/web_audio/WebAudioView.ts +1 -0
  132. package/front_end/third_party/chromium/README.chromium +1 -1
  133. package/front_end/third_party/lighthouse/README.chromium +2 -2
  134. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1530 -2426
  135. package/front_end/third_party/lighthouse/locales/ar-XB.json +107 -455
  136. package/front_end/third_party/lighthouse/locales/ar.json +107 -455
  137. package/front_end/third_party/lighthouse/locales/bg.json +96 -444
  138. package/front_end/third_party/lighthouse/locales/ca.json +96 -444
  139. package/front_end/third_party/lighthouse/locales/cs.json +96 -444
  140. package/front_end/third_party/lighthouse/locales/da.json +96 -444
  141. package/front_end/third_party/lighthouse/locales/de.json +96 -444
  142. package/front_end/third_party/lighthouse/locales/el.json +96 -444
  143. package/front_end/third_party/lighthouse/locales/en-GB.json +96 -444
  144. package/front_end/third_party/lighthouse/locales/en-US.json +116 -467
  145. package/front_end/third_party/lighthouse/locales/en-XA.json +93 -441
  146. package/front_end/third_party/lighthouse/locales/en-XL.json +116 -467
  147. package/front_end/third_party/lighthouse/locales/es-419.json +96 -444
  148. package/front_end/third_party/lighthouse/locales/es.json +96 -444
  149. package/front_end/third_party/lighthouse/locales/fi.json +96 -444
  150. package/front_end/third_party/lighthouse/locales/fil.json +96 -444
  151. package/front_end/third_party/lighthouse/locales/fr.json +96 -444
  152. package/front_end/third_party/lighthouse/locales/he.json +118 -466
  153. package/front_end/third_party/lighthouse/locales/hi.json +96 -444
  154. package/front_end/third_party/lighthouse/locales/hr.json +100 -448
  155. package/front_end/third_party/lighthouse/locales/hu.json +96 -444
  156. package/front_end/third_party/lighthouse/locales/id.json +96 -444
  157. package/front_end/third_party/lighthouse/locales/it.json +96 -444
  158. package/front_end/third_party/lighthouse/locales/ja.json +96 -444
  159. package/front_end/third_party/lighthouse/locales/ko.json +97 -445
  160. package/front_end/third_party/lighthouse/locales/lt.json +96 -444
  161. package/front_end/third_party/lighthouse/locales/lv.json +97 -445
  162. package/front_end/third_party/lighthouse/locales/nl.json +96 -444
  163. package/front_end/third_party/lighthouse/locales/no.json +96 -444
  164. package/front_end/third_party/lighthouse/locales/pl.json +96 -444
  165. package/front_end/third_party/lighthouse/locales/pt-PT.json +96 -444
  166. package/front_end/third_party/lighthouse/locales/pt.json +97 -445
  167. package/front_end/third_party/lighthouse/locales/ro.json +97 -445
  168. package/front_end/third_party/lighthouse/locales/ru.json +96 -444
  169. package/front_end/third_party/lighthouse/locales/sk.json +96 -444
  170. package/front_end/third_party/lighthouse/locales/sl.json +96 -444
  171. package/front_end/third_party/lighthouse/locales/sr-Latn.json +96 -444
  172. package/front_end/third_party/lighthouse/locales/sr.json +96 -444
  173. package/front_end/third_party/lighthouse/locales/sv.json +96 -444
  174. package/front_end/third_party/lighthouse/locales/ta.json +96 -444
  175. package/front_end/third_party/lighthouse/locales/te.json +97 -445
  176. package/front_end/third_party/lighthouse/locales/th.json +96 -444
  177. package/front_end/third_party/lighthouse/locales/tr.json +96 -444
  178. package/front_end/third_party/lighthouse/locales/uk.json +96 -444
  179. package/front_end/third_party/lighthouse/locales/vi.json +96 -444
  180. package/front_end/third_party/lighthouse/locales/zh-HK.json +96 -444
  181. package/front_end/third_party/lighthouse/locales/zh-TW.json +97 -445
  182. package/front_end/third_party/lighthouse/locales/zh.json +96 -444
  183. package/front_end/third_party/lighthouse/report/bundle.d.ts +8 -14
  184. package/front_end/third_party/lighthouse/report/bundle.js +10 -49
  185. package/front_end/third_party/lighthouse/report-assets/report-generator.mjs +1 -1
  186. package/front_end/third_party/web-vitals/README.chromium +5 -8
  187. package/front_end/third_party/web-vitals/package/README.md +191 -152
  188. package/front_end/third_party/web-vitals/package/dist/modules/attribution/index.d.ts +0 -1
  189. package/front_end/third_party/web-vitals/package/dist/modules/attribution/index.js +0 -1
  190. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.d.ts +2 -2
  191. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onCLS.js +45 -26
  192. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.d.ts +2 -2
  193. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFCP.js +3 -3
  194. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.d.ts +10 -10
  195. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +307 -206
  196. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +2 -2
  197. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +69 -49
  198. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.d.ts +2 -2
  199. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onTTFB.js +2 -2
  200. package/front_end/third_party/web-vitals/package/dist/modules/index.d.ts +0 -1
  201. package/front_end/third_party/web-vitals/package/dist/modules/index.js +0 -1
  202. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +33 -0
  203. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +111 -0
  204. package/front_end/third_party/web-vitals/package/dist/modules/lib/LCPEntryManager.d.ts +4 -0
  205. package/front_end/third_party/web-vitals/package/dist/modules/{attribution/deprecated.js → lib/LCPEntryManager.js} +6 -7
  206. package/front_end/third_party/web-vitals/package/dist/modules/lib/LayoutShiftManager.d.ts +6 -0
  207. package/front_end/third_party/web-vitals/package/dist/modules/lib/LayoutShiftManager.js +44 -0
  208. package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.js +1 -1
  209. package/front_end/third_party/web-vitals/package/dist/modules/lib/generateUniqueID.js +1 -1
  210. package/front_end/third_party/web-vitals/package/dist/modules/lib/getActivationStart.js +1 -1
  211. package/front_end/third_party/web-vitals/package/dist/modules/lib/getNavigationEntry.js +5 -7
  212. package/front_end/third_party/web-vitals/package/dist/modules/lib/getSelector.d.ts +1 -1
  213. package/front_end/third_party/web-vitals/package/dist/modules/lib/getSelector.js +9 -12
  214. package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.d.ts +1 -0
  215. package/front_end/third_party/web-vitals/package/dist/modules/lib/getVisibilityWatcher.js +52 -33
  216. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +0 -2
  217. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.js +2 -2
  218. package/front_end/third_party/web-vitals/package/dist/modules/lib/initUnique.d.ts +6 -0
  219. package/front_end/third_party/web-vitals/package/dist/modules/{deprecated.js → lib/initUnique.js} +11 -4
  220. package/front_end/third_party/web-vitals/package/dist/modules/lib/observe.js +3 -6
  221. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/interactionCountPolyfill.js +6 -6
  222. package/front_end/third_party/web-vitals/package/dist/modules/lib/{whenIdle.d.ts → whenIdleOrHidden.d.ts} +1 -1
  223. package/front_end/third_party/web-vitals/package/dist/modules/lib/{whenIdle.js → whenIdleOrHidden.js} +10 -8
  224. package/front_end/third_party/web-vitals/package/dist/modules/onCLS.js +17 -35
  225. package/front_end/third_party/web-vitals/package/dist/modules/onFCP.js +3 -5
  226. package/front_end/third_party/web-vitals/package/dist/modules/onINP.d.ts +9 -7
  227. package/front_end/third_party/web-vitals/package/dist/modules/onINP.js +27 -19
  228. package/front_end/third_party/web-vitals/package/dist/modules/onLCP.js +33 -26
  229. package/front_end/third_party/web-vitals/package/dist/modules/onTTFB.js +2 -4
  230. package/front_end/third_party/web-vitals/package/dist/modules/types/base.d.ts +6 -5
  231. package/front_end/third_party/web-vitals/package/dist/modules/types/cls.d.ts +5 -3
  232. package/front_end/third_party/web-vitals/package/dist/modules/types/inp.d.ts +80 -33
  233. package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +6 -2
  234. package/front_end/third_party/web-vitals/package/dist/modules/types.d.ts +28 -4
  235. package/front_end/third_party/web-vitals/package/dist/modules/types.js +0 -1
  236. package/front_end/third_party/web-vitals/package/package.json +4 -10
  237. package/front_end/third_party/web-vitals/package/src/attribution/index.ts +0 -1
  238. package/front_end/third_party/web-vitals/package/src/attribution/onCLS.ts +58 -33
  239. package/front_end/third_party/web-vitals/package/src/attribution/onFCP.ts +4 -4
  240. package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +382 -258
  241. package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +96 -69
  242. package/front_end/third_party/web-vitals/package/src/attribution/onTTFB.ts +3 -3
  243. package/front_end/third_party/web-vitals/package/src/index.ts +0 -1
  244. package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +146 -0
  245. package/front_end/third_party/web-vitals/package/src/{attribution/deprecated.ts → lib/LCPEntryManager.ts} +6 -9
  246. package/front_end/third_party/web-vitals/package/src/lib/LayoutShiftManager.ts +50 -0
  247. package/front_end/third_party/web-vitals/package/src/lib/bindReporter.ts +1 -1
  248. package/front_end/third_party/web-vitals/package/src/lib/generateUniqueID.ts +1 -1
  249. package/front_end/third_party/web-vitals/package/src/lib/getActivationStart.ts +1 -1
  250. package/front_end/third_party/web-vitals/package/src/lib/getNavigationEntry.ts +5 -8
  251. package/front_end/third_party/web-vitals/package/src/lib/getSelector.ts +12 -12
  252. package/front_end/third_party/web-vitals/package/src/lib/getVisibilityWatcher.ts +57 -35
  253. package/front_end/third_party/web-vitals/package/src/lib/initMetric.ts +2 -2
  254. package/front_end/third_party/web-vitals/package/src/{deprecated.ts → lib/initUnique.ts} +14 -8
  255. package/front_end/third_party/web-vitals/package/src/lib/observe.ts +3 -11
  256. package/front_end/third_party/web-vitals/package/src/lib/polyfills/interactionCountPolyfill.ts +12 -6
  257. package/front_end/third_party/web-vitals/package/src/lib/{whenIdle.ts → whenIdleOrHidden.ts} +10 -8
  258. package/front_end/third_party/web-vitals/package/src/onCLS.ts +17 -38
  259. package/front_end/third_party/web-vitals/package/src/onFCP.ts +3 -6
  260. package/front_end/third_party/web-vitals/package/src/onINP.ts +33 -28
  261. package/front_end/third_party/web-vitals/package/src/onLCP.ts +36 -29
  262. package/front_end/third_party/web-vitals/package/src/onTTFB.ts +2 -5
  263. package/front_end/third_party/web-vitals/package/src/types/base.ts +5 -5
  264. package/front_end/third_party/web-vitals/package/src/types/cls.ts +5 -3
  265. package/front_end/third_party/web-vitals/package/src/types/inp.ts +88 -33
  266. package/front_end/third_party/web-vitals/package/src/types/lcp.ts +6 -2
  267. package/front_end/third_party/web-vitals/package/src/types.ts +47 -4
  268. package/front_end/third_party/web-vitals/patches/0001-Add-onEachInteraction-to-onINP-options.patch +75 -0
  269. package/front_end/third_party/web-vitals/rebuild.sh +32 -18
  270. package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +5 -10
  271. package/front_end/third_party/web-vitals/web-vitals.ts +0 -2
  272. package/front_end/ui/components/buttons/Button.ts +1 -1
  273. package/front_end/ui/components/docs/console_insight/basic.ts +3 -2
  274. package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +2 -0
  275. package/front_end/ui/components/text_editor/TextEditor.ts +0 -2
  276. package/front_end/ui/legacy/EmptyWidget.ts +11 -1
  277. package/front_end/ui/legacy/InspectorView.ts +2 -0
  278. package/front_end/ui/legacy/SplitWidget.ts +2 -0
  279. package/front_end/ui/legacy/TabbedPane.ts +1 -0
  280. package/front_end/ui/legacy/TargetCrashedScreen.ts +1 -0
  281. package/front_end/ui/legacy/Toolbar.ts +25 -4
  282. package/front_end/ui/legacy/UIUtils.ts +28 -13
  283. package/front_end/ui/legacy/ViewManager.ts +1 -0
  284. package/front_end/ui/legacy/Widget.ts +5 -0
  285. package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +7 -20
  286. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +2 -0
  287. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +1 -0
  288. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +1 -1
  289. package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +1 -0
  290. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +1 -0
  291. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -0
  292. package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -0
  293. package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -0
  294. package/front_end/ui/legacy/components/source_frame/JSONView.ts +1 -0
  295. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +1 -0
  296. package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +9 -8
  297. package/front_end/ui/visual_logging/KnownContextValues.ts +17 -0
  298. package/mcp/README.md +7 -0
  299. package/mcp/mcp.ts +8 -0
  300. package/package.json +1 -1
  301. package/front_end/models/live-metrics/web-vitals-injected/OnEachInteraction.ts +0 -34
  302. package/front_end/third_party/web-vitals/package/attribution.d.ts +0 -16
  303. package/front_end/third_party/web-vitals/package/attribution.js +0 -18
  304. package/front_end/third_party/web-vitals/package/dist/modules/attribution/deprecated.d.ts +0 -7
  305. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFID.d.ts +0 -11
  306. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onFID.js +0 -46
  307. package/front_end/third_party/web-vitals/package/dist/modules/deprecated.d.ts +0 -5
  308. package/front_end/third_party/web-vitals/package/dist/modules/lib/interactions.d.ts +0 -31
  309. package/front_end/third_party/web-vitals/package/dist/modules/lib/interactions.js +0 -107
  310. package/front_end/third_party/web-vitals/package/dist/modules/lib/onHidden.d.ts +0 -1
  311. package/front_end/third_party/web-vitals/package/dist/modules/lib/onHidden.js +0 -22
  312. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/firstInputPolyfill.d.ts +0 -7
  313. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/firstInputPolyfill.js +0 -147
  314. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/getFirstHiddenTimePolyfill.d.ts +0 -1
  315. package/front_end/third_party/web-vitals/package/dist/modules/lib/polyfills/getFirstHiddenTimePolyfill.js +0 -25
  316. package/front_end/third_party/web-vitals/package/dist/modules/onFID.d.ts +0 -13
  317. package/front_end/third_party/web-vitals/package/dist/modules/onFID.js +0 -70
  318. package/front_end/third_party/web-vitals/package/dist/modules/types/fid.d.ts +0 -46
  319. package/front_end/third_party/web-vitals/package/dist/modules/types/fid.js +0 -16
  320. package/front_end/third_party/web-vitals/package/src/attribution/onFID.ts +0 -62
  321. package/front_end/third_party/web-vitals/package/src/lib/interactions.ts +0 -139
  322. package/front_end/third_party/web-vitals/package/src/lib/onHidden.ts +0 -23
  323. package/front_end/third_party/web-vitals/package/src/lib/polyfills/firstInputPolyfill.ts +0 -174
  324. package/front_end/third_party/web-vitals/package/src/onFID.ts +0 -105
  325. package/front_end/third_party/web-vitals/package/src/types/fid.ts +0 -65
  326. package/front_end/ui/components/text_editor/textEditor.css +0 -18
  327. package/front_end/ui/legacy/inlineButton.css +0 -22
  328. /package/front_end/entrypoints/{rehydrated_devtools_app/rehydrated_devtools_app.ts → trace_app/trace_app.ts} +0 -0
@@ -1,6 +1,7 @@
1
1
  // Copyright 2015 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 rulesdir/no-lit-render-outside-of-view */
4
5
  /* eslint-disable rulesdir/no-imperative-dom-api */
5
6
 
6
7
  import '../../ui/legacy/legacy.js';
@@ -12,10 +13,13 @@ import * as SDK from '../../core/sdk/sdk.js';
12
13
  import * as Logs from '../../models/logs/logs.js';
13
14
  import * as Buttons from '../../ui/components/buttons/buttons.js';
14
15
  import * as UI from '../../ui/legacy/legacy.js';
16
+ import {Directives, html, render} from '../../ui/lit/lit.js';
15
17
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
16
18
 
17
19
  import blockedURLsPaneStyles from './blockedURLsPane.css.js';
18
20
 
21
+ const {ref} = Directives;
22
+
19
23
  const UIStrings = {
20
24
  /**
21
25
  * @description Text to enable blocking of network requests
@@ -70,45 +74,81 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
70
74
  const NETWORK_REQUEST_BLOCKING_EXPLANATION_URL =
71
75
  'https://developer.chrome.com/docs/devtools/network-request-blocking' as Platform.DevToolsPath.UrlString;
72
76
 
77
+ const {bindToAction} = UI.UIUtils;
78
+
79
+ interface ViewInput {
80
+ list: UI.ListWidget.ListWidget<SDK.NetworkManager.RequestCondition>;
81
+ enabled: boolean;
82
+ toggleEnabled: () => void;
83
+ addPattern: () => void;
84
+ }
85
+ type View = (input: ViewInput, output: object, target: HTMLElement) => void;
86
+ export const DEFAULT_VIEW: View = (input, output, target) => {
87
+ render(
88
+ // clang-format off
89
+ html`
90
+ <style>${blockedURLsPaneStyles}</style>
91
+ <devtools-toolbar jslog=${VisualLogging.toolbar()}>
92
+ <devtools-checkbox
93
+ ?checked=${input.enabled}
94
+ @click=${input.toggleEnabled}
95
+ .jslogContext=${'network.enable-request-blocking'}>
96
+ ${i18nString(UIStrings.enableNetworkRequestBlocking)}
97
+ </devtools-checkbox>
98
+ <div class="toolbar-divider"></div>
99
+ <devtools-button ${bindToAction('network.add-network-request-blocking-pattern')}></devtools-button>
100
+ <devtools-button ${bindToAction('network.remove-all-network-request-blocking-patterns')}></devtools-button>
101
+ </devtools-toolbar>
102
+ <div class=empty-state ${ref(e => input.list.setEmptyPlaceholder(e ?? null))}>
103
+ <span class=empty-state-header>${i18nString(UIStrings.noNetworkRequestsBlocked)}</span>
104
+ <div class=empty-state-description>
105
+ <span>${i18nString(UIStrings.addPatternToBlock, {PH1: i18nString(UIStrings.addPattern)})}</span>
106
+ <x-link
107
+ href=${NETWORK_REQUEST_BLOCKING_EXPLANATION_URL}
108
+ tabindex=0
109
+ class=devtools-link
110
+ jslog=${VisualLogging.link().track({click: true, keydown:'Enter|Space'}).context('learn-more')}>
111
+ ${i18nString(UIStrings.learnMore)}
112
+ </x-link>
113
+ </div>
114
+ <devtools-button
115
+ @click=${input.addPattern}
116
+ class=add-button
117
+ .jslogContext=${'network.add-network-request-blocking-pattern'}
118
+ aria-label=${i18nString(UIStrings.addNetworkRequestBlockingPattern)}
119
+ .variant=${Buttons.Button.Variant.TONAL}>
120
+ ${i18nString(UIStrings.addPattern)}
121
+ </devtools-button>
122
+ </div>
123
+ <devtools-widget .widgetConfig=${UI.Widget.widgetConfig(UI.Widget.VBox)}>${input.list.element}</devtools-widget>
124
+ `,
125
+ // clang-format on
126
+ target);
127
+ };
128
+
73
129
  export class BlockedURLsPane extends UI.Widget.VBox implements
74
- UI.ListWidget.Delegate<SDK.NetworkManager.BlockedPattern> {
130
+ UI.ListWidget.Delegate<SDK.NetworkManager.RequestCondition> {
75
131
  private manager: SDK.NetworkManager.MultitargetNetworkManager;
76
- private readonly toolbar: UI.Toolbar.Toolbar;
77
- private readonly enabledCheckbox: UI.Toolbar.ToolbarCheckbox;
78
- private readonly list: UI.ListWidget.ListWidget<SDK.NetworkManager.BlockedPattern>;
79
- private editor: UI.ListWidget.Editor<SDK.NetworkManager.BlockedPattern>|null;
132
+ private readonly list: UI.ListWidget.ListWidget<SDK.NetworkManager.RequestCondition>;
133
+ private editor: UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition>|null;
80
134
  private blockedCountForUrl: Map<string, number>;
135
+ #view: View;
81
136
 
82
- constructor() {
83
- super({
137
+ constructor(target?: HTMLElement, view = DEFAULT_VIEW) {
138
+ super(target, {
84
139
  jslog: `${VisualLogging.panel('network.blocked-urls').track({resize: true})}`,
85
140
  useShadowDom: true,
86
141
  });
87
- this.registerRequiredCSS(blockedURLsPaneStyles);
142
+ this.#view = view;
88
143
 
89
144
  this.manager = SDK.NetworkManager.MultitargetNetworkManager.instance();
90
145
  this.manager.addEventListener(
91
146
  SDK.NetworkManager.MultitargetNetworkManager.Events.BLOCKED_PATTERNS_CHANGED, this.update, this);
92
147
 
93
- this.toolbar = this.contentElement.createChild('devtools-toolbar');
94
- this.enabledCheckbox = new UI.Toolbar.ToolbarCheckbox(
95
- i18nString(UIStrings.enableNetworkRequestBlocking), undefined, this.toggleEnabled.bind(this),
96
- 'network.enable-request-blocking');
97
- this.toolbar.appendToolbarItem(this.enabledCheckbox);
98
- this.toolbar.appendSeparator();
99
- this.toolbar.appendToolbarItem(
100
- UI.Toolbar.Toolbar.createActionButton('network.add-network-request-blocking-pattern'));
101
- this.toolbar.appendToolbarItem(
102
- UI.Toolbar.Toolbar.createActionButton('network.remove-all-network-request-blocking-patterns'));
103
- this.toolbar.setAttribute('jslog', `${VisualLogging.toolbar()}`);
104
-
105
148
  this.list = new UI.ListWidget.ListWidget(this);
106
149
  this.list.registerRequiredCSS(blockedURLsPaneStyles);
107
150
  this.list.element.classList.add('blocked-urls');
108
151
 
109
- this.list.setEmptyPlaceholder(this.createEmptyPlaceholder());
110
- this.list.show(this.contentElement);
111
-
112
152
  this.editor = null;
113
153
 
114
154
  this.blockedCountForUrl = new Map();
@@ -120,104 +160,92 @@ export class BlockedURLsPane extends UI.Widget.VBox implements
120
160
  Logs.NetworkLog.NetworkLog.instance().addEventListener(Logs.NetworkLog.Events.Reset, this.onNetworkLogReset, this);
121
161
  }
122
162
 
123
- private createEmptyPlaceholder(): Element {
124
- const placeholder = this.contentElement.createChild('div', 'empty-state');
125
- placeholder.createChild('span', 'empty-state-header').textContent = i18nString(UIStrings.noNetworkRequestsBlocked);
126
-
127
- const description = placeholder.createChild('div', 'empty-state-description');
128
- description.createChild('span').textContent =
129
- i18nString(UIStrings.addPatternToBlock, {PH1: i18nString(UIStrings.addPattern)});
130
- const link = UI.XLink.XLink.create(
131
- NETWORK_REQUEST_BLOCKING_EXPLANATION_URL, i18nString(UIStrings.learnMore), undefined, undefined, 'learn-more');
132
- description.appendChild(link);
133
-
134
- const addButton = UI.UIUtils.createTextButton(i18nString(UIStrings.addPattern), this.addPattern.bind(this), {
135
- className: 'add-button',
136
- jslogContext: 'network.add-network-request-blocking-pattern',
137
- variant: Buttons.Button.Variant.TONAL,
138
- });
139
- UI.ARIAUtils.setLabel(addButton, i18nString(UIStrings.addNetworkRequestBlockingPattern));
140
- placeholder.appendChild(addButton);
141
- return placeholder;
163
+ override performUpdate(): void {
164
+ const enabled = this.manager.blockingEnabled();
165
+ this.list.element.classList.toggle('blocking-disabled', !enabled && Boolean(this.manager.requestConditions.count));
166
+
167
+ const input: ViewInput = {
168
+ addPattern: this.addPattern.bind(this),
169
+ toggleEnabled: this.toggleEnabled.bind(this),
170
+ enabled,
171
+ list: this.list,
172
+ };
173
+ this.#view(input, {}, this.contentElement);
142
174
  }
143
175
 
144
176
  addPattern(): void {
145
177
  this.manager.setBlockingEnabled(true);
146
- this.list.addNewItem(0, {url: Platform.DevToolsPath.EmptyUrlString, enabled: true});
178
+ this.list.addNewItem(
179
+ 0, new SDK.NetworkManager.RequestCondition({url: Platform.DevToolsPath.EmptyUrlString, enabled: true}));
147
180
  }
148
181
 
149
182
  removeAllPatterns(): void {
150
- this.manager.setBlockedPatterns([]);
183
+ this.manager.requestConditions.clear();
151
184
  }
152
185
 
153
- renderItem(pattern: SDK.NetworkManager.BlockedPattern, editable: boolean): Element {
154
- const count = this.blockedRequestsCount(pattern.url);
186
+ renderItem(condition: SDK.NetworkManager.RequestCondition, editable: boolean): Element {
187
+ const count = this.blockedRequestsCount(condition.url);
155
188
  const element = document.createElement('div');
156
189
  element.classList.add('blocked-url');
157
- const checkbox = element.createChild('input', 'blocked-url-checkbox');
158
- checkbox.type = 'checkbox';
159
- checkbox.checked = pattern.enabled;
160
- checkbox.disabled = !editable;
161
- checkbox.setAttribute('jslog', `${VisualLogging.toggle().track({change: true})}`);
162
- element.createChild('div', 'blocked-url-label').textContent = pattern.url;
163
- element.createChild('div', 'blocked-url-count').textContent = i18nString(UIStrings.dBlocked, {PH1: count});
164
- if (editable) {
165
- element.addEventListener('click', event => this.togglePattern(pattern, event));
166
- checkbox.addEventListener('click', event => this.togglePattern(pattern, event));
167
- }
190
+ const toggle = (e: Event): void => {
191
+ if (editable) {
192
+ e.consume(true);
193
+ condition.enabled = !condition.enabled;
194
+ }
195
+ };
196
+ render(
197
+ // clang-format off
198
+ html`
199
+ <input class=blocked-url-checkbox
200
+ @click=${toggle}
201
+ type=checkbox
202
+ ?checked=${condition.enabled}
203
+ ?disabled=${!editable}
204
+ .jslog=${VisualLogging.toggle().track({ change: true })}>
205
+ <div @click=${toggle} class=blocked-url-label>${condition.url}</div>
206
+ <div class=blocked-url-count>${i18nString(UIStrings.dBlocked, {PH1: count})}</div>`,
207
+ // clang-format off
208
+ element);
168
209
  return element;
169
210
  }
170
211
 
171
- private togglePattern(pattern: SDK.NetworkManager.BlockedPattern, event: Event): void {
172
- event.consume(true);
173
- const patterns = this.manager.blockedPatterns();
174
- patterns.splice(patterns.indexOf(pattern), 1, {enabled: !pattern.enabled, url: pattern.url});
175
- this.manager.setBlockedPatterns(patterns);
176
- }
177
-
178
212
  private toggleEnabled(): void {
179
213
  this.manager.setBlockingEnabled(!this.manager.blockingEnabled());
180
214
  this.update();
181
215
  }
182
216
 
183
- removeItemRequested(_pattern: SDK.NetworkManager.BlockedPattern, index: number): void {
184
- const patterns = this.manager.blockedPatterns();
185
- patterns.splice(index, 1);
186
- this.manager.setBlockedPatterns(patterns);
217
+ removeItemRequested(condition: SDK.NetworkManager.RequestCondition): void {
218
+ this.manager.requestConditions.delete(condition);
187
219
  UI.ARIAUtils.LiveAnnouncer.alert(UIStrings.itemDeleted);
188
220
  }
189
221
 
190
- beginEdit(pattern: SDK.NetworkManager.BlockedPattern): UI.ListWidget.Editor<SDK.NetworkManager.BlockedPattern> {
222
+ beginEdit(pattern: SDK.NetworkManager.RequestCondition): UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition> {
191
223
  this.editor = this.createEditor();
192
224
  this.editor.control('url').value = pattern.url;
193
225
  return this.editor;
194
226
  }
195
227
 
196
228
  commitEdit(
197
- item: SDK.NetworkManager.BlockedPattern, editor: UI.ListWidget.Editor<SDK.NetworkManager.BlockedPattern>,
229
+ item: SDK.NetworkManager.RequestCondition, editor: UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition>,
198
230
  isNew: boolean): void {
199
- const url = editor.control('url').value as Platform.DevToolsPath.UrlString;
200
- const patterns = this.manager.blockedPatterns();
231
+ item.url =
232
+ editor.control('url').value as Platform.DevToolsPath.UrlString;
201
233
  if (isNew) {
202
- patterns.push({enabled: true, url});
203
- } else {
204
- patterns.splice(patterns.indexOf(item), 1, {enabled: true, url});
234
+ this.manager.requestConditions.add(item);
205
235
  }
206
-
207
- this.manager.setBlockedPatterns(patterns);
208
236
  }
209
237
 
210
- private createEditor(): UI.ListWidget.Editor<SDK.NetworkManager.BlockedPattern> {
238
+ private createEditor(): UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition> {
211
239
  if (this.editor) {
212
240
  return this.editor;
213
241
  }
214
242
 
215
- const editor = new UI.ListWidget.Editor<SDK.NetworkManager.BlockedPattern>();
243
+ const editor = new UI.ListWidget.Editor<SDK.NetworkManager.RequestCondition>();
216
244
  const content = editor.contentElement();
217
245
  const titles = content.createChild('div', 'blocked-url-edit-row');
218
246
  titles.createChild('div').textContent = i18nString(UIStrings.textPatternToBlockMatching);
219
247
  const fields = content.createChild('div', 'blocked-url-edit-row');
220
- const validator = (_item: SDK.NetworkManager.BlockedPattern, _index: number, input: UI.ListWidget.EditorControl): {
248
+ const validator = (_item: SDK.NetworkManager.RequestCondition, _index: number, input: UI.ListWidget.EditorControl): {
221
249
  valid: boolean,
222
250
  errorMessage: Common.UIString.LocalizedString|undefined,
223
251
  } => {
@@ -226,7 +254,7 @@ export class BlockedURLsPane extends UI.Widget.VBox implements
226
254
  if (!input.value) {
227
255
  errorMessage = i18nString(UIStrings.patternInputCannotBeEmpty);
228
256
  valid = false;
229
- } else if (this.manager.blockedPatterns().find(pattern => pattern.url === input.value)) {
257
+ } else if (this.manager.requestConditions.has(input.value)) {
230
258
  errorMessage = i18nString(UIStrings.patternAlreadyExists);
231
259
  valid = false;
232
260
  }
@@ -239,13 +267,11 @@ export class BlockedURLsPane extends UI.Widget.VBox implements
239
267
 
240
268
  update(): void {
241
269
  const enabled = this.manager.blockingEnabled();
242
- this.list.element.classList.toggle('blocking-disabled', !enabled && Boolean(this.manager.blockedPatterns().length));
243
-
244
- this.enabledCheckbox.setChecked(enabled);
245
270
  this.list.clear();
246
- for (const pattern of this.manager.blockedPatterns()) {
271
+ for (const pattern of this.manager.requestConditions.conditions) {
247
272
  this.list.appendItem(pattern, enabled);
248
273
  }
274
+ this.requestUpdate();
249
275
  }
250
276
 
251
277
  private blockedRequestsCount(url: string): number {
@@ -117,6 +117,7 @@ export class EventSourceMessagesView extends UI.Widget.VBox {
117
117
  }
118
118
 
119
119
  override willHide(): void {
120
+ super.willHide();
120
121
  this.request.removeEventListener(SDK.NetworkRequest.Events.EVENT_SOURCE_MESSAGE_ADDED, this.messageAdded, this);
121
122
  }
122
123
 
@@ -268,6 +268,7 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
268
268
  }
269
269
 
270
270
  override willHide(): void {
271
+ super.willHide();
271
272
  this.#request.removeEventListener(
272
273
  SDK.NetworkRequest.Events.REQUEST_HEADERS_CHANGED, this.requestHeadersChanged, this);
273
274
  this.#request.removeEventListener(
@@ -1390,6 +1390,7 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
1390
1390
  }
1391
1391
 
1392
1392
  override willHide(): void {
1393
+ super.willHide();
1393
1394
  this.columnsInternal.willHide();
1394
1395
  }
1395
1396
 
@@ -1847,23 +1848,24 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
1847
1848
  if (request) {
1848
1849
  const maxBlockedURLLength = 20;
1849
1850
  const manager = SDK.NetworkManager.MultitargetNetworkManager.instance();
1850
- let patterns = manager.blockedPatterns();
1851
1851
 
1852
1852
  function addBlockedURL(url: string): void {
1853
- patterns.push({enabled: true, url: url as Platform.DevToolsPath.UrlString});
1854
- manager.setBlockedPatterns(patterns);
1853
+ manager.requestConditions.add(
1854
+ new SDK.NetworkManager.RequestCondition({enabled: true, url: url as Platform.DevToolsPath.UrlString}));
1855
1855
  manager.setBlockingEnabled(true);
1856
1856
  void UI.ViewManager.ViewManager.instance().showView('network.blocked-urls');
1857
1857
  }
1858
1858
 
1859
1859
  function removeBlockedURL(url: string): void {
1860
- patterns = patterns.filter(pattern => pattern.url !== url);
1861
- manager.setBlockedPatterns(patterns);
1860
+ const entry = manager.requestConditions.conditions.find(condition => condition.url === url);
1861
+ if (entry) {
1862
+ manager.requestConditions.delete(entry);
1863
+ }
1862
1864
  void UI.ViewManager.ViewManager.instance().showView('network.blocked-urls');
1863
1865
  }
1864
1866
 
1865
1867
  const urlWithoutScheme = request.parsedURL.urlWithoutScheme();
1866
- if (urlWithoutScheme && !patterns.find(pattern => pattern.url === urlWithoutScheme)) {
1868
+ if (urlWithoutScheme && !manager.requestConditions.has(urlWithoutScheme)) {
1867
1869
  contextMenu.debugSection().appendItem(
1868
1870
  i18nString(UIStrings.blockRequestUrl), addBlockedURL.bind(null, urlWithoutScheme),
1869
1871
  {jslogContext: 'block-request-url'});
@@ -1875,7 +1877,7 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
1875
1877
  }
1876
1878
 
1877
1879
  const domain = request.parsedURL.domain();
1878
- if (domain && !patterns.find(pattern => pattern.url === domain)) {
1880
+ if (domain && !manager.requestConditions.has(domain)) {
1879
1881
  contextMenu.debugSection().appendItem(
1880
1882
  i18nString(UIStrings.blockRequestDomain), addBlockedURL.bind(null, domain),
1881
1883
  {jslogContext: 'block-request-domain'});
@@ -98,6 +98,7 @@ export class NetworkOverview extends PerfUI.TimelineOverviewPane.TimelineOvervie
98
98
  }
99
99
 
100
100
  override wasShown(): void {
101
+ super.wasShown();
101
102
  this.onResize();
102
103
  }
103
104
 
@@ -317,6 +317,7 @@ export class RequestCookiesView extends UI.Widget.Widget {
317
317
  }
318
318
 
319
319
  override willHide(): void {
320
+ super.willHide();
320
321
  this.request.removeEventListener(
321
322
  SDK.NetworkRequest.Events.REQUEST_HEADERS_CHANGED, this.refreshRequestCookiesView, this);
322
323
  this.request.removeEventListener(
@@ -51,6 +51,7 @@ export class RequestHTMLView extends UI.Widget.VBox {
51
51
  }
52
52
 
53
53
  override willHide(): void {
54
+ super.willHide();
54
55
  this.requestUpdate();
55
56
  }
56
57
 
@@ -140,6 +140,7 @@ export class RequestInitiatorView extends UI.Widget.VBox {
140
140
  }
141
141
 
142
142
  override wasShown(): void {
143
+ super.wasShown();
143
144
  if (this.hasShown) {
144
145
  return;
145
146
  }
@@ -145,6 +145,7 @@ export class RequestPayloadView extends UI.Widget.VBox {
145
145
  }
146
146
 
147
147
  override willHide(): void {
148
+ super.willHide();
148
149
  this.request.removeEventListener(SDK.NetworkRequest.Events.REQUEST_HEADERS_CHANGED, this.refreshFormData, this);
149
150
  }
150
151
 
@@ -53,6 +53,7 @@ export class RequestPreviewView extends UI.Widget.VBox {
53
53
  }
54
54
 
55
55
  override wasShown(): void {
56
+ super.wasShown();
56
57
  void this.doShowPreview();
57
58
  }
58
59
 
@@ -56,7 +56,7 @@ export const DEFAULT_VIEW: View = (input: ViewInput, output: ViewOutput, target:
56
56
  i18nString(UIStrings.failedToLoadResponseData), (input.contentData as {error: string}).error,
57
57
  element))}></devtools-widget>`;
58
58
  // clang-format on
59
- } else if (input.request.statusCode === 204) {
59
+ } else if (input.request.statusCode === 204 || input.request.failed) {
60
60
  // clang-format off
61
61
  widget = html`<devtools-widget
62
62
  .widgetConfig=${widgetConfig(element => new UI.EmptyWidget.EmptyWidget(
@@ -94,6 +94,7 @@ export class RequestResponseView extends UI.Widget.VBox {
94
94
  }
95
95
 
96
96
  override wasShown(): void {
97
+ super.wasShown();
97
98
  this.requestUpdate();
98
99
  }
99
100
 
@@ -634,6 +634,7 @@ export class RequestTimingView extends UI.Widget.VBox {
634
634
  }
635
635
 
636
636
  override wasShown(): void {
637
+ super.wasShown();
637
638
  this.request.addEventListener(SDK.NetworkRequest.Events.TIMING_CHANGED, this.refresh, this);
638
639
  this.request.addEventListener(SDK.NetworkRequest.Events.FINISHED_LOADING, this.refresh, this);
639
640
  this.calculator.addEventListener(NetworkTimeCalculator.Events.BOUNDARIES_CHANGED, this.boundaryChanged, this);
@@ -641,6 +642,7 @@ export class RequestTimingView extends UI.Widget.VBox {
641
642
  }
642
643
 
643
644
  override willHide(): void {
645
+ super.willHide();
644
646
  this.request.removeEventListener(SDK.NetworkRequest.Events.TIMING_CHANGED, this.refresh, this);
645
647
  this.request.removeEventListener(SDK.NetworkRequest.Events.FINISHED_LOADING, this.refresh, this);
646
648
  this.calculator.removeEventListener(NetworkTimeCalculator.Events.BOUNDARIES_CHANGED, this.boundaryChanged, this);
@@ -79,6 +79,7 @@ export class ResourceDirectSocketChunkView extends ResourceChunkView<SDK.Network
79
79
  }
80
80
 
81
81
  override willHide(): void {
82
+ super.willHide();
82
83
  this.request.removeEventListener(
83
84
  SDK.NetworkRequest.Events.DIRECTSOCKET_CHUNK_ADDED, this.onDirectSocketChunkAdded, this);
84
85
  }
@@ -120,6 +120,7 @@ export class ResourceWebSocketFrameView extends ResourceChunkView<SDK.NetworkReq
120
120
  }
121
121
 
122
122
  override willHide(): void {
123
+ super.willHide();
123
124
  this.request.removeEventListener(SDK.NetworkRequest.Events.WEBSOCKET_FRAME_ADDED, this.onWebSocketFrameAdded, this);
124
125
  }
125
126
 
@@ -127,6 +127,7 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
127
127
  }
128
128
 
129
129
  override wasShown(): void {
130
+ super.wasShown();
130
131
  this.#request.addEventListener(SDK.NetworkRequest.Events.REMOTE_ADDRESS_CHANGED, this.#refreshHeadersView, this);
131
132
  this.#request.addEventListener(SDK.NetworkRequest.Events.FINISHED_LOADING, this.#refreshHeadersView, this);
132
133
  this.#request.addEventListener(SDK.NetworkRequest.Events.REQUEST_HEADERS_CHANGED, this.#refreshHeadersView, this);
@@ -137,6 +138,7 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
137
138
  }
138
139
 
139
140
  override willHide(): void {
141
+ super.willHide();
140
142
  this.#request.removeEventListener(SDK.NetworkRequest.Events.REMOTE_ADDRESS_CHANGED, this.#refreshHeadersView, this);
141
143
  this.#request.removeEventListener(SDK.NetworkRequest.Events.FINISHED_LOADING, this.#refreshHeadersView, this);
142
144
  this.#request.removeEventListener(
@@ -112,11 +112,13 @@ export class RequestTrustTokensView extends LegacyWrapper.LegacyWrapper.Wrappabl
112
112
  }
113
113
 
114
114
  override wasShown(): void {
115
+ super.wasShown();
115
116
  this.#request.addEventListener(SDK.NetworkRequest.Events.TRUST_TOKEN_RESULT_ADDED, this.render, this);
116
117
  void this.render();
117
118
  }
118
119
 
119
120
  override willHide(): void {
121
+ super.willHide();
120
122
  this.#request.removeEventListener(SDK.NetworkRequest.Events.TRUST_TOKEN_RESULT_ADDED, this.render, this);
121
123
  }
122
124
 
@@ -157,6 +157,7 @@ export class PerformanceMonitorImpl extends UI.Widget.HBox implements
157
157
  }
158
158
 
159
159
  override wasShown(): void {
160
+ super.wasShown();
160
161
  if (!this.model) {
161
162
  return;
162
163
  }
@@ -176,6 +177,7 @@ export class PerformanceMonitorImpl extends UI.Widget.HBox implements
176
177
  }
177
178
 
178
179
  override willHide(): void {
180
+ super.willHide();
179
181
  if (!this.model) {
180
182
  return;
181
183
  }
@@ -212,6 +212,7 @@ export class HeapSnapshotSortableDataGrid extends Common.ObjectWrapper
212
212
  }
213
213
 
214
214
  override wasShown(): void {
215
+ super.wasShown();
215
216
  if (this.nameFilter) {
216
217
  this.nameFilter.addEventListener(UI.Toolbar.ToolbarInput.Event.TEXT_CHANGED, this.onNameFilterChanged, this);
217
218
  this.updateVisibleNodes(true);
@@ -228,6 +229,7 @@ export class HeapSnapshotSortableDataGrid extends Common.ObjectWrapper
228
229
  }
229
230
 
230
231
  override willHide(): void {
232
+ super.willHide();
231
233
  if (this.nameFilter) {
232
234
  this.nameFilter.removeEventListener(UI.Toolbar.ToolbarInput.Event.TEXT_CHANGED, this.onNameFilterChanged, this);
233
235
  }
@@ -143,6 +143,11 @@ const UIStrings = {
143
143
  * objects kept alive by the DevTools console
144
144
  */
145
145
  objectsRetainedByConsole: 'Objects retained by DevTools Console',
146
+ /**
147
+ * @description An option which will filter the heap snapshot to show only
148
+ * objects retained by event handlers
149
+ */
150
+ objectsRetainedByEventHandlers: 'Objects retained by Event Handlers',
146
151
  /**
147
152
  * @description Text for the summary view
148
153
  */
@@ -624,6 +629,7 @@ export class HeapSnapshotView extends UI.View.SimpleView implements DataDisplayD
624
629
  }
625
630
 
626
631
  override willHide(): void {
632
+ super.willHide();
627
633
  this.currentSearchResultIndex = -1;
628
634
  this.popoverHelper.hidePopover();
629
635
  }
@@ -771,6 +777,7 @@ export class HeapSnapshotView extends UI.View.SimpleView implements DataDisplayD
771
777
  {uiName: i18nString(UIStrings.duplicatedStrings), filterName: 'duplicatedStrings'},
772
778
  {uiName: i18nString(UIStrings.objectsRetainedByDetachedDomNodes), filterName: 'objectsRetainedByDetachedDomNodes'},
773
779
  {uiName: i18nString(UIStrings.objectsRetainedByConsole), filterName: 'objectsRetainedByConsole'},
780
+ {uiName: i18nString(UIStrings.objectsRetainedByEventHandlers), filterName: 'objectsRetainedByEventHandlers'},
774
781
  ];
775
782
 
776
783
  changeFilter(): void {
@@ -102,6 +102,7 @@ export class IsolateSelector extends UI.Widget.VBox implements UI.ListControl.Li
102
102
  }
103
103
 
104
104
  override willHide(): void {
105
+ super.willHide();
105
106
  SDK.IsolateManager.IsolateManager.instance().removeEventListener(
106
107
  SDK.IsolateManager.Events.MEMORY_CHANGED, this.heapStatsChanged, this);
107
108
  }
@@ -178,6 +178,7 @@ export class LiveHeapProfileView extends UI.Widget.VBox {
178
178
  }
179
179
 
180
180
  override willHide(): void {
181
+ super.willHide();
181
182
  ++this.currentPollId;
182
183
  this.setting.removeChangeListener(this.settingChanged, this);
183
184
  }
@@ -325,6 +325,7 @@ export class ProfileView extends UI.View.SimpleView implements UI.SearchableView
325
325
  }
326
326
 
327
327
  override willHide(): void {
328
+ super.willHide();
328
329
  this.currentSearchResultIndex = -1;
329
330
  }
330
331
 
@@ -530,6 +530,7 @@ export class ProtocolMonitorImpl extends UI.Panel.Panel {
530
530
  }
531
531
 
532
532
  override wasShown(): void {
533
+ super.wasShown();
533
534
  if (this.started) {
534
535
  return;
535
536
  }
@@ -36,12 +36,14 @@ export class RecorderPanel extends UI.Panel.Panel {
36
36
  }
37
37
 
38
38
  override wasShown(): void {
39
+ super.wasShown();
39
40
  UI.Context.Context.instance().setFlavor(RecorderPanel, this);
40
41
  // Focus controller so shortcuts become active
41
42
  this.#controller.focus();
42
43
  }
43
44
 
44
45
  override willHide(): void {
46
+ super.willHide();
45
47
  UI.Context.Context.instance().setFlavor(RecorderPanel, null);
46
48
  }
47
49
 
@@ -175,6 +175,7 @@ export class ScreencastView extends UI.Widget.VBox implements SDK.OverlayModel.H
175
175
  }
176
176
 
177
177
  override willHide(): void {
178
+ super.willHide();
178
179
  this.stopCasting();
179
180
  }
180
181
 
@@ -542,6 +542,7 @@ export class SearchView extends UI.Widget.VBox {
542
542
  }
543
543
 
544
544
  override willHide(): void {
545
+ super.willHide();
545
546
  this.#stopSearch();
546
547
  }
547
548