chrome-devtools-frontend 1.0.1675430 → 1.0.1676824

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 (225) hide show
  1. package/WATCHLISTS +0 -4
  2. package/front_end/core/common/Settings.ts +0 -66
  3. package/front_end/core/root/Runtime.ts +0 -5
  4. package/front_end/core/sdk/CSSMetadata.ts +5 -9
  5. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +8 -28
  6. package/front_end/core/sdk/DebuggerModel.ts +50 -30
  7. package/front_end/core/sdk/ResourceTreeModel.ts +20 -1
  8. package/front_end/core/sdk/Script.ts +9 -53
  9. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +213 -23
  10. package/front_end/entrypoints/main/MainImpl.ts +31 -0
  11. package/front_end/generated/InspectorBackendCommands.ts +3 -1
  12. package/front_end/generated/SupportedCSSProperties.ts +21 -4
  13. package/front_end/generated/protocol-mapping.d.ts +14 -0
  14. package/front_end/generated/protocol-proxy-api.d.ts +10 -0
  15. package/front_end/generated/protocol.ts +35 -0
  16. package/front_end/models/ai_assistance/AiAgent2.ts +11 -0
  17. package/front_end/models/ai_assistance/AiConversation.ts +22 -5
  18. package/front_end/models/ai_assistance/README.md +52 -26
  19. package/front_end/models/ai_assistance/agents/AiAgent.ts +54 -8
  20. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +1 -1
  21. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +7 -194
  22. package/front_end/models/ai_assistance/agents/StorageAgent.ts +8 -87
  23. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -1
  24. package/front_end/models/ai_assistance/ai_assistance.ts +16 -0
  25. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +124 -0
  26. package/front_end/models/ai_assistance/contexts/StorageContext.ts +111 -0
  27. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +69 -1
  28. package/front_end/models/ai_assistance/skills/README.md +63 -1
  29. package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
  30. package/front_end/models/ai_assistance/skills/SkillRegistry.ts +4 -0
  31. package/front_end/models/ai_assistance/skills/performance.md +8 -0
  32. package/front_end/models/ai_assistance/skills/sources.md +16 -0
  33. package/front_end/models/ai_assistance/skills/storage.md +31 -0
  34. package/front_end/models/ai_assistance/tools/GetSourceContent.ts +101 -0
  35. package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +83 -0
  36. package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +106 -0
  37. package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +104 -0
  38. package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +81 -0
  39. package/front_end/models/ai_assistance/tools/ListSources.ts +116 -0
  40. package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +90 -0
  41. package/front_end/models/ai_assistance/tools/Tool.ts +22 -1
  42. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +14 -0
  43. package/front_end/models/bindings/CSSWorkspaceBinding.ts +4 -0
  44. package/front_end/models/bindings/CompilerScriptMapping.ts +4 -0
  45. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +8 -0
  46. package/front_end/models/bindings/ResourceScriptMapping.ts +3 -201
  47. package/front_end/models/bindings/SASSSourceMapping.ts +6 -0
  48. package/front_end/models/breakpoints/BreakpointManager.ts +2 -49
  49. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +27 -0
  50. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +10 -2
  51. package/front_end/models/issues_manager/descriptions/connectionAllowlistEmbeddingRequirementNotSatisfied.md +26 -0
  52. package/front_end/models/issues_manager/descriptions/connectionAllowlistIFrameAttributeLoosensEmbeddingRequirement.md +19 -0
  53. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowConnectionAllowlistFrom.md +21 -0
  54. package/front_end/models/javascript_metadata/NativeFunctions.js +1 -1
  55. package/front_end/models/persistence/IsolatedFileSystem.ts +7 -8
  56. package/front_end/models/persistence/IsolatedFileSystemManager.ts +2 -2
  57. package/front_end/models/persistence/PlatformFileSystem.ts +1 -1
  58. package/front_end/models/persistence/persistence-meta.ts +9 -9
  59. package/front_end/models/trace/types/TraceEvents.ts +36 -0
  60. package/front_end/panels/accessibility/ARIAAttributesView.ts +3 -3
  61. package/front_end/panels/accessibility/AccessibilityNodeView.ts +36 -36
  62. package/front_end/panels/accessibility/AccessibilityStrings.ts +168 -168
  63. package/front_end/panels/accessibility/SourceOrderView.ts +7 -7
  64. package/front_end/panels/accessibility/accessibility-meta.ts +2 -2
  65. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +5 -5
  66. package/front_end/panels/ai_assistance/components/AIv2MarkdownRenderer.ts +2 -3
  67. package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
  68. package/front_end/panels/ai_assistance/components/ChatMessage.ts +27 -2
  69. package/front_end/panels/application/IndexedDBViews.ts +65 -63
  70. package/front_end/panels/application/WebMCPView.ts +16 -7
  71. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +5 -5
  72. package/front_end/panels/common/BadgeNotification.ts +8 -8
  73. package/front_end/panels/common/ExtensionServer.ts +21 -1
  74. package/front_end/panels/common/GdpSignUpDialog.ts +16 -16
  75. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +5 -6
  76. package/front_end/panels/common/PersistenceUtils.ts +2 -2
  77. package/front_end/panels/common/common.ts +0 -97
  78. package/front_end/panels/console/ConsoleInsightTeaser.ts +2 -2
  79. package/front_end/panels/console/ConsolePinPane.ts +2 -2
  80. package/front_end/panels/console/ConsoleView.ts +20 -19
  81. package/front_end/panels/elements/LayoutPane.ts +2 -8
  82. package/front_end/panels/event_listeners/EventListenersView.ts +8 -4
  83. package/front_end/panels/issues/AffectedTrackingSitesView.ts +25 -14
  84. package/front_end/panels/media/PlayerMessagesView.ts +149 -68
  85. package/front_end/panels/network/NetworkPanel.ts +1 -1
  86. package/front_end/panels/network/RequestPayloadView.ts +1 -0
  87. package/front_end/panels/profiler/HeapSnapshotView.ts +0 -2
  88. package/front_end/panels/profiler/heapProfiler.css +0 -9
  89. package/front_end/panels/recorder/RecorderPanel.ts +2 -3
  90. package/front_end/panels/screencast/ScreencastView.ts +148 -138
  91. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +2 -2
  92. package/front_end/panels/sources/DebuggerPlugin.ts +9 -58
  93. package/front_end/panels/sources/ScopeChainSidebarPane.ts +1 -1
  94. package/front_end/panels/sources/UISourceCodeFrame.ts +3 -8
  95. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +4 -2
  96. package/front_end/panels/timeline/TimelineController.ts +36 -64
  97. package/front_end/panels/timeline/TimelinePanel.ts +11 -8
  98. package/front_end/panels/timeline/TimelineUIUtils.ts +5 -2
  99. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -2
  100. package/front_end/panels/timeline/timelinePanel.css +0 -10
  101. package/front_end/panels/utils/utils.ts +7 -7
  102. package/front_end/services/tracing/PerformanceTracing.ts +5 -17
  103. package/front_end/third_party/chromium/README.chromium +1 -1
  104. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  105. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  106. package/front_end/third_party/codemirror.next/package.json +2 -2
  107. package/front_end/third_party/codemirror.next/rebuild.sh +4 -1
  108. package/front_end/ui/comments/CommentAnchorResolver.ts +436 -10
  109. package/front_end/ui/comments/CommentManager.ts +640 -0
  110. package/front_end/ui/comments/CommentsOverlayWidget.ts +121 -0
  111. package/front_end/ui/comments/comments.ts +4 -0
  112. package/front_end/ui/comments/commentsOverlay.css +49 -0
  113. package/front_end/{panels/common → ui/components/dialogs}/FreDialog.ts +6 -6
  114. package/front_end/ui/components/dialogs/TypeToAllowDialog.ts +96 -0
  115. package/front_end/ui/components/dialogs/dialogs.ts +4 -0
  116. package/front_end/ui/components/settings/SettingCheckbox.ts +3 -3
  117. package/front_end/{panels/common → ui/components/text_editor}/AiCodeCompletionDisclaimer.ts +13 -13
  118. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +7 -6
  119. package/front_end/{panels/common → ui/components/text_editor}/AiCodeCompletionTeaser.ts +43 -46
  120. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +22 -26
  121. package/front_end/{panels/common → ui/components/text_editor}/AiCodeGenerationTeaser.ts +10 -10
  122. package/front_end/{panels/common → ui/components/text_editor}/AiCodeGenerationUpgradeDialog.ts +5 -5
  123. package/front_end/ui/components/text_editor/text_editor.ts +4 -0
  124. package/front_end/ui/legacy/Toolbar.ts +1 -1
  125. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +11 -3
  126. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +270 -162
  127. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +5 -0
  128. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +11 -16
  129. package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +5 -12
  130. package/front_end/ui/legacy/components/source_frame/JSONView.ts +8 -1
  131. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +2 -2
  132. package/front_end/ui/settings/SettingUIRegistration.ts +55 -6
  133. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  134. package/mcp/mcp.ts +6 -1
  135. package/package.json +1 -1
  136. package/front_end/Images/toolbarResizerVertical.png +0 -0
  137. package/front_end/emulated_devices/MotoG4-landscape.svg +0 -155
  138. package/front_end/emulated_devices/MotoG4-portrait.svg +0 -155
  139. package/front_end/emulated_devices/Nexus5X-landscape.svg +0 -19
  140. package/front_end/emulated_devices/Nexus5X-portrait.svg +0 -19
  141. package/front_end/emulated_devices/Nexus6P-landscape.svg +0 -50
  142. package/front_end/emulated_devices/Nexus6P-portrait.svg +0 -54
  143. package/front_end/emulated_devices/google-nest-hub-horizontal.png +0 -0
  144. package/front_end/emulated_devices/google-nest-hub-max-horizontal.png +0 -0
  145. package/front_end/emulated_devices/google-nexus-5-horizontal-default-1x.png +0 -0
  146. package/front_end/emulated_devices/google-nexus-5-horizontal-default-2x.png +0 -0
  147. package/front_end/emulated_devices/google-nexus-5-horizontal-keyboard-1x.png +0 -0
  148. package/front_end/emulated_devices/google-nexus-5-horizontal-keyboard-2x.png +0 -0
  149. package/front_end/emulated_devices/google-nexus-5-horizontal-navigation-1x.png +0 -0
  150. package/front_end/emulated_devices/google-nexus-5-horizontal-navigation-2x.png +0 -0
  151. package/front_end/emulated_devices/google-nexus-5-vertical-default-1x.png +0 -0
  152. package/front_end/emulated_devices/google-nexus-5-vertical-default-2x.png +0 -0
  153. package/front_end/emulated_devices/google-nexus-5-vertical-keyboard-1x.png +0 -0
  154. package/front_end/emulated_devices/google-nexus-5-vertical-keyboard-2x.png +0 -0
  155. package/front_end/emulated_devices/google-nexus-5-vertical-navigation-1x.png +0 -0
  156. package/front_end/emulated_devices/google-nexus-5-vertical-navigation-2x.png +0 -0
  157. package/front_end/emulated_devices/google-nexus-5x-horizontal-default-1x.png +0 -0
  158. package/front_end/emulated_devices/google-nexus-5x-horizontal-default-2x.png +0 -0
  159. package/front_end/emulated_devices/google-nexus-5x-horizontal-keyboard-1x.png +0 -0
  160. package/front_end/emulated_devices/google-nexus-5x-horizontal-keyboard-2x.png +0 -0
  161. package/front_end/emulated_devices/google-nexus-5x-horizontal-navigation-1x.png +0 -0
  162. package/front_end/emulated_devices/google-nexus-5x-horizontal-navigation-2x.png +0 -0
  163. package/front_end/emulated_devices/google-nexus-5x-vertical-default-1x.png +0 -0
  164. package/front_end/emulated_devices/google-nexus-5x-vertical-default-2x.png +0 -0
  165. package/front_end/emulated_devices/google-nexus-5x-vertical-keyboard-1x.png +0 -0
  166. package/front_end/emulated_devices/google-nexus-5x-vertical-keyboard-2x.png +0 -0
  167. package/front_end/emulated_devices/google-nexus-5x-vertical-navigation-1x.png +0 -0
  168. package/front_end/emulated_devices/google-nexus-5x-vertical-navigation-2x.png +0 -0
  169. package/front_end/emulated_devices/iPad-landscape.svg +0 -73
  170. package/front_end/emulated_devices/iPad-portrait.svg +0 -76
  171. package/front_end/emulated_devices/iPhone5-landscape.svg +0 -99
  172. package/front_end/emulated_devices/iPhone5-portrait.svg +0 -83
  173. package/front_end/emulated_devices/iPhone6-landscape.svg +0 -111
  174. package/front_end/emulated_devices/iPhone6-portrait.svg +0 -116
  175. package/front_end/emulated_devices/iPhone6Plus-landscape.svg +0 -118
  176. package/front_end/emulated_devices/iPhone6Plus-portrait.svg +0 -116
  177. package/front_end/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
  178. package/front_end/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
  179. package/front_end/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
  180. package/front_end/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
  181. package/front_end/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
  182. package/front_end/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
  183. package/front_end/emulated_devices/optimized/README.md +0 -9
  184. package/front_end/emulated_devices/optimized/google-nest-hub-horizontal.avif +0 -0
  185. package/front_end/emulated_devices/optimized/google-nest-hub-max-horizontal.avif +0 -0
  186. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
  187. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
  188. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
  189. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
  190. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
  191. package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
  192. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
  193. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
  194. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
  195. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
  196. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
  197. package/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
  198. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
  199. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
  200. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
  201. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
  202. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
  203. package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
  204. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
  205. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
  206. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
  207. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
  208. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
  209. package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
  210. package/front_end/emulated_devices/optimized/iPad-landscape.avif +0 -0
  211. package/front_end/emulated_devices/optimized/iPad-portrait.avif +0 -0
  212. package/front_end/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
  213. package/front_end/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
  214. package/front_end/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
  215. package/front_end/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
  216. package/front_end/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
  217. package/front_end/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
  218. package/front_end/emulated_devices/optimized/optimized_images.gni +0 -53
  219. package/front_end/models/ai_assistance/agents/README.md +0 -136
  220. /package/front_end/{panels/common → ui/components/dialogs}/freDialog.css +0 -0
  221. /package/front_end/{panels/common/common.css → ui/components/dialogs/typeToAllowDialog.css} +0 -0
  222. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeCompletionDisclaimer.css +0 -0
  223. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeCompletionTeaser.css +0 -0
  224. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeGenerationTeaser.css +0 -0
  225. /package/front_end/{panels/common → ui/components/text_editor}/aiCodeGenerationUpgradeDialog.css +0 -0
@@ -22,45 +22,45 @@ import styles from './gdpSignUpDialog.css.js';
22
22
 
23
23
  const UIStrings = {
24
24
  /**
25
- * @description Aria label for the Google Developer Program sign up dialog
25
+ * @description ARIA label for the Google Developer Program sign up dialog.
26
26
  */
27
27
  gdpDialogAriaLabel: 'Google Developer Program sign up dialog',
28
28
  /**
29
- *
30
- * @description Button text for canceling GDP sign up.
29
+ * @description Button text for canceling Google Developer Program sign up.
31
30
  */
32
31
  cancel: 'Cancel',
33
32
  /**
34
- * @description Button text for confirming GDP sign up.
33
+ * @description Button text for confirming Google Developer Program sign up.
35
34
  */
36
35
  signUp: 'Sign up',
37
36
  /**
38
- * @description Title for the first section of the GDP sign up dialog.
37
+ * @description Title for the first section of the Google Developer Program sign up dialog.
39
38
  */
40
39
  designedForSuccess: 'Designed for your success',
41
40
  /**
42
- * @description Body for the first section of the GDP sign up dialog.
41
+ * @description Body for the first section of the Google Developer Program sign up dialog.
43
42
  */
44
- designedForSuccessBody: 'Grow your skills, build with AI, and earn badges you can showcase in your developer profile',
43
+ designedForSuccessBody:
44
+ 'Grow your skills, build with AI, and earn badges you can showcase in your developer profile.',
45
45
  /**
46
- * @description Title for the second section of the GDP sign up dialog.
46
+ * @description Title for the second section of the Google Developer Program sign up dialog.
47
47
  */
48
48
  keepUpdated: 'Keep me updated',
49
49
  /**
50
- * @description Body for the second section of the GDP sign up dialog.
50
+ * @description Body for the second section of the Google Developer Program sign up dialog.
51
51
  */
52
- keepUpdatedBody: 'The latest DevTools features, event invites, and tailored insights land directly in your inbox',
52
+ keepUpdatedBody: 'The latest DevTools features, event invites, and tailored insights land directly in your inbox.',
53
53
  /**
54
- * @description Title for the third section of the GDP sign up dialog.
54
+ * @description Title for the third section of the Google Developer Program sign up dialog.
55
55
  */
56
56
  tailorProfile: 'Tailor your profile',
57
57
  /**
58
- * @description Body for the third section of the GDP sign up dialog.
58
+ * @description Body for the third section of the Google Developer Program sign up dialog.
59
59
  */
60
60
  tailorProfileBody:
61
- 'The name on your Google Account and your interests will be used in your Google Developer Profile. Your name may appear where you contribute and can be changed at any time.',
61
+ 'The name on your Google account and your interests will be used in your Google Developer Profile. Your name may appear where you contribute and can be changed at any time.',
62
62
  /**
63
- * @description Body for the third section of the GDP sign up dialog.
63
+ * @description Disclaimer text for tailoring profile in the Google Developer Program sign up dialog.
64
64
  * @example {Content Policy} PH1
65
65
  * @example {Terms of Service} PH2
66
66
  * @example {Privacy Policy} PH3
@@ -88,9 +88,9 @@ const UIStrings = {
88
88
  */
89
89
  privacyPolicy: 'Privacy Policy',
90
90
  /**
91
- * @description Error message shown in a snackbar when GDP sign up fails.
91
+ * @description Error message shown in a snackbar when Google Developer Profile creation fails.
92
92
  */
93
- signUpFailed: 'Your Google Developer Program profile couldn’t be created. Please try again later.',
93
+ signUpFailed: 'Your Google Developer Profile couldn’t be created. Please try again later.',
94
94
  } as const;
95
95
 
96
96
  const str_ = i18n.i18n.registerUIStrings('panels/common/GdpSignUpDialog.ts', UIStrings);
@@ -24,11 +24,10 @@ import styles from './geminiRebrandPromoDialog.css.js';
24
24
 
25
25
  const UIStrings = {
26
26
  /**
27
- * @description Aria label for the dialog
27
+ * @description ARIA label for the dialog.
28
28
  */
29
29
  dialogAriaLabel: 'Gemini 3 Flash in DevTools',
30
30
  /**
31
- *
32
31
  * @description Button text for dismissing the dialog.
33
32
  */
34
33
  dismiss: 'Dismiss',
@@ -37,19 +36,19 @@ const UIStrings = {
37
36
  */
38
37
  getStarted: 'Get started',
39
38
  /**
40
- * @description Detail message shown in the dialog.
39
+ * @description Feature item describing Gemini as an AI companion for web development.
41
40
  */
42
41
  detailAiCompanion: 'Meet your AI-powered companion for web dev',
43
42
  /**
44
- * @description Detail message shown in the dialog.
43
+ * @description Feature item describing instant answers for console errors.
45
44
  */
46
45
  detailConsoleErrors: 'Get instant, accurate answers for console errors',
47
46
  /**
48
- * @description Detail message shown in the dialog.
47
+ * @description Feature item describing CSS and JS snippet generation.
49
48
  */
50
49
  detailGenerateCode: 'Generate CSS and JS snippets on the fly',
51
50
  /**
52
- * @description Detail message shown in the dialog.
51
+ * @description Feature item describing automatic issue detection in performance traces.
53
52
  */
54
53
  detailPerformance: 'Automatically find issues in performance traces',
55
54
  } as const;
@@ -14,12 +14,12 @@ import {html, type LitTemplate} from '../../ui/lit/lit.js';
14
14
 
15
15
  const UIStrings = {
16
16
  /**
17
- * @description Text in Persistence Utils of the Workspace settings in Settings
17
+ * @description Tooltip text indicating that a file is linked to a source map.
18
18
  * @example {example.url} PH1
19
19
  */
20
20
  linkedToSourceMapS: 'Linked to source map: {PH1}',
21
21
  /**
22
- * @description Text to show something is linked to another
22
+ * @description Tooltip text indicating that a file is linked to another file.
23
23
  * @example {example.url} PH1
24
24
  */
25
25
  linkedToS: 'Linked to {PH1}',
@@ -2,105 +2,8 @@
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
 
5
- /* eslint-disable @devtools/no-imperative-dom-api */
6
-
7
- import * as Host from '../../core/host/host.js';
8
- import * as i18n from '../../core/i18n/i18n.js';
9
- import type * as Platform from '../../core/platform/platform.js';
10
- import * as Geometry from '../../models/geometry/geometry.js';
11
- import * as Buttons from '../../ui/components/buttons/buttons.js';
12
- import * as UI from '../../ui/legacy/legacy.js';
13
-
14
- import commonStyles from './common.css.js';
15
-
16
- const UIStrings = {
17
- /**
18
- * @description Text for the cancel button in the dialog.
19
- */
20
- cancel: 'Cancel',
21
- /**
22
- * @description Text for the allow button in the "type to allow" dialog.
23
- */
24
- allow: 'Allow',
25
- } as const;
26
-
27
- const str_ = i18n.i18n.registerUIStrings('panels/common/common.ts', UIStrings);
28
- const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
29
-
30
- export class TypeToAllowDialog {
31
- static async show(options: {
32
- jslogContext: {
33
- dialog: string,
34
- input: string,
35
- },
36
- header: Platform.UIString.LocalizedString,
37
- message: Platform.UIString.LocalizedString,
38
- typePhrase: Platform.UIString.LocalizedString,
39
- inputPlaceholder: Platform.UIString.LocalizedString,
40
- }): Promise<boolean> {
41
- const dialog = new UI.Dialog.Dialog(options.jslogContext.dialog);
42
- dialog.setMaxContentSize(new Geometry.Size(504, 340));
43
- dialog.setSizeBehavior(UI.GlassPane.SizeBehavior.SET_EXACT_WIDTH_MAX_HEIGHT);
44
- dialog.setDimmed(true);
45
- const shadowRoot = UI.UIUtils.createShadowRootWithCoreStyles(dialog.contentElement, {cssFile: commonStyles});
46
- const content = shadowRoot.createChild('div', 'type-to-allow-dialog');
47
-
48
- const result = await new Promise<boolean>(resolve => {
49
- const header = content.createChild('div', 'header');
50
- header.createChild('div', 'title').textContent = options.header;
51
-
52
- const closeButton = header.createChild('dt-close-button', 'dialog-close-button');
53
- closeButton.setTabbable(true);
54
- self.onInvokeElement(closeButton, event => {
55
- dialog.hide();
56
- event.consume(true);
57
- resolve(false);
58
- });
59
- closeButton.setSize(Buttons.Button.Size.SMALL);
60
-
61
- content.createChild('div', 'message').textContent = options.message;
62
-
63
- const input = UI.UIUtils.createInput('text-input', 'text', options.jslogContext.input);
64
- input.placeholder = options.inputPlaceholder;
65
- content.appendChild(input);
66
-
67
- const buttonsBar = content.createChild('div', 'button');
68
- const cancelButton =
69
- UI.UIUtils.createTextButton(i18nString(UIStrings.cancel), () => resolve(false), {jslogContext: 'cancel'});
70
-
71
- const allowButton = UI.UIUtils.createTextButton(i18nString(UIStrings.allow), () => {
72
- resolve(input.value === options.typePhrase || input.value === `'${options.typePhrase}'`);
73
- }, {jslogContext: 'confirm', variant: Buttons.Button.Variant.PRIMARY});
74
- allowButton.disabled = true;
75
-
76
- buttonsBar.appendChild(allowButton);
77
- buttonsBar.appendChild(cancelButton);
78
-
79
- input.addEventListener('input', () => {
80
- allowButton.disabled = !Boolean(input.value);
81
- }, false);
82
- input.addEventListener('paste', e => e.preventDefault());
83
- input.addEventListener('drop', e => e.preventDefault());
84
-
85
- dialog.setOutsideClickCallback(event => {
86
- event.consume();
87
- resolve(false);
88
- });
89
- dialog.show();
90
- Host.userMetrics.actionTaken(Host.UserMetrics.Action.SelfXssWarningDialogShown);
91
- });
92
- dialog.hide();
93
- return result;
94
- }
95
- }
96
-
97
- export {AiCodeCompletionTeaser} from './AiCodeCompletionTeaser.js';
98
- export * as AiCodeGenerationTeaser from './AiCodeGenerationTeaser.js';
99
- export {AiCodeGenerationUpgradeDialog} from './AiCodeGenerationUpgradeDialog.js';
100
- export {FreDialog} from './FreDialog.js';
101
5
  export {GdpSignUpDialog} from './GdpSignUpDialog.js';
102
6
  export {GeminiRebrandPromoDialog} from './GeminiRebrandPromoDialog.js';
103
- export {AiCodeCompletionDisclaimer, type DisclaimerTextVariant} from './AiCodeCompletionDisclaimer.js';
104
7
  export * as AiCodeCompletionSummaryToolbar from './AiCodeCompletionSummaryToolbar.js';
105
8
  export * from './BadgeNotification.js';
106
9
  export * as CPUThrottlingOption from './CPUThrottlingOption.js';
@@ -12,11 +12,11 @@ import * as Root from '../../core/root/root.js';
12
12
  import * as Protocol from '../../generated/protocol.js';
13
13
  import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
14
14
  import * as Buttons from '../../ui/components/buttons/buttons.js';
15
+ import * as Dialogs from '../../ui/components/dialogs/dialogs.js';
15
16
  import type * as Tooltips from '../../ui/components/tooltips/tooltips.js';
16
17
  import * as UI from '../../ui/legacy/legacy.js';
17
18
  import * as Lit from '../../ui/lit/lit.js';
18
19
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
19
- import * as PanelCommon from '../common/common.js';
20
20
 
21
21
  import consoleInsightTeaserStyles from './consoleInsightTeaser.css.js';
22
22
  import {ConsoleViewMessage} from './ConsoleViewMessage.js';
@@ -500,7 +500,7 @@ export class ConsoleInsightTeaser extends UI.Widget.Widget {
500
500
  const noLogging = Root.Runtime.hostConfig.aidaAvailability?.enterprisePolicyValue ===
501
501
  Root.Runtime.GenAiEnterprisePolicyValue.ALLOW_WITHOUT_LOGGING;
502
502
  const iconName = AiAssistanceModel.AiUtils.getIconName();
503
- const result = await PanelCommon.FreDialog.show({
503
+ const result = await Dialogs.FreDialog.FreDialog.show({
504
504
  header: {iconName, text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
505
505
  reminderItems: [
506
506
  {
@@ -10,6 +10,7 @@ import * as Root from '../../core/root/root.js';
10
10
  import * as SDK from '../../core/sdk/sdk.js';
11
11
  import * as CodeMirror from '../../third_party/codemirror.next/codemirror.next.js';
12
12
  import * as Buttons from '../../ui/components/buttons/buttons.js';
13
+ import * as Dialogs from '../../ui/components/dialogs/dialogs.js';
13
14
  import * as TextEditor from '../../ui/components/text_editor/text_editor.js';
14
15
  import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
15
16
  // eslint-disable-next-line @devtools/es-modules-import
@@ -17,7 +18,6 @@ import objectValueStyles from '../../ui/legacy/components/object_ui/objectValue.
17
18
  import * as UI from '../../ui/legacy/legacy.js';
18
19
  import {Directives, html, type LitTemplate, nothing, render} from '../../ui/lit/lit.js';
19
20
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
20
- import * as PanelCommon from '../common/common.js';
21
21
 
22
22
  import consolePinPaneStyles from './consolePinPane.css.js';
23
23
 
@@ -437,7 +437,7 @@ export class ConsolePinPresenter extends UI.Widget.Widget {
437
437
  }
438
438
 
439
439
  async #showSelfXssWarning(): Promise<void> {
440
- const allowPasting = await PanelCommon.TypeToAllowDialog.show({
440
+ const allowPasting = await Dialogs.TypeToAllowDialog.TypeToAllowDialog.show({
441
441
  jslogContext: {
442
442
  dialog: 'self-xss-warning',
443
443
  input: 'allow-pasting',
@@ -58,6 +58,7 @@ import objectValueStyles from '../../ui/legacy/components/object_ui/objectValue.
58
58
  import * as SettingsUI from '../../ui/legacy/components/settings_ui/settings_ui.js';
59
59
  import * as Components from '../../ui/legacy/components/utils/utils.js';
60
60
  import * as UI from '../../ui/legacy/legacy.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 {AiCodeCompletionSummaryToolbar} from '../common/common.js';
63
64
 
@@ -498,30 +499,30 @@ export class ConsoleView extends UI.Widget.VBox implements
498
499
  settingsPane.append(
499
500
  SettingsUI.SettingsUI.createSettingCheckbox(
500
501
  i18nString(UIStrings.networkMessages), this.filter.networkMessagesSetting,
501
- this.filter.networkMessagesSetting.title()),
502
+ SettingUIRegistration.SettingUIRegistration.resolve(this.filter.networkMessagesSetting.descriptor()).title),
503
+ SettingsUI.SettingsUI.createSettingCheckbox(i18nString(UIStrings.logXMLHttpRequests),
504
+ monitoringXHREnabledSetting),
505
+ SettingsUI.SettingsUI.createSettingCheckbox(i18nString(UIStrings.preserveLog), preserveConsoleLogSetting,
506
+ i18nString(UIStrings.doNotClearLogOnPageReload)),
502
507
  SettingsUI.SettingsUI.createSettingCheckbox(
503
- i18nString(UIStrings.logXMLHttpRequests), monitoringXHREnabledSetting),
508
+ SettingUIRegistration.SettingUIRegistration.resolve(consoleEagerEvalSetting.descriptor()).title,
509
+ consoleEagerEvalSetting, i18nString(UIStrings.eagerlyEvaluateTextInThePrompt)),
510
+ SettingsUI.SettingsUI.createSettingCheckbox(i18nString(UIStrings.selectedContextOnly),
511
+ this.filter.filterByExecutionContextSetting,
512
+ i18nString(UIStrings.onlyShowMessagesFromTheCurrentContext)),
504
513
  SettingsUI.SettingsUI.createSettingCheckbox(
505
- i18nString(UIStrings.preserveLog), preserveConsoleLogSetting,
506
- i18nString(UIStrings.doNotClearLogOnPageReload)),
514
+ SettingUIRegistration.SettingUIRegistration.resolve(this.consoleHistoryAutocompleteSetting.descriptor())
515
+ .title,
516
+ this.consoleHistoryAutocompleteSetting, i18nString(UIStrings.autocompleteFromHistory)),
507
517
  SettingsUI.SettingsUI.createSettingCheckbox(
508
- consoleEagerEvalSetting.title(), consoleEagerEvalSetting,
509
- i18nString(UIStrings.eagerlyEvaluateTextInThePrompt)),
518
+ SettingUIRegistration.SettingUIRegistration.resolve(this.groupSimilarSetting.descriptor()).title,
519
+ this.groupSimilarSetting, i18nString(UIStrings.groupSimilarMessagesInConsole)),
510
520
  SettingsUI.SettingsUI.createSettingCheckbox(
511
- i18nString(UIStrings.selectedContextOnly), this.filter.filterByExecutionContextSetting,
512
- i18nString(UIStrings.onlyShowMessagesFromTheCurrentContext)),
521
+ SettingUIRegistration.SettingUIRegistration.resolve(userActivationEvalSetting.descriptor()).title,
522
+ userActivationEvalSetting, i18nString(UIStrings.treatEvaluationAsUserActivation)),
513
523
  SettingsUI.SettingsUI.createSettingCheckbox(
514
- this.consoleHistoryAutocompleteSetting.title(), this.consoleHistoryAutocompleteSetting,
515
- i18nString(UIStrings.autocompleteFromHistory)),
516
- SettingsUI.SettingsUI.createSettingCheckbox(
517
- this.groupSimilarSetting.title(), this.groupSimilarSetting,
518
- i18nString(UIStrings.groupSimilarMessagesInConsole)),
519
- SettingsUI.SettingsUI.createSettingCheckbox(
520
- userActivationEvalSetting.title(), userActivationEvalSetting,
521
- i18nString(UIStrings.treatEvaluationAsUserActivation)),
522
- SettingsUI.SettingsUI.createSettingCheckbox(
523
- this.showCorsErrorsSetting.title(), this.showCorsErrorsSetting,
524
- i18nString(UIStrings.showCorsErrorsInConsole)),
524
+ SettingUIRegistration.SettingUIRegistration.resolve(this.showCorsErrorsSetting.descriptor()).title,
525
+ this.showCorsErrorsSetting, i18nString(UIStrings.showCorsErrorsInConsole)),
525
526
  );
526
527
 
527
528
  if (!this.showSettingsPaneSetting.get()) {
@@ -461,15 +461,9 @@ export class LayoutPane extends UI.Widget.Widget {
461
461
  const mappedSetting = {
462
462
  type: settingType,
463
463
  name: setting.name,
464
- title: uiDescriptor?.title?.() ?? setting.title(),
464
+ title: uiDescriptor?.title ?? '',
465
465
  };
466
- const options = uiDescriptor?.options?.map(opt => ({
467
- value: opt.value,
468
- title: opt.title(),
469
- text: typeof opt.text === 'function' ? opt.text() : opt.text,
470
- raw: opt.raw,
471
- })) ??
472
- setting.options();
466
+ const options = uiDescriptor?.options ?? [];
473
467
 
474
468
  if (typeof settingValue === 'boolean') {
475
469
  settings.push({
@@ -14,6 +14,7 @@ import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
14
14
  import objectValueStyles from '../../ui/legacy/components/object_ui/objectValue.css.js';
15
15
  import * as Components from '../../ui/legacy/components/utils/utils.js';
16
16
  import * as UI from '../../ui/legacy/legacy.js';
17
+ import {render} from '../../ui/lit/lit.js';
17
18
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
18
19
 
19
20
  import {frameworkEventListeners, type FrameworkEventListenersObject} from './EventListenersUtils.js';
@@ -325,10 +326,13 @@ export class ObjectEventListenerBar extends UI.TreeOutline.TreeElement {
325
326
  private setTitle(object: SDK.RemoteObject.RemoteObject, linkifier: Components.Linkifier.Linkifier): void {
326
327
  const title = this.listItemElement.createChild('span', 'event-listener-details');
327
328
 
328
- const propertyValue = ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.createPropertyValue(
329
- object, /* wasThrown */ false, /* showPreview */ false);
330
- this.valueTitle = propertyValue;
331
- title.appendChild(this.valueTitle);
329
+ const propertyValue = ObjectUI.ObjectPropertiesSection.renderPropertyValue(
330
+ object, /* wasThrown */ false, /* showPreview */ false, linkifier, /* isSyntheticProperty */ false,
331
+ /* variableName */ undefined, /* includeNullOrUndefined */ undefined, /* useCustomPreview */ false, element => {
332
+ this.valueTitle = element;
333
+ });
334
+ // eslint-disable-next-line @devtools/no-lit-render-outside-of-view
335
+ render(propertyValue, title);
332
336
 
333
337
  if (this.#eventListener.canRemove()) {
334
338
  const deleteButton = new Buttons.Button.Button();
@@ -1,10 +1,10 @@
1
1
  // Copyright 2023 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
- /* eslint-disable @devtools/no-imperative-dom-api */
5
4
 
6
5
  import * as i18n from '../../core/i18n/i18n.js';
7
6
  import type * as Platform from '../../core/platform/platform.js';
7
+ import {html, render} from '../../ui/lit/lit.js';
8
8
 
9
9
  import {AffectedResourcesView} from './AffectedResourcesView.js';
10
10
 
@@ -21,24 +21,35 @@ const UIStrings = {
21
21
  const str_ = i18n.i18n.registerUIStrings('panels/issues/AffectedTrackingSitesView.ts', UIStrings);
22
22
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
23
23
 
24
+ export interface ViewInput {
25
+ trackingSites: readonly string[];
26
+ }
27
+ export type ViewOutput = object;
28
+ export type View = (input: ViewInput, output: ViewOutput, target: HTMLElement) => void;
29
+
30
+ export function defaultView(input: ViewInput, output: ViewOutput, target: HTMLElement): void {
31
+ render(html`
32
+ <tbody>
33
+ ${input.trackingSites.map(site => html`
34
+ <tr class="affected-resource-directive">
35
+ <td class="affected-resource-cell" title=${site}>${site}</td>
36
+ </tr>
37
+ `)}
38
+ </tbody>
39
+ `,
40
+ target);
41
+ }
42
+
24
43
  export class AffectedTrackingSitesView extends AffectedResourcesView {
44
+ #view: View = defaultView;
45
+
25
46
  protected override getResourceNameWithCount(count: number): Platform.UIString.LocalizedString {
26
47
  return i18nString(UIStrings.nTrackingSites, {n: count});
27
48
  }
28
49
 
29
50
  override update(): void {
30
- this.clear();
31
- const trackingSites = this.issue.getBounceTrackingSites();
32
- let count = 0;
33
-
34
- for (const site of trackingSites) {
35
- const row = document.createElement('tr');
36
- row.classList.add('affected-resource-directive');
37
-
38
- this.appendIssueDetailCell(row, site);
39
- this.affectedResources.appendChild(row);
40
- count++;
41
- }
42
- this.updateAffectedResourceCount(count);
51
+ const trackingSites = Array.from(this.issue.getBounceTrackingSites());
52
+ this.#view({trackingSites}, {}, this.affectedResources);
53
+ this.updateAffectedResourceCount(trackingSites.length);
43
54
  }
44
55
  }