chrome-devtools-frontend 1.0.1675430 → 1.0.1678416

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 (308) hide show
  1. package/AUTHORS +1 -0
  2. package/WATCHLISTS +0 -4
  3. package/front_end/core/common/EventTarget.ts +0 -5
  4. package/front_end/core/common/Settings.ts +0 -66
  5. package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -0
  6. package/front_end/core/host/UserMetrics.ts +5 -0
  7. package/front_end/core/root/Runtime.ts +5 -5
  8. package/front_end/core/sdk/CSSMetadata.ts +5 -9
  9. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +16 -34
  10. package/front_end/core/sdk/DebuggerModel.ts +92 -57
  11. package/front_end/core/sdk/EmulationModel.ts +2 -1
  12. package/front_end/core/sdk/NetworkManager.ts +16 -2
  13. package/front_end/core/sdk/OverlayModel.ts +19 -9
  14. package/front_end/core/sdk/OverlayPersistentHighlighter.ts +10 -4
  15. package/front_end/core/sdk/ResourceTreeModel.ts +20 -1
  16. package/front_end/core/sdk/SDKSettings.ts +117 -0
  17. package/front_end/core/sdk/Script.ts +9 -53
  18. package/front_end/core/sdk/sdk-meta.ts +0 -431
  19. package/front_end/devtools_compatibility.js +1 -0
  20. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +213 -23
  21. package/front_end/entrypoints/inspector_main/InspectorMain.ts +6 -5
  22. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +14 -15
  23. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +157 -0
  24. package/front_end/entrypoints/main/MainImpl.ts +32 -0
  25. package/front_end/entrypoints/shell/shell.ts +0 -1
  26. package/front_end/foundation/Universe.ts +8 -0
  27. package/front_end/generated/InspectorBackendCommands.ts +8 -8
  28. package/front_end/generated/SupportedCSSProperties.ts +53 -4
  29. package/front_end/generated/protocol-mapping.d.ts +27 -21
  30. package/front_end/generated/protocol-proxy-api.d.ts +22 -17
  31. package/front_end/generated/protocol.ts +43 -18
  32. package/front_end/models/ai_assistance/AiAgent2.ts +47 -2
  33. package/front_end/models/ai_assistance/AiConversation.ts +22 -5
  34. package/front_end/models/ai_assistance/README.md +52 -26
  35. package/front_end/models/ai_assistance/agents/AiAgent.ts +54 -8
  36. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +1 -1
  37. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +7 -194
  38. package/front_end/models/ai_assistance/agents/StorageAgent.ts +21 -87
  39. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -1
  40. package/front_end/models/ai_assistance/ai_assistance.ts +24 -0
  41. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +124 -0
  42. package/front_end/models/ai_assistance/contexts/StorageContext.ts +100 -0
  43. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +69 -1
  44. package/front_end/models/ai_assistance/skills/README.md +63 -1
  45. package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
  46. package/front_end/models/ai_assistance/skills/SkillRegistry.ts +4 -0
  47. package/front_end/models/ai_assistance/skills/accessibility.md +7 -0
  48. package/front_end/models/ai_assistance/skills/performance.md +15 -1
  49. package/front_end/models/ai_assistance/skills/sources.md +16 -0
  50. package/front_end/models/ai_assistance/skills/storage.md +31 -0
  51. package/front_end/models/ai_assistance/tools/GetDetailedCallTree.ts +107 -0
  52. package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +122 -0
  53. package/front_end/models/ai_assistance/tools/GetResourceContent.ts +127 -0
  54. package/front_end/models/ai_assistance/tools/GetSourceContent.ts +101 -0
  55. package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +83 -0
  56. package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +106 -0
  57. package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +104 -0
  58. package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +95 -0
  59. package/front_end/models/ai_assistance/tools/ListSources.ts +116 -0
  60. package/front_end/models/ai_assistance/tools/RunLighthouse.ts +89 -0
  61. package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +90 -0
  62. package/front_end/models/ai_assistance/tools/Tool.ts +26 -1
  63. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +22 -0
  64. package/front_end/models/bindings/CSSWorkspaceBinding.ts +4 -0
  65. package/front_end/models/bindings/CompilerScriptMapping.ts +4 -0
  66. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +8 -0
  67. package/front_end/models/bindings/ResourceScriptMapping.ts +3 -201
  68. package/front_end/models/bindings/SASSSourceMapping.ts +6 -0
  69. package/front_end/models/breakpoints/BreakpointManager.ts +2 -49
  70. package/front_end/models/comment_manager/CommentManager.ts +141 -0
  71. package/front_end/models/comment_manager/comment_manager.ts +9 -0
  72. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +27 -0
  73. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +10 -2
  74. package/front_end/models/issues_manager/descriptions/connectionAllowlistEmbeddingRequirementNotSatisfied.md +26 -0
  75. package/front_end/models/issues_manager/descriptions/connectionAllowlistIFrameAttributeLoosensEmbeddingRequirement.md +19 -0
  76. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowConnectionAllowlistFrom.md +21 -0
  77. package/front_end/models/javascript_metadata/NativeFunctions.js +6 -6
  78. package/front_end/models/persistence/IsolatedFileSystem.ts +7 -8
  79. package/front_end/models/persistence/IsolatedFileSystemManager.ts +2 -2
  80. package/front_end/models/persistence/PlatformFileSystem.ts +1 -1
  81. package/front_end/models/persistence/persistence-meta.ts +9 -9
  82. package/front_end/models/trace/types/TraceEvents.ts +36 -0
  83. package/front_end/panels/accessibility/ARIAAttributesView.ts +3 -3
  84. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +25 -0
  85. package/front_end/panels/accessibility/AccessibilityNodeView.ts +36 -36
  86. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +9 -0
  87. package/front_end/panels/accessibility/AccessibilityStrings.ts +168 -168
  88. package/front_end/panels/accessibility/SourceOrderView.ts +7 -7
  89. package/front_end/panels/accessibility/accessibility-meta.ts +2 -2
  90. package/front_end/panels/accessibility/accessibility.ts +2 -0
  91. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +5 -5
  92. package/front_end/panels/ai_assistance/components/AIv2MarkdownRenderer.ts +2 -3
  93. package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
  94. package/front_end/panels/ai_assistance/components/ChatMessage.ts +92 -12
  95. package/front_end/panels/ai_assistance/components/chatMessage.css +6 -0
  96. package/front_end/panels/application/ApplicationPanelSidebar.ts +10 -4
  97. package/front_end/panels/application/IndexedDBViews.ts +65 -63
  98. package/front_end/panels/application/StorageView.ts +116 -45
  99. package/front_end/panels/application/WebMCPView.ts +16 -7
  100. package/front_end/panels/application/application-meta.ts +11 -0
  101. package/front_end/panels/application/components/AdsView.ts +1 -1
  102. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +5 -5
  103. package/front_end/panels/common/BadgeNotification.ts +8 -8
  104. package/front_end/panels/common/ExtensionPanel.ts +9 -8
  105. package/front_end/panels/common/ExtensionServer.ts +21 -1
  106. package/front_end/panels/common/GdpSignUpDialog.ts +16 -16
  107. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +5 -6
  108. package/front_end/panels/common/PersistenceUtils.ts +2 -2
  109. package/front_end/panels/common/common.ts +0 -97
  110. package/front_end/panels/console/ConsoleInsightTeaser.ts +2 -2
  111. package/front_end/panels/console/ConsolePanel.ts +4 -0
  112. package/front_end/panels/console/ConsolePinPane.ts +2 -2
  113. package/front_end/panels/console/ConsolePrompt.ts +12 -0
  114. package/front_end/panels/console/ConsoleView.ts +31 -20
  115. package/front_end/panels/console/ConsoleViewMessage.ts +37 -13
  116. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -2
  117. package/front_end/panels/css_overview/CSSOverviewModel.ts +1 -1
  118. package/front_end/panels/elements/ElementStatePaneWidget.ts +2 -1
  119. package/front_end/panels/elements/ElementsTreeElement.ts +455 -372
  120. package/front_end/panels/elements/LayoutPane.ts +2 -8
  121. package/front_end/panels/elements/StylePropertyTreeElement.ts +16 -15
  122. package/front_end/panels/elements/elements-meta.ts +152 -10
  123. package/front_end/panels/elements/elements.ts +0 -2
  124. package/front_end/panels/emulation/DeviceModeView.ts +9 -1
  125. package/front_end/panels/event_listeners/EventListenersView.ts +8 -4
  126. package/front_end/panels/issues/AffectedTrackingSitesView.ts +25 -14
  127. package/front_end/panels/lighthouse/LighthouseController.ts +3 -2
  128. package/front_end/panels/media/PlayerMessagesView.ts +149 -68
  129. package/front_end/panels/network/BinaryResourceView.ts +134 -81
  130. package/front_end/panels/network/EventSourceMessagesView.ts +10 -10
  131. package/front_end/panels/network/FetchHeaderCommenting.ts +291 -0
  132. package/front_end/panels/network/NetworkConfigView.ts +10 -10
  133. package/front_end/panels/network/NetworkDataGridNode.ts +14 -14
  134. package/front_end/panels/network/NetworkItemView.ts +27 -28
  135. package/front_end/panels/network/NetworkLogView.ts +137 -38
  136. package/front_end/panels/network/NetworkLogViewColumns.ts +35 -35
  137. package/front_end/panels/network/NetworkManageCustomHeadersView.ts +1 -1
  138. package/front_end/panels/network/NetworkPanel.ts +2 -2
  139. package/front_end/panels/network/RequestConditionsDrawer.ts +5 -5
  140. package/front_end/panels/network/RequestCookiesView.ts +4 -4
  141. package/front_end/panels/network/RequestHeadersView.ts +5 -5
  142. package/front_end/panels/network/RequestPayloadView.ts +4 -3
  143. package/front_end/panels/network/RequestTimingView.ts +8 -8
  144. package/front_end/panels/network/ResourceChunkView.ts +1 -1
  145. package/front_end/panels/network/ResourceDirectSocketChunkView.ts +1 -1
  146. package/front_end/panels/network/ResourceWebSocketFrameView.ts +16 -16
  147. package/front_end/panels/network/binaryResourceView.css +14 -12
  148. package/front_end/panels/network/components/DirectSocketConnectionView.ts +2 -2
  149. package/front_end/panels/network/components/HeaderSectionRow.ts +1 -1
  150. package/front_end/panels/network/components/RequestTrustTokensView.ts +2 -2
  151. package/front_end/panels/network/network-meta.ts +1 -1
  152. package/front_end/panels/network/network.ts +2 -0
  153. package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +0 -1
  154. package/front_end/panels/profiler/HeapSnapshotView.ts +0 -2
  155. package/front_end/panels/profiler/heapProfiler.css +0 -9
  156. package/front_end/panels/recorder/RecorderPanel.ts +2 -3
  157. package/front_end/panels/screencast/ScreencastView.ts +148 -138
  158. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +2 -2
  159. package/front_end/panels/sources/BreakpointsView.ts +2 -2
  160. package/front_end/panels/sources/DebuggerPlugin.ts +10 -59
  161. package/front_end/panels/sources/NavigatorView.ts +2 -1
  162. package/front_end/panels/sources/ScopeChainSidebarPane.ts +1 -1
  163. package/front_end/panels/sources/SourcesPanel.ts +23 -73
  164. package/front_end/panels/sources/SourcesView.ts +248 -157
  165. package/front_end/panels/sources/TabbedEditorContainer.ts +118 -23
  166. package/front_end/panels/sources/UISourceCodeFrame.ts +5 -9
  167. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +4 -2
  168. package/front_end/panels/sources/sources-meta.ts +52 -0
  169. package/front_end/panels/timeline/TimelineController.ts +36 -64
  170. package/front_end/panels/timeline/TimelinePanel.ts +11 -8
  171. package/front_end/panels/timeline/TimelineUIUtils.ts +5 -2
  172. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -2
  173. package/front_end/panels/timeline/timelinePanel.css +0 -10
  174. package/front_end/panels/utils/utils.ts +7 -7
  175. package/front_end/services/tracing/PerformanceTracing.ts +5 -17
  176. package/front_end/third_party/chromium/README.chromium +1 -1
  177. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  178. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  179. package/front_end/third_party/codemirror.next/package.json +2 -2
  180. package/front_end/third_party/codemirror.next/rebuild.sh +4 -1
  181. package/front_end/ui/comments/CommentAnchorResolver.ts +430 -35
  182. package/front_end/ui/comments/CommentOverlayManager.ts +635 -0
  183. package/front_end/ui/comments/CommentsOverlayWidget.ts +134 -0
  184. package/front_end/ui/comments/comments.ts +4 -0
  185. package/front_end/ui/comments/commentsOverlay.css +49 -0
  186. package/front_end/{panels/common → ui/components/dialogs}/FreDialog.ts +6 -6
  187. package/front_end/ui/components/dialogs/TypeToAllowDialog.ts +96 -0
  188. package/front_end/ui/components/dialogs/dialogs.ts +4 -0
  189. package/front_end/ui/components/settings/SettingCheckbox.ts +3 -3
  190. package/front_end/{panels/common → ui/components/text_editor}/AiCodeCompletionDisclaimer.ts +13 -13
  191. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +7 -6
  192. package/front_end/{panels/common → ui/components/text_editor}/AiCodeCompletionTeaser.ts +43 -46
  193. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +22 -26
  194. package/front_end/{panels/common → ui/components/text_editor}/AiCodeGenerationTeaser.ts +10 -10
  195. package/front_end/{panels/common → ui/components/text_editor}/AiCodeGenerationUpgradeDialog.ts +5 -5
  196. package/front_end/ui/components/text_editor/text_editor.ts +4 -0
  197. package/front_end/ui/legacy/Toolbar.ts +1 -1
  198. package/front_end/ui/legacy/UIUtils.ts +0 -56
  199. package/front_end/ui/legacy/View.ts +10 -4
  200. package/front_end/ui/legacy/Widget.ts +10 -1
  201. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +2 -1
  202. package/front_end/ui/legacy/components/color_picker/ContrastOverlay.ts +5 -4
  203. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +11 -3
  204. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +507 -209
  205. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +5 -0
  206. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +11 -16
  207. package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +5 -12
  208. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +38 -20
  209. package/front_end/ui/legacy/components/source_frame/JSONView.ts +12 -2
  210. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +3 -3
  211. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +37 -6
  212. package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +22 -4
  213. package/front_end/ui/settings/SettingUIRegistration.ts +55 -6
  214. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  215. package/mcp/mcp.ts +6 -1
  216. package/package.json +6 -6
  217. package/front_end/Images/toolbarResizerVertical.png +0 -0
  218. package/front_end/emulated_devices/MotoG4-landscape.svg +0 -155
  219. package/front_end/emulated_devices/MotoG4-portrait.svg +0 -155
  220. package/front_end/emulated_devices/Nexus5X-landscape.svg +0 -19
  221. package/front_end/emulated_devices/Nexus5X-portrait.svg +0 -19
  222. package/front_end/emulated_devices/Nexus6P-landscape.svg +0 -50
  223. package/front_end/emulated_devices/Nexus6P-portrait.svg +0 -54
  224. package/front_end/emulated_devices/google-nest-hub-horizontal.png +0 -0
  225. package/front_end/emulated_devices/google-nest-hub-max-horizontal.png +0 -0
  226. package/front_end/emulated_devices/google-nexus-5-horizontal-default-1x.png +0 -0
  227. package/front_end/emulated_devices/google-nexus-5-horizontal-default-2x.png +0 -0
  228. package/front_end/emulated_devices/google-nexus-5-horizontal-keyboard-1x.png +0 -0
  229. package/front_end/emulated_devices/google-nexus-5-horizontal-keyboard-2x.png +0 -0
  230. package/front_end/emulated_devices/google-nexus-5-horizontal-navigation-1x.png +0 -0
  231. package/front_end/emulated_devices/google-nexus-5-horizontal-navigation-2x.png +0 -0
  232. package/front_end/emulated_devices/google-nexus-5-vertical-default-1x.png +0 -0
  233. package/front_end/emulated_devices/google-nexus-5-vertical-default-2x.png +0 -0
  234. package/front_end/emulated_devices/google-nexus-5-vertical-keyboard-1x.png +0 -0
  235. package/front_end/emulated_devices/google-nexus-5-vertical-keyboard-2x.png +0 -0
  236. package/front_end/emulated_devices/google-nexus-5-vertical-navigation-1x.png +0 -0
  237. package/front_end/emulated_devices/google-nexus-5-vertical-navigation-2x.png +0 -0
  238. package/front_end/emulated_devices/google-nexus-5x-horizontal-default-1x.png +0 -0
  239. package/front_end/emulated_devices/google-nexus-5x-horizontal-default-2x.png +0 -0
  240. package/front_end/emulated_devices/google-nexus-5x-horizontal-keyboard-1x.png +0 -0
  241. package/front_end/emulated_devices/google-nexus-5x-horizontal-keyboard-2x.png +0 -0
  242. package/front_end/emulated_devices/google-nexus-5x-horizontal-navigation-1x.png +0 -0
  243. package/front_end/emulated_devices/google-nexus-5x-horizontal-navigation-2x.png +0 -0
  244. package/front_end/emulated_devices/google-nexus-5x-vertical-default-1x.png +0 -0
  245. package/front_end/emulated_devices/google-nexus-5x-vertical-default-2x.png +0 -0
  246. package/front_end/emulated_devices/google-nexus-5x-vertical-keyboard-1x.png +0 -0
  247. package/front_end/emulated_devices/google-nexus-5x-vertical-keyboard-2x.png +0 -0
  248. package/front_end/emulated_devices/google-nexus-5x-vertical-navigation-1x.png +0 -0
  249. package/front_end/emulated_devices/google-nexus-5x-vertical-navigation-2x.png +0 -0
  250. package/front_end/emulated_devices/iPad-landscape.svg +0 -73
  251. package/front_end/emulated_devices/iPad-portrait.svg +0 -76
  252. package/front_end/emulated_devices/iPhone5-landscape.svg +0 -99
  253. package/front_end/emulated_devices/iPhone5-portrait.svg +0 -83
  254. package/front_end/emulated_devices/iPhone6-landscape.svg +0 -111
  255. package/front_end/emulated_devices/iPhone6-portrait.svg +0 -116
  256. package/front_end/emulated_devices/iPhone6Plus-landscape.svg +0 -118
  257. package/front_end/emulated_devices/iPhone6Plus-portrait.svg +0 -116
  258. package/front_end/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
  259. package/front_end/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
  260. package/front_end/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
  261. package/front_end/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
  262. package/front_end/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
  263. package/front_end/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
  264. package/front_end/emulated_devices/optimized/README.md +0 -9
  265. package/front_end/emulated_devices/optimized/google-nest-hub-horizontal.avif +0 -0
  266. package/front_end/emulated_devices/optimized/google-nest-hub-max-horizontal.avif +0 -0
  267. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
  268. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
  269. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
  270. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
  271. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
  272. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
  273. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
  274. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
  275. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
  276. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
  277. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
  278. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
  279. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
  280. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
  281. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
  282. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
  283. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
  284. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
  285. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
  286. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
  287. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
  288. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
  289. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
  290. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
  291. package/front_end/emulated_devices/optimized/iPad-landscape.avif +0 -0
  292. package/front_end/emulated_devices/optimized/iPad-portrait.avif +0 -0
  293. package/front_end/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
  294. package/front_end/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
  295. package/front_end/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
  296. package/front_end/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
  297. package/front_end/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
  298. package/front_end/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
  299. package/front_end/emulated_devices/optimized/optimized_images.gni +0 -53
  300. package/front_end/models/ai_assistance/agents/README.md +0 -136
  301. package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +0 -89
  302. package/front_end/ui/legacy/components/object_ui/object_ui-meta.ts +0 -27
  303. /package/front_end/{panels/common → ui/components/dialogs}/freDialog.css +0 -0
  304. /package/front_end/{panels/common/common.css → ui/components/dialogs/typeToAllowDialog.css} +0 -0
  305. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeCompletionDisclaimer.css +0 -0
  306. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeCompletionTeaser.css +0 -0
  307. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeGenerationTeaser.css +0 -0
  308. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeGenerationUpgradeDialog.css +0 -0
@@ -3,6 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as Common from '../../core/common/common.js';
6
+ import * as Host from '../../core/host/host.js';
6
7
  import * as i18n from '../../core/i18n/i18n.js';
7
8
  import * as Platform from '../../core/platform/platform.js';
8
9
  import * as TextUtils from '../../core/text_utils/text_utils.js';
@@ -14,7 +15,7 @@ import * as uiI18n from '../../ui/i18n/i18n.js';
14
15
  import {Icon, Link} from '../../ui/kit/kit.js';
15
16
  import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
16
17
  import * as UI from '../../ui/legacy/legacy.js';
17
- import {html} from '../../ui/lit/lit.js';
18
+ import {html, render} from '../../ui/lit/lit.js';
18
19
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
19
20
  import * as PanelCommon from '../common/common.js';
20
21
  import * as Snippets from '../snippets/snippets.js';
@@ -23,6 +24,26 @@ import {SourcesView} from './SourcesView.js';
23
24
  import {UISourceCodeFrame} from './UISourceCodeFrame.js';
24
25
 
25
26
  const UIStrings = {
27
+ /**
28
+ * @description Text to open a file.
29
+ */
30
+ openFile: 'Open file',
31
+ /**
32
+ * @description Text to run commands.
33
+ */
34
+ runCommand: 'Run command',
35
+ /**
36
+ * @description Text in Sources view of the Sources panel.
37
+ */
38
+ workspaceDropInAFolderToSyncSources: 'To sync edits to the workspace, drop a folder with your sources here or',
39
+ /**
40
+ * @description Text in Sources view of the Sources panel.
41
+ */
42
+ selectFolder: 'Select folder',
43
+ /**
44
+ * @description Accessible label for Sources placeholder view actions list.
45
+ */
46
+ sourceViewActions: 'Source View Actions',
26
47
  /**
27
48
  * @description Text in Tabbed editor container of the Sources panel.
28
49
  * @example {file.js} PH1
@@ -60,26 +81,38 @@ export interface TabbedEditorContainerDelegate {
60
81
 
61
82
  let tabId = 0;
62
83
 
63
- export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
64
- private readonly delegate: TabbedEditorContainerDelegate;
84
+ export class TabbedEditorContainer extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
85
+ UI.Widget.VBox) {
86
+ delegate!: TabbedEditorContainerDelegate;
65
87
  private readonly tabbedPane: UI.TabbedPane.TabbedPane;
66
88
  private tabIds: Map<Workspace.UISourceCode.UISourceCode, string>;
67
89
  private readonly files: Map<string, Workspace.UISourceCode.UISourceCode>;
68
- private readonly previouslyViewedFilesSetting: Common.Settings.Setting<SerializedHistoryItem[]>;
69
- private readonly history: History;
90
+ #previouslyViewedFilesSetting!: Common.Settings.Setting<SerializedHistoryItem[]>;
91
+ history!: History;
92
+ set previouslyViewedFilesSetting(setting: Common.Settings.Setting<SerializedHistoryItem[]>) {
93
+ this.#previouslyViewedFilesSetting = setting;
94
+ this.history = History.fromObject(this.#previouslyViewedFilesSetting.get());
95
+ }
96
+ get previouslyViewedFilesSetting(): Common.Settings.Setting<SerializedHistoryItem[]> {
97
+ return this.#previouslyViewedFilesSetting;
98
+ }
70
99
  private readonly uriToUISourceCode: Map<Platform.DevToolsPath.UrlString, Workspace.UISourceCode.UISourceCode>;
71
100
  private readonly idToUISourceCode: Map<string, Workspace.UISourceCode.UISourceCode>;
72
101
  #currentFile!: Workspace.UISourceCode.UISourceCode|null;
73
102
  private currentView!: UI.Widget.Widget|null;
74
103
  private scrollTimer?: number;
75
104
  private reentrantShow: boolean;
76
- constructor(delegate: TabbedEditorContainerDelegate, setting: Common.Settings.Setting<SerializedHistoryItem[]>,
77
- placeholderElement: Element, focusedPlaceholderElement?: Element, element?: HTMLElement) {
78
- super();
79
- this.delegate = delegate;
80
-
81
- this.tabbedPane = new UI.TabbedPane.TabbedPane(element);
82
- this.tabbedPane.setPlaceholderElement(placeholderElement, focusedPlaceholderElement);
105
+ constructor(element?: HTMLElement) {
106
+ super(element);
107
+
108
+ this.tabbedPane = new UI.TabbedPane.TabbedPane();
109
+ // eslint-disable-next-line @devtools/no-imperative-dom-api
110
+ this.tabbedPane.show(this.contentElement);
111
+ // eslint-disable-next-line @devtools/no-imperative-dom-api
112
+ const placeholderElement = document.createElement('div');
113
+ placeholderElement.classList.add('sources-placeholder');
114
+ this.tabbedPane.setPlaceholderElement(placeholderElement);
115
+ this.#renderPlaceholder(placeholderElement as HTMLElement);
83
116
  this.tabbedPane.setTabDelegate(new EditorContainerTabDelegate(this));
84
117
 
85
118
  this.tabbedPane.setCloseableTabs(true);
@@ -103,13 +136,15 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
103
136
  this.tabIds = new Map();
104
137
  this.files = new Map();
105
138
 
106
- this.previouslyViewedFilesSetting = setting;
107
- this.history = History.fromObject(this.previouslyViewedFilesSetting.get());
108
139
  this.uriToUISourceCode = new Map();
109
140
  this.idToUISourceCode = new Map();
110
141
  this.reentrantShow = false;
111
142
  }
112
143
 
144
+ get tabbedPaneForTesting(): UI.TabbedPane.TabbedPane {
145
+ return this.tabbedPane;
146
+ }
147
+
113
148
  private onBindingCreated(event: Common.EventTarget.EventTargetEvent<Persistence.Persistence.PersistenceBinding>):
114
149
  void {
115
150
  const binding = event.data;
@@ -160,10 +195,6 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
160
195
  this.updateFileTitle(binding.fileSystem);
161
196
  }
162
197
 
163
- get view(): UI.Widget.Widget {
164
- return this.tabbedPane;
165
- }
166
-
167
198
  get visibleView(): UI.Widget.Widget|null {
168
199
  return this.tabbedPane.visibleView as UI.Widget.Widget | null;
169
200
  }
@@ -180,10 +211,6 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
180
211
  return this.tabbedPane.rightToolbar();
181
212
  }
182
213
 
183
- show(parentElement: Element): void {
184
- this.tabbedPane.show(parentElement);
185
- }
186
-
187
214
  showFile(uiSourceCode: Workspace.UISourceCode.UISourceCode): void {
188
215
  const binding = Persistence.Persistence.PersistenceImpl.instance().binding(uiSourceCode);
189
216
  uiSourceCode = binding ? binding.fileSystem : uiSourceCode;
@@ -194,7 +221,8 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
194
221
  // Otherwise, this event will fire as soon as the content has been set.
195
222
  if (frame?.currentSourceFrame()?.contentSet && this.#currentFile === uiSourceCode &&
196
223
  frame?.currentUISourceCode() === uiSourceCode) {
197
- Common.EventTarget.fireEvent('source-file-loaded', uiSourceCode.displayName(true));
224
+ window.dispatchEvent(new CustomEvent('source-file-loaded',
225
+ {bubbles: true, cancelable: true, detail: uiSourceCode.displayName(true)}));
198
226
  } else {
199
227
  this.#showFile(uiSourceCode, true);
200
228
  }
@@ -212,6 +240,10 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
212
240
  this.closeTabs(this.tabbedPane.tabIds());
213
241
  }
214
242
 
243
+ detachEditors(): void {
244
+ this.tabbedPane.detachChildWidgets();
245
+ }
246
+
215
247
  historyUISourceCodes(): Workspace.UISourceCode.UISourceCode[] {
216
248
  const result = [];
217
249
  for (const {url, resourceType} of this.history.keys()) {
@@ -690,6 +722,69 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
690
722
  return 'tab-' + (tabId++) as Lowercase<string>;
691
723
  }
692
724
 
725
+ #renderPlaceholder(placeholderElement: HTMLElement): void {
726
+ const shortcuts = [
727
+ {actionId: 'quick-open.show', description: i18nString(UIStrings.openFile)},
728
+ {actionId: 'quick-open.show-command-menu', description: i18nString(UIStrings.runCommand)},
729
+ ];
730
+ const separator = Host.Platform.isMac() ? '\u2004' : ' + ';
731
+ const shortcutElements = shortcuts.map(shortcut => {
732
+ const shortcutKeys = UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction(shortcut.actionId);
733
+ if (!shortcutKeys?.[0]) {
734
+ return {
735
+ description: shortcut.description,
736
+ onClick: () => {},
737
+ keys: [],
738
+ };
739
+ }
740
+ const action = UI.ActionRegistry.ActionRegistry.instance().getAction(shortcut.actionId);
741
+ const keys = shortcutKeys[0].descriptors.flatMap(descriptor => descriptor.name.split(separator));
742
+ return {
743
+ description: shortcut.description,
744
+ onClick: () => {
745
+ void action.execute();
746
+ },
747
+ keys,
748
+ };
749
+ });
750
+
751
+ // clang-format off
752
+ // eslint-disable-next-line @devtools/no-lit-render-outside-of-view
753
+ render(html`
754
+ <div class="tabbed-pane-placeholder-row workspace">
755
+ <span class="icon-container">
756
+ <devtools-icon name="sync" class="sync-icon"></devtools-icon>
757
+ </span>
758
+ <span>
759
+ ${i18nString(UIStrings.workspaceDropInAFolderToSyncSources)}
760
+ <button @click=${this.#addFileSystemClicked.bind(this)}>${i18nString(UIStrings.selectFolder)}</button>
761
+ </span>
762
+ </div>
763
+ <div class="shortcuts-list tabbed-pane-placeholder-row" role="list"
764
+ aria-label=${i18nString(UIStrings.sourceViewActions)}>
765
+ ${shortcutElements.map(shortcut => !shortcut.keys.length
766
+ ? html`<div class="shortcut-line" role="listitem"></div>`
767
+ : html`<div class="shortcut-line" role="listitem">
768
+ <button @click=${shortcut.onClick}>${shortcut.description}</button>
769
+ <span class="shortcuts">
770
+ ${shortcut.keys.map(key => html`
771
+ <span class="keybinds-key"><span>${key}</span></span>
772
+ `)}
773
+ </span>
774
+ </div>`)}
775
+ </div>`, placeholderElement);
776
+ // clang-format on
777
+ }
778
+
779
+ async #addFileSystemClicked(): Promise<void> {
780
+ const result = await Persistence.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem();
781
+ if (!result) {
782
+ return;
783
+ }
784
+ Host.userMetrics.actionTaken(Host.UserMetrics.Action.WorkspaceSelectFolder);
785
+ void UI.ViewManager.ViewManager.instance().showView('navigator-files');
786
+ }
787
+
693
788
  currentFile(): Workspace.UISourceCode.UISourceCode|null {
694
789
  return this.#currentFile || null;
695
790
  }
@@ -171,9 +171,8 @@ export class UISourceCodeFrame extends Common.ObjectWrapper
171
171
  this.installMessageAndDecorationListeners();
172
172
  this.updateStyle();
173
173
  // Show pretty-print toggle if file type is formattable.
174
- // For editable JavaScript files, the toggle is hidden because live edit fails on
175
- // large whitespace changes. For non-JS files (JSON, CSS), the toggle can be shown
176
- // because they don't have this issue (fixes issue 378870233).
174
+ // For editable JavaScript files, the toggle is hidden. For non-JS files (JSON, CSS), the toggle can be shown
175
+ // (fixes issue 378870233).
177
176
  const isFormattable = FormatterActions.FORMATTABLE_MEDIA_TYPES.includes(this.contentType);
178
177
  const isEditable = Persistence.Persistence.PersistenceImpl.instance().hasEditableContent(this.#uiSourceCode);
179
178
  // Check if the MIME type is JavaScript (not the resource type, which can be wrong for file system files)
@@ -231,11 +230,7 @@ export class UISourceCodeFrame extends Common.ObjectWrapper
231
230
  Persistence.NetworkPersistenceManager.NetworkPersistenceManager.instance().active()) {
232
231
  return true;
233
232
  }
234
- // Because live edit fails on large whitespace changes, pretty printed scripts are not editable.
235
- if (this.pretty && this.#uiSourceCode.contentType().hasScripts()) {
236
- return false;
237
- }
238
- return this.#uiSourceCode.contentType() !== Common.ResourceType.resourceTypes.Document;
233
+ return this.#uiSourceCode.contentType().isStyleSheet();
239
234
  }
240
235
 
241
236
  private onNetworkPersistenceChanged(): void {
@@ -260,7 +255,8 @@ export class UISourceCodeFrame extends Common.ObjectWrapper
260
255
  plugin.editorInitialized(this.textEditor);
261
256
  }
262
257
  this.#recordSourcesPanelOpenedMetrics();
263
- Common.EventTarget.fireEvent('source-file-loaded', this.#uiSourceCode.displayName(true));
258
+ window.dispatchEvent(new CustomEvent(
259
+ 'source-file-loaded', {bubbles: true, cancelable: true, detail: this.#uiSourceCode.displayName(true)}));
264
260
  }
265
261
 
266
262
  private createMessage(origin: Workspace.UISourceCode.Message): RowMessage {
@@ -195,8 +195,10 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
195
195
  class="watch-expression-error value"
196
196
  title=${ifDefined(e.exceptionDetails?.exception?.description)}
197
197
  >${i18nString(UIStrings.notAvailable)}</span>`
198
- : ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.createPropertyValueWithCustomSupport(
199
- e.result.object, Boolean(e.exceptionDetails), false /* showPreview */, input.linkifier)}
198
+ : ObjectUI.ObjectPropertiesSection.renderPropertyValue(
199
+ e.result.object, Boolean(e.exceptionDetails), false /* showPreview */, input.linkifier,
200
+ false /* isSyntheticProperty */, undefined /* variableName */,
201
+ undefined /* includeNullOrUndefined */, /* useCustomPreview */ true)}
200
202
  </div>
201
203
  </div>
202
204
  </devtools-prompt>
@@ -18,6 +18,26 @@ import * as SettingsUI from '../../ui/settings/settings.js';
18
18
  import type * as Sources from './sources.js';
19
19
 
20
20
  const UIStrings = {
21
+ /**
22
+ * @description Title of a setting under the Debugger category in Settings.
23
+ */
24
+ disableAsyncStackTraces: 'Disable async stack traces',
25
+ /**
26
+ * @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
27
+ */
28
+ doNotCaptureAsyncStackTraces: 'Do not capture async stack traces',
29
+ /**
30
+ * @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
31
+ */
32
+ captureAsyncStackTraces: 'Capture async stack traces',
33
+ /**
34
+ * @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
35
+ */
36
+ disableJavascript: 'Disable JavaScript',
37
+ /**
38
+ * @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
39
+ */
40
+ enableJavascript: 'Enable JavaScript',
21
41
  /**
22
42
  * @description Text for pausing the debugger on exceptions.
23
43
  */
@@ -1591,6 +1611,38 @@ SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.cssSourceMapsEnabledSe
1591
1611
  ],
1592
1612
  });
1593
1613
 
1614
+ SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.javaScriptDisabledSettingDescriptor, {
1615
+ category: Common.Settings.SettingCategory.DEBUGGER,
1616
+ title: i18nLazyString(UIStrings.disableJavascript),
1617
+ order: 1,
1618
+ options: [
1619
+ {
1620
+ value: true,
1621
+ title: i18nLazyString(UIStrings.disableJavascript),
1622
+ },
1623
+ {
1624
+ value: false,
1625
+ title: i18nLazyString(UIStrings.enableJavascript),
1626
+ },
1627
+ ],
1628
+ });
1629
+
1630
+ SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.disableAsyncStackTracesSettingDescriptor, {
1631
+ category: Common.Settings.SettingCategory.DEBUGGER,
1632
+ title: i18nLazyString(UIStrings.disableAsyncStackTraces),
1633
+ order: 2,
1634
+ options: [
1635
+ {
1636
+ value: true,
1637
+ title: i18nLazyString(UIStrings.doNotCaptureAsyncStackTraces),
1638
+ },
1639
+ {
1640
+ value: false,
1641
+ title: i18nLazyString(UIStrings.captureAsyncStackTraces),
1642
+ },
1643
+ ],
1644
+ });
1645
+
1594
1646
  SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.pauseOnExceptionEnabledSettingDescriptor, {
1595
1647
  category: Common.Settings.SettingCategory.DEBUGGER,
1596
1648
  options: [
@@ -205,10 +205,6 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
205
205
  }
206
206
 
207
207
  async startRecording(options: RecordingOptions): Promise<void> {
208
- function disabledByDefault(category: string): string {
209
- return 'disabled-by-default-' + category;
210
- }
211
-
212
208
  this.client.recordingStatus(i18nString(UIStrings.initializingTracing));
213
209
 
214
210
  // If we are doing "Reload & record", we first navigate the page to
@@ -220,51 +216,9 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
220
216
  await this.#navigateToAboutBlank();
221
217
  }
222
218
 
223
- // The following categories are also used in other tools, but this panel
224
- // offers the possibility of turning them off (see below).
225
- // 'disabled-by-default-devtools.screenshot'
226
- // └ default: on, option: captureFilmStrip
227
- // 'disabled-by-default-devtools.timeline.invalidationTracking'
228
- // └ default: off, experiment: timelineInvalidationTracking
229
- // 'disabled-by-default-v8.cpu_profiler'
230
- // └ default: on, option: enableJSSampling
231
- const categoriesArray = [
232
- Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get() ? '*' : '-*',
233
- Trace.Types.Events.Categories.Console,
234
- Trace.Types.Events.Categories.Loading,
235
- Trace.Types.Events.Categories.UserTiming,
236
- 'devtools.timeline',
237
- disabledByDefault('devtools.target-rundown'),
238
- disabledByDefault('devtools.timeline.frame'),
239
- disabledByDefault('devtools.timeline.stack'),
240
- disabledByDefault('devtools.timeline'),
241
- disabledByDefault('devtools.v8-source-rundown-sources'),
242
- disabledByDefault('devtools.v8-source-rundown'),
243
- disabledByDefault('layout_shift.debug'),
244
- // Looking for disabled-by-default-v8.compile? We disabled it: crbug.com/414330508.
245
- disabledByDefault('v8.inspector'),
246
- disabledByDefault('v8.cpu_profiler.hires'),
247
- disabledByDefault('lighthouse'),
248
- 'v8.execute',
249
- 'v8',
250
- 'cppgc',
251
- 'navigation,rail',
252
- ];
253
-
254
- if (options.enableJSSampling) {
255
- categoriesArray.push(disabledByDefault('v8.cpu_profiler'));
256
- }
257
- if (Common.Settings.Settings.instance().moduleSetting('timeline-invalidation-tracking').get() as boolean) {
258
- categoriesArray.push(disabledByDefault('devtools.timeline.invalidationTracking'));
259
- }
260
- if (options.capturePictures) {
261
- categoriesArray.push(
262
- disabledByDefault('devtools.timeline.layers'), disabledByDefault('devtools.timeline.picture'),
263
- disabledByDefault('blink.graphics_context_annotations'));
264
- }
219
+ const categoriesArray = this.#categoriesForRecording(options);
265
220
  const screenshotOptions: Tracing.TracingManager.TracingStartOptions = {};
266
221
  if (options.captureFilmStrip) {
267
- categoriesArray.push(disabledByDefault('devtools.screenshot'));
268
222
  if (options.screenshotMaxSize !== undefined) {
269
223
  screenshotOptions.screenshotMaxSize = options.screenshotMaxSize;
270
224
  }
@@ -272,17 +226,12 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
272
226
  screenshotOptions.screenshotMaxCount = options.screenshotMaxCount;
273
227
  }
274
228
  }
275
- if (options.captureSelectorStats) {
276
- categoriesArray.push(disabledByDefault('blink.debug'));
277
- // enable invalidation nodes
278
- categoriesArray.push(disabledByDefault('devtools.timeline.invalidationTracking'));
279
- }
280
229
 
281
230
  await LiveMetrics.LiveMetrics.instance().disable();
282
231
 
283
- SDK.TargetManager.TargetManager.instance().addModelListener(
284
- SDK.ResourceTreeModel.ResourceTreeModel, SDK.ResourceTreeModel.Events.FrameNavigated, this.#onFrameNavigated,
285
- this);
232
+ SDK.TargetManager.TargetManager.instance().addModelListener(SDK.ResourceTreeModel.ResourceTreeModel,
233
+ SDK.ResourceTreeModel.Events.FrameNavigated,
234
+ this.#onFrameNavigated, this);
286
235
 
287
236
  this.#navigationUrls = [];
288
237
  this.#fieldData = null;
@@ -311,9 +260,8 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
311
260
 
312
261
  const loadEvent = this.#navigateWithSDK(options.navigateToUrl);
313
262
  this.#statusChecker.add(i18nString(UIStrings.waitingForLoadEvent), loadEvent);
314
- this.#statusChecker.add(
315
- i18nString(UIStrings.waitingForLoadEventPlus5Seconds),
316
- loadEvent.then(() => new Promise(resolve => setTimeout(resolve, 5000))));
263
+ this.#statusChecker.add(i18nString(UIStrings.waitingForLoadEventPlus5Seconds),
264
+ loadEvent.then(() => new Promise(resolve => setTimeout(resolve, 5000))));
317
265
 
318
266
  this.#statusChecker.setListener(status => {
319
267
  if (status === null) {
@@ -352,9 +300,9 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
352
300
  this.tracingManager.stop();
353
301
  }
354
302
 
355
- SDK.TargetManager.TargetManager.instance().removeModelListener(
356
- SDK.ResourceTreeModel.ResourceTreeModel, SDK.ResourceTreeModel.Events.FrameNavigated, this.#onFrameNavigated,
357
- this);
303
+ SDK.TargetManager.TargetManager.instance().removeModelListener(SDK.ResourceTreeModel.ResourceTreeModel,
304
+ SDK.ResourceTreeModel.Events.FrameNavigated,
305
+ this.#onFrameNavigated, this);
358
306
  SDK.TargetManager.TargetManager.instance().removeModelListener(
359
307
  SDK.ResourceTreeModel.ResourceTreeModel, SDK.ResourceTreeModel.Events.Load, this.#onLoadEventFired, this);
360
308
 
@@ -475,6 +423,30 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
475
423
  eventsRetrievalProgress(progress: number): void {
476
424
  this.client.loadingProgress(progress);
477
425
  }
426
+
427
+ #categoriesForRecording(options: RecordingOptions): string[] {
428
+ const categoriesArray = [
429
+ Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get() ? '*' : '-*',
430
+ ...Trace.Types.Events.DefaultCategories,
431
+ ];
432
+
433
+ if (options.enableJSSampling) {
434
+ categoriesArray.push(...Trace.Types.Events.OptionalCategories.JsSampling);
435
+ }
436
+ if (Common.Settings.Settings.instance().moduleSetting('timeline-invalidation-tracking').get() as boolean) {
437
+ categoriesArray.push(...Trace.Types.Events.OptionalCategories.InvalidationTracking);
438
+ }
439
+ if (options.capturePictures) {
440
+ categoriesArray.push(...Trace.Types.Events.OptionalCategories.AdvancedPaint);
441
+ }
442
+ if (options.captureFilmStrip) {
443
+ categoriesArray.push(...Trace.Types.Events.OptionalCategories.Screenshot);
444
+ }
445
+ if (options.captureSelectorStats) {
446
+ categoriesArray.push(...Trace.Types.Events.OptionalCategories.CssSelectorStats);
447
+ }
448
+ return categoriesArray;
449
+ }
478
450
  }
479
451
 
480
452
  export interface Client {
@@ -483,9 +455,9 @@ export interface Client {
483
455
  loadingStarted(): void;
484
456
  processingStarted(): void;
485
457
  loadingProgress(progress?: number): void;
486
- loadingComplete(
487
- collectedEvents: Trace.Types.Events.Event[], exclusiveFilter: Trace.Extras.TraceFilter.TraceFilter|null,
488
- metadata: Trace.Types.File.MetaData|null): Promise<void>;
458
+ loadingComplete(collectedEvents: Trace.Types.Events.Event[],
459
+ exclusiveFilter: Trace.Extras.TraceFilter.TraceFilter|null,
460
+ metadata: Trace.Types.File.MetaData|null): Promise<void>;
489
461
  loadingCompleteForTest(): void;
490
462
  }
491
463
  export interface RecordingOptions {
@@ -58,6 +58,7 @@ import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
58
58
  import * as SettingsUI from '../../ui/legacy/components/settings_ui/settings_ui.js';
59
59
  import * as UI from '../../ui/legacy/legacy.js';
60
60
  import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
61
+ import * as SettingUIRegistration from '../../ui/settings/settings.js';
61
62
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
62
63
  import * as MobileThrottling from '../mobile_throttling/mobile_throttling.js';
63
64
 
@@ -1326,8 +1327,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1326
1327
  MobileThrottling.CPUThrottlingSelector.CPUThrottlingSelector.createForGlobalConditions(cpuThrottlingPane);
1327
1328
 
1328
1329
  this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
1329
- this.captureSelectorStatsSetting.title(), this.captureSelectorStatsSetting,
1330
- i18nString(UIStrings.capturesSelectorStats)));
1330
+ SettingUIRegistration.SettingUIRegistration.resolve(this.captureSelectorStatsSetting.descriptor()).title,
1331
+ this.captureSelectorStatsSetting, i18nString(UIStrings.capturesSelectorStats)));
1331
1332
 
1332
1333
  const networkThrottlingPane = this.settingsPane.createChild('div');
1333
1334
  networkThrottlingPane.append(i18nString(UIStrings.network));
@@ -1337,17 +1338,18 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1337
1338
  );
1338
1339
 
1339
1340
  this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
1340
- this.captureLayersAndPicturesSetting.title(), this.captureLayersAndPicturesSetting,
1341
- i18nString(UIStrings.capturesAdvancedPaint)));
1341
+ SettingUIRegistration.SettingUIRegistration.resolve(this.captureLayersAndPicturesSetting.descriptor()).title,
1342
+ this.captureLayersAndPicturesSetting, i18nString(UIStrings.capturesAdvancedPaint)));
1342
1343
 
1343
1344
  this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
1344
- this.disableCaptureJSProfileSetting.title(), this.disableCaptureJSProfileSetting,
1345
- i18nString(UIStrings.disablesJavascriptSampling)));
1345
+ SettingUIRegistration.SettingUIRegistration.resolve(this.disableCaptureJSProfileSetting.descriptor()).title,
1346
+ this.disableCaptureJSProfileSetting, i18nString(UIStrings.disablesJavascriptSampling)));
1346
1347
 
1347
1348
  const screenshotPresetSelect = new UI.Toolbar.ToolbarComboBox(
1348
1349
  () =>
1349
1350
  this.screenshotCaptureModeSetting.set((screenshotPresetSelect.selectedOption() as HTMLOptionElement).value),
1350
- this.screenshotCaptureModeSetting.title(), '', 'screenshot-capture-mode');
1351
+ SettingUIRegistration.SettingUIRegistration.resolve(this.screenshotCaptureModeSetting.descriptor()).title, '',
1352
+ 'screenshot-capture-mode');
1351
1353
  let selectedScreenshotPresetIndex = 0;
1352
1354
  for (let i = 0; i < SCREENSHOT_CAPTURE_PRESETS.length; ++i) {
1353
1355
  const preset = SCREENSHOT_CAPTURE_PRESETS[i];
@@ -1359,7 +1361,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1359
1361
  }
1360
1362
  screenshotPresetSelect.setSelectedIndex(selectedScreenshotPresetIndex);
1361
1363
  const screenshotPresetPane = this.settingsPane.createChild('div');
1362
- screenshotPresetPane.append(this.screenshotCaptureModeSetting.title());
1364
+ screenshotPresetPane.append(
1365
+ SettingUIRegistration.SettingUIRegistration.resolve(this.screenshotCaptureModeSetting.descriptor()).title);
1363
1366
  screenshotPresetPane.append(screenshotPresetSelect.element);
1364
1367
  // Surface the dropdown only when the "Screenshots" checkbox is on, since the
1365
1368
  // preset only affects the screenshots captured during the recording.
@@ -61,6 +61,7 @@ import * as LegacyComponents from '../../ui/legacy/components/utils/utils.js';
61
61
  import * as UI from '../../ui/legacy/legacy.js';
62
62
  import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
63
63
  import {html, render} from '../../ui/lit/lit.js';
64
+ import * as SettingUIRegistration from '../../ui/settings/settings.js';
64
65
  import * as PanelsCommon from '../common/common.js';
65
66
 
66
67
  import {getDurationString} from './AppenderUtils.js';
@@ -1278,10 +1279,12 @@ export class TimelineUIUtils {
1278
1279
  contentHelper.appendTextRow(i18nString(UIStrings.elementsAffected), unsafeEventArgs['elementCount']);
1279
1280
 
1280
1281
  const selectorStatsSetting =
1281
- Common.Settings.Settings.instance().createSetting('timeline-capture-selector-stats', false);
1282
+ Common.Settings.Settings.instance().moduleSetting('timeline-capture-selector-stats');
1282
1283
  if (!selectorStatsSetting.get()) {
1283
1284
  const note = document.createElement('span');
1284
- note.textContent = i18nString(UIStrings.sSelectorStatsInfo, {PH1: selectorStatsSetting.title()});
1285
+ note.textContent = i18nString(UIStrings.sSelectorStatsInfo, {
1286
+ PH1: SettingUIRegistration.SettingUIRegistration.resolve(selectorStatsSetting.descriptor()).title,
1287
+ });
1285
1288
  contentHelper.appendElementRow(i18nString(UIStrings.selectorStatsTitle), note);
1286
1289
  }
1287
1290
 
@@ -14,13 +14,13 @@ import * as Platform from '../../../../core/platform/platform.js';
14
14
  import * as Root from '../../../../core/root/root.js';
15
15
  import * as AiAssistanceModels from '../../../../models/ai_assistance/ai_assistance.js';
16
16
  import * as Buttons from '../../../../ui/components/buttons/buttons.js';
17
+ import * as Dialogs from '../../../../ui/components/dialogs/dialogs.js';
17
18
  import * as ComponentHelpers from '../../../../ui/components/helpers/helpers.js';
18
19
  import * as UIHelpers from '../../../../ui/helpers/helpers.js';
19
20
  import * as UI from '../../../../ui/legacy/legacy.js';
20
21
  import * as ThemeSupport from '../../../../ui/legacy/theme_support/theme_support.js';
21
22
  import * as Lit from '../../../../ui/lit/lit.js';
22
23
  import * as VisualLogging from '../../../../ui/visual_logging/visual_logging.js';
23
- import * as PanelCommon from '../../../common/common.js';
24
24
 
25
25
  import entryLabelOverlayStyles from './entryLabelOverlay.css.js';
26
26
 
@@ -568,7 +568,7 @@ export class EntryLabelOverlay extends HTMLElement {
568
568
  */
569
569
  async #showUserAiFirstRunDialog(): Promise<boolean> {
570
570
  this.dispatchEvent(new LabelAnnotationsConsentDialogVisibilityChange(true));
571
- const userConsented = await PanelCommon.FreDialog.show({
571
+ const userConsented = await Dialogs.FreDialog.FreDialog.show({
572
572
  ariaLabel: i18nString(UIStrings.freDialog),
573
573
  header: {iconName: 'pen-spark', text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
574
574
  reminderItems: [
@@ -151,16 +151,6 @@
151
151
  justify-content: space-between;
152
152
  }
153
153
 
154
- #memory-graphs-container .timeline-memory-header::after {
155
- content: "";
156
- /* stylelint-disable-next-line custom-property-pattern */
157
- background-image: var(--image-file-toolbarResizerVertical);
158
- background-repeat: no-repeat;
159
- background-position: right center, center;
160
- flex: 20px 0 0;
161
- margin: 0 4px;
162
- }
163
-
164
154
  .timeline-memory-toolbar {
165
155
  flex-shrink: 1;
166
156
  }
@@ -21,35 +21,35 @@ const {ref, styleMap, ifDefined} = Directives;
21
21
 
22
22
  const UIStrings = {
23
23
  /**
24
- * @description Tooltip to explain the resource's overridden status
24
+ * @description Tooltip to explain the resource's overridden status.
25
25
  */
26
26
  requestContentHeadersOverridden: 'Both request content and headers are overridden',
27
27
  /**
28
- * @description Tooltip to explain the resource's overridden status
28
+ * @description Tooltip to explain the resource's overridden status.
29
29
  */
30
30
  requestContentOverridden: 'Request content is overridden',
31
31
  /**
32
- * @description Tooltip to explain the resource's overridden status
32
+ * @description Tooltip to explain the resource's overridden status.
33
33
  */
34
34
  requestHeadersOverridden: 'Request headers are overridden',
35
35
  /**
36
- * @description Tooltip to explain why the request has warning icon
36
+ * @description Tooltip to explain why the request has a warning icon.
37
37
  */
38
38
  thirdPartyPhaseout:
39
39
  'Cookies for this request are blocked either because of Chrome flags or browser configuration. Learn more in the Issues panel.',
40
40
  /**
41
- * @description Tooltip to explain that a request was throttled
41
+ * @description Tooltip to explain that a request was throttled.
42
42
  * @example {Image} PH1
43
43
  * @example {3G} PH2
44
44
  */
45
45
  resourceTypeWithThrottling: '{PH1} (throttled to {PH2})',
46
46
  /**
47
- * @description Tooltip for a failed request
47
+ * @description Tooltip for a failed request.
48
48
  * @example {Document} PH1
49
49
  */
50
50
  requestFailed: '{PH1} request failed',
51
51
  /**
52
- * @description Tooltip for a failed request
52
+ * @description Tooltip for a failed prefetch request.
53
53
  * @example {Document} PH1
54
54
  */
55
55
  prefetchFailed: '{PH1} prefetch request failed',