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
@@ -125,6 +125,14 @@ export class WidgetElement<WidgetT extends Widget> extends HTMLElement {
125
125
  widget.show(this.parentElement as HTMLElement, undefined, /* suppressOrphanWidgetError= */ true);
126
126
  }
127
127
 
128
+ disconnectedCallback(): void {
129
+ const widget = Widget.get(this);
130
+ if (widget) {
131
+ widget.setHideOnDetach();
132
+ widget.detach();
133
+ }
134
+ }
135
+
128
136
  override appendChild<T extends Node>(child: T): T {
129
137
  if (child instanceof HTMLElement && child.tagName !== 'STYLE') {
130
138
  Widget.getOrCreateWidget(child).show(this);
@@ -264,7 +272,6 @@ export class Widget {
264
272
  #notificationDepth = 0;
265
273
  #invalidationsSuspended = 0;
266
274
  #parentWidget: Widget|null = null;
267
- #defaultFocusedElement?: Element|null;
268
275
  #cachedConstraints?: Geometry.Constraints;
269
276
  #constraints?: Geometry.Constraints;
270
277
  #invalidationsRequested?: boolean;
@@ -724,7 +731,13 @@ export class Widget {
724
731
  }
725
732
 
726
733
  setDefaultFocusedElement(element: Element|null): void {
727
- this.#defaultFocusedElement = element;
734
+ const defaultFocusedElement = this.getDefaultFocusedElement();
735
+ if (defaultFocusedElement) {
736
+ defaultFocusedElement.removeAttribute('autofocus');
737
+ }
738
+ if (element) {
739
+ element.setAttribute('autofocus', '');
740
+ }
728
741
  }
729
742
 
730
743
  setDefaultFocusedChild(child: Widget): void {
@@ -732,21 +745,28 @@ export class Widget {
732
745
  this.defaultFocusedChild = child;
733
746
  }
734
747
 
735
- focus(): void {
736
- if (!this.isShowing()) {
737
- return;
748
+ getDefaultFocusedElement(): HTMLElement|null {
749
+ const autofocusElement = this.contentElement.hasAttribute('autofocus') ?
750
+ this.contentElement :
751
+ this.contentElement.querySelector<HTMLElement>('[autofocus]');
752
+ let widgetElement: Element|null = autofocusElement;
753
+ while (widgetElement) {
754
+ const widget = Widget.get(widgetElement);
755
+ if (widget) {
756
+ return widget === this ? autofocusElement : null;
757
+ }
758
+ widgetElement = widgetElement.parentElementOrShadowHost();
738
759
  }
760
+ return null;
761
+ }
739
762
 
740
- if (this.#shadowRoot?.delegatesFocus && this.contentElement.querySelector('[autofocus]')) {
741
- this.element.focus();
763
+ focus(): void {
764
+ if (!this.isShowing()) {
742
765
  return;
743
766
  }
744
-
745
- const element = (this.#defaultFocusedElement as HTMLElement | null);
746
- if (element) {
747
- if (!element.hasFocus()) {
748
- element.focus();
749
- }
767
+ const autofocusElement = this.getDefaultFocusedElement();
768
+ if (autofocusElement) {
769
+ autofocusElement.focus();
750
770
  return;
751
771
  }
752
772
 
@@ -759,10 +779,6 @@ export class Widget {
759
779
  return;
760
780
  }
761
781
  }
762
- let child = this.contentElement.traverseNextNode(this.contentElement);
763
- while (child) {
764
- child = child.traverseNextNode(this.contentElement);
765
- }
766
782
  }
767
783
  }
768
784
 
@@ -4,7 +4,6 @@
4
4
 
5
5
  import * as Host from '../../core/host/host.js';
6
6
  import * as Platform from '../../core/platform/platform.js';
7
- import {html} from '../lit/lit.js';
8
7
  import * as VisualLogging from '../visual_logging/visual_logging.js';
9
8
 
10
9
  import * as ARIAUtils from './ARIAUtils.js';
@@ -155,5 +154,3 @@ export class ContextMenuProvider implements Provider<Node> {
155
154
  }
156
155
 
157
156
  customElements.define('x-link', XLink);
158
-
159
- export const sample = html`<p>Hello, <x-link>world!</x-link></p>`;
@@ -372,6 +372,15 @@ class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate {
372
372
  this.#updateColumns();
373
373
  }
374
374
  this.#updateCreationNode();
375
+
376
+ const hadAddedNodes = mutationList.some(m => m.addedNodes.length > 0);
377
+ // If we got an update, and the data grid is sorted, we need to update the
378
+ // columns to maintain the sort order as the data within has changed.
379
+ // However, if we have nodes added, that will trigger a sort anyway so we
380
+ // don't need to re-sort again.
381
+ if (this.#dataGrid.sortColumnId() !== null && !hadAddedNodes) {
382
+ this.#dataGrid.dispatchEventToListeners(DataGridEvents.SORTING_CHANGED);
383
+ }
375
384
  }
376
385
 
377
386
  #editCallback(
@@ -35,6 +35,7 @@ import * as i18n from '../../../../core/i18n/i18n.js';
35
35
  import * as Platform from '../../../../core/platform/platform.js';
36
36
  import * as SDK from '../../../../core/sdk/sdk.js';
37
37
  import * as TextUtils from '../../../../models/text_utils/text_utils.js';
38
+ import * as uiI18n from '../../../../ui/i18n/i18n.js';
38
39
  import * as IconButton from '../../../components/icon_button/icon_button.js';
39
40
  import * as TextEditor from '../../../components/text_editor/text_editor.js';
40
41
  import * as VisualLogging from '../../../visual_logging/visual_logging.js';
@@ -438,7 +439,7 @@ export class ObjectPropertiesSection extends UI.TreeOutline.TreeOutlineInShadow
438
439
  wrapperElement.classList.add('error');
439
440
  wrapperElement.classList.add('value');
440
441
  wrapperElement.appendChild(
441
- i18n.i18n.getFormatLocalizedString(str_, UIStrings.exceptionS, {PH1: propertyValue.element}));
442
+ uiI18n.getFormatLocalizedString(str_, UIStrings.exceptionS, {PH1: propertyValue.element}));
442
443
  propertyValue.element = wrapperElement;
443
444
  }
444
445
  propertyValue.element.classList.add('value');
@@ -919,7 +919,7 @@ export class LinkContextMenuProvider implements UI.ContextMenu.Provider<Node> {
919
919
 
920
920
  let linkHandlerSettingUIInstance: LinkHandlerSettingUI;
921
921
 
922
- export class LinkHandlerSettingUI implements UI.SettingsUI.SettingUI {
922
+ export class LinkHandlerSettingUI {
923
923
  private element: HTMLSelectElement;
924
924
 
925
925
  private constructor() {
@@ -960,8 +960,14 @@ export class LinkHandlerSettingUI implements UI.SettingsUI.SettingUI {
960
960
  Linkifier.linkHandlerSetting().set(value);
961
961
  }
962
962
 
963
- settingElement(): Element|null {
964
- return UI.SettingsUI.createCustomSetting(i18nString(UIStrings.linkHandling), this.element);
963
+ settingElement(): Element {
964
+ const p = document.createElement('p');
965
+ p.classList.add('settings-select');
966
+ const label = p.createChild('label');
967
+ label.textContent = i18nString(UIStrings.linkHandling);
968
+ UI.ARIAUtils.bindLabelToControl(label, this.element);
969
+ p.appendChild(this.element);
970
+ return p;
965
971
  }
966
972
  }
967
973
 
@@ -42,7 +42,6 @@ import * as SuggestBox from './SuggestBox.js';
42
42
  import * as TabbedPane from './TabbedPane.js';
43
43
  import * as TargetCrashedScreen from './TargetCrashedScreen.js';
44
44
  import * as TextPrompt from './TextPrompt.js';
45
- import * as ThrottledWidget from './ThrottledWidget.js';
46
45
  import * as Toolbar from './Toolbar.js';
47
46
  import * as Tooltip from './Tooltip.js';
48
47
  import * as TreeOutline from './Treeoutline.js';
@@ -95,7 +94,6 @@ export {
95
94
  TabbedPane,
96
95
  TargetCrashedScreen,
97
96
  TextPrompt,
98
- ThrottledWidget,
99
97
  Toolbar,
100
98
  Tooltip,
101
99
  TreeOutline,
@@ -849,6 +849,7 @@ export const knownContextValues = new Set([
849
849
  'console-group-similar-false',
850
850
  'console-history-autocomplete',
851
851
  'console-history-autocomplete-false',
852
+ 'console-insight-teaser',
852
853
  'console-insight-teasers-enabled',
853
854
  'console-insights',
854
855
  'console-insights-enabled',
@@ -3162,6 +3163,7 @@ export const knownContextValues = new Set([
3162
3163
  'row-rule-color',
3163
3164
  'row-rule-outset',
3164
3165
  'row-rule-style',
3166
+ 'row-rule-visibility-items',
3165
3167
  'row-rule-width',
3166
3168
  'rp-id',
3167
3169
  'rpId',
@@ -3686,6 +3688,7 @@ export const knownContextValues = new Set([
3686
3688
  'targets',
3687
3689
  'task-duration',
3688
3690
  'te',
3691
+ 'teaser-info-tooltip',
3689
3692
  'terms-of-service',
3690
3693
  'terms-of-service-accepted',
3691
3694
  'terms-of-service.console-insights',
@@ -3836,7 +3839,7 @@ export const knownContextValues = new Set([
3836
3839
  'timeline.enable',
3837
3840
  'timeline.export-trace-options',
3838
3841
  'timeline.export-trace-options.annotations-checkbox',
3839
- 'timeline.export-trace-options.script-content-checkbox',
3842
+ 'timeline.export-trace-options.resource-content-checkbox',
3840
3843
  'timeline.export-trace-options.should-compress-checkbox',
3841
3844
  'timeline.export-trace-options.source-maps-checkbox',
3842
3845
  'timeline.extension',
package/mcp/mcp.ts CHANGED
@@ -2,6 +2,12 @@
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
+ /**
6
+ * IMPORTANT! Make sure that any class that is exported here has related unit
7
+ * tests added to foundation_unittests. See front_end/core/i18n/BUILD.gn as an
8
+ * example.
9
+ */
10
+ export * as I18n from '../front_end/core/i18n/i18n.js';
5
11
  export {ConnectionTransport} from '../front_end/core/protocol_client/ConnectionTransport.js';
6
12
  export {
7
13
  PerformanceInsightFormatter
package/package.json CHANGED
@@ -102,5 +102,5 @@
102
102
  "flat-cache": "6.1.12"
103
103
  }
104
104
  },
105
- "version": "1.0.1535712"
105
+ "version": "1.0.1537268"
106
106
  }
@@ -1,4 +0,0 @@
1
- Title: PerformanceTraceFormatterBounds serializeBounds works
2
- Content:
3
- {min: 1, max: 2}
4
- === end content
@@ -1,20 +0,0 @@
1
- <!--
2
- Copyright 2020 The Chromium Authors
3
- Use of this source code is governed by a BSD-style license that can be
4
- found in the LICENSE file.
5
- -->
6
- <!DOCTYPE html>
7
- <html>
8
- <head>
9
- <meta charset="UTF-8" />
10
- <meta name="viewport" content="width=device-width" />
11
- <title>Breadcrumb example</title>
12
- </head>
13
- <body>
14
-
15
- <div id="container">
16
- </div>
17
-
18
- <script type="module" src="./initial-breadcrumb-perf.js"></script>
19
- </body>
20
- </html>
@@ -1,25 +0,0 @@
1
- // Copyright 2023 The Chromium Authors
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
-
5
- import * as Trace from '../../../../../front_end/models/trace/trace.js';
6
- import * as TimelineComponents from '../../../../../front_end/panels/timeline/components/components.js';
7
-
8
- const breadcrumbsUI = new TimelineComponents.BreadcrumbsUI.BreadcrumbsUI();
9
- document.getElementById('container')?.appendChild(breadcrumbsUI);
10
-
11
- const traceWindow: Trace.Types.Timing.TraceWindowMicro = {
12
- min: Trace.Types.Timing.Micro(3),
13
- max: Trace.Types.Timing.Micro(9),
14
- range: Trace.Types.Timing.Micro(6),
15
- };
16
-
17
- const breadcrumb: Trace.Types.File.Breadcrumb = {
18
- window: traceWindow,
19
- child: null,
20
- };
21
-
22
- breadcrumbsUI.data = {
23
- initialBreadcrumb: breadcrumb,
24
- activeBreadcrumb: breadcrumb,
25
- };
@@ -1,20 +0,0 @@
1
- <!--
2
- Copyright 2020 The Chromium Authors
3
- Use of this source code is governed by a BSD-style license that can be
4
- found in the LICENSE file.
5
- -->
6
- <!DOCTYPE html>
7
- <html>
8
- <head>
9
- <meta charset="UTF-8" />
10
- <meta name="viewport" content="width=device-width" />
11
- <title>Breadcrumb example</title>
12
- </head>
13
- <body>
14
-
15
- <div id="container">
16
- </div>
17
-
18
- <script type="module" src="./nested-breadcrumbs-perf.js"></script>
19
- </body>
20
- </html>
@@ -1,36 +0,0 @@
1
- // Copyright 2023 The Chromium Authors
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
-
5
- import * as Trace from '../../../../../front_end/models/trace/trace.js';
6
- import * as TimelineComponents from '../../../../../front_end/panels/timeline/components/components.js';
7
-
8
- const breadcrumbsUI = new TimelineComponents.BreadcrumbsUI.BreadcrumbsUI();
9
- document.getElementById('container')?.appendChild(breadcrumbsUI);
10
-
11
- const traceWindow2: Trace.Types.Timing.TraceWindowMicro = {
12
- min: Trace.Types.Timing.Micro(4),
13
- max: Trace.Types.Timing.Micro(8),
14
- range: Trace.Types.Timing.Micro(4),
15
- };
16
-
17
- const traceWindow: Trace.Types.Timing.TraceWindowMicro = {
18
- min: Trace.Types.Timing.Micro(3),
19
- max: Trace.Types.Timing.Micro(9),
20
- range: Trace.Types.Timing.Micro(6),
21
- };
22
-
23
- const breadcrumb2: Trace.Types.File.Breadcrumb = {
24
- window: traceWindow2,
25
- child: null,
26
- };
27
-
28
- const breadcrumb: Trace.Types.File.Breadcrumb = {
29
- window: traceWindow,
30
- child: breadcrumb2,
31
- };
32
-
33
- breadcrumbsUI.data = {
34
- initialBreadcrumb: breadcrumb,
35
- activeBreadcrumb: breadcrumb,
36
- };
@@ -1,20 +0,0 @@
1
- <!--
2
- Copyright 2023 The Chromium Authors
3
- Use of this source code is governed by a BSD-style license that can be
4
- found in the LICENSE file.
5
- -->
6
- <!DOCTYPE html>
7
- <html>
8
-
9
- <head>
10
- <meta charset="UTF-8" />
11
- <meta name="viewport" content="width=device-width" />
12
- <title>Recorder: CreateRecordingView</title>
13
- </head>
14
-
15
- <body>
16
- <div id="container"></div>
17
- <script src="./basic.js" type="module"></script>
18
- </body>
19
-
20
- </html>
@@ -1,27 +0,0 @@
1
- // Copyright 2023 The Chromium Authors
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
-
5
- import * as ComponentHelpers from '../../../../../front_end/ui/components/helpers/helpers.js';
6
- import * as RecorderComponents from '../../../../panels/recorder/components/components.js';
7
- import * as FrontendHelpers from '../../../../testing/EnvironmentHelpers.js';
8
-
9
- await ComponentHelpers.ComponentServerSetup.setup();
10
- await FrontendHelpers.initializeGlobalVars();
11
- async function initializeGlobalActions(): Promise<void> {
12
- const UI = await import('../../../../../front_end/ui/legacy/legacy.js');
13
- const actionRegistry = UI.ActionRegistry.ActionRegistry.instance();
14
- UI.ShortcutRegistry.ShortcutRegistry.instance({
15
- forceNew: true,
16
- actionRegistry,
17
- });
18
- }
19
-
20
- await initializeGlobalActions();
21
-
22
- const component1 = new RecorderComponents.CreateRecordingView.CreateRecordingView();
23
- document.getElementById('container')?.appendChild(component1);
24
-
25
- const component2 = new RecorderComponents.CreateRecordingView.CreateRecordingView();
26
- document.getElementById('container')?.appendChild(component2);
27
- component2.shadowRoot?.querySelector('devtools-control-button')?.click();
@@ -1,48 +0,0 @@
1
- // Copyright 2014 The Chromium Authors
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
-
5
- import * as Common from '../../core/common/common.js';
6
-
7
- import {VBox} from './Widget.js';
8
-
9
- export class ThrottledWidget extends VBox {
10
- private readonly updateThrottler: Common.Throttler.Throttler;
11
- private updateWhenVisible: boolean;
12
- protected lastUpdatePromise: Promise<void> = Promise.resolve();
13
-
14
- constructor(useShadowDom?: boolean, timeout?: number) {
15
- super({useShadowDom});
16
- this.updateThrottler = new Common.Throttler.Throttler(timeout === undefined ? 100 : timeout);
17
- this.updateWhenVisible = false;
18
- }
19
-
20
- protected doUpdate(): Promise<void> {
21
- return Promise.resolve();
22
- }
23
-
24
- update(): void {
25
- this.updateWhenVisible = !this.isShowing();
26
- if (this.updateWhenVisible) {
27
- return;
28
- }
29
- this.lastUpdatePromise = this.updateThrottler.schedule(() => {
30
- if (this.isShowing()) {
31
- return this.doUpdate();
32
- }
33
- this.updateWhenVisible = true;
34
- return Promise.resolve();
35
- });
36
- }
37
-
38
- override get updateComplete(): Promise<boolean> {
39
- return this.updateThrottler.processCompleted?.then(result => Boolean(result)) || Promise.resolve(false);
40
- }
41
-
42
- override wasShown(): void {
43
- super.wasShown();
44
- if (this.updateWhenVisible) {
45
- this.update();
46
- }
47
- }
48
- }