chrome-devtools-frontend 1.0.1721762 → 1.0.1726686

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/.agents/skills/review-ui-widgets/SKILL.md +7 -7
  2. package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +12 -0
  3. package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +3 -3
  4. package/.agents/skills/ui-widgets/SKILL.md +2 -1
  5. package/docs/cookbook/dependencies.md +57 -11
  6. package/docs/get_the_code.md +15 -0
  7. package/front_end/core/i18n/collect-ui-strings.js +58 -12
  8. package/front_end/core/i18n/i18nImpl.ts +1 -1
  9. package/front_end/core/root/Runtime.ts +1 -1
  10. package/front_end/core/sdk/ResourceTreeModel.ts +16 -0
  11. package/front_end/core/sdk/WebAuthnModel.ts +17 -10
  12. package/front_end/entrypoints/js_app/js_app.ts +2 -5
  13. package/front_end/entrypoints/node_app/node_app.ts +2 -3
  14. package/front_end/generated/InspectorBackendCommands.ts +3 -3
  15. package/front_end/generated/protocol.ts +17 -0
  16. package/front_end/models/ai_assistance/skills/lighthouse.md +2 -1
  17. package/front_end/models/ai_assistance/skills/network.md +1 -0
  18. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +26 -2
  19. package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +1 -1
  20. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +2 -7
  21. package/front_end/models/ai_assistance/tools/RunLighthouse.ts +2 -2
  22. package/front_end/models/comment_manager/CD4ABridge.ts +4 -0
  23. package/front_end/models/comment_manager/CommentManager.ts +0 -6
  24. package/front_end/models/comment_manager/CommentThread.ts +39 -19
  25. package/front_end/models/elements/StyleChanges.ts +66 -0
  26. package/front_end/models/trace/EventsSerializer.ts +2 -7
  27. package/front_end/models/trace/ModelImpl.ts +0 -2
  28. package/front_end/models/trace/handlers/FlowsHandler.ts +37 -29
  29. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +13 -6
  30. package/front_end/models/trace/helpers/SyntheticEvents.ts +10 -37
  31. package/front_end/models/trace/insights/RenderBlocking.ts +3 -1
  32. package/front_end/models/trace/lantern/simulation/Simulator.ts +4 -0
  33. package/front_end/models/trace/lantern/types/Lantern.ts +1 -0
  34. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +92 -0
  35. package/front_end/panels/accessibility/SourceOrderView.ts +1 -1
  36. package/front_end/panels/accessibility/accessibilityAnnouncementRecordingListView.css +3 -1
  37. package/front_end/panels/accessibility/accessibilityAnnouncementRecordingView.css +12 -1
  38. package/front_end/panels/application/ApplicationPanelSidebar.ts +90 -0
  39. package/front_end/panels/application/StorageView.ts +348 -254
  40. package/front_end/panels/application/SubAppsView.ts +159 -0
  41. package/front_end/panels/application/application.ts +2 -0
  42. package/front_end/panels/application/preloading/PreloadingView.ts +360 -336
  43. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +3 -3
  44. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +6 -3
  45. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +17 -17
  46. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
  47. package/front_end/panels/application/preloading/preloadingView.css +12 -4
  48. package/front_end/panels/application/preloading/preloadingViewDropDown.css +1 -1
  49. package/front_end/panels/application/storageView.css +16 -21
  50. package/front_end/panels/application/subAppsView.css +21 -0
  51. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +2 -2
  52. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +6 -8
  53. package/front_end/panels/comments/CommentsPane.ts +26 -9
  54. package/front_end/panels/comments/commentsPane.css +25 -6
  55. package/front_end/panels/common/CommentThreadWidget.ts +2 -2
  56. package/front_end/panels/common/CommentsOverlayWidget.ts +94 -35
  57. package/front_end/panels/common/commentThreadWidget.css +17 -0
  58. package/front_end/panels/common/commentsOverlay.css +5 -10
  59. package/front_end/panels/common/common-meta.ts +11 -1
  60. package/front_end/panels/elements/ClassesPaneWidget.ts +133 -89
  61. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +7 -33
  62. package/front_end/panels/elements/DOMTreeElementWidget.ts +3 -1
  63. package/front_end/panels/elements/DOMTreeWidget.ts +19 -3
  64. package/front_end/panels/elements/ElementStatePaneWidget.ts +11 -1
  65. package/front_end/panels/elements/PropertyRenderer.ts +3 -2
  66. package/front_end/panels/elements/StyleEditorWidget.ts +87 -39
  67. package/front_end/panels/elements/StylePropertiesSection.ts +32 -5
  68. package/front_end/panels/elements/StylePropertyTreeElement.ts +227 -162
  69. package/front_end/panels/elements/StylesSidebarPane.ts +1 -0
  70. package/front_end/panels/event_listeners/EventListenersView.ts +11 -8
  71. package/front_end/panels/layer_viewer/Layers3DView.ts +21 -37
  72. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
  73. package/front_end/panels/network/NetworkConfigView.ts +12 -10
  74. package/front_end/panels/network/NetworkDataGridNode.ts +3 -1
  75. package/front_end/panels/network/RequestConditionsDrawer.ts +1 -1
  76. package/front_end/panels/network/RequestPayloadView.ts +12 -5
  77. package/front_end/panels/network/networkConfigView.css +8 -8
  78. package/front_end/panels/profiler/HeapProfileView.ts +28 -6
  79. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +7 -3
  80. package/front_end/panels/protocol_monitor/JSONEditor.ts +0 -1
  81. package/front_end/panels/recorder/RecorderPanel.ts +2 -2
  82. package/front_end/panels/screencast/ScreencastView.ts +3 -6
  83. package/front_end/panels/security/SecurityPanelSidebar.ts +0 -31
  84. package/front_end/panels/settings/SettingsScreen.ts +1 -1
  85. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +9 -16
  86. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +358 -345
  87. package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +136 -121
  88. package/front_end/panels/sources/NavigatorView.ts +105 -45
  89. package/front_end/panels/sources/ScopeChainSidebarPane.ts +8 -5
  90. package/front_end/panels/sources/SourcesNavigator.ts +421 -213
  91. package/front_end/panels/sources/SourcesPanel.ts +9 -5
  92. package/front_end/panels/sources/TabbedEditorContainer.ts +41 -18
  93. package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
  94. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +10 -5
  95. package/front_end/panels/sources/sources-meta.ts +4 -15
  96. package/front_end/panels/sources/sourcesNavigator.css +5 -0
  97. package/front_end/panels/timeline/ModificationsManager.ts +0 -2
  98. package/front_end/panels/timeline/README.md +2 -0
  99. package/front_end/panels/timeline/TimelineCommentContext.ts +171 -0
  100. package/front_end/panels/timeline/TimelineCommentController.ts +168 -30
  101. package/front_end/panels/timeline/TimelinePanel.ts +4 -0
  102. package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -1
  103. package/front_end/panels/timeline/timeline.ts +2 -0
  104. package/front_end/panels/timeline/utils/Treemap.ts +8 -0
  105. package/front_end/panels/webauthn/WebauthnPane.ts +15 -13
  106. package/front_end/third_party/chromium/README.chromium +1 -1
  107. package/front_end/third_party/puppeteer/README.chromium +2 -2
  108. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +113 -3
  109. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21311 -20981
  110. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts +36 -0
  111. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js +22 -0
  113. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js.map +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.d.ts.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js +20 -18
  116. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js.map +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.d.ts +20 -1
  118. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js +2 -2
  120. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +40 -1
  122. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js +3 -1
  124. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.d.ts +2 -0
  126. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.d.ts.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js +41 -5
  128. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js.map +1 -1
  129. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.d.ts +2 -1
  130. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.js +23 -2
  132. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.js.map +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Input.js +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +3 -2
  135. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts.map +1 -1
  136. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js +13 -1
  137. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.d.ts +1 -0
  139. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.d.ts.map +1 -1
  140. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js +18 -11
  141. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js.map +1 -1
  142. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts +2 -1
  143. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  144. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js +8 -1
  145. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js.map +1 -1
  146. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts +2 -1
  147. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +24 -12
  149. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
  152. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js +13 -7
  153. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js.map +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts.map +1 -1
  155. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +5 -1
  156. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
  157. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.d.ts +22 -1
  158. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  159. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js +75 -9
  160. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js.map +1 -1
  161. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.d.ts +18 -4
  162. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
  163. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.js +8 -4
  164. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.js.map +1 -1
  165. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js +65 -26
  167. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js.map +1 -1
  168. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +3 -2
  169. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js +19 -0
  171. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.d.ts.map +1 -1
  173. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js +4 -3
  174. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js.map +1 -1
  175. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.d.ts +1 -0
  176. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.d.ts.map +1 -1
  177. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js +4 -0
  178. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js.map +1 -1
  179. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts +2 -0
  180. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +95 -8
  182. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
  183. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts +0 -8
  184. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts.map +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +8 -24
  186. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
  187. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.d.ts +1 -0
  188. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -1
  189. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js +5 -4
  190. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts +9 -0
  192. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.d.ts.map +1 -1
  194. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.js +10 -0
  195. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.js.map +1 -1
  196. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts +10 -0
  197. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js +30 -5
  199. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
  201. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
  203. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts +2 -0
  205. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
  206. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +33 -3
  207. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  209. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js +1 -2
  210. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js.map +1 -1
  211. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts +4 -0
  212. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -1
  213. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +1 -0
  214. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
  215. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  216. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  217. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/encoding.d.ts +2 -2
  219. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/encoding.d.ts.map +1 -1
  220. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  222. package/front_end/third_party/puppeteer/package/lib/types.d.ts +113 -3
  223. package/front_end/third_party/puppeteer/package/package.json +4 -4
  224. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +42 -0
  225. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +25 -22
  226. package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +22 -2
  227. package/front_end/third_party/puppeteer/package/src/api/Page.ts +45 -2
  228. package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +79 -32
  229. package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +32 -12
  230. package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +1 -1
  231. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +18 -2
  232. package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +21 -13
  233. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +12 -2
  234. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +37 -16
  235. package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +14 -11
  236. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +7 -1
  237. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +101 -14
  238. package/front_end/third_party/puppeteer/package/src/cdp/NetworkEventManager.ts +26 -6
  239. package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +111 -29
  240. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +37 -1
  241. package/front_end/third_party/puppeteer/package/src/cdp/ScreenRecording.ts +5 -4
  242. package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +5 -0
  243. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +122 -7
  244. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +13 -33
  245. package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +10 -5
  246. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +10 -0
  247. package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +12 -0
  248. package/front_end/third_party/puppeteer/package/src/common/util.ts +39 -5
  249. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  250. package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +35 -3
  251. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +4 -2
  252. package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +5 -0
  253. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  254. package/front_end/third_party/puppeteer/package/src/util/encoding.ts +2 -2
  255. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  256. package/front_end/ui/comments/CommentAnchorResolver.ts +3 -0
  257. package/front_end/ui/comments/CommentOverlayManager.ts +2 -4
  258. package/front_end/ui/components/lists/List.ts +14 -1
  259. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
  260. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +23 -14
  261. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +3 -0
  262. package/front_end/ui/helpers/OpenInNewTab.ts +8 -0
  263. package/front_end/ui/legacy/LinkContextMenuProvider.ts +1 -1
  264. package/front_end/ui/legacy/ListWidget.ts +14 -18
  265. package/front_end/ui/legacy/TabbedPane.ts +46 -3
  266. package/front_end/ui/legacy/Toolbar.ts +0 -1
  267. package/front_end/ui/legacy/Treeoutline.ts +10 -3
  268. package/front_end/ui/legacy/UIUtils.ts +5 -2
  269. package/front_end/ui/legacy/components/inline_editor/Swatches.ts +19 -6
  270. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +20 -11
  271. package/front_end/ui/legacy/components/source_frame/XMLView.ts +27 -7
  272. package/front_end/ui/visual_logging/KnownContextValues.ts +5 -0
  273. package/package.json +1 -1
@@ -138,7 +138,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
138
138
  str_, valueId,
139
139
  Object.fromEntries(Object.entries(placeholders).map(
140
140
  ([key, {title, href}]) =>
141
- [key, html`<devtools-link href=${href}>${title}</devtools-link>`])));
141
+ [key, html`<devtools-link href=${href} allow-privileged>${title}</devtools-link>`])));
142
142
  return html`
143
143
  <div class="key">${key}</div>
144
144
  <div class="value">${value}</div>
@@ -166,8 +166,8 @@ export class PreloadingDisabledInfobar extends UI.Widget.VBox {
166
166
  #disabledByHoldbackPrefetchSpeculationRules = false;
167
167
  #disabledByHoldbackPrerenderSpeculationRules = false;
168
168
 
169
- constructor(view: View = DEFAULT_VIEW) {
170
- super({useShadowDom: true});
169
+ constructor(element?: HTMLElement, view: View = DEFAULT_VIEW) {
170
+ super(element, {useShadowDom: true, classes: ['flex-none']});
171
171
  this.#view = view;
172
172
  }
173
173
 
@@ -127,9 +127,9 @@ export class PreloadingGrid extends UI.Widget.VBox {
127
127
  #pageURL?: Platform.DevToolsPath.UrlString;
128
128
  #onSelect?: ({rowId}: {rowId: string}) => void;
129
129
 
130
- constructor(view?: View) {
131
- super();
132
- this.#view = view ?? PRELOADING_GRID_DEFAULT_VIEW;
130
+ constructor(element?: HTMLElement, view: View = PRELOADING_GRID_DEFAULT_VIEW) {
131
+ super(element);
132
+ this.#view = view;
133
133
  this.requestUpdate();
134
134
  }
135
135
 
@@ -144,6 +144,9 @@ export class PreloadingGrid extends UI.Widget.VBox {
144
144
  }
145
145
 
146
146
  set onSelect(onSelect: ({rowId}: {rowId: string}) => void) {
147
+ if (this.#onSelect === onSelect) {
148
+ return;
149
+ }
147
150
  this.#onSelect = onSelect;
148
151
  this.requestUpdate();
149
152
  }
@@ -169,17 +169,13 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
169
169
  };
170
170
 
171
171
  /** Grid component to show SpeculationRules rule sets. **/
172
- const RuleSetGridBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.VBox> =
173
- Common.ObjectWrapper.eventMixin(
174
- UI.Widget.VBox,
175
- );
176
-
177
- export class RuleSetGrid extends RuleSetGridBase {
172
+ export class RuleSetGrid extends UI.Widget.VBox {
178
173
  readonly #view: View;
179
174
  #data: RuleSetGridData|null = null;
175
+ #onSelect: (ruleSetId: Protocol.Preload.RuleSetId) => void = () => {};
180
176
 
181
- constructor(view: View = DEFAULT_VIEW) {
182
- super({useShadowDom: true});
177
+ constructor(element?: HTMLElement, view: View = DEFAULT_VIEW) {
178
+ super(element, {useShadowDom: true});
183
179
  this.#view = view;
184
180
  }
185
181
 
@@ -192,10 +188,22 @@ export class RuleSetGrid extends RuleSetGridBase {
192
188
  this.requestUpdate();
193
189
  }
194
190
 
191
+ get onSelect(): (ruleSetId: Protocol.Preload.RuleSetId) => void {
192
+ return this.#onSelect;
193
+ }
194
+
195
+ set onSelect(onSelect: (ruleSetId: Protocol.Preload.RuleSetId) => void) {
196
+ if (this.#onSelect === onSelect) {
197
+ return;
198
+ }
199
+ this.#onSelect = onSelect;
200
+ this.requestUpdate();
201
+ }
202
+
195
203
  override performUpdate(): void {
196
204
  const input: ViewInput = {
197
205
  data: this.#data,
198
- onSelect: this.dispatchEventToListeners.bind(this, Events.SELECT),
206
+ onSelect: this.#onSelect,
199
207
  onRevealInElements: this.#revealSpeculationRulesInElements.bind(this),
200
208
  onRevealInNetwork: this.#revealSpeculationRulesInNetwork.bind(this),
201
209
  onRevealPreloadsAssociatedWithRuleSet: this.#revealAttemptViewWithFilter.bind(this),
@@ -235,11 +243,3 @@ export class RuleSetGrid extends RuleSetGridBase {
235
243
  void Common.Revealer.reveal(new PreloadingHelper.PreloadingForward.AttemptViewWithFilter(ruleSet.id));
236
244
  }
237
245
  }
238
-
239
- export const enum Events {
240
- SELECT = 'select',
241
- }
242
-
243
- export interface EventTypes {
244
- [Events.SELECT]: Protocol.Preload.RuleSetId;
245
- }
@@ -425,8 +425,8 @@ const DEFAULT_VIEW: View = (input, _output, target) => {
425
425
  export class UsedPreloadingView extends UI.Widget.VBox {
426
426
  readonly #view: View;
427
427
 
428
- constructor(view: View = DEFAULT_VIEW) {
429
- super({useShadowDom: true});
428
+ constructor(element?: HTMLElement, view: View = DEFAULT_VIEW) {
429
+ super(element, {useShadowDom: true});
430
430
  this.#view = view;
431
431
  }
432
432
 
@@ -4,12 +4,12 @@
4
4
  * found in the LICENSE file.
5
5
  */
6
6
 
7
- .empty-state {
7
+ :host > .widget > .empty-state {
8
8
  display: none;
9
9
  }
10
10
 
11
11
  .empty {
12
- .empty-state {
12
+ &.widget > .empty-state {
13
13
  display: flex;
14
14
  }
15
15
 
@@ -26,13 +26,21 @@
26
26
  margin: var(--sys-size-2) 0;
27
27
  }
28
28
 
29
- .toolbar-filter {
29
+ devtools-toolbar-input {
30
30
  max-width: var(--sys-size-29);
31
+ flex-grow: 1;
32
+ flex-shrink: 1;
31
33
  }
32
34
  }
33
35
 
34
36
  devtools-split-view {
35
- .preloading-grid-widget-container > .vbox {
37
+ [slot="main"],
38
+ [slot="sidebar"],
39
+ [slot="main"] > .vbox {
36
40
  height: 100%;
37
41
  }
38
42
  }
43
+
44
+ .pretty-print-button {
45
+ border-top: var(--sys-size-1) solid var(--sys-color-divider);
46
+ }
@@ -4,7 +4,7 @@
4
4
  * found in the LICENSE file.
5
5
  */
6
6
 
7
- :host {
7
+ .widget {
8
8
  padding: var(--sys-size-2) var(--sys-size-1) var(--sys-size-2) var(--sys-size-2);
9
9
  }
10
10
 
@@ -4,14 +4,22 @@
4
4
  * found in the LICENSE file.
5
5
  */
6
6
 
7
- .report-row {
8
- display: flex;
9
- align-items: center;
10
- white-space: normal;
7
+ .report-subtitle {
8
+ font: var(--sys-typescale-body4-regular);
9
+ padding: 0 var(--sys-size-9) var(--sys-size-7);
10
+ overflow: hidden;
11
+ text-overflow: ellipsis;
12
+ white-space: nowrap;
13
+ }
11
14
 
12
- &:has(.quota-override-error:empty) {
13
- margin: 0;
14
- }
15
+ devtools-report .report-section {
16
+ display: grid;
17
+ grid-column: 1 / 3;
18
+ grid-template-columns: subgrid;
19
+ }
20
+
21
+ devtools-report-section:has(.quota-override-error:empty) {
22
+ display: none;
15
23
  }
16
24
 
17
25
  .clear-site-data-checkboxes-row {
@@ -34,15 +42,6 @@
34
42
  margin-top: var(--sys-size-7);
35
43
  }
36
44
 
37
- .link {
38
- margin-left: 10px;
39
- display: none;
40
- }
41
-
42
- .report-row:hover .link {
43
- display: inline;
44
- }
45
-
46
45
  .quota-override-editor-with-button {
47
46
  align-items: baseline;
48
47
  display: flex;
@@ -77,7 +76,7 @@
77
76
  min-width: fit-content;
78
77
  }
79
78
 
80
- .clear-storage-container {
79
+ :host {
81
80
  overflow: auto;
82
81
  }
83
82
 
@@ -87,10 +86,6 @@
87
86
  --nested-checkbox-indent: var(--sys-size-11);
88
87
  }
89
88
 
90
- .report-content-box {
91
- overflow: initial;
92
- }
93
-
94
89
  .include-third-party-cookies-row {
95
90
  margin-left: var(--nested-checkbox-indent);
96
91
 
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Copyright 2026 The Chromium Authors
3
+ * Use of this source code is governed by a BSD-style license that can be
4
+ * found in the LICENSE file.
5
+ */
6
+
7
+ @scope to (devtools-widget > *) {
8
+ :scope {
9
+ padding: var(--sys-size-9);
10
+ height: 100%;
11
+ display: flex;
12
+ }
13
+
14
+ .heading {
15
+ font-size: 15px;
16
+ }
17
+
18
+ devtools-data-grid {
19
+ margin-top: var(--sys-size-9);
20
+ }
21
+ }
@@ -224,7 +224,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
224
224
  title=${getLocalizedCategory(category)}
225
225
  ?indeterminate=${breakpoints.some(breakpoint => !breakpoint.enabled()) &&
226
226
  breakpoints.some(breakpoint => breakpoint.enabled())}
227
- ?checked=${!breakpoints.some(breakpoint => !breakpoint.enabled())}
227
+ .checked=${!breakpoints.some(breakpoint => !breakpoint.enabled())}
228
228
  @change=${(e: Event) => onCheckboxClicked(e, category)}
229
229
  >${getLocalizedCategory(category)}</devtools-checkbox>
230
230
  <ul role="group">
@@ -238,7 +238,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
238
238
  class=${classes(breakpoint)}
239
239
  tabIndex=-1
240
240
  title=${Sources.CategorizedBreakpointL10n.getLocalizedBreakpointName(breakpoint.name)}
241
- ?checked=${breakpoint.enabled()}
241
+ .checked=${breakpoint.enabled()}
242
242
  aria-description=${breakpoint === input.highlightedItem ? i18nString(UIStrings.breakpointHit)
243
243
  : Lit.nothing}
244
244
  @change=${(e: Event) => onCheckboxClicked(e, breakpoint)}
@@ -204,10 +204,9 @@ UI.ViewManager.registerViewExtension({
204
204
  commandPrompt: i18nLazyString(UIStrings.showPage),
205
205
  order: 2,
206
206
  persistence: UI.ViewManager.ViewPersistence.PERMANENT,
207
- async loadView(universe) {
207
+ async loadView() {
208
208
  const Sources = await loadSourcesModule();
209
- return Sources.SourcesNavigator.NetworkNavigatorView.instance(
210
- {forceNew: null, networkProjectManager: universe.networkProjectManager});
209
+ return Sources.SourcesNavigator.NetworkNavigatorView.instance();
211
210
  },
212
211
  });
213
212
 
@@ -219,10 +218,9 @@ UI.ViewManager.registerViewExtension({
219
218
  order: 4,
220
219
  persistence: UI.ViewManager.ViewPersistence.PERMANENT,
221
220
  condition: () => !Root.Runtime.Runtime.isTraceApp(),
222
- async loadView(universe) {
221
+ async loadView() {
223
222
  const Sources = await loadSourcesModule();
224
- return Sources.SourcesNavigator.OverridesNavigatorView.instance(
225
- {forceNew: null, networkProjectManager: universe.networkProjectManager});
223
+ return Sources.SourcesNavigator.OverridesNavigatorView.instance();
226
224
  },
227
225
  });
228
226
 
@@ -234,9 +232,9 @@ UI.ViewManager.registerViewExtension({
234
232
  order: 5,
235
233
  persistence: UI.ViewManager.ViewPersistence.PERMANENT,
236
234
  condition: () => Root.Runtime.getPathName() !== '/bundled/worker_app.html' && !Root.Runtime.Runtime.isTraceApp(),
237
- async loadView(universe) {
235
+ async loadView() {
238
236
  const Sources = await loadSourcesModule();
239
- return new Sources.SourcesNavigator.ContentScriptsNavigatorView(universe.networkProjectManager);
237
+ return new Sources.SourcesNavigator.ContentScriptsNavigatorView();
240
238
  },
241
239
  });
242
240
 
@@ -58,6 +58,10 @@ const UIStrings = {
58
58
  * @description Tab label for sent and resolved comments in the comments drawer.
59
59
  */
60
60
  sent: 'Sent',
61
+ /**
62
+ * @description Label shown next to an element anchor in the comments drawer when the target DOM node has been removed or can no longer be found.
63
+ */
64
+ removed: 'removed',
61
65
  } as const;
62
66
 
63
67
  const UIStringsNotTranslate = {
@@ -85,7 +89,10 @@ export interface ViewInput {
85
89
  threads: ThreadViewData[];
86
90
  onTabSelect: (tab: Tab) => void;
87
91
  onClearAll: () => void;
88
- onThreadClick: (thread: CommentManager.CommentManager.CommentThread) => void;
92
+ onThreadClick: (
93
+ thread: CommentManager.CommentManager.CommentThread,
94
+ fallbackPosition?: {left: number, top: number},
95
+ ) => void;
89
96
  onDeleteThread: (threadId: string) => void;
90
97
  onSendToAgent: () => void;
91
98
  }
@@ -148,6 +155,12 @@ function renderThreadStatus(
148
155
  export const DEFAULT_VIEW: View = (input: ViewInput, _output: undefined, target: HTMLElement): void => {
149
156
  const isQueued = input.activeTab === 'queued';
150
157
  const isSent = input.activeTab === 'sent';
158
+ const onThreadClick = (e: Event, thread: CommentManager.CommentManager.CommentThread): void => {
159
+ const rowEl = e.currentTarget as HTMLElement;
160
+ const rowRect = rowEl.getBoundingClientRect();
161
+ const badgeRect = rowEl.querySelector('.comment-pin-badge')?.getBoundingClientRect();
162
+ input.onThreadClick(thread, {left: badgeRect?.left ?? rowRect.left, top: rowRect.top});
163
+ };
151
164
  // clang-format off
152
165
  render(html`
153
166
  <style>${commentsPaneStyles}</style>
@@ -192,22 +205,23 @@ export const DEFAULT_VIEW: View = (input: ViewInput, _output: undefined, target:
192
205
  item => item.thread.id,
193
206
  item => html`
194
207
  <li
195
- class="comment-thread-item"
208
+ class="comment-thread-item ${item.thread.isOrphaned ? 'orphaned' : ''}"
196
209
  role="listitem"
197
210
  tabindex="0"
198
- @click=${() => input.onThreadClick(item.thread)}
211
+ @click=${(e: Event) => onThreadClick(e, item.thread)}
199
212
  @keydown=${(e: KeyboardEvent) => {
200
213
  if (e.key === 'Enter' || e.key === ' ') {
201
214
  e.preventDefault();
202
- input.onThreadClick(item.thread);
215
+ onThreadClick(e, item.thread);
203
216
  }
204
217
  }}
205
218
  jslog=${VisualLogging.item('comment-thread').track({ click: true })}>
206
- <div class="comment-pin-badge">${item.thread.index}</div>
207
- <span class="anchor-chip">
219
+ <div class="comment-pin-badge" aria-hidden="true"></div>
220
+ <span class="anchor-chip ${item.thread.isOrphaned ? 'orphaned' : ''}">
208
221
  ${'node' in item.title ?
209
- widget(CommonPanels.DOMLinkifier.DOMNodeLink, { node: item.title.node, options: { preventKeyboardFocus: true } }) :
222
+ widget(CommonPanels.DOMLinkifier.DOMNodeLink, { node: item.title.node, options: { preventKeyboardFocus: true, disabled: item.thread.isOrphaned } }) :
210
223
  html`<span class="anchor-chip-text">${item.title.text}</span>`}
224
+ ${item.thread.isOrphaned ? html`<span class="orphaned-label">(${i18nString(UIStrings.removed)})</span>` : Lit.nothing}
211
225
  </span>
212
226
  <div class="comment-text">${item.commentText}</div>
213
227
  ${renderThreadStatus(item.thread, input.onDeleteThread)}
@@ -311,8 +325,11 @@ export class CommentsPane extends UI.Widget.Widget {
311
325
  this.requestUpdate();
312
326
  };
313
327
 
314
- #handleThreadClick = (thread: CommentManager.CommentManager.CommentThread): void => {
315
- void Common.Revealer.reveal(thread);
328
+ #handleThreadClick = (
329
+ thread: CommentManager.CommentManager.CommentThread,
330
+ position?: {left: number, top: number},
331
+ ): void => {
332
+ void Common.Revealer.reveal(new CommentManager.CommentThread.RevealableThread(thread, position));
316
333
  };
317
334
 
318
335
  #handleDeleteThread = (threadId: string): void => {
@@ -123,20 +123,19 @@
123
123
  }
124
124
 
125
125
  .comment-pin-badge {
126
- display: flex;
127
- align-items: center;
128
- justify-content: center;
129
126
  width: var(--sys-size-9);
130
127
  height: var(--sys-size-9);
131
128
  margin-right: var(--sys-size-2);
132
129
  border-radius: var(--sys-shape-corner-full) var(--sys-shape-corner-full) var(--sys-shape-corner-full) var(--sys-shape-corner-extra-small);
133
130
  background-color: var(--sys-color-primary);
134
- color: var(--sys-color-on-primary);
135
- font-size: var(--sys-typescale-body5-size);
136
- font-weight: var(--ref-typeface-weight-bold);
137
131
  flex-shrink: 0;
138
132
  }
139
133
 
134
+ .comment-thread-item.orphaned .comment-pin-badge {
135
+ background-color: var(--sys-color-surface-variant);
136
+ color: var(--sys-color-on-surface-subtle);
137
+ }
138
+
140
139
  .anchor-chip {
141
140
  display: flex;
142
141
  height: calc(var(--sys-size-8) + var(--sys-size-2));
@@ -155,6 +154,26 @@
155
154
  pointer-events: none;
156
155
  }
157
156
 
157
+ .anchor-chip.orphaned {
158
+ border-style: dashed;
159
+ border-color: var(--sys-color-neutral-outline);
160
+ background: transparent;
161
+ color: var(--sys-color-state-disabled);
162
+ gap: var(--sys-size-3);
163
+ }
164
+
165
+ .anchor-chip.orphaned .anchor-chip-text {
166
+ color: var(--sys-color-state-disabled);
167
+ }
168
+
169
+ .orphaned-label {
170
+ flex-shrink: 0;
171
+ color: var(--sys-color-on-surface-subtle);
172
+ font-family: var(--default-font-family);
173
+ font-size: var(--sys-typescale-body5-size);
174
+ font-style: italic;
175
+ }
176
+
158
177
  .anchor-chip devtools-widget,
159
178
  .anchor-chip-text {
160
179
  display: block;
@@ -231,7 +231,7 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: ViewOutput, target: HTML
231
231
  ${buttonText}
232
232
  </devtools-button>
233
233
  </div>
234
- ` : html`${input.comments.map(comment => comment.author === 'DEVELOPER' ? html`
234
+ ` : html`<div class="thread-body">${input.comments.map(comment => comment.author === 'DEVELOPER' ? html`
235
235
  <div class="comment-text"
236
236
  @click=${() => {input.onSetEditMode(true);}}
237
237
  >
@@ -248,7 +248,7 @@ export const DEFAULT_VIEW = (input: ViewInput, _output: ViewOutput, target: HTML
248
248
  )}
249
249
  </div>
250
250
  </div>
251
- `)}
251
+ `)}</div>
252
252
  `}
253
253
  </div>
254
254
  `, target);