chrome-devtools-frontend 1.0.1535712 → 1.0.1537268

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 (231) hide show
  1. package/docs/contributing/images/issues-nearestslo.png +0 -0
  2. package/docs/contributing/issues.md +17 -21
  3. package/front_end/core/common/Console.ts +1 -8
  4. package/front_end/core/common/ParsedURL.ts +10 -20
  5. package/front_end/core/common/SegmentedRange.ts +1 -2
  6. package/front_end/core/common/StringOutputStream.ts +1 -4
  7. package/front_end/core/host/AidaClient.ts +64 -5
  8. package/front_end/core/host/DispatchHttpRequestClient.ts +62 -0
  9. package/front_end/core/host/GdpClient.ts +8 -57
  10. package/front_end/core/host/host.ts +2 -0
  11. package/front_end/core/i18n/i18nImpl.ts +0 -24
  12. package/front_end/core/protocol_client/CDPConnection.ts +10 -8
  13. package/front_end/core/protocol_client/InspectorBackend.ts +36 -42
  14. package/front_end/core/sdk/AnimationModel.ts +1 -2
  15. package/front_end/core/sdk/CSSMatchedStyles.ts +2 -2
  16. package/front_end/core/sdk/CSSModel.ts +1 -1
  17. package/front_end/core/sdk/CSSProperty.ts +3 -6
  18. package/front_end/core/sdk/CSSStyleDeclaration.ts +4 -4
  19. package/front_end/core/sdk/DebuggerModel.ts +1 -2
  20. package/front_end/core/sdk/EnhancedTracesParser.ts +24 -5
  21. package/front_end/core/sdk/RehydratingConnection.ts +112 -4
  22. package/front_end/core/sdk/RehydratingObject.ts +8 -0
  23. package/front_end/core/sdk/SourceMap.ts +2 -3
  24. package/front_end/core/sdk/TraceObject.ts +5 -1
  25. package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +2 -1
  26. package/front_end/generated/InspectorBackendCommands.js +1 -2
  27. package/front_end/generated/SupportedCSSProperties.js +19 -0
  28. package/front_end/generated/protocol.ts +0 -27
  29. package/front_end/models/javascript_metadata/NativeFunctions.js +1 -1
  30. package/front_end/models/trace/types/File.ts +9 -0
  31. package/front_end/panels/accessibility/AccessibilityNodeView.ts +18 -17
  32. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +9 -12
  33. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +5 -9
  34. package/front_end/panels/ai_assistance/components/ChatView.ts +63 -74
  35. package/front_end/panels/application/AppManifestView.ts +7 -6
  36. package/front_end/panels/application/ApplicationPanelSidebar.ts +4 -4
  37. package/front_end/panels/application/BackForwardCacheTreeElement.ts +2 -6
  38. package/front_end/panels/application/OpenedWindowDetailsView.ts +6 -6
  39. package/front_end/panels/application/StorageView.ts +9 -8
  40. package/front_end/panels/application/components/BackForwardCacheView.ts +366 -342
  41. package/front_end/panels/application/components/FrameDetailsView.ts +8 -11
  42. package/front_end/panels/application/components/OriginTrialTreeView.ts +65 -69
  43. package/front_end/panels/application/components/ProtocolHandlersView.ts +3 -2
  44. package/front_end/panels/application/components/backForwardCacheView.css +4 -0
  45. package/front_end/panels/application/components/badge.css +1 -1
  46. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -1
  47. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +44 -53
  48. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +8 -8
  49. package/front_end/panels/common/BadgeNotification.ts +2 -1
  50. package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
  51. package/front_end/panels/console/ConsoleInsightTeaser.ts +8 -2
  52. package/front_end/panels/console/ConsolePinPane.ts +12 -7
  53. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +9 -9
  54. package/front_end/panels/elements/ComputedStyleWidget.ts +7 -7
  55. package/front_end/panels/elements/EventListenersWidget.ts +9 -9
  56. package/front_end/panels/elements/NodeStackTraceWidget.ts +6 -6
  57. package/front_end/panels/elements/PlatformFontsWidget.ts +5 -5
  58. package/front_end/panels/elements/PropertiesWidget.ts +8 -8
  59. package/front_end/panels/layer_viewer/Layers3DView.ts +2 -1
  60. package/front_end/panels/layer_viewer/PaintProfilerView.ts +3 -3
  61. package/front_end/panels/network/RequestCookiesView.ts +2 -1
  62. package/front_end/panels/network/RequestTimingView.ts +2 -1
  63. package/front_end/panels/recorder/RecorderController.ts +33 -23
  64. package/front_end/panels/recorder/components/CreateRecordingView.ts +259 -226
  65. package/front_end/panels/security/CookieControlsView.ts +2 -1
  66. package/front_end/panels/security/CookieReportView.ts +3 -2
  67. package/front_end/panels/settings/AISettingsTab.ts +164 -172
  68. package/front_end/panels/settings/KeybindsSettingsTab.ts +6 -0
  69. package/front_end/panels/settings/SettingsScreen.ts +3 -7
  70. package/front_end/panels/settings/aiSettingsTab.css +151 -148
  71. package/front_end/panels/settings/components/SyncSection.ts +2 -1
  72. package/front_end/panels/settings/settings-meta.ts +1 -2
  73. package/front_end/panels/sources/AddSourceMapURLDialog.ts +23 -26
  74. package/front_end/panels/sources/DebuggerPausedMessage.ts +4 -3
  75. package/front_end/panels/sources/ResourceOriginPlugin.ts +3 -2
  76. package/front_end/panels/sources/SourcesNavigator.ts +2 -1
  77. package/front_end/panels/sources/TabbedEditorContainer.ts +3 -2
  78. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +9 -9
  79. package/front_end/panels/timeline/TimelinePanel.ts +60 -11
  80. package/front_end/panels/timeline/TimelineUIUtils.ts +3 -2
  81. package/front_end/panels/timeline/components/DetailsView.ts +5 -4
  82. package/front_end/panels/timeline/components/ExportTraceOptions.ts +33 -34
  83. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +2 -1
  84. package/front_end/panels/timeline/components/LiveMetricsView.ts +5 -4
  85. package/front_end/panels/timeline/components/MetricCompareStrings.ts +25 -24
  86. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +2 -1
  87. package/front_end/third_party/chromium/README.chromium +2 -2
  88. package/front_end/third_party/puppeteer/README.chromium +2 -2
  89. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +9 -1
  90. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  91. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  92. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts +2 -2
  93. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +13 -1
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +2 -2
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +5 -2
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +2 -2
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +3 -1
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts +1 -12
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts +6 -0
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +1 -0
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +2 -2
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +6 -1
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +2 -1
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -2
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +2 -2
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +3 -1
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  129. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.d.ts +2 -2
  130. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.d.ts.map +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.js +3 -1
  132. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.js.map +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.d.ts +1 -0
  134. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.d.ts.map +1 -1
  135. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.js +1 -0
  136. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.js.map +1 -1
  137. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  139. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +28 -3
  140. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21 -10
  141. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +9 -1
  142. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  144. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts +2 -2
  145. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
  146. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +13 -1
  150. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  152. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +2 -2
  153. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +5 -2
  155. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +2 -2
  157. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +3 -1
  159. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.d.ts +1 -12
  161. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  162. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts +6 -0
  163. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  164. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +1 -0
  165. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +2 -2
  167. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  168. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +6 -1
  169. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +2 -1
  171. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -2
  173. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +2 -2
  175. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +3 -1
  177. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  179. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  180. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.d.ts +2 -2
  182. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.d.ts.map +1 -1
  183. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.js +2 -2
  184. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.js.map +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.d.ts +1 -0
  186. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.d.ts.map +1 -1
  187. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.js +1 -0
  188. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.js.map +1 -1
  189. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/types.d.ts +28 -3
  192. package/front_end/third_party/puppeteer/package/package.json +2 -2
  193. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +13 -1
  194. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +7 -2
  195. package/front_end/third_party/puppeteer/package/src/api/Page.ts +14 -1
  196. package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +8 -5
  197. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +5 -2
  198. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +8 -0
  199. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +11 -2
  200. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +3 -2
  201. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +5 -5
  202. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  203. package/front_end/third_party/puppeteer/package/src/util/disposable.ts +2 -2
  204. package/front_end/third_party/puppeteer/package/src/util/util.ts +1 -0
  205. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  206. package/front_end/ui/components/docs/tooltip/basic.ts +1 -1
  207. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +280 -0
  208. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  209. package/front_end/ui/components/tooltips/Tooltip.ts +33 -18
  210. package/front_end/ui/i18n/i18n.ts +31 -0
  211. package/front_end/ui/legacy/Dialog.ts +0 -1
  212. package/front_end/ui/legacy/SettingsUI.ts +0 -14
  213. package/front_end/ui/legacy/SoftDropDown.ts +1 -12
  214. package/front_end/ui/legacy/ViewManager.ts +2 -4
  215. package/front_end/ui/legacy/Widget.ts +33 -17
  216. package/front_end/ui/legacy/XLink.ts +0 -3
  217. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +9 -0
  218. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -1
  219. package/front_end/ui/legacy/components/utils/Linkifier.ts +9 -3
  220. package/front_end/ui/legacy/legacy.ts +0 -2
  221. package/front_end/ui/visual_logging/KnownContextValues.ts +4 -1
  222. package/mcp/mcp.ts +6 -0
  223. package/package.json +1 -1
  224. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatterBounds.snapshot.txt +0 -4
  225. package/front_end/ui/components/docs/breadcrumbs_perf/initial-breadcrumb-perf.html +0 -20
  226. package/front_end/ui/components/docs/breadcrumbs_perf/initial-breadcrumb-perf.ts +0 -25
  227. package/front_end/ui/components/docs/breadcrumbs_perf/nested-breadcrumbs-perf.html +0 -20
  228. package/front_end/ui/components/docs/breadcrumbs_perf/nested-breadcrumbs-perf.ts +0 -36
  229. package/front_end/ui/components/docs/recorder_create_recording_view/basic.html +0 -20
  230. package/front_end/ui/components/docs/recorder_create_recording_view/basic.ts +0 -27
  231. package/front_end/ui/legacy/ThrottledWidget.ts +0 -48
@@ -117,22 +117,22 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
117
117
  // clang-format on
118
118
  };
119
119
 
120
- export class DeveloperResourcesView extends UI.ThrottledWidget.ThrottledWidget {
120
+ export class DeveloperResourcesView extends UI.Widget.VBox {
121
121
  readonly #loader: SDK.PageResourceLoader.PageResourceLoader;
122
122
  readonly #view: View;
123
123
  #selectedItem: SDK.PageResourceLoader.PageResource|null = null;
124
124
  #filters: TextUtils.TextUtils.ParsedFilter[] = [];
125
125
 
126
126
  constructor(view: View = DEFAULT_VIEW) {
127
- super(true);
127
+ super({useShadowDom: true});
128
128
  this.#view = view;
129
129
 
130
130
  this.#loader = SDK.PageResourceLoader.PageResourceLoader.instance();
131
- this.#loader.addEventListener(SDK.PageResourceLoader.Events.UPDATE, this.update, this);
132
- this.update();
131
+ this.#loader.addEventListener(SDK.PageResourceLoader.Events.UPDATE, this.requestUpdate, this);
132
+ this.requestUpdate();
133
133
  }
134
134
 
135
- override async doUpdate(): Promise<void> {
135
+ override async performUpdate(): Promise<void> {
136
136
  const {loading, resources} = this.#loader.getScopedNumberOfResources();
137
137
  const input = {
138
138
  onFilterChanged: (e: CustomEvent<string>) => {
@@ -152,13 +152,13 @@ export class DeveloperResourcesView extends UI.ThrottledWidget.ThrottledWidget {
152
152
  }
153
153
 
154
154
  async select(resource: SDK.PageResourceLoader.PageResource): Promise<void> {
155
- await this.lastUpdatePromise;
155
+ await this.updateComplete;
156
156
  this.#selectedItem = resource;
157
- this.update();
157
+ this.requestUpdate();
158
158
  }
159
159
 
160
160
  async selectedItem(): Promise<SDK.PageResourceLoader.PageResource|null> {
161
- await this.lastUpdatePromise;
161
+ await this.updateComplete;
162
162
  return this.#selectedItem;
163
163
  }
164
164
 
@@ -171,6 +171,6 @@ export class DeveloperResourcesView extends UI.ThrottledWidget.ThrottledWidget {
171
171
  } else {
172
172
  this.#filters = [];
173
173
  }
174
- this.update();
174
+ this.requestUpdate();
175
175
  }
176
176
  }
@@ -255,7 +255,7 @@ type ComputedStyleData = {
255
255
  name: string,
256
256
  };
257
257
 
258
- export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget {
258
+ export class ComputedStyleWidget extends UI.Widget.VBox {
259
259
  private computedStyleModel: ComputedStyleModel;
260
260
  private readonly showInheritedComputedStylePropertiesSetting: Common.Settings.Setting<boolean>;
261
261
  private readonly groupComputedStylesSetting: Common.Settings.Setting<boolean>;
@@ -269,22 +269,22 @@ export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget {
269
269
  #treeData?: TreeOutline.TreeOutline.TreeOutlineData<ComputedStyleData>;
270
270
 
271
271
  constructor(computedStyleModel: ComputedStyleModel) {
272
- super(true);
272
+ super({useShadowDom: true});
273
273
  this.registerRequiredCSS(computedStyleSidebarPaneStyles);
274
274
 
275
275
  this.contentElement.classList.add('styles-sidebar-computed-style-widget');
276
276
 
277
277
  this.computedStyleModel = computedStyleModel;
278
- this.computedStyleModel.addEventListener(Events.CSS_MODEL_CHANGED, this.update, this);
279
- this.computedStyleModel.addEventListener(Events.COMPUTED_STYLE_CHANGED, this.update, this);
278
+ this.computedStyleModel.addEventListener(Events.CSS_MODEL_CHANGED, this.requestUpdate, this);
279
+ this.computedStyleModel.addEventListener(Events.COMPUTED_STYLE_CHANGED, this.requestUpdate, this);
280
280
 
281
281
  this.showInheritedComputedStylePropertiesSetting =
282
282
  Common.Settings.Settings.instance().createSetting('show-inherited-computed-style-properties', false);
283
- this.showInheritedComputedStylePropertiesSetting.addChangeListener(this.update.bind(this));
283
+ this.showInheritedComputedStylePropertiesSetting.addChangeListener(this.requestUpdate.bind(this));
284
284
 
285
285
  this.groupComputedStylesSetting = Common.Settings.Settings.instance().createSetting('group-computed-styles', false);
286
286
  this.groupComputedStylesSetting.addChangeListener(() => {
287
- this.update();
287
+ this.requestUpdate();
288
288
  });
289
289
 
290
290
  const hbox = this.contentElement.createChild('div', 'hbox styles-sidebar-pane-toolbar');
@@ -334,7 +334,7 @@ export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget {
334
334
  UI.Context.Context.instance().setFlavor(ComputedStyleWidget, null);
335
335
  }
336
336
 
337
- override async doUpdate(): Promise<void> {
337
+ override async performUpdate(): Promise<void> {
338
338
  const [nodeStyles, matchedStyles] =
339
339
  await Promise.all([this.computedStyleModel.fetchComputedStyle(), this.fetchMatchedCascade()]);
340
340
  if (!nodeStyles || !matchedStyles) {
@@ -135,7 +135,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
135
135
  // clang-format on
136
136
  };
137
137
 
138
- export class EventListenersWidget extends UI.ThrottledWidget.ThrottledWidget {
138
+ export class EventListenersWidget extends UI.Widget.VBox {
139
139
  private showForAncestorsSetting: Common.Settings.Setting<boolean>;
140
140
  private readonly dispatchFilterBySetting: Common.Settings.Setting<string>;
141
141
  private readonly showFrameworkListenersSetting: Common.Settings.Setting<boolean>;
@@ -147,19 +147,19 @@ export class EventListenersWidget extends UI.ThrottledWidget.ThrottledWidget {
147
147
  this.#view = view;
148
148
  this.showForAncestorsSetting =
149
149
  Common.Settings.Settings.instance().moduleSetting('show-event-listeners-for-ancestors');
150
- this.showForAncestorsSetting.addChangeListener(this.update.bind(this));
150
+ this.showForAncestorsSetting.addChangeListener(this.requestUpdate.bind(this));
151
151
 
152
152
  this.dispatchFilterBySetting =
153
153
  Common.Settings.Settings.instance().createSetting('event-listener-dispatch-filter-type', DispatchFilterBy.All);
154
- this.dispatchFilterBySetting.addChangeListener(this.update.bind(this));
154
+ this.dispatchFilterBySetting.addChangeListener(this.requestUpdate.bind(this));
155
155
 
156
156
  this.showFrameworkListenersSetting =
157
157
  Common.Settings.Settings.instance().createSetting('show-frameowkr-listeners', true);
158
158
  this.showFrameworkListenersSetting.setTitle(i18nString(UIStrings.frameworkListeners));
159
- this.showFrameworkListenersSetting.addChangeListener(this.update.bind(this));
159
+ this.showFrameworkListenersSetting.addChangeListener(this.requestUpdate.bind(this));
160
160
 
161
- UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode, this.update, this);
162
- this.update();
161
+ UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode, this.requestUpdate.bind(this));
162
+ this.requestUpdate();
163
163
  }
164
164
 
165
165
  static instance(opts: {
@@ -173,7 +173,7 @@ export class EventListenersWidget extends UI.ThrottledWidget.ThrottledWidget {
173
173
  return eventListenersWidgetInstance;
174
174
  }
175
175
 
176
- override async doUpdate(): Promise<void> {
176
+ override async performUpdate(): Promise<void> {
177
177
  const dispatchFilter = this.dispatchFilterBySetting.get();
178
178
  const showPassive = dispatchFilter === DispatchFilterBy.All || dispatchFilter === DispatchFilterBy.Passive;
179
179
  const showBlocking = dispatchFilter === DispatchFilterBy.All || dispatchFilter === DispatchFilterBy.Blocking;
@@ -186,7 +186,7 @@ export class EventListenersWidget extends UI.ThrottledWidget.ThrottledWidget {
186
186
  onDispatchFilterTypeChange: (value: string) => {
187
187
  this.dispatchFilterBySetting.set(value);
188
188
  },
189
- onEventListenersViewChange: this.update.bind(this),
189
+ onEventListenersViewChange: this.requestUpdate.bind(this),
190
190
  dispatchFilters: [
191
191
  {name: i18nString(UIStrings.all), value: DispatchFilterBy.All},
192
192
  {name: i18nString(UIStrings.passive), value: DispatchFilterBy.Passive},
@@ -279,7 +279,7 @@ export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
279
279
  handleAction(_context: UI.Context.Context, actionId: string): boolean {
280
280
  switch (actionId) {
281
281
  case 'elements.refresh-event-listeners': {
282
- EventListenersWidget.instance().update();
282
+ EventListenersWidget.instance().requestUpdate();
283
283
  return true;
284
284
  }
285
285
  }
@@ -42,27 +42,27 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
42
42
  // clang-format on
43
43
  };
44
44
 
45
- export class NodeStackTraceWidget extends UI.ThrottledWidget.ThrottledWidget {
45
+ export class NodeStackTraceWidget extends UI.Widget.VBox {
46
46
  readonly #linkifier = new Components.Linkifier.Linkifier(MaxLengthForLinks);
47
47
  readonly #view: View;
48
48
 
49
49
  constructor(view = DEFAULT_VIEW) {
50
- super(true /* isWebComponent */);
50
+ super({useShadowDom: true});
51
51
  this.#view = view;
52
52
  }
53
53
 
54
54
  override wasShown(): void {
55
55
  super.wasShown();
56
- UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode, this.update, this);
57
- this.update();
56
+ UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode, this.requestUpdate, this);
57
+ this.requestUpdate();
58
58
  }
59
59
 
60
60
  override willHide(): void {
61
61
  super.willHide();
62
- UI.Context.Context.instance().removeFlavorChangeListener(SDK.DOMModel.DOMNode, this.update, this);
62
+ UI.Context.Context.instance().removeFlavorChangeListener(SDK.DOMModel.DOMNode, this.requestUpdate, this);
63
63
  }
64
64
 
65
- override async doUpdate(): Promise<void> {
65
+ override async performUpdate(): Promise<void> {
66
66
  const node = UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode);
67
67
 
68
68
  const stackTrace = await node?.creationStackTrace() ?? undefined;
@@ -77,21 +77,21 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
77
77
  // clang-format on
78
78
  };
79
79
 
80
- export class PlatformFontsWidget extends UI.ThrottledWidget.ThrottledWidget {
80
+ export class PlatformFontsWidget extends UI.Widget.VBox {
81
81
  private readonly sharedModel: ComputedStyleModel;
82
82
  readonly #view: View;
83
83
 
84
84
  constructor(sharedModel: ComputedStyleModel, view: View = DEFAULT_VIEW) {
85
- super(true);
85
+ super({useShadowDom: true});
86
86
  this.#view = view;
87
87
  this.registerRequiredCSS(platformFontsWidgetStyles);
88
88
 
89
89
  this.sharedModel = sharedModel;
90
- this.sharedModel.addEventListener(ComputedStyleModelEvents.CSS_MODEL_CHANGED, this.update, this);
91
- this.sharedModel.addEventListener(ComputedStyleModelEvents.COMPUTED_STYLE_CHANGED, this.update, this);
90
+ this.sharedModel.addEventListener(ComputedStyleModelEvents.CSS_MODEL_CHANGED, this.requestUpdate, this);
91
+ this.sharedModel.addEventListener(ComputedStyleModelEvents.COMPUTED_STYLE_CHANGED, this.requestUpdate, this);
92
92
  }
93
93
 
94
- override async doUpdate(): Promise<void> {
94
+ override async performUpdate(): Promise<void> {
95
95
  const cssModel = this.sharedModel.cssModel();
96
96
  const node = this.sharedModel.node();
97
97
  if (!node || !cssModel) {
@@ -103,7 +103,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
103
103
  const getShowAllPropertiesSetting = (): Common.Settings.Setting<boolean> =>
104
104
  Common.Settings.Settings.instance().createSetting('show-all-properties', /* defaultValue */ false);
105
105
 
106
- export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget {
106
+ export class PropertiesWidget extends UI.Widget.VBox {
107
107
  private node: SDK.DOMModel.DOMNode|null;
108
108
  private readonly showAllPropertiesSetting: Common.Settings.Setting<boolean>;
109
109
  private filterRegex: RegExp|null = null;
@@ -112,8 +112,8 @@ export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget {
112
112
  readonly #view: View;
113
113
  #displayNoMatchingPropertyMessage = false;
114
114
 
115
- constructor(throttlingTimeout?: number, view: View = DEFAULT_VIEW) {
116
- super(true /* isWebComponent */, throttlingTimeout);
115
+ constructor(view: View = DEFAULT_VIEW) {
116
+ super({useShadowDom: true});
117
117
  this.registerRequiredCSS(propertiesWidgetStyles);
118
118
 
119
119
  this.showAllPropertiesSetting = getShowAllPropertiesSetting();
@@ -138,7 +138,7 @@ export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget {
138
138
  Host.userMetrics.actionTaken(Host.UserMetrics.Action.DOMPropertiesExpanded);
139
139
  });
140
140
 
141
- void this.doUpdate();
141
+ void this.performUpdate();
142
142
  }
143
143
 
144
144
  private onFilterChanged(event: CustomEvent<string>): void {
@@ -150,7 +150,7 @@ export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget {
150
150
  const previousDisplay = this.#displayNoMatchingPropertyMessage;
151
151
  this.internalFilterProperties();
152
152
  if (previousDisplay !== this.#displayNoMatchingPropertyMessage) {
153
- this.update();
153
+ this.requestUpdate();
154
154
  }
155
155
  }
156
156
 
@@ -169,10 +169,10 @@ export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget {
169
169
 
170
170
  private setNode(event: Common.EventTarget.EventTargetEvent<SDK.DOMModel.DOMNode|null>): void {
171
171
  this.node = event.data;
172
- this.update();
172
+ this.requestUpdate();
173
173
  }
174
174
 
175
- override async doUpdate(): Promise<void> {
175
+ override async performUpdate(): Promise<void> {
176
176
  if (this.lastRequestedNode) {
177
177
  this.lastRequestedNode.domModel().runtimeModel().releaseObjectGroup(OBJECT_GROUP_NAME);
178
178
  delete this.lastRequestedNode;
@@ -218,6 +218,6 @@ export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget {
218
218
  if (this.node !== node) {
219
219
  return;
220
220
  }
221
- this.update();
221
+ this.requestUpdate();
222
222
  }
223
223
  }
@@ -10,6 +10,7 @@ import * as Platform from '../../core/platform/platform.js';
10
10
  import type * as SDK from '../../core/sdk/sdk.js';
11
11
  import type * as Protocol from '../../generated/protocol.js';
12
12
  import * as Geometry from '../../models/geometry/geometry.js';
13
+ import * as uiI18n from '../../ui/i18n/i18n.js';
13
14
  import * as UI from '../../ui/legacy/legacy.js';
14
15
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
15
16
 
@@ -772,7 +773,7 @@ export class Layers3DView extends Common.ObjectWrapper.eventMixin<EventTypes, ty
772
773
  private webglDisabledBanner(): UI.EmptyWidget.EmptyWidget {
773
774
  const emptyWidget = new UI.EmptyWidget.EmptyWidget(
774
775
  i18nString(UIStrings.cantDisplayLayers), i18nString(UIStrings.webglSupportIsDisabledInYour));
775
- emptyWidget.contentElement.appendChild(i18n.i18n.getFormatLocalizedString(
776
+ emptyWidget.contentElement.appendChild(uiI18n.getFormatLocalizedString(
776
777
  str_, UIStrings.checkSForPossibleReasons,
777
778
  {PH1: UI.XLink.XLink.create('about:gpu', undefined, undefined, undefined, 'about-gpu')}));
778
779
  return emptyWidget;
@@ -397,7 +397,7 @@ export interface EventTypes {
397
397
  [Events.WINDOW_CHANGED]: void;
398
398
  }
399
399
 
400
- export class PaintProfilerCommandLogView extends UI.ThrottledWidget.ThrottledWidget {
400
+ export class PaintProfilerCommandLogView extends UI.Widget.VBox {
401
401
  private readonly treeOutline: UI.TreeOutline.TreeOutlineInShadow;
402
402
  private log: SDK.PaintProfiler.PaintProfilerLogItem[];
403
403
  private readonly treeItemCache: Map<SDK.PaintProfiler.PaintProfilerLogItem, LogTreeElement>;
@@ -435,10 +435,10 @@ export class PaintProfilerCommandLogView extends UI.ThrottledWidget.ThrottledWid
435
435
 
436
436
  updateWindow(selectionWindow: {left: number, right: number}|null): void {
437
437
  this.selectionWindow = selectionWindow;
438
- this.update();
438
+ this.requestUpdate();
439
439
  }
440
440
 
441
- override doUpdate(): Promise<void> {
441
+ override performUpdate(): Promise<void> {
442
442
  if (!this.selectionWindow || !this.log.length) {
443
443
  this.treeOutline.removeChildren();
444
444
  return Promise.resolve();
@@ -8,6 +8,7 @@ import * as i18n from '../../core/i18n/i18n.js';
8
8
  import * as SDK from '../../core/sdk/sdk.js';
9
9
  import * as Protocol from '../../generated/protocol.js';
10
10
  import * as IconButton from '../../ui/components/icon_button/icon_button.js';
11
+ import * as uiI18n from '../../ui/i18n/i18n.js';
11
12
  import * as CookieTable from '../../ui/legacy/components/cookie_table/cookie_table.js';
12
13
  import * as UI from '../../ui/legacy/legacy.js';
13
14
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -120,7 +121,7 @@ export class RequestCookiesView extends UI.Widget.Widget {
120
121
  this.siteHasCookieInOtherPartition =
121
122
  this.element.createChild('div', 'cookies-panel-item site-has-cookies-in-other-partition');
122
123
  this.siteHasCookieInOtherPartition.appendChild(
123
- i18n.i18n.getFormatLocalizedString(str_, UIStrings.siteHasCookieInOtherPartition, {
124
+ uiI18n.getFormatLocalizedString(str_, UIStrings.siteHasCookieInOtherPartition, {
124
125
  PH1: UI.XLink.XLink.create(
125
126
  'https://developer.chrome.com/en/docs/privacy-sandbox/chips/', i18nString(UIStrings.learnMore), undefined,
126
127
  undefined, 'learn-more'),
@@ -11,6 +11,7 @@ import * as SDK from '../../core/sdk/sdk.js';
11
11
  import * as Protocol from '../../generated/protocol.js';
12
12
  import * as Logs from '../../models/logs/logs.js';
13
13
  import * as NetworkTimeCalculator from '../../models/network_time_calculator/network_time_calculator.js';
14
+ import * as uiI18n from '../../ui/i18n/i18n.js';
14
15
  import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
15
16
  import * as UI from '../../ui/legacy/legacy.js';
16
17
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -412,7 +413,7 @@ export class RequestTimingView extends UI.Widget.VBox {
412
413
  'https://web.dev/custom-metrics/#server-timing-api', i18nString(UIStrings.theServerTimingApi), undefined,
413
414
  undefined, 'server-timing-api');
414
415
  information.appendChild(
415
- i18n.i18n.getFormatLocalizedString(str_, UIStrings.duringDevelopmentYouCanUseSToAdd, {PH1: link}));
416
+ uiI18n.getFormatLocalizedString(str_, UIStrings.duringDevelopmentYouCanUseSToAdd, {PH1: link}));
416
417
 
417
418
  return tableElement;
418
419
  }
@@ -233,6 +233,7 @@ export class RecorderController extends LitElement {
233
233
  'disable-self-xss-warning', false, Common.Settings.SettingStorageType.SYNCED);
234
234
 
235
235
  #recordingView?: Components.RecordingView.RecordingView;
236
+ #createRecordingView?: Components.CreateRecordingView.CreateRecordingView;
236
237
 
237
238
  constructor() {
238
239
  super();
@@ -804,7 +805,9 @@ export class RecorderController extends LitElement {
804
805
  this.#clearError();
805
806
  }
806
807
 
807
- async #onRecordingStarted(event: Components.CreateRecordingView.RecordingStartedEvent): Promise<void> {
808
+ async #onRecordingStarted(
809
+ data: {name: string, selectorTypesToRecord: Models.Schema.SelectorType[], selectorAttribute?: string}):
810
+ Promise<void> {
808
811
  // Recording is not available in device mode.
809
812
  await this.#disableDeviceModeIfEnabled();
810
813
 
@@ -815,10 +818,10 @@ export class RecorderController extends LitElement {
815
818
  // -- Recording logic starts here --
816
819
  Host.userMetrics.recordingToggled(Host.UserMetrics.RecordingToggled.RECORDING_STARTED);
817
820
  this.currentRecordingSession = new Models.RecordingSession.RecordingSession(this.#getMainTarget(), {
818
- title: event.name,
819
- selectorAttribute: event.selectorAttribute,
820
- selectorTypesToRecord: event.selectorTypesToRecord.length ? event.selectorTypesToRecord :
821
- Object.values(Models.Schema.SelectorType),
821
+ title: data.name,
822
+ selectorAttribute: data.selectorAttribute,
823
+ selectorTypesToRecord: data.selectorTypesToRecord.length ? data.selectorTypesToRecord :
824
+ Object.values(Models.Schema.SelectorType),
822
825
  });
823
826
  this.#setCurrentRecording(await this.#storage.saveRecording(this.currentRecordingSession.cloneUserFlow()));
824
827
 
@@ -901,7 +904,7 @@ export class RecorderController extends LitElement {
901
904
  this.dispatchEvent(new Events.RecordingStateChangedEvent(this.currentRecording.flow));
902
905
  }
903
906
 
904
- async #onRecordingCancelled(): Promise<void> {
907
+ async onRecordingCancelled(): Promise<void> {
905
908
  if (this.previousPage) {
906
909
  this.#setCurrentPage(this.previousPage);
907
910
  }
@@ -1060,15 +1063,17 @@ export class RecorderController extends LitElement {
1060
1063
 
1061
1064
  case Actions.RecorderActions.START_RECORDING:
1062
1065
  if (this.currentPage !== Pages.CREATE_RECORDING_PAGE && !this.isRecording) {
1063
- this.#shortcutHelper.handleShortcut(this.#onRecordingStarted.bind(
1064
- this,
1065
- new Components.CreateRecordingView.RecordingStartedEvent(
1066
- this.#recorderSettings.defaultTitle, this.#recorderSettings.defaultSelectors,
1067
- this.#recorderSettings.selectorAttribute)));
1066
+ this.#shortcutHelper.handleShortcut(this.#onRecordingStarted.bind(this, {
1067
+ name: this.#recorderSettings.defaultTitle,
1068
+ selectorTypesToRecord: this.#recorderSettings.defaultSelectors,
1069
+ selectorAttribute: this.#recorderSettings.selectorAttribute ? this.#recorderSettings.selectorAttribute :
1070
+ undefined,
1071
+ }));
1068
1072
  } else if (this.currentPage === Pages.CREATE_RECORDING_PAGE) {
1069
- const view = this.renderRoot.querySelector('devtools-create-recording-view');
1070
- if (view) {
1071
- this.#shortcutHelper.handleShortcut(view.startRecording.bind(view));
1073
+ if (this.#createRecordingView) {
1074
+ this.#shortcutHelper.handleShortcut(() => {
1075
+ this.#createRecordingView?.startRecording();
1076
+ });
1072
1077
  }
1073
1078
  } else if (this.isRecording) {
1074
1079
  void this.#onRecordingFinished();
@@ -1233,15 +1238,20 @@ export class RecorderController extends LitElement {
1233
1238
  #renderCreateRecordingPage(): Lit.TemplateResult {
1234
1239
  // clang-format off
1235
1240
  return html`
1236
- <devtools-create-recording-view
1237
- .data=${
1238
- {
1239
- recorderSettings: this.#recorderSettings,
1240
- } as Components.CreateRecordingView.CreateRecordingViewData
1241
- }
1242
- @recordingstarted=${this.#onRecordingStarted}
1243
- @recordingcancelled=${this.#onRecordingCancelled}
1244
- ></devtools-create-recording-view>
1241
+ <devtools-widget
1242
+ class="recording-view"
1243
+ .widgetConfig=${UI.Widget.widgetConfig(Components.CreateRecordingView.CreateRecordingView, {
1244
+ recorderSettings: this.#recorderSettings,
1245
+ onRecordingStarted: this.#onRecordingStarted.bind(this),
1246
+ onRecordingCancelled: this.onRecordingCancelled.bind(this),
1247
+ })}
1248
+ ${UI.Widget.widgetRef(
1249
+ Components.CreateRecordingView.CreateRecordingView,
1250
+ widget => {
1251
+ this.#createRecordingView = widget;
1252
+ },
1253
+ )}
1254
+ ></devtools-widget>
1245
1255
  `;
1246
1256
  // clang-format on
1247
1257
  }