chrome-devtools-frontend 1.0.1717709 → 1.0.1721762

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 (291) hide show
  1. package/.agents/rules/models-and-core/core-ai-agent-context-and-prompt-discipline.md +29 -0
  2. package/.agents/rules/models-and-core/core-cdp-and-extension-error-handling.md +34 -0
  3. package/.agents/rules/models-and-core/core-gn-build-and-module-layering.md +23 -0
  4. package/.agents/rules/models-and-core/core-runtime-neutrality-and-platform-utils.md +28 -0
  5. package/.agents/rules/models-and-core/core-sdk-model-and-target-lifecycle.md +35 -0
  6. package/.agents/rules/models-and-core/core-security-origin-and-capability-guards.md +33 -0
  7. package/.agents/rules/models-and-core/core-settings-and-storage-migration.md +31 -0
  8. package/.agents/rules/models-and-core/core-sourcemap-and-workspace-mapping.md +28 -0
  9. package/.agents/rules/models-and-core/core-trace-engine-handler-invariants.md +32 -0
  10. package/.agents/rules/models-and-core/core-trace-insight-models-and-timing-types.md +28 -0
  11. package/.agents/rules/tests/test-cleanup-mutated-globals-and-widgets.md +40 -0
  12. package/.agents/rules/tests/test-deterministic-async-synchronization.md +30 -0
  13. package/.agents/rules/tests/test-modular-hooks-and-test-universe.md +38 -0
  14. package/.agents/rules/tests/test-public-api-and-encapsulation.md +30 -0
  15. package/.agents/rules/tests/test-shared-fixture-and-helper-reuse.md +29 -0
  16. package/.agents/rules/tests/test-single-responsibility-and-conciseness.md +37 -0
  17. package/.agents/rules/tests/test-strict-assertions-and-literal-expectations.md +31 -0
  18. package/.agents/rules/tests/test-type-safe-mocks-and-events.md +30 -0
  19. package/.agents/rules/tests/test-view-and-presenter-isolation.md +32 -0
  20. package/.agents/rules/ui-and-widgets/ui-accessibility-and-semantic-html.md +32 -0
  21. package/.agents/rules/ui-and-widgets/ui-await-update-complete-post-render.md +30 -0
  22. package/.agents/rules/ui-and-widgets/ui-css-scoping-and-flex-layout.md +27 -0
  23. package/.agents/rules/ui-and-widgets/ui-declarative-child-widget-composition.md +29 -0
  24. package/.agents/rules/ui-and-widgets/ui-lit-declarative-templates-and-directives.md +33 -0
  25. package/.agents/rules/ui-and-widgets/ui-localization-and-uistrings-hygiene.md +36 -0
  26. package/.agents/rules/ui-and-widgets/ui-modern-component-and-encapsulation-standards.md +32 -0
  27. package/.agents/rules/ui-and-widgets/ui-panel-and-meta-registration.md +35 -0
  28. package/.agents/rules/ui-and-widgets/ui-performance-and-flamechart-rendering.md +34 -0
  29. package/.agents/rules/ui-and-widgets/ui-pure-view-and-presenter-separation.md +31 -0
  30. package/.agents/rules/ui-and-widgets/ui-reactive-widget-update-lifecycle.md +34 -0
  31. package/.agents/rules/ui-and-widgets/ui-security-and-output-sanitization.md +28 -0
  32. package/.agents/rules/ui-and-widgets/ui-type-safety-and-exhaustiveness.md +37 -0
  33. package/.agents/rules/ui-and-widgets/ui-view-output-and-callback-contracts.md +35 -0
  34. package/.agents/rules/ui-and-widgets/ui-visual-logging-instrumentation.md +29 -0
  35. package/.agents/rules/ui-and-widgets/ui-weak-dom-references-and-observer-cleanup.md +29 -0
  36. package/.agents/rules/ui-and-widgets/ui-widget-dom-and-listener-lifecycle.md +38 -0
  37. package/.agents/skills/code-review/SKILL.md +3 -0
  38. package/.agents/skills/devtools-testing-guidance/SKILL.md +1 -0
  39. package/.agents/skills/review-models-core/SKILL.md +73 -0
  40. package/.agents/skills/review-tests/SKILL.md +67 -0
  41. package/.agents/skills/review-ui-widgets/SKILL.md +115 -0
  42. package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +19 -3
  43. package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +2 -1
  44. package/.agents/skills/ui-widgets/SKILL.md +3 -1
  45. package/AUTHORS +3 -0
  46. package/DIR_METADATA +51 -1
  47. package/eslint.config.mjs +63 -21
  48. package/front_end/core/platform/api/HostRuntime.ts +1 -0
  49. package/front_end/core/platform/browser/HostRuntime.ts +10 -0
  50. package/front_end/core/platform/node/HostRuntime.ts +1 -0
  51. package/front_end/core/sdk/CSSMatchedStyles.ts +60 -20
  52. package/front_end/core/sdk/CSSProperty.ts +2 -2
  53. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +28 -9
  54. package/front_end/core/sdk/NetworkManager.ts +9 -3
  55. package/front_end/core/sdk/OverlayModel.ts +2 -8
  56. package/front_end/core/sdk/PrivateVerificationTokensModel.ts +79 -0
  57. package/front_end/core/sdk/SecurityOrigin.ts +1 -1
  58. package/front_end/core/sdk/SourceMapCache.ts +20 -15
  59. package/front_end/core/sdk/SourceMapManager.ts +28 -9
  60. package/front_end/core/sdk/TargetManager.ts +7 -4
  61. package/front_end/core/sdk/WebAuthnModel.ts +11 -2
  62. package/front_end/core/sdk/sdk.ts +2 -0
  63. package/front_end/entrypoints/inspector_main/InspectorMain.ts +0 -2
  64. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +10 -0
  65. package/front_end/entrypoints/main/GlobalAiButton.ts +1 -1
  66. package/front_end/entrypoints/main/MainImpl.ts +5 -2
  67. package/front_end/foundation/Universe.ts +1 -1
  68. package/front_end/generated/Deprecation.ts +4 -0
  69. package/front_end/generated/InspectorBackendCommands.ts +3 -3
  70. package/front_end/generated/SupportedCSSProperties.ts +89 -17
  71. package/front_end/generated/protocol-mapping.d.ts +1 -0
  72. package/front_end/generated/protocol-proxy-api.d.ts +1 -0
  73. package/front_end/generated/protocol.ts +5 -3
  74. package/front_end/models/{ai_assistance → ai-utils}/AiHistoryStorage.ts +6 -5
  75. package/front_end/models/{ai_assistance → ai-utils}/AiUtils.ts +9 -0
  76. package/front_end/models/{ai_assistance → ai-utils}/BuiltInAi.ts +1 -1
  77. package/front_end/models/ai-utils/ai-utils.ts +17 -0
  78. package/front_end/models/ai_assistance/AiAgent2.ts +3 -1
  79. package/front_end/models/ai_assistance/AiConversation.ts +34 -22
  80. package/front_end/models/ai_assistance/AlwaysAllowedTools.ts +107 -0
  81. package/front_end/models/ai_assistance/ConversationSummary.ts +2 -1
  82. package/front_end/models/ai_assistance/PerformanceAnnotations.ts +3 -1
  83. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +3 -1
  84. package/front_end/models/ai_assistance/agents/AiAgent.ts +15 -7
  85. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +3 -1
  86. package/front_end/models/ai_assistance/agents/ExecuteJavascript.ts +3 -1
  87. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +1 -1
  88. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +3 -1
  89. package/front_end/models/ai_assistance/ai_assistance.ts +9 -10
  90. package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +27 -6
  91. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +3 -3
  92. package/front_end/models/ai_assistance/skills/sources.md +3 -1
  93. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +1 -0
  94. package/front_end/models/ai_assistance/tools/GetCookieValues.ts +1 -0
  95. package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +3 -1
  96. package/front_end/models/ai_assistance/tools/GetSourceContent.ts +46 -4
  97. package/front_end/models/ai_assistance/tools/GetStorageValues.ts +1 -0
  98. package/front_end/models/ai_assistance/tools/Tool.ts +6 -0
  99. package/front_end/models/breakpoints/BreakpointManager.ts +0 -4
  100. package/front_end/models/change_tracker/ChangeTracker.ts +2 -0
  101. package/front_end/models/comment_manager/CommentManager.ts +12 -0
  102. package/front_end/models/comment_manager/CommentThread.ts +21 -1
  103. package/front_end/models/elements/ChangeTrackingUtils.ts +37 -0
  104. package/front_end/models/elements/DOMChanges.ts +24 -36
  105. package/front_end/models/elements/StyleChanges.ts +97 -0
  106. package/front_end/models/elements/elements.ts +4 -0
  107. package/front_end/models/emulation/DeviceModeModel.ts +19 -0
  108. package/front_end/models/javascript_metadata/NativeFunctions.ts +11 -1
  109. package/front_end/models/trace/EventsSerializer.ts +35 -2
  110. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +17 -21
  111. package/front_end/models/trace/helpers/SyntheticEvents.ts +4 -2
  112. package/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +12 -8
  113. package/front_end/models/trace/types/File.ts +20 -3
  114. package/front_end/models/trace/types/TraceEvents.ts +8 -3
  115. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +14 -0
  116. package/front_end/panels/ai_assistance/README.md +1 -1
  117. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +1 -1
  118. package/front_end/panels/ai_assistance/ai_assistance.ts +2 -0
  119. package/front_end/panels/ai_assistance/components/ChatInput.ts +5 -43
  120. package/front_end/panels/ai_assistance/components/ChatMessage.ts +52 -147
  121. package/front_end/panels/ai_assistance/components/ChatView.ts +28 -3
  122. package/front_end/panels/ai_assistance/components/PermissionPrompt.ts +151 -0
  123. package/front_end/panels/ai_assistance/components/RelevantDataDisclaimer.ts +73 -0
  124. package/front_end/panels/ai_assistance/components/chatInput.css +0 -59
  125. package/front_end/panels/ai_assistance/components/chatMessage.css +0 -47
  126. package/front_end/panels/ai_assistance/components/chatView.css +5 -30
  127. package/front_end/panels/ai_assistance/components/permissionPrompt.css +55 -0
  128. package/front_end/panels/ai_assistance/components/relevantDataDisclaimer.css +35 -0
  129. package/front_end/panels/application/ApplicationPanelSidebar.ts +3 -7
  130. package/front_end/panels/application/BackgroundServiceView.ts +8 -8
  131. package/front_end/panels/application/IndexedDBViews.ts +102 -73
  132. package/front_end/panels/application/OpenedWindowDetailsView.ts +167 -130
  133. package/front_end/panels/application/ServiceWorkerCacheViews.ts +288 -346
  134. package/front_end/panels/application/StorageBucketsTreeElement.ts +22 -27
  135. package/front_end/panels/application/StorageItemsToolbar.ts +2 -2
  136. package/front_end/panels/application/components/StorageMetadataView.ts +207 -160
  137. package/front_end/panels/application/openedWindowDetailsView.css +7 -30
  138. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +1 -1
  139. package/front_end/panels/changes/changesView.css +0 -6
  140. package/front_end/panels/console/ConsoleInsightTeaser.ts +5 -1
  141. package/front_end/panels/console/ConsolePinPane.ts +1 -1
  142. package/front_end/panels/console/ConsoleView.ts +1 -0
  143. package/front_end/panels/elements/CSSValueTraceView.ts +5 -5
  144. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +14 -6
  145. package/front_end/panels/elements/ComputedStyleWidget.ts +14 -5
  146. package/front_end/panels/elements/DOMTreeElementWidget.ts +2 -2
  147. package/front_end/panels/elements/DOMTreeWidget.ts +7 -3
  148. package/front_end/panels/elements/EventListenersWidget.ts +1 -1
  149. package/front_end/panels/elements/LayersWidget.ts +1 -1
  150. package/front_end/panels/elements/PropertyRenderer.ts +91 -16
  151. package/front_end/panels/elements/StandaloneStylesContainer.ts +33 -6
  152. package/front_end/panels/elements/StylePropertiesSection.ts +1 -0
  153. package/front_end/panels/elements/StylePropertyTreeElement.ts +211 -121
  154. package/front_end/panels/elements/StylesContainer.ts +2 -0
  155. package/front_end/panels/elements/StylesSidebarPane.ts +34 -16
  156. package/front_end/panels/elements/components/QueryContainer.ts +1 -1
  157. package/front_end/panels/elements/elementStatePaneWidget.css +1 -1
  158. package/front_end/panels/elements/stylePropertiesTreeOutline.css +1 -1
  159. package/front_end/panels/elements/stylesSidebarPane.css +4 -0
  160. package/front_end/panels/emulation/DeviceModeToolbar.ts +57 -25
  161. package/front_end/panels/emulation/DeviceModeView.ts +27 -1
  162. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +6 -0
  163. package/front_end/panels/emulation/MediaQueryInspector.ts +14 -4
  164. package/front_end/panels/explain/components/ConsoleInsight.ts +2 -3
  165. package/front_end/panels/explain/explain-meta.ts +1 -1
  166. package/front_end/panels/issues/AffectedMetadataAllowedSitesView.ts +67 -34
  167. package/front_end/panels/issues/issues.ts +2 -0
  168. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +7 -3
  169. package/front_end/panels/lighthouse/LighthouseController.ts +1 -1
  170. package/front_end/panels/media/PlayerMessagesView.ts +1 -1
  171. package/front_end/panels/mobile_throttling/CPUThrottlingSelector.ts +1 -1
  172. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +45 -15
  173. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +3 -3
  174. package/front_end/panels/network/BinaryResourceView.ts +54 -50
  175. package/front_end/panels/network/RequestHeadersView.ts +6 -2
  176. package/front_end/panels/network/RequestPreviewView.ts +28 -5
  177. package/front_end/panels/network/ResourceWebSocketFrameView.ts +1 -0
  178. package/front_end/panels/network/components/EditableSpan.ts +11 -30
  179. package/front_end/panels/network/components/HeaderSectionRow.ts +2 -2
  180. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +10 -6
  181. package/front_end/panels/profiler/HeapDetachedElementsView.ts +112 -22
  182. package/front_end/panels/profiler/HeapProfileView.ts +3 -3
  183. package/front_end/panels/profiler/HeapSnapshotView.ts +12 -2
  184. package/front_end/panels/profiler/HeapTimelineOverview.ts +16 -2
  185. package/front_end/panels/profiler/profiler.ts +0 -2
  186. package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
  187. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +1 -1
  188. package/front_end/panels/recorder/CreateRecordingView.ts +1 -1
  189. package/front_end/panels/recorder/RecordingView.ts +3 -3
  190. package/front_end/panels/recorder/ReplaySection.ts +1 -1
  191. package/front_end/panels/screencast/ScreencastApp.ts +83 -57
  192. package/front_end/panels/screencast/screencastView.css +1 -1
  193. package/front_end/panels/settings/AISettingsTab.ts +107 -4
  194. package/front_end/panels/settings/aiSettingsTab.css +53 -0
  195. package/front_end/panels/settings/settings-meta.ts +1 -1
  196. package/front_end/panels/settings/settingsScreen.css +0 -4
  197. package/front_end/panels/sources/BreakpointsView.ts +2 -2
  198. package/front_end/panels/sources/DebuggerPlugin.ts +7 -0
  199. package/front_end/panels/sources/NavigatorView.ts +61 -18
  200. package/front_end/panels/sources/SourcesNavigator.ts +22 -7
  201. package/front_end/panels/sources/SourcesPanel.ts +1 -0
  202. package/front_end/panels/timeline/README.md +12 -0
  203. package/front_end/panels/timeline/StatusDialog.ts +1 -1
  204. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -3
  205. package/front_end/panels/timeline/TimelineCommentController.ts +346 -0
  206. package/front_end/panels/timeline/TimelineDetailsView.ts +24 -1
  207. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +34 -30
  208. package/front_end/panels/timeline/TimelineFlameChartView.ts +22 -1
  209. package/front_end/panels/timeline/TimelinePanel.ts +12 -5
  210. package/front_end/panels/timeline/TimelineTreeView.ts +28 -6
  211. package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
  212. package/front_end/panels/timeline/components/fieldSettingsDialog.css +2 -2
  213. package/front_end/panels/timeline/components/insights/baseInsightComponent.css +1 -1
  214. package/front_end/panels/timeline/overlays/components/entriesLinkOverlay.css +2 -2
  215. package/front_end/panels/timeline/overlays/components/entryLabelOverlay.css +9 -9
  216. package/front_end/panels/timeline/timeline-meta.ts +2 -2
  217. package/front_end/panels/timeline/timeline.ts +4 -0
  218. package/front_end/panels/timeline/timelineFlamechartPopover.css +2 -2
  219. package/front_end/panels/timeline/timelinePanel.css +2 -2
  220. package/front_end/panels/web_audio/WebAudioView.ts +7 -4
  221. package/front_end/third_party/chromium/README.chromium +1 -1
  222. package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
  223. package/front_end/third_party/codemirror.next/chunk/angular.js.map +1 -1
  224. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  225. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  226. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
  227. package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
  228. package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
  229. package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
  230. package/front_end/third_party/codemirror.next/chunk/less.js +1 -1
  231. package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
  232. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
  233. package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
  234. package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
  235. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  236. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  237. package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
  238. package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
  239. package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
  240. package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
  241. package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
  242. package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
  243. package/front_end/third_party/codemirror.next/chunk/vue.js.map +1 -1
  244. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  245. package/front_end/third_party/codemirror.next/chunk/wast.js.map +1 -1
  246. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
  247. package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
  248. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  249. package/front_end/third_party/codemirror.next/rollup.config.mjs +1 -1
  250. package/front_end/tsconfig.json +1 -1
  251. package/front_end/ui/comments/CommentAnchorResolver.ts +1 -1
  252. package/front_end/ui/components/buttons/Button.ts +29 -18
  253. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +1 -1
  254. package/front_end/ui/components/dialogs/TypeToAllowDialog.ts +94 -39
  255. package/front_end/ui/components/dialogs/dialog.css +1 -1
  256. package/front_end/ui/components/menus/menuItem.css +11 -0
  257. package/front_end/ui/components/text_editor/AccessiblePlaceholder.ts +1 -1
  258. package/front_end/ui/components/text_editor/AiCodeCompletionTeaser.ts +1 -1
  259. package/front_end/ui/components/text_editor/config.ts +2 -1
  260. package/front_end/ui/components/text_editor/javascript.ts +2 -1
  261. package/front_end/ui/legacy/InspectorView.ts +4 -2
  262. package/front_end/ui/legacy/SplitWidget.ts +14 -16
  263. package/front_end/ui/legacy/TabbedPane.ts +9 -1
  264. package/front_end/ui/legacy/UIUtils.ts +60 -40
  265. package/front_end/ui/legacy/components/color_picker/spectrum.css +2 -2
  266. package/front_end/ui/legacy/components/data_grid/dataGrid.css +9 -0
  267. package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +0 -1
  268. package/front_end/ui/legacy/components/inline_editor/cssShadowEditor.css +5 -7
  269. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +1 -1
  270. package/front_end/ui/legacy/components/perf_ui/PieChart.ts +11 -0
  271. package/front_end/ui/legacy/components/perf_ui/chartViewport.css +4 -4
  272. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +6 -0
  273. package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +1 -1
  274. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +38 -13
  275. package/front_end/ui/legacy/dropTarget.css +1 -1
  276. package/front_end/ui/legacy/statusBar.css +7 -0
  277. package/front_end/ui/legacy/tabbedPane.css +0 -7
  278. package/front_end/ui/visual_logging/KnownContextValues.ts +13 -0
  279. package/inspector_overlay/main.ts +2 -15
  280. package/inspector_overlay/tool_persistent.ts +0 -14
  281. package/mcp/mcp.ts +3 -0
  282. package/package.json +1 -1
  283. package/front_end/panels/ai_assistance/components/StylingAgentMarkdownRenderer.ts +0 -178
  284. package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +0 -147
  285. package/front_end/panels/profiler/heapDetachedElementsDataGrid.css +0 -14
  286. package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +0 -62
  287. package/front_end/ui/components/legacy_wrapper/legacy_wrapper.ts +0 -8
  288. package/inspector_overlay/tool_green_dev_anchors.css +0 -54
  289. package/inspector_overlay/tool_green_dev_anchors.ts +0 -164
  290. /package/front_end/models/{ai_assistance → ai-utils}/AiSetting.ts +0 -0
  291. /package/front_end/models/{ai_assistance → ai-utils}/debug.ts +0 -0
@@ -113,8 +113,6 @@ export class InspectorMainImpl implements Common.Runnable.Runnable {
113
113
  }
114
114
  }
115
115
 
116
- Common.Runnable.registerEarlyInitializationRunnable(() => new InspectorMainImpl());
117
-
118
116
  export class ReloadActionDelegate implements UI.ActionRegistration.ActionDelegate {
119
117
  handleAction(_context: UI.Context.Context, actionId: string): boolean {
120
118
  switch (actionId) {
@@ -358,6 +358,16 @@ async function loadInspectorMainModule(): Promise<typeof InspectorMain> {
358
358
  return loadedInspectorMainModule;
359
359
  }
360
360
 
361
+ Common.Runnable.registerEarlyInitializationRunnable(function() {
362
+ return {
363
+ async run() {
364
+ const InspectorMain = await loadInspectorMainModule();
365
+ const runnable = new InspectorMain.InspectorMain.InspectorMainImpl();
366
+ await runnable.run();
367
+ },
368
+ };
369
+ });
370
+
361
371
  UI.ViewManager.registerViewExtension({
362
372
  location: UI.ViewManager.ViewLocationValues.DRAWER_VIEW,
363
373
  id: 'rendering',
@@ -5,7 +5,7 @@
5
5
  import * as Common from '../../core/common/common.js';
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as Root from '../../core/root/root.js';
8
- import * as AIAssistance from '../../models/ai_assistance/ai_assistance.js';
8
+ import * as AIAssistance from '../../models/ai-utils/ai-utils.js';
9
9
  import * as UI from '../../ui/legacy/legacy.js';
10
10
  import * as Lit from '../../ui/lit/lit.js';
11
11
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -42,7 +42,7 @@ import * as ProtocolClient from '../../core/protocol_client/protocol_client.js';
42
42
  import * as Root from '../../core/root/root.js';
43
43
  import * as SDK from '../../core/sdk/sdk.js';
44
44
  import * as Foundation from '../../foundation/foundation.js';
45
- import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
45
+ import * as AiAssistanceModel from '../../models/ai-utils/ai-utils.js';
46
46
  import * as Badges from '../../models/badges/badges.js';
47
47
  import * as CommentManager from '../../models/comment_manager/comment_manager.js';
48
48
  import * as CrUXManager from '../../models/crux-manager/crux-manager.js';
@@ -147,6 +147,7 @@ const WINDOW_LOCAL_STORAGE: Common.Settings.SettingsBackingStore = {
147
147
  export class MainImpl {
148
148
  #readyForTestPromise = Promise.withResolvers<void>();
149
149
  #veStartPromise!: Promise<void>;
150
+ #toolbarsPromise!: Promise<void>;
150
151
  #universe!: Foundation.Universe.Universe;
151
152
  #supportsEmulation = false;
152
153
 
@@ -535,7 +536,7 @@ export class MainImpl {
535
536
  Persistence.NetworkPersistenceManager.Events.LOCAL_OVERRIDES_REQUESTED, event => {
536
537
  inspectorView.displaySelectOverrideFolderInfobar(event.data);
537
538
  });
538
- await inspectorView.createToolbars();
539
+ this.#toolbarsPromise = inspectorView.createToolbars();
539
540
  inspectorView.renderStatusBar(this.#universe.commentManager.isAgentAttached());
540
541
  this.#universe.commentManager.addEventListener(
541
542
  CommentManager.CommentManager.Events.AGENT_ATTACHED_CHANGED,
@@ -551,6 +552,7 @@ export class MainImpl {
551
552
 
552
553
  // Allow UI cycles to repaint prior to creating connection.
553
554
  window.setTimeout(this.#initializeTarget.bind(this), 0);
555
+ await this.#toolbarsPromise;
554
556
  MainImpl.timeEnd('Main._showAppUI');
555
557
  }
556
558
 
@@ -564,6 +566,7 @@ export class MainImpl {
564
566
  await runnableInstanceFunction().run();
565
567
  }
566
568
  await this.#veStartPromise;
569
+ await this.#toolbarsPromise;
567
570
  // Used for browser tests.
568
571
  Host.InspectorFrontendHost.InspectorFrontendHostInstance.readyForTest();
569
572
  this.#readyForTestPromise.resolve();
@@ -6,7 +6,7 @@ import * as Common from '../core/common/common.js';
6
6
  import * as Host from '../core/host/host.js';
7
7
  import * as Root from '../core/root/root.js';
8
8
  import * as SDK from '../core/sdk/sdk.js';
9
- import * as AiAssistance from '../models/ai_assistance/ai_assistance.js';
9
+ import * as AiAssistance from '../models/ai-utils/ai-utils.js';
10
10
  import * as AutofillManager from '../models/autofill_manager/autofill_manager.js';
11
11
  import * as Badges from '../models/badges/badges.js';
12
12
  import * as Bindings from '../models/bindings/bindings.js';
@@ -274,6 +274,10 @@ export const UIStrings = {
274
274
  * @description A deprecation warning shown in the DevTools Issues tab. The placeholder is always the noun 'SharedArrayBuffer' which refers to a JavaScript construct. 'Extensions' refers to Chrome extensions. The warning is shown when Chrome Extensions attempt to use 'SharedArrayBuffer's under insecure circumstances.
275
275
  */
276
276
  V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.",
277
+ /**
278
+ * @description Warning displayed to developers when an SVG filter is applied to view transition content, which is disallowed because the content may contain cross-origin iframes or plugins. `::view-transition-old()` and `::view-transition-new()` are CSS pseudo-element names and should not be translated.
279
+ */
280
+ ViewTransitionPreventSvgFilterPaint: "SVG filters cannot be applied to view transition content, such as `::view-transition-old()` and `::view-transition-new()`, as it may contain cross-origin iframes or plugins.",
277
281
  /**
278
282
  * @description This warning occurs when the deprecated `BluetoothRemoteGATTCharacteristic.writeValue()` method is used. Developers should use `writeValueWithResponse()` or `writeValueWithoutResponse()` instead.
279
283
  */
@@ -151,7 +151,7 @@ inspectorBackend.registerType("Audits.InspectorIssue", [{"name": "code", "type":
151
151
  // Autofill.
152
152
  inspectorBackend.registerEnum("Autofill.FillingStrategy", {AutocompleteAttribute: "autocompleteAttribute", AutofillInferred: "autofillInferred"});
153
153
  inspectorBackend.registerEvent("Autofill.addressFormFilled", ["filledFields", "addressUi"]);
154
- inspectorBackend.registerCommand("Autofill.trigger", [{"name": "fieldId", "type": "number", "optional": false, "description": "Identifies a field that serves as an anchor for autofill.", "typeRef": "DOM.BackendNodeId"}, {"name": "frameId", "type": "string", "optional": true, "description": "Identifies the frame that field belongs to.", "typeRef": "Page.FrameId"}, {"name": "card", "type": "object", "optional": true, "description": "Credit card information to fill out the form. Credit card data is not saved. Mutually exclusive with `address`.", "typeRef": "Autofill.CreditCard"}, {"name": "address", "type": "object", "optional": true, "description": "Address to fill out the form. Address data is not saved. Mutually exclusive with `card`.", "typeRef": "Autofill.Address"}], [], "Trigger autofill on a form identified by the fieldId. If the field and related form cannot be autofilled, returns an error.");
154
+ inspectorBackend.registerCommand("Autofill.trigger", [{"name": "fieldId", "type": "number", "optional": false, "description": "Identifies a field that serves as an anchor for autofill.", "typeRef": "DOM.BackendNodeId"}, {"name": "frameId", "type": "string", "optional": true, "description": "Identifies the frame that field belongs to.", "typeRef": "Page.FrameId"}, {"name": "card", "type": "object", "optional": true, "description": "Credit card information to fill out the form. Credit card data is not saved. Mutually exclusive with `address`.", "typeRef": "Autofill.CreditCard"}, {"name": "address", "type": "object", "optional": true, "description": "Address to fill out the form. Address data is not saved. Mutually exclusive with `card`.", "typeRef": "Autofill.Address"}], [], "Trigger autofill on a form identified by the fieldId. If the field and related form cannot be autofilled, returns an error. Returns once the values have been applied to the form fields.");
155
155
  inspectorBackend.registerCommand("Autofill.setAddresses", [{"name": "addresses", "type": "array", "optional": false, "description": "", "typeRef": "Autofill.Address"}], [], "Set addresses so that developers can verify their forms implementation.");
156
156
  inspectorBackend.registerCommand("Autofill.disable", [], [], "Disables autofill domain notifications.");
157
157
  inspectorBackend.registerCommand("Autofill.enable", [], [], "Enables autofill domain notifications.");
@@ -221,7 +221,7 @@ inspectorBackend.registerCommand("Browser.crash", [], [], "Crashes browser on th
221
221
  inspectorBackend.registerCommand("Browser.crashGpuProcess", [], [], "Crashes GPU process.");
222
222
  inspectorBackend.registerCommand("Browser.getVersion", [], ["protocolVersion", "product", "revision", "userAgent", "jsVersion"], "Returns version information.");
223
223
  inspectorBackend.registerCommand("Browser.getBrowserCommandLine", [], ["arguments"], "Returns the command line switches for the browser process if, and only if --enable-automation is on the commandline.");
224
- inspectorBackend.registerCommand("Browser.addMockCamera", [{"name": "deviceId", "type": "string", "optional": false, "description": "Required non-empty identifier for the mock camera. This is mapped to an internal virtual-device identifier and is not the MediaDeviceInfo.deviceId exposed to the page.", "typeRef": null}], [], "Adds or updates a mock camera in the shared video capture device list for test automation. The mock camera is not scoped to a particular page or frame and is removed when the DevTools session that created it disconnects.");
224
+ inspectorBackend.registerCommand("Browser.addMockCamera", [{"name": "deviceId", "type": "string", "optional": false, "description": "Required non-empty identifier for the mock camera within the current DevTools session. Different sessions can use the same identifier without replacing each other's cameras. This is not the MediaDeviceInfo.deviceId exposed to the page.", "typeRef": null}], [], "Adds or updates a mock camera in the shared video capture device list for test automation. The mock camera is not scoped to a particular page or frame and is removed when the DevTools session that created it disconnects.");
225
225
  inspectorBackend.registerCommand("Browser.getHistograms", [{"name": "query", "type": "string", "optional": true, "description": "Requested substring in name. Only histograms which have query as a substring in their name are extracted. An empty or absent query returns all histograms.", "typeRef": null}, {"name": "delta", "type": "boolean", "optional": true, "description": "If true, retrieve delta since last delta call.", "typeRef": null}], ["histograms"], "Get Chrome histograms.");
226
226
  inspectorBackend.registerCommand("Browser.getHistogram", [{"name": "name", "type": "string", "optional": false, "description": "Requested histogram name.", "typeRef": null}, {"name": "delta", "type": "boolean", "optional": true, "description": "If true, retrieve delta since last delta call.", "typeRef": null}], ["histogram"], "Get a Chrome histogram by name.");
227
227
  inspectorBackend.registerCommand("Browser.getWindowBounds", [{"name": "windowId", "type": "number", "optional": false, "description": "Browser window id.", "typeRef": "Browser.WindowID"}], ["bounds"], "Get position and size of the browser window.");
@@ -839,7 +839,7 @@ inspectorBackend.registerEnum("Network.ReportStatus", {Queued: "Queued", Pending
839
839
  inspectorBackend.registerEnum("Network.DeviceBoundSessionWithUsageUsage", {NotInScope: "NotInScope", InScopeRefreshNotYetNeeded: "InScopeRefreshNotYetNeeded", InScopeRefreshNotAllowed: "InScopeRefreshNotAllowed", ProactiveRefreshNotPossible: "ProactiveRefreshNotPossible", ProactiveRefreshAttempted: "ProactiveRefreshAttempted", Deferred: "Deferred"});
840
840
  inspectorBackend.registerEnum("Network.DeviceBoundSessionUrlRuleRuleType", {Exclude: "Exclude", Include: "Include"});
841
841
  inspectorBackend.registerEnum("Network.DeviceBoundSessionFetchResult", {Success: "Success", SigningKeyGenerationError: "SigningKeyGenerationError", AttestationKeyGenerationError: "AttestationKeyGenerationError", SigningError: "SigningError", TransientSigningError: "TransientSigningError", ServerRequestedTermination: "ServerRequestedTermination", InvalidSessionId: "InvalidSessionId", InvalidChallenge: "InvalidChallenge", TooManyChallenges: "TooManyChallenges", InvalidFetcherUrl: "InvalidFetcherUrl", InvalidRefreshUrl: "InvalidRefreshUrl", TransientHttpError: "TransientHttpError", ScopeOriginSameSiteMismatch: "ScopeOriginSameSiteMismatch", RefreshUrlSameSiteMismatch: "RefreshUrlSameSiteMismatch", MismatchedSessionId: "MismatchedSessionId", MissingScope: "MissingScope", NoCredentials: "NoCredentials", SubdomainRegistrationWellKnownUnavailable: "SubdomainRegistrationWellKnownUnavailable", SubdomainRegistrationUnauthorized: "SubdomainRegistrationUnauthorized", SubdomainRegistrationWellKnownMalformed: "SubdomainRegistrationWellKnownMalformed", SessionProviderWellKnownUnavailable: "SessionProviderWellKnownUnavailable", RelyingPartyWellKnownUnavailable: "RelyingPartyWellKnownUnavailable", FederatedKeyThumbprintMismatch: "FederatedKeyThumbprintMismatch", InvalidFederatedSessionUrl: "InvalidFederatedSessionUrl", InvalidFederatedKey: "InvalidFederatedKey", TooManyRelyingOriginLabels: "TooManyRelyingOriginLabels", BoundCookieSetForbidden: "BoundCookieSetForbidden", NetError: "NetError", ProxyError: "ProxyError", EmptySessionConfig: "EmptySessionConfig", InvalidCredentialsConfig: "InvalidCredentialsConfig", InvalidCredentialsType: "InvalidCredentialsType", InvalidCredentialsEmptyName: "InvalidCredentialsEmptyName", InvalidCredentialsCookie: "InvalidCredentialsCookie", PersistentHttpError: "PersistentHttpError", RegistrationAttemptedChallenge: "RegistrationAttemptedChallenge", InvalidScopeOrigin: "InvalidScopeOrigin", ScopeOriginContainsPath: "ScopeOriginContainsPath", RefreshInitiatorNotString: "RefreshInitiatorNotString", RefreshInitiatorInvalidHostPattern: "RefreshInitiatorInvalidHostPattern", InvalidScopeSpecification: "InvalidScopeSpecification", MissingScopeSpecificationType: "MissingScopeSpecificationType", EmptyScopeSpecificationDomain: "EmptyScopeSpecificationDomain", EmptyScopeSpecificationPath: "EmptyScopeSpecificationPath", InvalidScopeSpecificationType: "InvalidScopeSpecificationType", InvalidScopeIncludeSite: "InvalidScopeIncludeSite", MissingScopeIncludeSite: "MissingScopeIncludeSite", FederatedNotAuthorizedByProvider: "FederatedNotAuthorizedByProvider", FederatedNotAuthorizedByRelyingParty: "FederatedNotAuthorizedByRelyingParty", SessionProviderWellKnownMalformed: "SessionProviderWellKnownMalformed", SessionProviderWellKnownHasProviderOrigin: "SessionProviderWellKnownHasProviderOrigin", RelyingPartyWellKnownMalformed: "RelyingPartyWellKnownMalformed", RelyingPartyWellKnownHasRelyingOrigins: "RelyingPartyWellKnownHasRelyingOrigins", InvalidFederatedSessionProviderSessionMissing: "InvalidFederatedSessionProviderSessionMissing", InvalidFederatedSessionWrongProviderOrigin: "InvalidFederatedSessionWrongProviderOrigin", InvalidCredentialsCookieCreationTime: "InvalidCredentialsCookieCreationTime", InvalidCredentialsCookieName: "InvalidCredentialsCookieName", InvalidCredentialsCookieParsing: "InvalidCredentialsCookieParsing", InvalidCredentialsCookieUnpermittedAttribute: "InvalidCredentialsCookieUnpermittedAttribute", InvalidCredentialsCookieInvalidDomain: "InvalidCredentialsCookieInvalidDomain", InvalidCredentialsCookiePrefix: "InvalidCredentialsCookiePrefix", InvalidScopeRulePath: "InvalidScopeRulePath", InvalidScopeRuleHostPattern: "InvalidScopeRuleHostPattern", ScopeRuleOriginScopedHostPatternMismatch: "ScopeRuleOriginScopedHostPatternMismatch", ScopeRuleSiteScopedHostPatternMismatch: "ScopeRuleSiteScopedHostPatternMismatch", SigningQuotaExceeded: "SigningQuotaExceeded", InvalidConfigJson: "InvalidConfigJson", InvalidFederatedSessionProviderFailedToRestoreKey: "InvalidFederatedSessionProviderFailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", SessionDeletedDuringRefresh: "SessionDeletedDuringRefresh", CrossOriginRegistrationSiteNotIncluded: "CrossOriginRegistrationSiteNotIncluded", InvalidPreProvisionedKeyInitiatorMissing: "InvalidPreProvisionedKeyInitiatorMissing", PreProvisionedKeyAccessNotGranted: "PreProvisionedKeyAccessNotGranted", PreProvisionedKeyNotFound: "PreProvisionedKeyNotFound", AttestationCertificationError: "AttestationCertificationError", AttestationSigningError: "AttestationSigningError"});
842
- inspectorBackend.registerEnum("Network.RefreshEventDetailsRefreshResult", {Refreshed: "Refreshed", InitializedService: "InitializedService", Unreachable: "Unreachable", ServerError: "ServerError", FatalError: "FatalError", SigningQuotaExceeded: "SigningQuotaExceeded", RefreshedAsWaiter: "RefreshedAsWaiter", TransientSigningError: "TransientSigningError", InScopeRefreshNotYetNeeded: "InScopeRefreshNotYetNeeded"});
842
+ inspectorBackend.registerEnum("Network.RefreshEventDetailsRefreshResult", {Refreshed: "Refreshed", InitializedService: "InitializedService", Unreachable: "Unreachable", ServerError: "ServerError", FatalError: "FatalError", SigningQuotaExceeded: "SigningQuotaExceeded", RefreshedAsWaiter: "RefreshedAsWaiter", TransientSigningError: "TransientSigningError", InScopeRefreshNotYetNeeded: "InScopeRefreshNotYetNeeded", Canceled: "Canceled"});
843
843
  inspectorBackend.registerEnum("Network.TerminationEventDetailsDeletionReason", {Expired: "Expired", FailedToRestoreKey: "FailedToRestoreKey", FailedToUnwrapKey: "FailedToUnwrapKey", StoragePartitionCleared: "StoragePartitionCleared", ClearBrowsingData: "ClearBrowsingData", ServerRequested: "ServerRequested", InvalidSessionParams: "InvalidSessionParams", RefreshFatalError: "RefreshFatalError", DevTools: "DevTools", Replaced: "Replaced"});
844
844
  inspectorBackend.registerEnum("Network.ChallengeEventDetailsChallengeResult", {Success: "Success", NoSessionId: "NoSessionId", NoSessionMatch: "NoSessionMatch", CantSetBoundCookie: "CantSetBoundCookie"});
845
845
  inspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength", "data"]);
@@ -580,6 +580,7 @@ export const generatedProperties: CSSProperty[] = [
580
580
  "fill-opacity",
581
581
  "fill-rule",
582
582
  "filter",
583
+ "fit-tolerance",
583
584
  "flex-basis",
584
585
  "flex-direction",
585
586
  "flex-grow",
@@ -589,7 +590,6 @@ export const generatedProperties: CSSProperty[] = [
589
590
  "float",
590
591
  "flood-color",
591
592
  "flood-opacity",
592
- "flow-tolerance",
593
593
  "font-display",
594
594
  "font-family",
595
595
  "font-feature-settings",
@@ -1331,6 +1331,15 @@ export const generatedProperties: CSSProperty[] = [
1331
1331
  ],
1332
1332
  "name": "border-block-end-color"
1333
1333
  },
1334
+ {
1335
+ "longhands": [
1336
+ "border-end-start-radius",
1337
+ "border-end-end-radius"
1338
+ ],
1339
+ "name": "border-block-end-radius",
1340
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1341
+ "runtime_flag_status": "experimental"
1342
+ },
1334
1343
  {
1335
1344
  "keywords": [
1336
1345
  "none",
@@ -1368,6 +1377,15 @@ export const generatedProperties: CSSProperty[] = [
1368
1377
  ],
1369
1378
  "name": "border-block-start-color"
1370
1379
  },
1380
+ {
1381
+ "longhands": [
1382
+ "border-start-start-radius",
1383
+ "border-start-end-radius"
1384
+ ],
1385
+ "name": "border-block-start-radius",
1386
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1387
+ "runtime_flag_status": "experimental"
1388
+ },
1371
1389
  {
1372
1390
  "keywords": [
1373
1391
  "none",
@@ -1422,6 +1440,15 @@ export const generatedProperties: CSSProperty[] = [
1422
1440
  {
1423
1441
  "name": "border-bottom-left-radius"
1424
1442
  },
1443
+ {
1444
+ "longhands": [
1445
+ "border-bottom-left-radius",
1446
+ "border-bottom-right-radius"
1447
+ ],
1448
+ "name": "border-bottom-radius",
1449
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1450
+ "runtime_flag_status": "experimental"
1451
+ },
1425
1452
  {
1426
1453
  "name": "border-bottom-right-radius"
1427
1454
  },
@@ -1547,6 +1574,15 @@ export const generatedProperties: CSSProperty[] = [
1547
1574
  ],
1548
1575
  "name": "border-inline-end-color"
1549
1576
  },
1577
+ {
1578
+ "longhands": [
1579
+ "border-start-end-radius",
1580
+ "border-end-end-radius"
1581
+ ],
1582
+ "name": "border-inline-end-radius",
1583
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1584
+ "runtime_flag_status": "experimental"
1585
+ },
1550
1586
  {
1551
1587
  "keywords": [
1552
1588
  "none",
@@ -1584,6 +1620,15 @@ export const generatedProperties: CSSProperty[] = [
1584
1620
  ],
1585
1621
  "name": "border-inline-start-color"
1586
1622
  },
1623
+ {
1624
+ "longhands": [
1625
+ "border-start-start-radius",
1626
+ "border-end-start-radius"
1627
+ ],
1628
+ "name": "border-inline-start-radius",
1629
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1630
+ "runtime_flag_status": "experimental"
1631
+ },
1587
1632
  {
1588
1633
  "keywords": [
1589
1634
  "none",
@@ -1635,6 +1680,15 @@ export const generatedProperties: CSSProperty[] = [
1635
1680
  ],
1636
1681
  "name": "border-left-color"
1637
1682
  },
1683
+ {
1684
+ "longhands": [
1685
+ "border-top-left-radius",
1686
+ "border-bottom-left-radius"
1687
+ ],
1688
+ "name": "border-left-radius",
1689
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1690
+ "runtime_flag_status": "experimental"
1691
+ },
1638
1692
  {
1639
1693
  "keywords": [
1640
1694
  "none",
@@ -1681,6 +1735,15 @@ export const generatedProperties: CSSProperty[] = [
1681
1735
  ],
1682
1736
  "name": "border-right-color"
1683
1737
  },
1738
+ {
1739
+ "longhands": [
1740
+ "border-top-right-radius",
1741
+ "border-bottom-right-radius"
1742
+ ],
1743
+ "name": "border-right-radius",
1744
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1745
+ "runtime_flag_status": "experimental"
1746
+ },
1684
1747
  {
1685
1748
  "keywords": [
1686
1749
  "none",
@@ -1755,6 +1818,15 @@ export const generatedProperties: CSSProperty[] = [
1755
1818
  {
1756
1819
  "name": "border-top-left-radius"
1757
1820
  },
1821
+ {
1822
+ "longhands": [
1823
+ "border-top-left-radius",
1824
+ "border-top-right-radius"
1825
+ ],
1826
+ "name": "border-top-radius",
1827
+ "runtime_flag": "CSSBorderRadiusSideShorthands",
1828
+ "runtime_flag_status": "experimental"
1829
+ },
1758
1830
  {
1759
1831
  "name": "border-top-right-radius"
1760
1832
  },
@@ -2829,6 +2901,15 @@ export const generatedProperties: CSSProperty[] = [
2829
2901
  ],
2830
2902
  "name": "filter"
2831
2903
  },
2904
+ {
2905
+ "keywords": [
2906
+ "normal",
2907
+ "infinite"
2908
+ ],
2909
+ "name": "fit-tolerance",
2910
+ "runtime_flag": "CSSGridLanesLayout",
2911
+ "runtime_flag_status": "experimental"
2912
+ },
2832
2913
  {
2833
2914
  "devtools_keywords": [
2834
2915
  "none",
@@ -2911,15 +2992,6 @@ export const generatedProperties: CSSProperty[] = [
2911
2992
  {
2912
2993
  "name": "flood-opacity"
2913
2994
  },
2914
- {
2915
- "keywords": [
2916
- "normal",
2917
- "infinite"
2918
- ],
2919
- "name": "flow-tolerance",
2920
- "runtime_flag": "CSSGridLanesLayout",
2921
- "runtime_flag_status": "experimental"
2922
- },
2923
2995
  {
2924
2996
  "devtools_keywords": [],
2925
2997
  "inherited": true,
@@ -5523,7 +5595,7 @@ export const generatedProperties: CSSProperty[] = [
5523
5595
  ],
5524
5596
  "name": "text-decoration-skip-spaces",
5525
5597
  "runtime_flag": "CSSTextDecorationSkipSpaces",
5526
- "runtime_flag_status": "stable"
5598
+ "runtime_flag_status": "experimental"
5527
5599
  },
5528
5600
  {
5529
5601
  "keywords": [
@@ -7444,6 +7516,12 @@ export const generatedPropertyValues: Record<string, CSSPropertyValue> = {
7444
7516
  "none"
7445
7517
  ]
7446
7518
  },
7519
+ "fit-tolerance": {
7520
+ "values": [
7521
+ "normal",
7522
+ "infinite"
7523
+ ]
7524
+ },
7447
7525
  "flex": {
7448
7526
  "values": [
7449
7527
  "none",
@@ -7494,12 +7572,6 @@ export const generatedPropertyValues: Record<string, CSSPropertyValue> = {
7494
7572
  "currentcolor"
7495
7573
  ]
7496
7574
  },
7497
- "flow-tolerance": {
7498
- "values": [
7499
- "normal",
7500
- "infinite"
7501
- ]
7502
- },
7503
7575
  "font": {
7504
7576
  "values": []
7505
7577
  },
@@ -1180,6 +1180,7 @@ export namespace ProtocolMapping {
1180
1180
  /**
1181
1181
  * Trigger autofill on a form identified by the fieldId.
1182
1182
  * If the field and related form cannot be autofilled, returns an error.
1183
+ * Returns once the values have been applied to the form fields.
1183
1184
  */
1184
1185
  'Autofill.trigger': {
1185
1186
  paramsType: [Protocol.Autofill.TriggerRequest];
@@ -446,6 +446,7 @@ declare namespace ProtocolProxyApi {
446
446
  /**
447
447
  * Trigger autofill on a form identified by the fieldId.
448
448
  * If the field and related form cannot be autofilled, returns an error.
449
+ * Returns once the values have been applied to the form fields.
449
450
  */
450
451
  invoke_trigger(params: Protocol.Autofill.TriggerRequest): Promise<Protocol.ProtocolResponseWithError>;
451
452
 
@@ -2679,9 +2679,10 @@ export namespace Browser {
2679
2679
 
2680
2680
  export interface AddMockCameraRequest {
2681
2681
  /**
2682
- * Required non-empty identifier for the mock camera. This is mapped to an
2683
- * internal virtual-device identifier and is not the MediaDeviceInfo.deviceId
2684
- * exposed to the page.
2682
+ * Required non-empty identifier for the mock camera within the current
2683
+ * DevTools session. Different sessions can use the same identifier
2684
+ * without replacing each other's cameras. This is not the
2685
+ * MediaDeviceInfo.deviceId exposed to the page.
2685
2686
  */
2686
2687
  deviceId: string;
2687
2688
  }
@@ -12304,6 +12305,7 @@ export namespace Network {
12304
12305
  RefreshedAsWaiter = 'RefreshedAsWaiter',
12305
12306
  TransientSigningError = 'TransientSigningError',
12306
12307
  InScopeRefreshNotYetNeeded = 'InScopeRefreshNotYetNeeded',
12308
+ Canceled = 'Canceled',
12307
12309
  }
12308
12310
 
12309
12311
  /**
@@ -6,8 +6,6 @@
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as Root from '../../core/root/root.js';
8
8
 
9
- import {ResponseType, type SerializedResponseData} from './agents/AiAgent.js';
10
-
11
9
  export const enum ConversationType {
12
10
  NONE = 'none',
13
11
  STYLING = 'freestyler',
@@ -18,10 +16,13 @@ export const enum ConversationType {
18
16
  STORAGE = 'storage',
19
17
  }
20
18
 
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ export type SerializedResponseItem = Record<string, any>;
21
+
21
22
  export interface SerializedConversation {
22
23
  id: string;
23
24
  type: ConversationType;
24
- history: SerializedResponseData[];
25
+ history: SerializedResponseItem[];
25
26
  }
26
27
 
27
28
  export interface SerializedImage {
@@ -108,9 +109,9 @@ export class AiHistoryStorage extends Common.ObjectWrapper.ObjectWrapper<EventTy
108
109
  return structuredClone(this.#recentPromptsSetting.get());
109
110
  }
110
111
 
111
- #getImageIdsFromHistory(history: SerializedResponseData[]): string[] {
112
+ #getImageIdsFromHistory(history: SerializedResponseItem[]): string[] {
112
113
  return history.flatMap(item => {
113
- if (item.type === ResponseType.USER_QUERY && item.imageId) {
114
+ if (item.type === 'user-query' && typeof item.imageId === 'string' && item.imageId) {
114
115
  return [item.imageId];
115
116
  }
116
117
  return [];
@@ -5,10 +5,19 @@
5
5
  import * as Common from '../../core/common/common.js';
6
6
  import * as Host from '../../core/host/host.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
8
+ import type * as Platform from '../../core/platform/platform.js';
8
9
  import * as Root from '../../core/root/root.js';
9
10
 
10
11
  import {debugLog} from './debug.js';
11
12
 
13
+ /**
14
+ * The Google legal troubleshooter form that users are sent to when they
15
+ * report a legal issue with AI generated content.
16
+ */
17
+ export const REPORT_LEGAL_ISSUE_URL =
18
+ 'https://support.google.com/legal/troubleshooter/1114905?hl=en#ts=1115658%2C13380504' as
19
+ Platform.DevToolsPath.UrlString;
20
+
12
21
  export const enum DisabledReason {
13
22
  GEO_RESTRICTED = 'geo-restricted',
14
23
  POLICY_RESTRICTED = 'policy-restricted',
@@ -1,4 +1,4 @@
1
- // Copyright 2025 The Chromium Authors. All rights reserved.
1
+ // Copyright 2025 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
@@ -0,0 +1,17 @@
1
+ // Copyright 2026 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import * as AiHistoryStorage from './AiHistoryStorage.js';
6
+ import * as AiSetting from './AiSetting.js';
7
+ import * as AiUtils from './AiUtils.js';
8
+ import * as BuiltInAi from './BuiltInAi.js';
9
+ import * as Debug from './debug.js';
10
+
11
+ export {
12
+ AiHistoryStorage,
13
+ AiSetting,
14
+ AiUtils,
15
+ BuiltInAi,
16
+ Debug,
17
+ };
@@ -5,6 +5,7 @@
5
5
  import * as Host from '../../core/host/host.js';
6
6
  import * as Root from '../../core/root/root.js';
7
7
  import * as SDK from '../../core/sdk/sdk.js';
8
+ import * as AiUtils from '../ai-utils/ai-utils.js';
8
9
  import type * as LHModel from '../lighthouse/lighthouse.js';
9
10
  import type * as Trace from '../trace/trace.js';
10
11
 
@@ -23,7 +24,6 @@ import {ChangeManager} from './ChangeManager.js';
23
24
  import {DOMNodeContext} from './contexts/DOMNodeContext.js';
24
25
  import {LighthouseContext} from './contexts/LighthouseContext.js';
25
26
  import {PerformanceTraceContext} from './contexts/PerformanceTraceContext.js';
26
- import {debugLog} from './debug.js';
27
27
  import {ExtensionScope} from './ExtensionScope.js';
28
28
  import type {Skill, SkillName} from './skills/Skill.js';
29
29
  import {SKILLS} from './skills/SkillRegistry.js';
@@ -36,6 +36,8 @@ import {
36
36
  } from './tools/Tool.js';
37
37
  import {ToolRegistry} from './tools/ToolRegistry.js';
38
38
 
39
+ const {debugLog} = AiUtils.Debug;
40
+
39
41
  const SKILL_DISPLAY_NAMES: Record<SkillName, string> = {
40
42
  styling: 'CSS and styling',
41
43
  network: 'Network requests',