chrome-devtools-frontend 1.0.1579812 → 1.0.1581708

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 (351) hide show
  1. package/agents/prompts/creating-a-model.md +51 -0
  2. package/agents/prompts/merging-devtools-module.md +144 -0
  3. package/agents/prompts/ui-widgets.md +351 -0
  4. package/agents/prompts/verification.md +2 -1
  5. package/docs/contributing/README.md +5 -6
  6. package/docs/contributing/changes.md +1 -2
  7. package/docs/feature-specs/elements-tree-edit-html.md +14 -0
  8. package/docs/feature-specs/elements-tree-node-title.md +46 -0
  9. package/docs/styleguide/ux/README.md +1 -1
  10. package/front_end/core/host/UserMetrics.ts +3 -7
  11. package/front_end/core/root/Runtime.ts +0 -1
  12. package/front_end/core/sdk/NetworkManager.ts +0 -35
  13. package/front_end/core/sdk/OverlayModel.ts +12 -0
  14. package/front_end/core/sdk/StorageKeyManager.ts +6 -1
  15. package/front_end/core/sdk/Target.ts +4 -2
  16. package/front_end/devtools_compatibility.js +4 -0
  17. package/front_end/entrypoints/devtools_app/devtools_app.ts +1 -0
  18. package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +536 -0
  19. package/front_end/entrypoints/greendev_floaty/floaty.css +298 -0
  20. package/front_end/entrypoints/greendev_floaty/floaty.html +38 -0
  21. package/front_end/entrypoints/greendev_floaty/greendev_floaty.ts +422 -0
  22. package/front_end/entrypoints/inspector_main/InspectorMain.ts +0 -38
  23. package/front_end/entrypoints/node_app/app/NodeMain.ts +19 -1
  24. package/front_end/entrypoints/node_app/node_app.ts +34 -0
  25. package/front_end/generated/InspectorBackendCommands.ts +9 -3
  26. package/front_end/generated/SupportedCSSProperties.js +39 -31
  27. package/front_end/generated/protocol-mapping.d.ts +12 -0
  28. package/front_end/generated/protocol-proxy-api.d.ts +12 -0
  29. package/front_end/generated/protocol.ts +56 -2
  30. package/front_end/models/ai_assistance/AiConversation.ts +10 -0
  31. package/front_end/models/ai_assistance/agents/AiAgent.ts +2 -0
  32. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.snapshot.txt +24 -2
  33. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +104 -9
  34. package/front_end/{panels/elements → models/computed_style}/ComputedStyleModel.ts +26 -0
  35. package/front_end/models/computed_style/computed_style.ts +9 -0
  36. package/front_end/models/issues_manager/CookieIssue.ts +0 -28
  37. package/front_end/models/issues_manager/CorsIssue.ts +11 -14
  38. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +3 -5
  39. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +102 -6
  40. package/front_end/panels/ai_assistance/components/ChatInput.ts +15 -2
  41. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -0
  42. package/front_end/panels/animation/AnimationGroupPreviewUI.ts +1 -1
  43. package/front_end/panels/application/ApplicationPanelSidebar.ts +13 -11
  44. package/front_end/panels/application/DOMStorageModel.ts +1 -1
  45. package/front_end/panels/application/ResourcesPanel.ts +10 -5
  46. package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +0 -1
  47. package/front_end/panels/application/components/BackForwardCacheView.ts +2 -4
  48. package/front_end/panels/autofill/AutofillView.ts +1 -1
  49. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +0 -1
  50. package/front_end/panels/changes/changesSidebar.css +5 -0
  51. package/front_end/panels/common/AiCodeCompletionTeaser.ts +13 -3
  52. package/front_end/panels/common/ExtensionPanel.ts +4 -0
  53. package/front_end/panels/common/FreDialog.ts +4 -0
  54. package/front_end/panels/common/aiCodeCompletionTeaser.css +6 -0
  55. package/front_end/panels/console/ConsoleViewMessage.ts +0 -1
  56. package/front_end/panels/console_counters/WarningErrorCounter.ts +16 -10
  57. package/front_end/panels/coverage/CoverageListView.ts +18 -3
  58. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +11 -0
  59. package/front_end/panels/elements/ComputedStyleWidget.ts +67 -45
  60. package/front_end/panels/elements/ElementsPanel.ts +4 -3
  61. package/front_end/panels/elements/ElementsSidebarPane.ts +11 -8
  62. package/front_end/panels/elements/ElementsTreeElement.ts +0 -1
  63. package/front_end/panels/elements/ElementsTreeOutline.ts +25 -15
  64. package/front_end/panels/elements/LayoutPane.ts +7 -8
  65. package/front_end/panels/elements/MetricsSidebarPane.ts +2 -2
  66. package/front_end/panels/elements/PlatformFontsWidget.ts +24 -9
  67. package/front_end/panels/elements/PropertiesWidget.ts +3 -6
  68. package/front_end/panels/elements/StylesSidebarPane.ts +4 -3
  69. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +1 -1
  70. package/front_end/panels/elements/components/StylePropertyEditor.ts +1 -2
  71. package/front_end/panels/elements/elements.ts +1 -3
  72. package/front_end/panels/greendev/GreenDevPanel.css +282 -0
  73. package/front_end/panels/greendev/GreenDevPanel.ts +337 -0
  74. package/front_end/panels/greendev/GreenDevShared.ts +13 -0
  75. package/front_end/panels/greendev/greendev-meta.ts +52 -0
  76. package/front_end/panels/greendev/greendev.ts +9 -0
  77. package/front_end/panels/issues/CorsIssueDetailsView.ts +4 -4
  78. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -1
  79. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +1 -1
  80. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +1 -1
  81. package/front_end/panels/media/PlayerListView.ts +1 -1
  82. package/front_end/panels/network/NetworkLogViewColumns.ts +1 -2
  83. package/front_end/panels/network/RequestInitiatorView.ts +8 -11
  84. package/front_end/panels/network/RequestTimingView.ts +1 -1
  85. package/front_end/panels/network/components/RequestHeaderSection.ts +1 -1
  86. package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
  87. package/front_end/panels/recorder/components/RecordingListView.ts +1 -1
  88. package/front_end/panels/recorder/components/StepEditor.ts +3 -3
  89. package/front_end/panels/security/SecurityPanel.ts +0 -4
  90. package/front_end/panels/security/SecurityPanelSidebar.ts +2 -42
  91. package/front_end/panels/security/security-meta.ts +2 -14
  92. package/front_end/panels/security/security.ts +0 -4
  93. package/front_end/panels/settings/KeybindsSettingsTab.ts +5 -5
  94. package/front_end/panels/sources/OutlineQuickOpen.ts +19 -0
  95. package/front_end/panels/sources/SourcesSearchScope.ts +2 -1
  96. package/front_end/panels/sources/components/HeadersView.ts +2 -2
  97. package/front_end/panels/timeline/TimelinePanel.ts +25 -0
  98. package/front_end/panels/timeline/components/BreadcrumbsUI.ts +1 -1
  99. package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +1 -1
  100. package/front_end/third_party/chromium/README.chromium +1 -1
  101. package/front_end/third_party/lighthouse/README.chromium +2 -2
  102. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +145 -144
  103. package/front_end/third_party/lighthouse/report/bundle.js +12 -5
  104. package/front_end/third_party/lighthouse/report-assets/report-generator.mjs +2 -2
  105. package/front_end/third_party/puppeteer/README.chromium +2 -2
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +35 -0
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js +19 -0
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts +16 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +21 -0
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js +6 -0
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/locators/locators.d.ts +13 -1
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/locators/locators.d.ts.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/locators/locators.js +56 -36
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/locators/locators.js.map +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +2 -2
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +32 -8
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +5 -1
  128. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  129. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +32 -2
  130. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +3 -2
  132. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +20 -0
  134. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  135. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +2 -1
  136. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  137. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +25 -8
  138. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  139. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.d.ts +2 -0
  140. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.d.ts.map +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js +23 -0
  142. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Browser.js.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +3 -2
  144. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +10 -6
  146. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/UserContext.d.ts.map +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/UserContext.js +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/UserContext.js.map +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts +29 -0
  151. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  152. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +46 -6
  153. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +5 -1
  155. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +18 -0
  157. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js +2 -2
  159. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  161. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +13 -1
  162. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
  163. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/JSHandle.js +2 -2
  164. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/JSHandle.js.map +1 -1
  165. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +7 -2
  166. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  167. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +43 -7
  168. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  169. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.d.ts +10 -1
  170. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.d.ts.map +1 -1
  171. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.js +34 -4
  172. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.js.map +1 -1
  173. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Cookie.d.ts +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Cookie.d.ts.map +1 -1
  175. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
  177. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
  179. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/XPathQuerySelector.js +1 -1
  180. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/XPathQuerySelector.js.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  182. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  183. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +1 -0
  184. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  186. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -0
  187. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  188. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +4 -0
  189. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.d.ts.map +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.js +2 -2
  192. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PuppeteerNode.js.map +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  194. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  195. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  196. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  197. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +129 -3
  199. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +233 -65
  200. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +35 -0
  201. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js +19 -0
  203. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts +16 -1
  205. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
  206. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
  207. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +1 -1
  209. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +21 -0
  210. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  211. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js +6 -0
  212. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  213. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/locators/locators.d.ts +13 -1
  214. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/locators/locators.d.ts.map +1 -1
  215. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/locators/locators.js +56 -36
  216. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/locators/locators.js.map +1 -1
  217. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +2 -2
  218. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  219. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +30 -6
  220. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +5 -1
  222. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +32 -2
  224. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
  225. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +3 -2
  226. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +20 -0
  228. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +2 -1
  230. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  231. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +25 -8
  232. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  233. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.d.ts +2 -0
  234. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.d.ts.map +1 -1
  235. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js +23 -0
  236. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Browser.js.map +1 -1
  237. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +3 -2
  238. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  239. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +10 -6
  240. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  241. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/UserContext.d.ts.map +1 -1
  242. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/UserContext.js +1 -1
  243. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/UserContext.js.map +1 -1
  244. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts +29 -0
  245. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  246. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +46 -6
  247. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  248. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +5 -1
  249. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  250. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +19 -1
  251. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  252. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js +3 -3
  253. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js.map +1 -1
  254. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +14 -2
  256. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
  257. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/JSHandle.js +3 -3
  258. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/JSHandle.js.map +1 -1
  259. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +7 -2
  260. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +43 -8
  262. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.d.ts +10 -1
  264. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.d.ts.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.js +31 -3
  266. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.js.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Cookie.d.ts +1 -1
  268. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Cookie.d.ts.map +1 -1
  269. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  270. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
  271. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
  272. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js.map +1 -1
  273. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/XPathQuerySelector.js +1 -1
  274. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/XPathQuerySelector.js.map +1 -1
  275. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  276. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +1 -0
  277. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  278. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  279. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -0
  280. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  281. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +4 -0
  282. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  283. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.d.ts.map +1 -1
  284. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.js +2 -2
  285. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PuppeteerNode.js.map +1 -1
  286. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  287. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  288. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  289. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  290. package/front_end/third_party/puppeteer/package/lib/types.d.ts +129 -3
  291. package/front_end/third_party/puppeteer/package/package.json +4 -4
  292. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +46 -0
  293. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +21 -0
  294. package/front_end/third_party/puppeteer/package/src/api/Frame.ts +1 -1
  295. package/front_end/third_party/puppeteer/package/src/api/Page.ts +23 -0
  296. package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +88 -56
  297. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +33 -8
  298. package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +61 -3
  299. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +23 -2
  300. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +29 -8
  301. package/front_end/third_party/puppeteer/package/src/bidi/core/Browser.ts +30 -0
  302. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +13 -2
  303. package/front_end/third_party/puppeteer/package/src/bidi/core/UserContext.ts +1 -0
  304. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +85 -8
  305. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +36 -1
  306. package/front_end/third_party/puppeteer/package/src/cdp/ExecutionContext.ts +5 -5
  307. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +23 -2
  308. package/front_end/third_party/puppeteer/package/src/cdp/JSHandle.ts +3 -3
  309. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +60 -8
  310. package/front_end/third_party/puppeteer/package/src/cdp/utils.ts +36 -3
  311. package/front_end/third_party/puppeteer/package/src/common/Cookie.ts +1 -1
  312. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  313. package/front_end/third_party/puppeteer/package/src/injected/XPathQuerySelector.ts +1 -1
  314. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +1 -0
  315. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +2 -0
  316. package/front_end/third_party/puppeteer/package/src/node/LaunchOptions.ts +4 -0
  317. package/front_end/third_party/puppeteer/package/src/node/PuppeteerNode.ts +8 -6
  318. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  319. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  320. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +12 -7
  321. package/front_end/ui/components/text_editor/AutocompleteHistory.ts +2 -1
  322. package/front_end/ui/components/text_editor/TextEditorHistory.ts +1 -1
  323. package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -1
  324. package/front_end/ui/legacy/ListControl.ts +27 -1
  325. package/front_end/ui/legacy/ListWidget.ts +1 -1
  326. package/front_end/ui/legacy/SearchableView.ts +5 -2
  327. package/front_end/ui/legacy/SoftContextMenu.ts +1 -2
  328. package/front_end/ui/legacy/Treeoutline.ts +1 -2
  329. package/front_end/ui/legacy/UIUtils.ts +17 -7
  330. package/front_end/ui/legacy/Widget.ts +15 -0
  331. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +8 -4
  332. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +50 -1
  333. package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +2 -1
  334. package/front_end/ui/legacy/components/data_grid/data_grid.ts +1 -0
  335. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -1
  336. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +4 -2
  337. package/front_end/ui/visual_logging/KnownContextValues.ts +15 -0
  338. package/inspector_overlay/main.ts +18 -3
  339. package/inspector_overlay/tool_green_dev_anchors.css +54 -0
  340. package/inspector_overlay/tool_green_dev_anchors.ts +164 -0
  341. package/inspector_overlay/tool_persistent.ts +14 -0
  342. package/mcp/mcp.ts +1 -0
  343. package/package.json +1 -1
  344. package/docs/contributing/design.md +0 -166
  345. package/docs/design_guidelines.md +0 -1
  346. package/front_end/panels/security/CookieControlsTreeElement.ts +0 -21
  347. package/front_end/panels/security/CookieControlsView.ts +0 -447
  348. package/front_end/panels/security/CookieReportTreeElement.ts +0 -21
  349. package/front_end/panels/security/CookieReportView.ts +0 -549
  350. package/front_end/panels/security/cookieControlsView.css +0 -139
  351. package/front_end/panels/security/cookieReportView.css +0 -90
@@ -47,7 +47,7 @@ import * as UI from '../../ui/legacy/legacy.js';
47
47
  import {html, nothing, render} from '../../ui/lit/lit.js';
48
48
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
49
49
 
50
- import {AdoptedStyleSheetTreeElement} from './AdoptedStyleSheetTreeElement.js';
50
+ import {AdoptedStyleSheetSetTreeElement, AdoptedStyleSheetTreeElement} from './AdoptedStyleSheetTreeElement.js';
51
51
  import {getElementIssueDetails} from './ElementIssueUtils.js';
52
52
  import {ElementsPanel} from './ElementsPanel.js';
53
53
  import {ElementsTreeElement, InitialChildrenLimit, isOpeningTag} from './ElementsTreeElement.js';
@@ -917,15 +917,21 @@ export class ElementsTreeOutline extends
917
917
  }
918
918
 
919
919
  highlightAdoptedStyleSheet(adoptedStyleSheet: SDK.DOMModel.AdoptedStyleSheet): void {
920
- const parentNode = !this.includeRootDOMNode && adoptedStyleSheet.parent === this.rootDOMNode && this.rootDOMNode ?
920
+ const parentDOMNode =
921
+ !this.includeRootDOMNode && adoptedStyleSheet.parent === this.rootDOMNode && this.rootDOMNode ?
921
922
  this.rootElement() :
922
923
  this.createTreeElementFor(adoptedStyleSheet.parent);
923
- if (!parentNode) {
924
+ if (!parentDOMNode) {
925
+ return;
926
+ }
927
+ const parentNode = parentDOMNode.firstChild();
928
+ if (!(parentNode && parentNode instanceof AdoptedStyleSheetSetTreeElement)) {
924
929
  return;
925
930
  }
926
931
 
927
932
  for (const child of parentNode.children()) {
928
933
  if (child instanceof AdoptedStyleSheetTreeElement && child.adoptedStyleSheet === adoptedStyleSheet) {
934
+ parentNode.expand();
929
935
  child.highlight();
930
936
  return;
931
937
  }
@@ -980,8 +986,8 @@ export class ElementsTreeOutline extends
980
986
  this.dispatchEventToListeners(ElementsTreeOutline.Events.ElementsTreeUpdated, nodes);
981
987
  }
982
988
 
983
- findTreeElement(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet): ElementsTreeElement|null {
984
- if (node instanceof SDK.DOMModel.AdoptedStyleSheet) {
989
+ findTreeElement(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet[]): ElementsTreeElement|null {
990
+ if (node instanceof Array) {
985
991
  return null;
986
992
  }
987
993
  let treeElement = this.lookUpTreeElement(node);
@@ -1768,10 +1774,10 @@ export class ElementsTreeOutline extends
1768
1774
  }
1769
1775
  }
1770
1776
 
1771
- private createElementTreeElement(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet, isClosingTag?: boolean):
1777
+ private createElementTreeElement(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet[], isClosingTag?: boolean):
1772
1778
  UI.TreeOutline.TreeElement {
1773
- if (node instanceof SDK.DOMModel.AdoptedStyleSheet) {
1774
- return new AdoptedStyleSheetTreeElement(node);
1779
+ if (node instanceof Array) {
1780
+ return new AdoptedStyleSheetSetTreeElement(node);
1775
1781
  }
1776
1782
  const treeElement = new ElementsTreeElement(node, isClosingTag);
1777
1783
  treeElement.setExpandable(!isClosingTag && this.hasVisibleChildren(node));
@@ -1800,8 +1806,12 @@ export class ElementsTreeOutline extends
1800
1806
  return treeElement.childAt(index) as ElementsTreeElement;
1801
1807
  }
1802
1808
 
1803
- private visibleChildren(node: SDK.DOMModel.DOMNode): Array<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet> {
1804
- let visibleChildren = [...node.adoptedStyleSheetsForNode, ...ElementsTreeElement.visibleShadowRoots(node)];
1809
+ private visibleChildren(node: SDK.DOMModel.DOMNode): Array<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet[]> {
1810
+ const visibleChildren: Array<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet[]> = [];
1811
+ if (node.adoptedStyleSheetsForNode.length) {
1812
+ visibleChildren.push(node.adoptedStyleSheetsForNode);
1813
+ }
1814
+ visibleChildren.push(...ElementsTreeElement.visibleShadowRoots(node));
1805
1815
 
1806
1816
  const contentDocument = node.contentDocument();
1807
1817
  if (contentDocument) {
@@ -1838,7 +1848,7 @@ export class ElementsTreeOutline extends
1838
1848
  if (!this.showHTMLCommentsSetting.get()) {
1839
1849
  children = children.filter(n => n.nodeType() !== Node.COMMENT_NODE);
1840
1850
  }
1841
- visibleChildren = visibleChildren.concat(children);
1851
+ visibleChildren.push(...children);
1842
1852
  }
1843
1853
 
1844
1854
  const afterPseudoElement = node.afterPseudoElement();
@@ -1927,7 +1937,7 @@ export class ElementsTreeOutline extends
1927
1937
  }
1928
1938
 
1929
1939
  insertChildElement(
1930
- treeElement: ElementsTreeElement|TopLayerContainer, child: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet,
1940
+ treeElement: ElementsTreeElement|TopLayerContainer, child: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet[],
1931
1941
  index: number, isClosingTag?: boolean): UI.TreeOutline.TreeElement {
1932
1942
  const newElement = this.createElementTreeElement(child, isClosingTag);
1933
1943
  treeElement.insertChild(newElement, index);
@@ -1957,12 +1967,12 @@ export class ElementsTreeOutline extends
1957
1967
 
1958
1968
  const node = treeElement.node();
1959
1969
  const visibleChildren = this.visibleChildren(node);
1960
- const visibleChildrenSet = new Set<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet>(visibleChildren);
1970
+ const visibleChildrenSet = new Set<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet[]>(visibleChildren);
1961
1971
 
1962
1972
  // Remove any tree elements that no longer have this node as their parent and save
1963
1973
  // all existing elements that could be reused. This also removes closing tag element.
1964
- const existingTreeElements =
1965
- new Map<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet, UI.TreeOutline.TreeElement&ElementsTreeElement>();
1974
+ const existingTreeElements = new Map<
1975
+ SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet[], UI.TreeOutline.TreeElement&ElementsTreeElement>();
1966
1976
  for (let i = treeElement.childCount() - 1; i >= 0; --i) {
1967
1977
  const existingTreeElement = treeElement.childAt(i);
1968
1978
  if (!(existingTreeElement instanceof ElementsTreeElement)) {
@@ -228,27 +228,26 @@ const DEFAULT_VIEW: View = (input, output, target) => {
228
228
  event.preventDefault();
229
229
  }
230
230
  };
231
- // clang-format off
232
231
  const renderElement = (element: LayoutElement): Lit.LitTemplate => html`<div
233
232
  class="element"
234
- jslog=${VisualLogging.item().track({resize: true})}>
233
+ jslog=${VisualLogging.item()}>
235
234
  <devtools-checkbox
236
235
  data-element="true"
237
236
  class="checkbox-label"
238
237
  .checked=${element.enabled}
239
238
  @change=${(e: Event) => input.onElementToggle(element, e)}
240
- jslog=${VisualLogging.toggle().track({click: true, resize: true })}>
239
+ jslog=${VisualLogging.toggle().track({
240
+ click: true
241
+ })}>
241
242
  <span
242
243
  class="node-text-container"
243
244
  data-label="true"
244
245
  @mouseenter=${(e: MouseEvent) => input.onMouseEnter(element, e)}
245
246
  @mouseleave=${(e: MouseEvent) => input.onMouseLeave(element, e)}>
246
247
  <devtools-node-text .data=${{
247
- nodeId: element.domId,
248
- nodeTitle: element.name,
249
- nodeClasses: element.domClasses
250
- }}>
251
- </devtools-node-text>
248
+ nodeId: element.domId, nodeTitle: element.name, nodeClasses: element.domClasses,
249
+ }
250
+ }></devtools-node-text>
252
251
  </span>
253
252
  </devtools-checkbox>
254
253
  <label
@@ -33,11 +33,11 @@
33
33
  import * as Common from '../../core/common/common.js';
34
34
  import * as Platform from '../../core/platform/platform.js';
35
35
  import * as SDK from '../../core/sdk/sdk.js';
36
+ import type * as ComputedStyle from '../../models/computed_style/computed_style.js';
36
37
  import * as UI from '../../ui/legacy/legacy.js';
37
38
  import {Directives, html, type LitTemplate, nothing, render} from '../../ui/lit/lit.js';
38
39
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
39
40
 
40
- import type {ComputedStyleModel} from './ComputedStyleModel.js';
41
41
  import {ElementsSidebarPane} from './ElementsSidebarPane.js';
42
42
  import metricsSidebarPaneStyles from './metricsSidebarPane.css.js';
43
43
 
@@ -190,7 +190,7 @@ export class MetricsSidebarPane extends ElementsSidebarPane {
190
190
  private isEditingMetrics?: boolean;
191
191
  private view: View;
192
192
 
193
- constructor(computedStyleModel: ComputedStyleModel, view = DEFAULT_VIEW) {
193
+ constructor(computedStyleModel: ComputedStyle.ComputedStyleModel.ComputedStyleModel, view = DEFAULT_VIEW) {
194
194
  super(computedStyleModel, {jslog: `${VisualLogging.pane('styles-metrics')}`});
195
195
  this.registerRequiredCSS(metricsSidebarPaneStyles);
196
196
 
@@ -4,10 +4,10 @@
4
4
 
5
5
  import * as i18n from '../../core/i18n/i18n.js';
6
6
  import type * as Protocol from '../../generated/protocol.js';
7
+ import * as ComputedStyle from '../../models/computed_style/computed_style.js';
7
8
  import * as UI from '../../ui/legacy/legacy.js';
8
9
  import {html, render} from '../../ui/lit/lit.js';
9
10
 
10
- import {type ComputedStyleModel, Events as ComputedStyleModelEvents} from './ComputedStyleModel.js';
11
11
  import platformFontsWidgetStyles from './platformFontsWidget.css.js';
12
12
 
13
13
  const UIStrings = {
@@ -78,22 +78,37 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
78
78
  };
79
79
 
80
80
  export class PlatformFontsWidget extends UI.Widget.VBox {
81
- private readonly sharedModel: ComputedStyleModel;
82
81
  readonly #view: View;
82
+ #sharedModel: ComputedStyle.ComputedStyleModel.ComputedStyleModel|null = null;
83
83
 
84
- constructor(sharedModel: ComputedStyleModel, view: View = DEFAULT_VIEW) {
85
- super({useShadowDom: true});
84
+ constructor(element?: HTMLElement, view: View = DEFAULT_VIEW) {
85
+ super(element, {useShadowDom: true});
86
86
  this.#view = view;
87
87
  this.registerRequiredCSS(platformFontsWidgetStyles);
88
+ }
89
+
90
+ get sharedModel(): ComputedStyle.ComputedStyleModel.ComputedStyleModel|null {
91
+ return this.#sharedModel;
92
+ }
93
+
94
+ set sharedModel(model: ComputedStyle.ComputedStyleModel.ComputedStyleModel) {
95
+ if (model !== this.sharedModel) {
96
+ this.sharedModel?.removeEventListener(
97
+ ComputedStyle.ComputedStyleModel.Events.CSS_MODEL_CHANGED, this.requestUpdate, this);
98
+ this.sharedModel?.removeEventListener(
99
+ ComputedStyle.ComputedStyleModel.Events.COMPUTED_STYLE_CHANGED, this.requestUpdate, this);
100
+
101
+ model.addEventListener(ComputedStyle.ComputedStyleModel.Events.CSS_MODEL_CHANGED, this.requestUpdate, this);
102
+ model.addEventListener(ComputedStyle.ComputedStyleModel.Events.COMPUTED_STYLE_CHANGED, this.requestUpdate, this);
103
+ }
88
104
 
89
- this.sharedModel = sharedModel;
90
- this.sharedModel.addEventListener(ComputedStyleModelEvents.CSS_MODEL_CHANGED, this.requestUpdate, this);
91
- this.sharedModel.addEventListener(ComputedStyleModelEvents.COMPUTED_STYLE_CHANGED, this.requestUpdate, this);
105
+ this.#sharedModel = model;
106
+ void this.requestUpdate();
92
107
  }
93
108
 
94
109
  override async performUpdate(): Promise<void> {
95
- const cssModel = this.sharedModel.cssModel();
96
- const node = this.sharedModel.node;
110
+ const cssModel = this.#sharedModel?.cssModel();
111
+ const node = this.#sharedModel?.node;
97
112
  if (!node || !cssModel) {
98
113
  this.#view({platformFonts: null}, {}, this.contentElement);
99
114
  return;
@@ -189,14 +189,11 @@ export class PropertiesWidget extends UI.Widget.VBox {
189
189
  }
190
190
 
191
191
  const treeElement = this.treeOutline.rootElement();
192
- let {properties} = await SDK.RemoteObject.RemoteObject.loadFromObjectPerProto(object, true /* generatePreview */);
193
192
  treeElement.removeChildren();
194
- if (properties === null) {
195
- properties = [];
196
- }
193
+ const root = new ObjectUI.ObjectPropertiesSection.ObjectTree(
194
+ object, ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.OWN_AND_INTERNAL_AND_INHERITED);
197
195
  ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement.populateWithProperties(
198
- treeElement, {properties: properties.map(p => new ObjectUI.ObjectPropertiesSection.ObjectTreeNode(p))},
199
- true /* skipProto */, true /* skipGettersAndSetters */);
196
+ treeElement, await root.populateChildrenIfNeeded(), true /* skipProto */, true /* skipGettersAndSetters */);
200
197
  this.internalFilterProperties();
201
198
  }
202
199
  this.#view(
@@ -43,6 +43,7 @@ import * as Root from '../../core/root/root.js';
43
43
  import * as SDK from '../../core/sdk/sdk.js';
44
44
  import * as Protocol from '../../generated/protocol.js';
45
45
  import * as Bindings from '../../models/bindings/bindings.js';
46
+ import type * as ComputedStyle from '../../models/computed_style/computed_style.js';
46
47
  import * as TextUtils from '../../models/text_utils/text_utils.js';
47
48
  import {createIcon, Icon} from '../../ui/kit/kit.js';
48
49
  import * as InlineEditor from '../../ui/legacy/components/inline_editor/inline_editor.js';
@@ -52,7 +53,6 @@ import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
52
53
  import * as PanelsCommon from '../common/common.js';
53
54
 
54
55
  import * as ElementsComponents from './components/components.js';
55
- import type {ComputedStyleModel, CSSModelChangedEvent} from './ComputedStyleModel.js';
56
56
  import {ElementsPanel} from './ElementsPanel.js';
57
57
  import {ElementsSidebarPane} from './ElementsSidebarPane.js';
58
58
  import {ImagePreviewPopover} from './ImagePreviewPopover.js';
@@ -204,7 +204,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
204
204
  #updateAbortController?: AbortController;
205
205
  #updateComputedStylesAbortController?: AbortController;
206
206
 
207
- constructor(computedStyleModel: ComputedStyleModel) {
207
+ constructor(computedStyleModel: ComputedStyle.ComputedStyleModel.ComputedStyleModel) {
208
208
  super(computedStyleModel, {delegatesFocus: true});
209
209
  this.setMinimumSize(96, 26);
210
210
  this.registerRequiredCSS(stylesSidebarPaneStyles);
@@ -729,7 +729,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
729
729
  }
730
730
  }
731
731
 
732
- override onCSSModelChanged(event: Common.EventTarget.EventTargetEvent<CSSModelChangedEvent>): void {
732
+ override onCSSModelChanged(
733
+ event: Common.EventTarget.EventTargetEvent<ComputedStyle.ComputedStyleModel.CSSModelChangedEvent>): void {
733
734
  const edit = event?.data && 'edit' in event.data ? event.data.edit : null;
734
735
  if (edit) {
735
736
  for (const section of this.allSections()) {
@@ -303,7 +303,7 @@ export class ElementsBreadcrumbs extends HTMLElement {
303
303
  data-crumb="true"
304
304
  >
305
305
  <a href="#" draggable=false class="crumb-link"
306
- jslog=${VisualLogging.item().track({click:true, resize:true})}
306
+ jslog=${VisualLogging.item().track({click:true})}
307
307
  @click=${this.#onCrumbClick(crumb.node)}
308
308
  @mousemove=${this.#onCrumbMouseMove(crumb.node)}
309
309
  @mouseleave=${this.#onCrumbMouseLeave(crumb.node)}
@@ -194,8 +194,7 @@ export class StylePropertyEditor extends HTMLElement {
194
194
  return html`
195
195
  <button title=${title}
196
196
  class=${classes}
197
- jslog=${
198
- VisualLogging.item().track({click: true, resize: true}).context(`${propertyName}-${propertyValue}`)}
197
+ jslog=${VisualLogging.item().track({click: true}).context(`${propertyName}-${propertyValue}`)}
199
198
  @click=${() => this.#onButtonClick(propertyName, propertyValue, selected)}>
200
199
  <devtools-icon style=${transform} name=${iconInfo.iconName}>
201
200
  </devtools-icon>
@@ -4,7 +4,7 @@
4
4
 
5
5
  import './InspectElementModeController.js';
6
6
  import './ColorSwatchPopoverIcon.js';
7
- import './ComputedStyleModel.js';
7
+
8
8
  import './DOMPath.js';
9
9
  import './ElementsSidebarPane.js';
10
10
  import './ElementsTreeElement.js';
@@ -34,7 +34,6 @@ import * as AccessibilityTreeView from './AccessibilityTreeView.js';
34
34
  import * as AdoptedStyleSheetTreeElement from './AdoptedStyleSheetTreeElement.js';
35
35
  import * as ClassesPaneWidget from './ClassesPaneWidget.js';
36
36
  import * as ColorSwatchPopoverIcon from './ColorSwatchPopoverIcon.js';
37
- import * as ComputedStyleModel from './ComputedStyleModel.js';
38
37
  import * as ComputedStyleWidget from './ComputedStyleWidget.js';
39
38
  import * as CSSRuleValidator from './CSSRuleValidator.js';
40
39
  import * as CSSValueTraceView from './CSSValueTraceView.js';
@@ -70,7 +69,6 @@ export {
70
69
  AdoptedStyleSheetTreeElement,
71
70
  ClassesPaneWidget,
72
71
  ColorSwatchPopoverIcon,
73
- ComputedStyleModel,
74
72
  ComputedStyleWidget,
75
73
  CSSRuleValidator,
76
74
  CSSValueTraceView,
@@ -0,0 +1,282 @@
1
+ /* eslint-disable color-named, no-duplicate-selectors */
2
+ /* stylelint-disable plugin/use_theme_colors */
3
+ /*
4
+ * Copyright 2026 The Chromium Authors
5
+ * Use of this source code is governed by a BSD-style license that can be
6
+ * found in the LICENSE file.
7
+ */
8
+
9
+ :root {
10
+ --gemini-logo: url("data:image/svg+xml,%0A%3Csvg%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2065%2065%22%3E%3Cmask%20id%3D%22maskme%22%20style%3D%22mask-type%3Aalpha%22%20maskUnits%3D%22userSpaceOnUse%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2265%22%20height%3D%2265%22%3E%3Cpath%20d%3D%22M32.447%200c.68%200%201.273.465%201.439%201.125a38.904%2038.904%200%20001.999%205.905c2.152%205%205.105%209.376%208.854%2013.125%203.751%203.75%208.126%206.703%2013.125%208.855a38.98%2038.98%200%20005.906%201.999c.66.166%201.124.758%201.124%201.438%200%20.68-.464%201.273-1.125%201.439a38.902%2038.902%200%2000-5.905%201.999c-5%202.152-9.375%205.105-13.125%208.854-3.749%203.751-6.702%208.126-8.854%2013.125a38.973%2038.973%200%2000-2%205.906%201.485%201.485%200%2001-1.438%201.124c-.68%200-1.272-.464-1.438-1.125a38.913%2038.913%200%2000-2-5.905c-2.151-5-5.103-9.375-8.854-13.125-3.75-3.749-8.125-6.702-13.125-8.854a38.973%2038.973%200%2000-5.905-2A1.485%201.485%200%20010%2032.448c0-.68.465-1.272%201.125-1.438a38.903%2038.903%200%20005.905-2c5-2.151%209.376-5.104%2013.125-8.854%203.75-3.749%206.703-8.125%208.855-13.125a38.972%2038.972%200%20001.999-5.905A1.485%201.485%200%200132.447%200z%22%20fill%3D%22%23000%22/%3E%3Cpath%20d%3D%22M32.447%200c.68%200%201.273.465%201.439%201.125a38.904%2038.904%200%20001.999%205.905c2.152%205%205.105%209.376%208.854%2013.125%203.751%203.75%208.126%206.703%2013.125%208.855a38.98%2038.98%200%20005.906%201.999c.66.166%201.124.758%201.124%201.438%200%20.68-.464%201.273-1.125%201.439a38.902%2038.902%200%2000-5.905%201.999c-5%202.152-9.375%205.105-13.125%208.854-3.749%203.751-6.702%208.126-8.854%2013.125a38.973%2038.973%200%2000-2%205.906%201.485%201.485%200%2001-1.438%201.124c-.68%200-1.272-.464-1.438-1.125a38.913%2038.913%200%2000-2-5.905c-2.151-5-5.103-9.375-8.854-13.125-3.75-3.749-8.125-6.702-13.125-8.854a38.973%2038.973%200%2000-5.905-2A1.485%201.485%200%20010%2032.448c0-.68.465-1.272%201.125-1.438a38.903%2038.903%200%20005.905-2c5-2.151%209.376-5.104%2013.125-8.854%203.75-3.749%206.703-8.125%208.855-13.125a38.972%2038.972%200%20001.999-5.905A1.485%201.485%200%200132.447%200z%22%20fill%3D%22%23000%22/%3E%3Cpath%20d%3D%22M32.447%200c.68%200%201.273.465%201.439%201.125a38.904%2038.904%200%20001.999%205.905c2.152%205%205.105%209.376%208.854%2013.125%203.751%203.75%208.126%206.703%2013.125%208.855a38.98%2038.98%200%20005.906%201.999c.66.166%201.124.758%201.124%201.438%200%20.68-.464%201.273-1.125%201.439a38.902%2038.902%200%2000-5.905%201.999c-5%202.152-9.375%205.105-13.125%208.854-3.749%203.751-6.702%208.126-8.854%2013.125a38.973%2038.973%200%2000-2%205.906%201.485%201.485%200%2001-1.438%201.124c-.68%200-1.272-.464-1.438-1.125a38.913%2038.913%200%2000-2-5.905c-2.151-5-5.103-9.375-8.854-13.125-3.75-3.749-8.125-6.702-13.125-8.854a38.973%2038.973%200%2000-5.905-2A1.485%201.485%200%20010%2032.448c0-.68.465-1.272%201.125-1.438a38.903%2038.903%200%20005.905-2c5-2.151%209.376-5.104%2013.125-8.854%203.75-3.749%206.703-8.125%208.855-13.125a38.972%2038.972%200%20001.999-5.905A1.485%201.485%200%200132.447%200z%22%20fill%3D%22%23000%22/%3E%3Cpath%20d%3D%22M32.447%200c.68%200%201.273.465%201.439%201.125a38.904%2038.904%200%20001.999%205.905c2.152%205%205.105%209.376%208.854%2013.125%203.751%203.75%208.126%206.703%2013.125%208.855a38.98%2038.98%200%20005.906%201.999c.66.166%201.124.758%201.124%201.438%200%20.68-.464%201.273-1.125%201.439a38.902%2038.902%200%2000-5.905%201.999c-5%202.152-9.375%205.105-13.125%208.854-3.749%203.751-6.702%208.126-8.854%2013.125a38.973%2038.973%200%2000-2%205.906%201.485%201.485%200%2001-1.438%201.124c-.68%200-1.272-.464-1.438-1.125a38.913%2038.913%200%2000-2-5.905c-2.151-5-5.103-9.375-8.854-13.125-3.75-3.749-8.125-6.702-13.125-8.854a38.973%2038.973%200%2000-5.905-2A1.485%201.485%200%20010%2032.448c0-.68.465-1.272%201.125-1.438a38.903%2038.903%200%20005.905-2c5-2.151%209.376-5.104%2013.125-8.854%203.75-3.749%206.703-8.125%208.855-13.125a38.972%2038.972%200%20001.999-5.905A1.485%201.485%200%200132.447%200z%22%20fill%3D%22%23000%22/%3E%3C/mask%3E%3Cg%20mask%3D%22url%28%23maskme%29%22%3E%3Cpath%20d%3D%22M32.447%200c25.437%200%2046.062%2020.625%2046.062%2046.062%200%2025.438-20.625%2046.063-46.062%2046.063-25.438%200-46.062-20.625-46.062-46.063C-13.615%2020.625%207.01%200%2032.447%200z%22%20fill%3D%22%231967D2%22/%3E%3Cpath%20d%3D%22M65%200v65H0V0h65z%22%20fill%3D%22%231967D2%22/%3E%3Cpath%20d%3D%22M63.79%2033.567L33.567%2063.79%201.21%2031.433%2031.433%201.21%2063.79%2033.567z%22%20fill%3D%22%23fff%22%20style%3D%22mix-blend-mode%3Asoft-light%22/%3E%3C/g%3E%3C/svg%3E");
11
+ }
12
+
13
+ .green-dev-floaty-dialog {
14
+ width: 100%;
15
+ height: 100%;
16
+ background-color: #fff;
17
+ display: flex;
18
+ flex-direction: column;
19
+ font-family: sans-serif;
20
+ color: #333;
21
+ font-size: 16px;
22
+ box-sizing: border-box;
23
+ }
24
+
25
+ /* Header extending upwards */
26
+ .green-dev-floaty-dialog-header {
27
+ position: relative;
28
+ height: 70px;
29
+ margin-top: -20px;
30
+ background-color: #d3e3fd;
31
+ border-top-left-radius: 12px;
32
+ border-top-right-radius: 12px;
33
+ display: flex;
34
+ justify-content: space-between;
35
+ align-items: center;
36
+ padding: 34px 10px 11px;
37
+ box-sizing: border-box;
38
+ }
39
+
40
+ .green-dev-floaty-dialog-header-text {
41
+ font-weight: bold;
42
+ font-size: 18px;
43
+ }
44
+
45
+ .green-dev-floaty-dialog-close-button {
46
+ width: 20px;
47
+ height: 20px;
48
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23333' d='M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z'/%3E%3C/svg%3E");
49
+ background-size: cover;
50
+ cursor: pointer;
51
+ border: none;
52
+ background-color: transparent;
53
+ padding: 0;
54
+ }
55
+
56
+ /* Main content area of the white card */
57
+ .green-dev-floaty-dialog-content {
58
+ flex-grow: 1;
59
+ padding: 20px;
60
+ display: flex;
61
+ flex-direction: column;
62
+ min-height: 0; /* Important for flex-grow with overflow */
63
+ }
64
+
65
+ .green-dev-floaty-dialog-chat-container {
66
+ flex-grow: 1;
67
+ margin-bottom: 10px;
68
+ overflow-y: auto;
69
+ display: flex;
70
+ flex-direction: column;
71
+ gap: 10px;
72
+ padding: 10px;
73
+ border: 1px solid #e0e0e0;
74
+ border-radius: 8px;
75
+ background-color: #f9f9f9;
76
+ }
77
+
78
+ .message {
79
+ padding: 8px 12px;
80
+ border-radius: 12px;
81
+ max-width: 85%;
82
+ overflow-wrap: break-word;
83
+ line-height: 1.4;
84
+ white-space: pre-wrap; /* Preserve newlines */
85
+ }
86
+
87
+ .user-message {
88
+ align-self: flex-end;
89
+ background-color: #d3e3fd;
90
+ color: #0b57d0;
91
+ border-bottom-right-radius: 2px;
92
+ }
93
+
94
+ .ai-message {
95
+ align-self: flex-start;
96
+ background-color: #fff;
97
+ color: #333;
98
+ border: 1px solid #e0e0e0;
99
+ border-bottom-left-radius: 2px;
100
+ }
101
+
102
+ .message-details-toggle {
103
+ font-size: 11px;
104
+ color: #0b57d0;
105
+ cursor: pointer;
106
+ margin-top: 4px;
107
+ text-decoration: underline;
108
+ }
109
+
110
+ .message-details-toggle:hover {
111
+ color: #0842a0;
112
+ }
113
+
114
+ .message-details {
115
+ font-size: 11px;
116
+ color: #666;
117
+ margin-top: 8px;
118
+ padding-top: 8px;
119
+ border-top: 1px solid #eee;
120
+ font-family: monospace;
121
+ }
122
+
123
+ .thought, .action {
124
+ margin-bottom: 6px;
125
+ white-space: pre-wrap;
126
+ }
127
+
128
+ .thought {
129
+ font-style: italic;
130
+ }
131
+
132
+ .green-dev-floaty-dialog-top-row {
133
+ display: flex;
134
+ align-items: center;
135
+ margin-bottom: 15px; /* Space between top row and blue card */
136
+ }
137
+
138
+ .green-dev-floaty-dialog-gemini-icon {
139
+ width: 24px;
140
+ height: 24px;
141
+ background-image: var(--gemini-logo);
142
+ background-size: cover;
143
+ margin-right: 10px;
144
+ }
145
+
146
+ .green-dev-floaty-dialog-checkmark-icon {
147
+ width: 20px;
148
+ height: 20px;
149
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%234CAF50' d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
150
+ background-size: cover;
151
+ margin-right: 5px;
152
+ }
153
+
154
+ .green-dev-floaty-dialog-context-text {
155
+ font-weight: bold;
156
+ }
157
+
158
+ /* Blue card at the bottom */
159
+ .green-dev-floaty-dialog-blue-card {
160
+ position: relative;
161
+ background-color: #edf2fa; /* Light blue */
162
+ border-radius: 12px;
163
+ padding: 12px;
164
+ display: flex;
165
+ flex-direction: column;
166
+ gap: 8px;
167
+ border: 1px solid #d3e3fd;
168
+ }
169
+
170
+ .green-dev-floaty-dialog-node-description {
171
+ font-size: 11px;
172
+ font-family: monospace;
173
+ color: #0b57d0;
174
+ background-color: #d3e3fd;
175
+ padding: 2px 8px;
176
+ margin-bottom: 10px;
177
+ border-radius: 4px;
178
+ align-self: flex-start;
179
+ max-width: 100%;
180
+ overflow: hidden;
181
+ text-overflow: ellipsis;
182
+ white-space: nowrap;
183
+ }
184
+
185
+ .input-row {
186
+ display: flex;
187
+ align-items: center;
188
+ width: 100%;
189
+ }
190
+
191
+ .green-dev-floaty-dialog-text-field {
192
+ flex-grow: 1;
193
+ background-color: #fff;
194
+ border: 1px solid #a7d9f0;
195
+ border-radius: 20px; /* Pill shape */
196
+ padding: 8px 16px;
197
+ font-size: 14px;
198
+ color: #333;
199
+ margin-right: 8px;
200
+ outline: none;
201
+ transition: border-color 0.2s;
202
+ }
203
+
204
+ .green-dev-floaty-dialog-text-field:focus {
205
+ border-color: #0b57d0;
206
+ }
207
+
208
+ .green-dev-floaty-dialog-play-button {
209
+ width: 30px;
210
+ height: 30px;
211
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%231976D2' d='M8 5v14l11-7z'/%3E%3C/svg%3E");
212
+ background-size: cover;
213
+ cursor: pointer;
214
+ border: none;
215
+ background-color: transparent;
216
+ padding: 0;
217
+ }
218
+
219
+ .green-dev-floaty-minimal {
220
+ position: absolute;
221
+ width: 40px;
222
+ height: 40px;
223
+ background-color: #fff;
224
+ background-image: var(--gemini-logo);
225
+ background-repeat: no-repeat;
226
+ background-position: center;
227
+ background-size: 32px;
228
+ cursor: pointer;
229
+ pointer-events: all;
230
+ z-index: 1001;
231
+ border-radius: 12px;
232
+ box-shadow: 0 4px 8px rgb(0 0 0 / 20%);
233
+ padding: 5px;
234
+ }
235
+
236
+ .green-dev-floaty-disclaimer {
237
+ font-size: 15px;
238
+ color: #666;
239
+ text-align: center;
240
+ margin-top: 8px;
241
+ position: relative; /* For tooltip positioning */
242
+ }
243
+
244
+ .disclaimer-link {
245
+ color: #666; /* Match text color */
246
+ text-decoration: underline;
247
+ cursor: pointer;
248
+ }
249
+
250
+ .disclaimer-tooltip {
251
+ display: none;
252
+ position: absolute;
253
+ bottom: 100%; /* Position above */
254
+ left: 50%;
255
+ transform: translateX(-50%);
256
+ width: 300px;
257
+ padding: 12px;
258
+ background-color: #fff;
259
+ border: 1px solid #ccc;
260
+ border-radius: 8px;
261
+ box-shadow: 0 2px 10px rgb(0 0 0 / 20%);
262
+ z-index: 1000;
263
+ text-align: left;
264
+ font-size: 16px;
265
+ line-height: 1.4;
266
+ color: #333;
267
+ white-space: normal; /* Ensure text wraps */
268
+ }
269
+
270
+ .disclaimer-link:hover + .disclaimer-tooltip,
271
+ .disclaimer-tooltip:hover {
272
+ display: block;
273
+ }
274
+
275
+ .learn-more-link {
276
+ color: #0b57d0;
277
+ text-decoration: none;
278
+ }
279
+
280
+ .learn-more-link:hover {
281
+ text-decoration: underline;
282
+ }