chrome-devtools-frontend 1.0.937775 → 1.0.939144

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 (312) hide show
  1. package/.stylelintrc.json +15 -11
  2. package/config/gni/all_devtools_files.gni +0 -5
  3. package/config/gni/devtools_grd_files.gni +2 -4
  4. package/front_end/Images/whatsnew.avif +0 -0
  5. package/front_end/Tests.js +30 -30
  6. package/front_end/core/host/InspectorFrontendHost.ts +16 -30
  7. package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -0
  8. package/front_end/core/host/UserMetrics.ts +25 -0
  9. package/front_end/core/i18n/locales/en-US.json +4 -1
  10. package/front_end/core/i18n/locales/en-XL.json +4 -1
  11. package/front_end/core/sdk/DOMModel.ts +1 -1
  12. package/front_end/core/sdk/EmulationModel.ts +11 -0
  13. package/front_end/core/sdk/NetworkManager.ts +1 -0
  14. package/front_end/core/sdk/sdk-meta.ts +30 -1
  15. package/front_end/entrypoints/devtools_app/devtools_app.json +0 -2
  16. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +9 -2
  17. package/front_end/entrypoints/inspector_main/renderingOptions.css +2 -2
  18. package/front_end/entrypoints/main/MainImpl.ts +14 -0
  19. package/front_end/entrypoints/main/main-meta.ts +0 -2
  20. package/front_end/entrypoints/node_app/node_app-meta.ts +0 -3
  21. package/front_end/entrypoints/node_app/node_app.js +3 -0
  22. package/front_end/entrypoints/node_main/nodeConnectionsPanel.css +2 -2
  23. package/front_end/entrypoints/shell/shell.json +1 -3
  24. package/front_end/entrypoints/worker_app/worker_app.json +0 -2
  25. package/front_end/generated/InspectorBackendCommands.js +14 -5
  26. package/front_end/generated/SupportedCSSProperties.js +8 -4
  27. package/front_end/generated/protocol-mapping.d.ts +10 -0
  28. package/front_end/generated/protocol-proxy-api.d.ts +19 -0
  29. package/front_end/generated/protocol.d.ts +56 -1
  30. package/front_end/legacy_test_runner/test_runner/test_runner.js +2 -4
  31. package/front_end/models/issues_manager/DeprecationIssue.ts +67 -0
  32. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  33. package/front_end/models/issues_manager/descriptions/deprecation.md +3 -0
  34. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  35. package/front_end/models/persistence/editFileSystemView.css +1 -1
  36. package/front_end/models/persistence/workspaceSettingsTab.css +1 -1
  37. package/front_end/panels/accessibility/accessibilityNode.css +2 -2
  38. package/front_end/panels/accessibility/axBreadcrumbs.css +1 -1
  39. package/front_end/panels/animation/animationTimeline.css +5 -5
  40. package/front_end/panels/application/components/frameDetailsReportView.css +1 -1
  41. package/front_end/panels/application/module.json +1 -2
  42. package/front_end/panels/application/resourcesPanel.css +1 -1
  43. package/front_end/panels/application/resourcesSidebar.css +1 -1
  44. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +0 -5
  45. package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +2 -5
  46. package/front_end/panels/changes/changesSidebar.css +1 -1
  47. package/front_end/panels/changes/changesView.css +2 -2
  48. package/front_end/panels/console/consolePrompt.css +1 -1
  49. package/front_end/panels/console/consoleSidebar.css +4 -4
  50. package/front_end/panels/console/consoleView.css +2 -2
  51. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +18 -17
  52. package/front_end/panels/css_overview/CSSOverviewPanel.ts +31 -10
  53. package/front_end/panels/css_overview/components/cssOverviewStartView.css +1 -1
  54. package/front_end/panels/css_overview/cssOverviewCompletedView.css +8 -8
  55. package/front_end/panels/elements/classesPaneWidget.css +1 -1
  56. package/front_end/panels/elements/components/adornerSettingsPane.css +1 -1
  57. package/front_end/panels/elements/computedStyleWidgetTree.css +1 -1
  58. package/front_end/panels/elements/elements-meta.ts +0 -2
  59. package/front_end/panels/elements/elementsPanel.css +1 -1
  60. package/front_end/panels/elements/elementsTreeOutline.css +1 -1
  61. package/front_end/panels/elements/layoutPane.css +1 -1
  62. package/front_end/panels/elements/platformFontsWidget.css +1 -1
  63. package/front_end/panels/elements/stylesSectionTree.css +1 -1
  64. package/front_end/panels/elements/stylesSidebarPane.css +8 -0
  65. package/front_end/panels/event_listeners/EventListenersView.ts +5 -4
  66. package/front_end/panels/event_listeners/eventListenersView.css +3 -2
  67. package/front_end/panels/help/ReleaseNoteText.ts +28 -0
  68. package/front_end/panels/issues/IssueKindView.ts +0 -6
  69. package/front_end/panels/issues/IssueView.ts +19 -27
  70. package/front_end/panels/issues/components/HideIssuesMenu.ts +7 -11
  71. package/front_end/panels/issues/components/hideIssuesMenu.css +8 -0
  72. package/front_end/panels/issues/issuesTree.css +28 -5
  73. package/front_end/panels/lighthouse/lighthouseStartView.css +2 -2
  74. package/front_end/panels/media/playerListView.css +1 -1
  75. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +1 -1
  76. package/front_end/panels/network/NetworkSearchScope.ts +3 -1
  77. package/front_end/panels/network/blockedURLsPane.css +1 -1
  78. package/front_end/panels/network/networkConfigView.css +1 -1
  79. package/front_end/panels/network/networkLogView.css +3 -3
  80. package/front_end/panels/profiler/profileLauncherView.css +3 -3
  81. package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +0 -2
  82. package/front_end/panels/security/mainView.css +2 -2
  83. package/front_end/panels/security/originView.css +1 -1
  84. package/front_end/panels/sensors/sensors.css +2 -2
  85. package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +1 -1
  86. package/front_end/panels/settings/emulation/devicesSettingsTab.css +4 -4
  87. package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +1 -1
  88. package/front_end/panels/settings/settingsScreen.css +2 -2
  89. package/front_end/panels/sources/CoveragePlugin.ts +7 -2
  90. package/front_end/panels/sources/JavaScriptBreakpointsSidebarPane.ts +14 -17
  91. package/front_end/panels/sources/callStackSidebarPane.css +1 -1
  92. package/front_end/panels/sources/dialog.css +1 -1
  93. package/front_end/panels/sources/javaScriptBreakpointsSidebarPane.css +19 -45
  94. package/front_end/panels/sources/navigatorTree.css +4 -4
  95. package/front_end/panels/sources/sources-meta.ts +0 -2
  96. package/front_end/panels/sources/sourcesPanel.css +2 -2
  97. package/front_end/panels/sources/threadsSidebarPane.css +1 -1
  98. package/front_end/panels/timeline/components/WebVitalsTooltip.css +1 -1
  99. package/front_end/panels/timeline/historyToolbarButton.css +1 -1
  100. package/front_end/panels/timeline/timelineStatusDialog.css +1 -1
  101. package/front_end/panels/webauthn/webauthnPane.css +2 -2
  102. package/front_end/third_party/puppeteer/package/CHANGELOG.md +29 -0
  103. package/front_end/third_party/puppeteer/package/README.md +12 -14
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.d.ts +2 -0
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.d.ts.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.js +13 -5
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.js.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +2 -2
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.d.ts +10 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.d.ts.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.js +25 -7
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.js.map +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.js +6 -6
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.js.map +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.d.ts +3 -1
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.d.ts.map +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.js +16 -12
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.js.map +1 -1
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Dialog.js +2 -2
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Dialog.js.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +10 -1
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +9 -1
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js.map +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.js +8 -8
  129. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.js.map +1 -1
  130. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FileChooser.js +2 -2
  131. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FileChooser.js.map +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.d.ts +21 -9
  133. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.d.ts.map +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.js +155 -72
  135. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.js.map +1 -1
  136. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.d.ts +5 -0
  137. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.js +32 -29
  139. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.js.map +1 -1
  140. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.js +14 -4
  142. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.js.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.d.ts +2 -3
  144. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.d.ts.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.js +3 -4
  146. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.js.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.d.ts +3 -3
  148. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.d.ts.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.js +13 -12
  150. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.js.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LifecycleWatcher.js +1 -1
  152. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LifecycleWatcher.js.map +1 -1
  153. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkManager.d.ts.map +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkManager.js +2 -5
  155. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkManager.js.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.d.ts +33 -4
  157. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.d.ts.map +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.js +92 -46
  159. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.js.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Puppeteer.js +5 -5
  161. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Puppeteer.js.map +1 -1
  162. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.d.ts +3 -1
  163. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.d.ts.map +1 -1
  164. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.js +3 -2
  165. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.js.map +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.d.ts +21 -0
  167. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.d.ts.map +1 -0
  168. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.js +30 -0
  169. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.js.map +1 -0
  170. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Tracing.js +1 -1
  171. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Tracing.js.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.js +5 -5
  173. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.js.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserFetcher.js +14 -14
  175. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserFetcher.js.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  177. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.js +11 -5
  178. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.js.map +1 -1
  179. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +4 -0
  180. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.d.ts.map +1 -1
  182. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js +30 -15
  183. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js.map +1 -1
  184. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.js +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.js.map +1 -1
  186. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.js +2 -2
  187. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.js.map +1 -1
  188. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node-puppeteer-core.js +1 -1
  189. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node-puppeteer-core.js.map +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node.js +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node.js.map +1 -1
  192. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/web.js +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/web.js.map +1 -1
  194. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts +2 -0
  195. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts.map +1 -1
  196. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js +9 -1
  197. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts +10 -1
  199. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js +22 -4
  201. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts +3 -1
  203. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js +6 -2
  205. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js.map +1 -1
  206. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +10 -1
  207. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +7 -0
  209. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts +21 -9
  211. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js +150 -68
  213. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts +5 -0
  215. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.js +22 -19
  217. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.js.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  219. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js +15 -4
  220. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js.map +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts +2 -3
  222. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts.map +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.js +2 -3
  224. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.js.map +1 -1
  225. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts +3 -3
  226. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js +2 -1
  228. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -1
  230. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.js +1 -4
  231. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.js.map +1 -1
  232. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts +33 -4
  233. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts.map +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.js +69 -23
  235. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.js.map +1 -1
  236. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts +3 -1
  237. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts.map +1 -1
  238. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.js +3 -2
  239. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.js.map +1 -1
  240. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.d.ts +21 -0
  241. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.d.ts.map +1 -0
  242. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.js +26 -0
  243. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.js.map +1 -0
  244. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.js +1 -1
  245. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.js.map +1 -1
  246. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.js +1 -1
  247. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.js.map +1 -1
  248. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js +7 -1
  250. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js.map +1 -1
  251. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +4 -0
  252. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -1
  254. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js +27 -12
  255. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js.map +1 -1
  256. package/front_end/third_party/puppeteer/package/lib/types.d.ts +3862 -3771
  257. package/front_end/third_party/puppeteer/package/package.json +33 -40
  258. package/front_end/ui/components/adorners/adorner.css +1 -1
  259. package/front_end/ui/components/expandable_list/expandableList.css +1 -1
  260. package/front_end/ui/components/icon_button/iconButton.css +1 -0
  261. package/front_end/ui/components/linear_memory_inspector/valueInterpreterDisplay.css +1 -2
  262. package/front_end/ui/components/linear_memory_inspector/valueInterpreterSettings.css +1 -1
  263. package/front_end/ui/components/report_view/reportKey.css +1 -1
  264. package/front_end/ui/components/report_view/reportValue.css +1 -1
  265. package/front_end/ui/components/settings/settingCheckbox.css +5 -0
  266. package/front_end/ui/legacy/ContextMenu.ts +10 -3
  267. package/front_end/ui/legacy/SoftContextMenu.ts +9 -2
  268. package/front_end/ui/legacy/XLink.ts +3 -6
  269. package/front_end/ui/legacy/checkboxTextLabel.css +5 -1
  270. package/front_end/ui/legacy/components/color_picker/spectrum.css +9 -9
  271. package/front_end/ui/legacy/components/data_grid/dataGrid.css +2 -2
  272. package/front_end/ui/legacy/components/inline_editor/cssAngleEditor.css +3 -3
  273. package/front_end/ui/legacy/components/inline_editor/cssLength.css +1 -1
  274. package/front_end/ui/legacy/components/inline_editor/cssShadowEditor.css +1 -1
  275. package/front_end/ui/legacy/components/inline_editor/fontEditor.css +1 -1
  276. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +2 -2
  277. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +13 -7
  278. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +2 -2
  279. package/front_end/ui/legacy/components/source_frame/imageView.css +1 -1
  280. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +6 -14
  281. package/front_end/ui/legacy/emptyWidget.css +1 -1
  282. package/front_end/ui/legacy/filter.css +1 -1
  283. package/front_end/ui/legacy/infobar.css +2 -2
  284. package/front_end/ui/legacy/inspectorCommon.css +49 -45
  285. package/front_end/ui/legacy/inspectorSyntaxHighlight.css +4 -4
  286. package/front_end/ui/legacy/inspectorSyntaxHighlightDark.css +1 -1
  287. package/front_end/ui/legacy/inspectorViewTabbedPane.css +1 -1
  288. package/front_end/ui/legacy/searchableView.css +1 -1
  289. package/front_end/ui/legacy/softContextMenu.css +11 -1
  290. package/front_end/ui/legacy/tabbedPane.css +5 -0
  291. package/front_end/ui/legacy/textPrompt.css +1 -1
  292. package/front_end/ui/legacy/themeColors.css +1 -0
  293. package/front_end/ui/legacy/toolbar.css +8 -8
  294. package/front_end/ui/legacy/treeoutline.css +20 -4
  295. package/front_end/ui/legacy/viewContainers.css +6 -1
  296. package/inspector_overlay/common.css +2 -2
  297. package/inspector_overlay/tool_highlight.css +1 -1
  298. package/inspector_overlay/tool_paused.css +2 -2
  299. package/package.json +1 -1
  300. package/scripts/eslint_rules/lib/check_test_definitions.js +2 -1
  301. package/scripts/eslint_rules/lib/es_modules_import.js +21 -20
  302. package/scripts/eslint_rules/lib/l10n_filename_matches.js +4 -3
  303. package/scripts/eslint_rules/lib/migrate_create_shadow_root_with_styles.js +2 -2
  304. package/scripts/eslint_rules/lib/migrate_register_required_css.js +1 -1
  305. package/scripts/eslint_rules/tests/check_test_definitions_test.js +34 -0
  306. package/scripts/eslint_rules/tests/es_modules_import_test.js +3 -2
  307. package/scripts/eslint_rules/tests/migrate_create_shadow_root_with_styles_test.js +1 -1
  308. package/scripts/eslint_rules/tests/migrate_register_required_css_test.js +1 -1
  309. package/front_end/panels/browser_debugger/module.json +0 -6
  310. package/front_end/panels/elements/module.json +0 -5
  311. package/front_end/panels/protocol_monitor/module.json +0 -5
  312. package/front_end/panels/sources/module.json +0 -5
@@ -11,12 +11,9 @@ import * as TextUtils from '../../models/text_utils/text_utils.js';
11
11
  import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
12
12
  import * as Components from '../../ui/legacy/components/utils/utils.js';
13
13
  import * as UI from '../../ui/legacy/legacy.js';
14
-
15
- import cssOverviewCompletedViewStyles from './cssOverviewCompletedView.css.js';
16
-
17
- import type * as ProtocolProxyApi from '../../generated/protocol-proxy-api.js';
18
14
  import type * as Protocol from '../../generated/protocol.js';
19
15
 
16
+ import cssOverviewCompletedViewStyles from './cssOverviewCompletedView.css.js';
20
17
  import type {OverviewController, PopulateNodesEvent, PopulateNodesEventNodes, PopulateNodesEventNodeTypes} from './CSSOverviewController.js';
21
18
  import {Events as CSSOverViewControllerEvents} from './CSSOverviewController.js';
22
19
  import {CSSOverviewSidebarPanel, SidebarEvents} from './CSSOverviewSidebarPanel.js';
@@ -227,15 +224,14 @@ export class CSSOverviewCompletedView extends UI.Panel.PanelWithSidebar {
227
224
  readonly #resultsContainer: UI.Widget.VBox;
228
225
  readonly #elementContainer: DetailsView;
229
226
  readonly #sideBar: CSSOverviewSidebarPanel;
230
- #cssModel: SDK.CSSModel.CSSModel;
231
- #domModel: SDK.DOMModel.DOMModel;
232
- readonly #domAgent: ProtocolProxyApi.DOMApi;
227
+ #cssModel?: SDK.CSSModel.CSSModel;
228
+ #domModel?: SDK.DOMModel.DOMModel;
233
229
  #linkifier: Components.Linkifier.Linkifier;
234
230
  #viewMap: Map<string, ElementDetailsView>;
235
231
  #data: OverviewData|null;
236
232
  #fragment?: UI.Fragment.Fragment;
237
233
 
238
- constructor(controller: OverviewController, target: SDK.Target.Target) {
234
+ constructor(controller: OverviewController) {
239
235
  super('css_overview_completed_view');
240
236
 
241
237
  this.#controller = controller;
@@ -264,14 +260,6 @@ export class CSSOverviewCompletedView extends UI.Panel.PanelWithSidebar {
264
260
  this.splitWidget().setSidebarWidget(this.#sideBar);
265
261
  this.splitWidget().setMainWidget(this.#mainContainer);
266
262
 
267
- const cssModel = target.model(SDK.CSSModel.CSSModel);
268
- const domModel = target.model(SDK.DOMModel.DOMModel);
269
- if (!cssModel || !domModel) {
270
- throw new Error('Target must provide CSS and DOM models');
271
- }
272
- this.#cssModel = cssModel;
273
- this.#domModel = domModel;
274
- this.#domAgent = target.domAgent();
275
263
  this.#linkifier = new Components.Linkifier.Linkifier(/* maxLinkLength */ 20, /* useLinkDecorator */ true);
276
264
 
277
265
  this.#viewMap = new Map();
@@ -300,6 +288,16 @@ export class CSSOverviewCompletedView extends UI.Panel.PanelWithSidebar {
300
288
  // TODO(paullewis): update the links in the panels in case source has been .
301
289
  }
302
290
 
291
+ initializeModels(target: SDK.Target.Target): void {
292
+ const cssModel = target.model(SDK.CSSModel.CSSModel);
293
+ const domModel = target.model(SDK.DOMModel.DOMModel);
294
+ if (!cssModel || !domModel) {
295
+ throw new Error('Target must provide CSS and DOM models');
296
+ }
297
+ this.#cssModel = cssModel;
298
+ this.#domModel = domModel;
299
+ }
300
+
303
301
  private sideBarItemSelected(event: Common.EventTarget.EventTargetEvent<string>): void {
304
302
  const {data} = event;
305
303
  const section = (this.#fragment as UI.Fragment.Fragment).$(data);
@@ -650,6 +648,9 @@ export class CSSOverviewCompletedView extends UI.Panel.PanelWithSidebar {
650
648
 
651
649
  let view = this.#viewMap.get(id);
652
650
  if (!view) {
651
+ if (!this.#domModel || !this.#cssModel) {
652
+ throw new Error('Unable to initialize CSS Overview, missing models');
653
+ }
653
654
  view = new ElementDetailsView(this.#controller, this.#domModel, this.#cssModel, this.#linkifier);
654
655
  view.populateNodes(payload.nodes);
655
656
  this.#viewMap.set(id, view);
@@ -970,7 +971,7 @@ export class ElementDetailsView extends UI.Widget.Widget {
970
971
  this.#elementGrid.setStriped(true);
971
972
  this.#elementGrid.addEventListener(DataGrid.DataGrid.Events.SortingChanged, this.sortMediaQueryDataGrid.bind(this));
972
973
 
973
- this.element.appendChild(this.#elementGrid.element);
974
+ this.#elementGrid.asWidget().show(this.element);
974
975
  }
975
976
 
976
977
  private sortMediaQueryDataGrid(): void {
@@ -21,12 +21,13 @@ import type {UnusedDeclaration} from './CSSOverviewUnusedDeclarations.js';
21
21
  // eslint-disable-next-line @typescript-eslint/naming-convention
22
22
  let CSSOverviewPanelInstance: CSSOverviewPanel;
23
23
 
24
- export class CSSOverviewPanel extends UI.Panel.Panel {
25
- readonly #model: CSSOverviewModel;
24
+ export class CSSOverviewPanel extends UI.Panel.Panel implements SDK.TargetManager.Observer {
26
25
  readonly #controller: OverviewController;
27
26
  readonly #startView: CSSOverviewComponents.CSSOverviewStartView.CSSOverviewStartView;
28
27
  readonly #processingView: CSSOverviewProcessingView;
29
28
  readonly #completedView: CSSOverviewCompletedView;
29
+ #model?: CSSOverviewModel;
30
+ #target?: SDK.Target.Target;
30
31
  #backgroundColors!: Map<string, Set<Protocol.DOM.BackendNodeId>>;
31
32
  #textColors!: Map<string, Set<Protocol.DOM.BackendNodeId>>;
32
33
  #fillColors!: Map<string, Set<Protocol.DOM.BackendNodeId>>;
@@ -44,15 +45,14 @@ export class CSSOverviewPanel extends UI.Panel.Panel {
44
45
 
45
46
  this.element.classList.add('css-overview-panel');
46
47
 
47
- const [model] = SDK.TargetManager.TargetManager.instance().models(CSSOverviewModel);
48
- this.#model = (model as CSSOverviewModel);
49
-
50
48
  this.#controller = new OverviewController();
51
49
  this.#startView = new CSSOverviewComponents.CSSOverviewStartView.CSSOverviewStartView();
52
50
  this.#startView.addEventListener(
53
51
  'overviewstartrequested', () => this.#controller.dispatchEventToListeners(Events.RequestOverviewStart));
54
52
  this.#processingView = new CSSOverviewProcessingView(this.#controller);
55
- this.#completedView = new CSSOverviewCompletedView(this.#controller, model.target());
53
+ this.#completedView = new CSSOverviewCompletedView(this.#controller);
54
+
55
+ SDK.TargetManager.TargetManager.instance().observeTargets(this);
56
56
 
57
57
  this.#controller.addEventListener(Events.RequestOverviewStart, _event => {
58
58
  Host.userMetrics.actionTaken(Host.UserMetrics.Action.CaptureCssOverviewClicked);
@@ -73,6 +73,26 @@ export class CSSOverviewPanel extends UI.Panel.Panel {
73
73
  return CSSOverviewPanelInstance;
74
74
  }
75
75
 
76
+ targetAdded(target: SDK.Target.Target): void {
77
+ if (this.#target) {
78
+ return;
79
+ }
80
+ this.#target = target;
81
+ this.#completedView.initializeModels(target);
82
+ const [model] = SDK.TargetManager.TargetManager.instance().models(CSSOverviewModel);
83
+ this.#model = (model as CSSOverviewModel);
84
+ }
85
+
86
+ targetRemoved(): void {
87
+ }
88
+
89
+ private getModel(): CSSOverviewModel {
90
+ if (!this.#model) {
91
+ throw new Error('Did not retrieve model information yet.');
92
+ }
93
+ return this.#model;
94
+ }
95
+
76
96
  private reset(): void {
77
97
  this.#backgroundColors = new Map();
78
98
  this.#textColors = new Map();
@@ -104,7 +124,7 @@ export class CSSOverviewPanel extends UI.Panel.Panel {
104
124
  }
105
125
 
106
126
  private requestNodeHighlight(evt: Common.EventTarget.EventTargetEvent<number>): void {
107
- this.#model.highlightNode((evt.data as Protocol.DOM.BackendNodeId));
127
+ this.getModel().highlightNode((evt.data as Protocol.DOM.BackendNodeId));
108
128
  }
109
129
 
110
130
  private renderInitialView(): void {
@@ -144,10 +164,11 @@ export class CSSOverviewPanel extends UI.Panel.Panel {
144
164
  private async startOverview(): Promise<void> {
145
165
  this.renderOverviewStartedView();
146
166
 
167
+ const model = this.getModel();
147
168
  const [globalStyleStats, { elementCount, backgroundColors, textColors, textColorContrastIssues, fillColors, borderColors, fontInfo, unusedDeclarations }, mediaQueries] = await Promise.all([
148
- this.#model.getGlobalStylesheetStats(),
149
- this.#model.getNodeStyleStats(),
150
- this.#model.getMediaQueries(),
169
+ model.getGlobalStylesheetStats(),
170
+ model.getNodeStyleStats(),
171
+ model.getMediaQueries(),
151
172
  ]);
152
173
 
153
174
  if (elementCount) {
@@ -84,7 +84,7 @@ h1 {
84
84
  font-size: 13px;
85
85
  line-height: 20px;
86
86
  letter-spacing: 0.01em;
87
- margin: 9px 0 14px 0;
87
+ margin: 9px 0 14px;
88
88
  }
89
89
 
90
90
  .preview-icon {
@@ -28,7 +28,7 @@
28
28
 
29
29
  .overview-completed-view .colors ul li {
30
30
  display: inline-block;
31
- margin: 0 0 16px 0;
31
+ margin: 0 0 16px;
32
32
  padding: 0 8px 0 0;
33
33
  }
34
34
 
@@ -111,7 +111,7 @@
111
111
  font-size: 15px;
112
112
  font-weight: normal;
113
113
  padding: 0;
114
- margin: 0 0 20px 0;
114
+ margin: 0 0 20px;
115
115
  padding-left: calc(var(--overview-default-padding) + var(--overview-icon-padding));
116
116
  position: relative;
117
117
  height: 26px;
@@ -119,7 +119,7 @@
119
119
  }
120
120
 
121
121
  .results-section h1::before {
122
- content: '';
122
+ content: "";
123
123
  display: block;
124
124
  position: absolute;
125
125
  left: var(--overview-default-padding);
@@ -264,14 +264,14 @@
264
264
  .overview-completed-view .font-info h2 {
265
265
  font-size: 14px;
266
266
  font-weight: bold;
267
- margin: 0 0 1em 0;
267
+ margin: 0 0 1em;
268
268
  }
269
269
 
270
270
  .overview-completed-view .font-info h3 {
271
271
  font-size: 13px;
272
272
  font-weight: normal;
273
273
  font-style: italic;
274
- margin: 0 0 0.5em 0;
274
+ margin: 0 0 0.5em;
275
275
  }
276
276
 
277
277
  .overview-completed-view .font-info {
@@ -300,7 +300,7 @@
300
300
  width: 30px;
301
301
  }
302
302
 
303
- .contrast-warning [is=ui-icon] {
303
+ .contrast-warning [is="ui-icon"] {
304
304
  margin-left: 5px;
305
305
  }
306
306
 
@@ -318,11 +318,11 @@
318
318
  min-width: initial;
319
319
  }
320
320
 
321
- [is=ui-icon].smallicon-checkmark-square {
321
+ [is="ui-icon"].smallicon-checkmark-square {
322
322
  background-color: var(--color-green);
323
323
  }
324
324
 
325
- [is=ui-icon].smallicon-no {
325
+ [is="ui-icon"].smallicon-no {
326
326
  background-color: var(--color-red);
327
327
  }
328
328
 
@@ -16,7 +16,7 @@
16
16
  justify-content: flex-start;
17
17
  }
18
18
 
19
- .styles-element-classes-pane [is=dt-checkbox] {
19
+ .styles-element-classes-pane [is="dt-checkbox"] {
20
20
  margin-right: 15px;
21
21
  }
22
22
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  .close::before,
46
46
  .close::after {
47
- content: '';
47
+ content: "";
48
48
  display: inline-block;
49
49
  position: absolute;
50
50
  left: 0;
@@ -32,7 +32,7 @@
32
32
  }
33
33
 
34
34
  .group-title > h1 {
35
- margin: 1px 0 0 0;
35
+ margin: 1px 0 0;
36
36
  padding: 1em 0;
37
37
  width: 100%;
38
38
  cursor: pointer;
@@ -140,8 +140,6 @@ let loadedElementsModule: (typeof Elements|undefined);
140
140
 
141
141
  async function loadElementsModule(): Promise<typeof Elements> {
142
142
  if (!loadedElementsModule) {
143
- // Side-effect import resources in module.json
144
- await Root.Runtime.Runtime.instance().loadModulePromise('panels/elements');
145
143
  loadedElementsModule = await import('./elements.js');
146
144
  }
147
145
  return loadedElementsModule;
@@ -30,7 +30,7 @@
30
30
  #elements-content {
31
31
  flex: 1 1;
32
32
  overflow: auto;
33
- padding: 2px 0 0 0;
33
+ padding: 2px 0 0;
34
34
  }
35
35
 
36
36
  .style-panes-wrapper {
@@ -67,7 +67,7 @@
67
67
  user-select: none;
68
68
  -webkit-mask-image: var(--image-file-treeoutlineTriangles);
69
69
  -webkit-mask-size: 32px 24px;
70
- content: '\A0\A0';
70
+ content: "\A0\A0";
71
71
  color: transparent;
72
72
  text-shadow: none;
73
73
  margin-right: -3px;
@@ -160,7 +160,7 @@
160
160
  }
161
161
  /* We set dimensions for the invisible input to support quick highlight a11y feature
162
162
  that uses the dimensions to draw an outline around the element. */
163
- .color-picker-label input[type=color] {
163
+ .color-picker-label input[type="color"] {
164
164
  width: 100%;
165
165
  height: 100%;
166
166
  position: absolute;
@@ -44,5 +44,5 @@
44
44
  }
45
45
 
46
46
  .font-stats-item .font-delimeter {
47
- margin: 0 1ex 0 1ex;
47
+ margin: 0 1ex;
48
48
  }
@@ -137,7 +137,7 @@ ol.expanded {
137
137
 
138
138
  .tree-outline li.editing-sub-part {
139
139
  padding: 3px 6px 8px 18px;
140
- margin: -1px -6px -8px -6px;
140
+ margin: -1px -6px -8px;
141
141
  text-overflow: clip;
142
142
  }
143
143
 
@@ -260,6 +260,10 @@
260
260
  text-decoration-color: linktext;
261
261
  }
262
262
 
263
+ .styles-section .styles-section-subtitle .devtools-link:focus-visible {
264
+ color: HighlightText;
265
+ }
266
+
263
267
  .styles-section:focus-visible *,
264
268
  .styles-section.read-only:focus-visible *,
265
269
  .styles-section:focus-visible .styles-section-subtitle .devtools-link {
@@ -276,6 +280,10 @@
276
280
  .styles-section:focus-visible .sidebar-pane-section-toolbar {
277
281
  background-color: ButtonFace;
278
282
  }
283
+
284
+ .styles-section:focus-visible {
285
+ --webkit-css-property-color: HighlightText;
286
+ }
279
287
  }
280
288
 
281
289
  .spinner::before {
@@ -301,10 +301,6 @@ export class ObjectEventListenerBar extends UI.TreeOutline.TreeElement {
301
301
 
302
302
  private setTitle(object: SDK.RemoteObject.RemoteObject, linkifier: Components.Linkifier.Linkifier): void {
303
303
  const title = this.listItemElement.createChild('span', 'event-listener-details');
304
- const subtitle = this.listItemElement.createChild('span', 'event-listener-tree-subtitle');
305
- const linkElement =
306
- linkifier.linkifyRawLocation(this.eventListenerInternal.location(), this.eventListenerInternal.sourceURL());
307
- subtitle.appendChild(linkElement);
308
304
 
309
305
  const propertyValue = ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.createPropertyValue(
310
306
  object, /* wasThrown */ false, /* showPreview */ false);
@@ -333,6 +329,11 @@ export class ObjectEventListenerBar extends UI.TreeOutline.TreeElement {
333
329
  title.appendChild(passiveButton);
334
330
  }
335
331
 
332
+ const subtitle = title.createChild('span', 'event-listener-tree-subtitle');
333
+ const linkElement =
334
+ linkifier.linkifyRawLocation(this.eventListenerInternal.location(), this.eventListenerInternal.sourceURL());
335
+ subtitle.appendChild(linkElement);
336
+
336
337
  this.listItemElement.addEventListener('contextmenu', event => {
337
338
  const menu = new UI.ContextMenu.ContextMenu(event);
338
339
  if (event.target !== linkElement) {
@@ -33,7 +33,8 @@
33
33
  color: var(--color-syntax-2);
34
34
  }
35
35
 
36
- .tree-outline-disclosure .object-value-node {
36
+ .tree-outline-disclosure .object-value-node,
37
+ .tree-outline-disclosure .object-value-object {
37
38
  overflow: hidden;
38
39
  text-overflow: ellipsis;
39
40
  }
@@ -53,7 +54,7 @@
53
54
  background-color: var(--color-background-elevation-1);
54
55
  border-radius: 3px;
55
56
  border: 1px solid var(--color-details-hairline);
56
- margin-left: 10px;
57
+ margin-left: 5px;
57
58
  display: block;
58
59
  cursor: pointer;
59
60
  opacity: 80%;
@@ -35,6 +35,34 @@ function getLocalizedReleaseNoteURL(url: string): string {
35
35
  }
36
36
 
37
37
  export const releaseNoteText: ReleaseNote[] = [
38
+ {
39
+ version: 39,
40
+ header: 'Highlights from the Chrome 97 update',
41
+ highlights: [
42
+ {
43
+ title: 'New preview feature: Recorder panel',
44
+ subtitle: 'Record, replay and measure user flows with options to export to Puppeteer script and more.',
45
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#recorder'),
46
+ },
47
+ {
48
+ title: 'Enhanced "Edit as HTML" with code completion',
49
+ subtitle: 'Edit as HTML in the Elements panel now supports code completion, syntax highlights and more.',
50
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#code-completion'),
51
+ },
52
+ {
53
+ title: 'Refresh device list in Device Mode',
54
+ subtitle: 'New devices are added in the device list.',
55
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#device'),
56
+ },
57
+ {
58
+ title: 'Improved code debugging experience',
59
+ subtitle:
60
+ 'Include column number in the Console stack trace, improved breakpoints display in the Sources panel and more.',
61
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#debugging'),
62
+ },
63
+ ],
64
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97'),
65
+ },
38
66
  {
39
67
  version: 38,
40
68
  header: 'Highlights from the Chrome 96 update',
@@ -110,12 +110,6 @@ export class IssueKindView extends UI.TreeOutline.TreeElement {
110
110
  header.appendChild(countAdorner);
111
111
  header.appendChild(title);
112
112
  header.appendChild(hideAvailableIssuesBtn);
113
- header.addEventListener('mouseenter', () => {
114
- hideAvailableIssuesBtn.setVisible(true);
115
- });
116
- header.addEventListener('mouseleave', () => {
117
- hideAvailableIssuesBtn.setVisible(false);
118
- });
119
113
 
120
114
  this.listItemElement.appendChild(header);
121
115
  }
@@ -222,7 +222,7 @@ export class IssueView extends UI.TreeOutline.TreeElement {
222
222
  private hasBeenExpandedBefore: boolean;
223
223
  private throttle: Common.Throttler.Throttler;
224
224
  private needsUpdateOnExpand = true;
225
- private hiddenIssuesMenu: Components.HideIssuesMenu.HideIssuesMenu;
225
+ private hiddenIssuesMenu?: Components.HideIssuesMenu.HideIssuesMenu;
226
226
  private contentCreated: boolean = false;
227
227
 
228
228
  constructor(issue: AggregatedIssue, description: IssuesManager.MarkdownIssueDescription.IssueDescription) {
@@ -256,8 +256,9 @@ export class IssueView extends UI.TreeOutline.TreeElement {
256
256
  new WasmCrossOriginModuleSharingAffectedResourcesView(this, this.issue),
257
257
  new AffectedRawCookieLinesView(this, this.issue),
258
258
  ];
259
-
260
- this.hiddenIssuesMenu = new Components.HideIssuesMenu.HideIssuesMenu();
259
+ if (Root.Runtime.experiments.isEnabled('hideIssuesFeature')) {
260
+ this.hiddenIssuesMenu = new Components.HideIssuesMenu.HideIssuesMenu();
261
+ }
261
262
  this.aggregatedIssuesCount = null;
262
263
  this.hasBeenExpandedBefore = false;
263
264
  }
@@ -318,10 +319,6 @@ export class IssueView extends UI.TreeOutline.TreeElement {
318
319
 
319
320
  private appendHeader(): void {
320
321
  const header = document.createElement('div');
321
- if (Root.Runtime.experiments.isEnabled('hideIssuesFeature')) {
322
- header.addEventListener('mouseenter', this.showHiddenIssuesMenu.bind(this));
323
- header.addEventListener('mouseleave', this.hideHiddenIssuesMenu.bind(this));
324
- }
325
322
  header.classList.add('header');
326
323
  this.issueKindIcon = new IconButton.Icon.Icon();
327
324
  this.issueKindIcon.classList.add('leading-issue-icon');
@@ -339,19 +336,12 @@ export class IssueView extends UI.TreeOutline.TreeElement {
339
336
  title.classList.add('title');
340
337
  title.textContent = this.description.title;
341
338
  header.appendChild(title);
342
- if (Root.Runtime.experiments.isEnabled('hideIssuesFeature')) {
339
+ if (this.hiddenIssuesMenu) {
343
340
  header.appendChild(this.hiddenIssuesMenu);
344
341
  }
345
342
  this.updateFromIssue();
346
343
  this.listItemElement.appendChild(header);
347
344
  }
348
- private showHiddenIssuesMenu(): void {
349
- this.hiddenIssuesMenu?.setVisible(true);
350
- }
351
-
352
- private hideHiddenIssuesMenu(): void {
353
- this.hiddenIssuesMenu?.setVisible(false);
354
- }
355
345
 
356
346
  onexpand(): void {
357
347
  Host.userMetrics.issuesPanelIssueExpanded(this.issue.getCategory());
@@ -378,18 +368,20 @@ export class IssueView extends UI.TreeOutline.TreeElement {
378
368
  this.aggregatedIssuesCount.textContent = `${this.issue.getAggregatedIssuesCount()}`;
379
369
  }
380
370
  this.listItemElement.classList.toggle('hidden-issue', this.issue.isHidden());
381
- const data: HiddenIssuesMenuData = {
382
- menuItemLabel: this.issue.isHidden() ? i18nString(UIStrings.unhideIssuesLikeThis) :
383
- i18nString(UIStrings.hideIssuesLikeThis),
384
- menuItemAction: () => {
385
- const setting = IssuesManager.IssuesManager.getHideIssueByCodeSetting();
386
- const values = setting.get();
387
- values[this.issue.code()] = this.issue.isHidden() ? IssuesManager.IssuesManager.IssueStatus.Unhidden :
388
- IssuesManager.IssuesManager.IssueStatus.Hidden;
389
- setting.set(values);
390
- },
391
- };
392
- this.hiddenIssuesMenu.data = data;
371
+ if (this.hiddenIssuesMenu) {
372
+ const data: HiddenIssuesMenuData = {
373
+ menuItemLabel: this.issue.isHidden() ? i18nString(UIStrings.unhideIssuesLikeThis) :
374
+ i18nString(UIStrings.hideIssuesLikeThis),
375
+ menuItemAction: () => {
376
+ const setting = IssuesManager.IssuesManager.getHideIssueByCodeSetting();
377
+ const values = setting.get();
378
+ values[this.issue.code()] = this.issue.isHidden() ? IssuesManager.IssuesManager.IssueStatus.Unhidden :
379
+ IssuesManager.IssuesManager.IssueStatus.Hidden;
380
+ setting.set(values);
381
+ },
382
+ };
383
+ this.hiddenIssuesMenu.data = data;
384
+ }
393
385
  }
394
386
 
395
387
  updateAffectedResourceVisibility(): void {
@@ -30,7 +30,6 @@ export interface HiddenIssuesMenuData {
30
30
  export class HideIssuesMenu extends HTMLElement {
31
31
  static readonly litTagName = LitHtml.literal`devtools-hide-issues-menu`;
32
32
  private readonly shadow: ShadowRoot = this.attachShadow({mode: 'open'});
33
- private visible: boolean = false;
34
33
  private menuItemLabel: Common.UIString.LocalizedString = Common.UIString.LocalizedEmptyString;
35
34
  private menuItemAction: () => void = () => {};
36
35
 
@@ -44,23 +43,20 @@ export class HideIssuesMenu extends HTMLElement {
44
43
  this.shadow.adoptedStyleSheets = [hideIssuesMenuStyles];
45
44
  }
46
45
 
47
- setVisible(x: boolean): void {
48
- if (this.visible === x) {
49
- return;
50
- }
51
- this.visible = x;
52
- this.render();
53
- }
54
-
55
46
  onMenuOpen(event: Event): void {
56
47
  event.stopPropagation();
57
- const contextMenu = new UI.ContextMenu.ContextMenu(event, {useSoftMenu: true});
48
+ const contextMenu = new UI.ContextMenu.ContextMenu(event, {
49
+ useSoftMenu: true,
50
+ onSoftMenuClosed: (): void => {
51
+ this.classList.toggle('has-context-menu-opened', false);
52
+ },
53
+ });
58
54
  contextMenu.headerSection().appendItem(this.menuItemLabel, () => this.menuItemAction());
59
55
  contextMenu.show();
56
+ this.classList.toggle('has-context-menu-opened', true);
60
57
  }
61
58
 
62
59
  private render(): void {
63
- this.classList.toggle('hidden', !this.visible);
64
60
  // Disabled until https://crbug.com/1079231 is fixed.
65
61
  // clang-format off
66
62
  LitHtml.render(LitHtml.html`
@@ -16,4 +16,12 @@
16
16
  border-radius: 0;
17
17
  cursor: pointer;
18
18
  border: none;
19
+
20
+ --icon-color: var(--color-text-primary);
21
+
22
+ opacity: 50%;
23
+ }
24
+
25
+ .hide-issues-menu-btn:hover {
26
+ opacity: 100%;
19
27
  }
@@ -51,7 +51,7 @@
51
51
 
52
52
  .issue-category.hidden-issues.parent.expanded,
53
53
  .issue-kind.parent.expanded {
54
- border-width: 0 0 1px 0;
54
+ border-width: 0 0 1px;
55
55
  background-color: var(--color-background-elevation-1);
56
56
  }
57
57
 
@@ -95,6 +95,18 @@ p {
95
95
  width: 100%;
96
96
  }
97
97
 
98
+ .header devtools-hide-issues-menu {
99
+ display: none;
100
+ }
101
+
102
+ .header:hover devtools-hide-issues-menu {
103
+ display: block;
104
+ }
105
+
106
+ .header devtools-hide-issues-menu.has-context-menu-opened {
107
+ display: block;
108
+ }
109
+
98
110
  .issue-category .header,
99
111
  .issue-kind .header {
100
112
  line-height: 24px;
@@ -131,7 +143,7 @@ p {
131
143
 
132
144
  /* Show a colored border on the left side of opened issues. */
133
145
  .body::before {
134
- content: '';
146
+ content: "";
135
147
  display: block;
136
148
  position: absolute;
137
149
  left: calc(var(--issue-indent) + 23px);
@@ -181,7 +193,7 @@ devtools-icon.leading-issue-icon {
181
193
  }
182
194
 
183
195
  .separator::before {
184
- content: '·';
196
+ content: "·";
185
197
  padding-left: 1ex;
186
198
  padding-right: 1ex;
187
199
  }
@@ -250,7 +262,7 @@ ul > li.plain-enum::before {
250
262
  }
251
263
 
252
264
  .affected-resources-label + .affected-resources {
253
- padding: 3px 0 0 0;
265
+ padding: 3px 0 0;
254
266
  position: relative;
255
267
  user-select: text;
256
268
  }
@@ -382,7 +394,7 @@ ul > li.plain-enum::before {
382
394
 
383
395
  .affected-resources > .parent {
384
396
  margin-top: 0;
385
- padding: 2px 5px 0 5px;
397
+ padding: 2px 5px 0;
386
398
  }
387
399
 
388
400
  .affected-resources > .parent.expanded {
@@ -431,3 +443,14 @@ devtools-icon.network-panel {
431
443
  vertical-align: baseline;
432
444
  height: 14px;
433
445
  }
446
+
447
+ @media (forced-colors: active) {
448
+ .title {
449
+ color: ButtonText;
450
+ }
451
+
452
+ .tree-outline:not(.hide-selection-when-blurred) .selected .header .title,
453
+ .tree-outline.hide-selection-when-blurred .selected:focus-visible .header .title {
454
+ color: HighlightText;
455
+ }
456
+ }