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
@@ -836,12 +836,11 @@ export class AnimationGroup {
836
836
  readonly #id: string;
837
837
  #scrollNode: AnimationDOMNode|undefined;
838
838
  #animations: AnimationImpl[];
839
- #paused: boolean;
839
+ #paused = false;
840
840
  constructor(animationModel: AnimationModel, id: string, animations: AnimationImpl[]) {
841
841
  this.#animationModel = animationModel;
842
842
  this.#id = id;
843
843
  this.#animations = animations;
844
- this.#paused = false;
845
844
  }
846
845
 
847
846
  isScrollDriven(): boolean {
@@ -361,7 +361,7 @@ export class CSSMatchedStyles {
361
361
  inheritedResult.matchedCSSRules = cleanUserAgentPayload(inheritedResult.matchedCSSRules);
362
362
  }
363
363
 
364
- this.#environmentVariables = await this.cssModel().getEnvironmentVariales();
364
+ this.#environmentVariables = await this.cssModel().getEnvironmentVariables();
365
365
 
366
366
  this.#mainDOMCascade = await this.buildMainCascade(
367
367
  inlinePayload, attributesPayload, matchedPayload, inheritedPayload, animationStylesPayload,
@@ -450,7 +450,7 @@ export class CSSMatchedStyles {
450
450
  nodeCascades.push(new NodeCascade(this, nodeStyles, this.#node, false /* #isInherited */));
451
451
 
452
452
  // Walk the node structure and identify styles with inherited properties.
453
- let parentNode: (DOMNode|null) = this.#node.parentNode;
453
+ let parentNode: DOMNode|null = this.#node.parentNode;
454
454
  const traverseParentInFlatTree = async(node: DOMNode): Promise<DOMNode|null> => {
455
455
  if (node.hasAssignedSlot()) {
456
456
  return await node.assignedSlot?.deferredNode.resolvePromise() ?? null;
@@ -407,7 +407,7 @@ export class CSSModel extends SDKModel<EventTypes> {
407
407
  };
408
408
  }
409
409
 
410
- async getEnvironmentVariales(): Promise<Record<string, string>> {
410
+ async getEnvironmentVariables(): Promise<Record<string, string>> {
411
411
  const response = await this.agent.invoke_getEnvironmentVariables();
412
412
  if (response.getError()) {
413
413
  return {};
@@ -41,9 +41,9 @@ export class CSSProperty extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
41
41
  implicit: boolean;
42
42
  text: string|null|undefined;
43
43
  range: TextUtils.TextRange.TextRange|null;
44
- #active: boolean;
45
- #nameRange: TextUtils.TextRange.TextRange|null;
46
- #valueRange: TextUtils.TextRange.TextRange|null;
44
+ #active = true;
45
+ #nameRange: TextUtils.TextRange.TextRange|null = null;
46
+ #valueRange: TextUtils.TextRange.TextRange|null = null;
47
47
  #invalidString?: Common.UIString.LocalizedString;
48
48
  #longhandProperties: CSSProperty[] = [];
49
49
 
@@ -62,9 +62,6 @@ export class CSSProperty extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
62
62
  this.implicit = implicit; // A longhand, implicitly set by missing values of shorthand.
63
63
  this.text = text;
64
64
  this.range = range ? TextUtils.TextRange.TextRange.fromObject(range) : null;
65
- this.#active = true;
66
- this.#nameRange = null;
67
- this.#valueRange = null;
68
65
 
69
66
  if (longhandProperties && longhandProperties.length > 0) {
70
67
  for (const property of longhandProperties) {
@@ -14,14 +14,14 @@ import type {Target} from './Target.js';
14
14
  export class CSSStyleDeclaration {
15
15
  readonly #cssModel: CSSModel;
16
16
  parentRule: CSSRule|null;
17
- #allProperties!: CSSProperty[];
17
+ #allProperties: CSSProperty[] = [];
18
18
  styleSheetId?: Protocol.CSS.StyleSheetId;
19
- range!: TextUtils.TextRange.TextRange|null;
19
+ range: TextUtils.TextRange.TextRange|null = null;
20
20
  cssText?: string;
21
21
  #shorthandValues = new Map<string, string>();
22
22
  #shorthandIsImportant = new Set<string>();
23
23
  #activePropertyMap = new Map<string, CSSProperty>();
24
- #leadingProperties!: CSSProperty[]|null;
24
+ #leadingProperties: CSSProperty[]|null = null;
25
25
  type: Type;
26
26
  // For CSSStyles coming from animations,
27
27
  // This holds the name of the animation.
@@ -97,7 +97,7 @@ export class CSSStyleDeclaration {
97
97
  this.#computeInactiveProperties();
98
98
 
99
99
  // TODO(changhaohan): verify if this #activePropertyMap is still necessary, or if it is
100
- // providing different information against the activeness in allPropertiesInternal.
100
+ // providing different information against the activeness in #allProperties.
101
101
  this.#activePropertyMap = new Map();
102
102
  for (const property of this.#allProperties) {
103
103
  if (!property.activeInStyle()) {
@@ -1402,14 +1402,13 @@ export class Scope implements ScopeChainEntry {
1402
1402
  readonly #name: string|undefined;
1403
1403
  #ordinal: number;
1404
1404
  readonly #locationRange: LocationRange|null;
1405
- #object: RemoteObject|null;
1405
+ #object: RemoteObject|null = null;
1406
1406
  constructor(callFrame: CallFrame, ordinal: number) {
1407
1407
  this.#callFrame = callFrame;
1408
1408
  this.#payload = callFrame.getPayload().scopeChain[ordinal];
1409
1409
  this.#type = this.#payload.type;
1410
1410
  this.#name = this.#payload.name;
1411
1411
  this.#ordinal = ordinal;
1412
- this.#object = null;
1413
1412
 
1414
1413
  const start =
1415
1414
  this.#payload.startLocation ? Location.fromPayload(callFrame.debuggerModel, this.#payload.startLocation) : null;
@@ -8,7 +8,7 @@ import type * as Platform from '../platform/platform.js';
8
8
  import {UserVisibleError} from '../platform/platform.js';
9
9
 
10
10
  import type {
11
- HydratingDataPerTarget, RehydratingExecutionContext, RehydratingScript, RehydratingTarget} from
11
+ HydratingDataPerTarget, RehydratingExecutionContext, RehydratingResource, RehydratingScript, RehydratingTarget} from
12
12
  './RehydratingObject.js';
13
13
  import type {SourceMapV3} from './SourceMap.js';
14
14
  import type {TraceObject} from './TraceObject.js';
@@ -142,6 +142,7 @@ export class EnhancedTracesParser {
142
142
  #targets: RehydratingTarget[] = [];
143
143
  #executionContexts: RehydratingExecutionContext[] = [];
144
144
  #scripts: RehydratingScript[] = [];
145
+ #resources: RehydratingResource[] = [];
145
146
  static readonly enhancedTraceVersion: number = 1;
146
147
 
147
148
  constructor(trace: TraceObject) {
@@ -164,6 +165,10 @@ export class EnhancedTracesParser {
164
165
  if (frame.url === 'about:blank') {
165
166
  continue;
166
167
  }
168
+ if (!frame.isInPrimaryMainFrame) {
169
+ continue;
170
+ }
171
+
167
172
  const frameId = frame.frame as string as Protocol.Target.TargetID;
168
173
  if (!this.#targets.find(target => target.targetId === frameId)) {
169
174
  const frameType = frame.isOutermostMainFrame ? 'page' : 'iframe';
@@ -315,7 +320,10 @@ export class EnhancedTracesParser {
315
320
  this.resolveSourceMap(script);
316
321
  }
317
322
 
318
- return this.groupContextsAndScriptsUnderTarget(this.#targets, this.#executionContexts, this.#scripts);
323
+ this.#resources = this.#trace.metadata.resources ?? [];
324
+
325
+ return this.groupContextsAndScriptsUnderTarget(
326
+ this.#targets, this.#executionContexts, this.#scripts, this.#resources);
319
327
  }
320
328
 
321
329
  private resolveSourceMap(script: RehydratingScript): void {
@@ -407,8 +415,8 @@ export class EnhancedTracesParser {
407
415
  }
408
416
 
409
417
  private groupContextsAndScriptsUnderTarget(
410
- targets: RehydratingTarget[], executionContexts: RehydratingExecutionContext[],
411
- scripts: RehydratingScript[]): HydratingDataPerTarget[] {
418
+ targets: RehydratingTarget[], executionContexts: RehydratingExecutionContext[], scripts: RehydratingScript[],
419
+ resources: RehydratingResource[]): HydratingDataPerTarget[] {
412
420
  const data: HydratingDataPerTarget[] = [];
413
421
  const targetIds = new Set<Protocol.Target.TargetID>();
414
422
  const targetToExecutionContexts: Map<string, RehydratingExecutionContext[]> =
@@ -420,12 +428,15 @@ export class EnhancedTracesParser {
420
428
  const targetToScripts: Map<Protocol.Target.TargetID, RehydratingScript[]> =
421
429
  new Map<Protocol.Target.TargetID, RehydratingScript[]>();
422
430
  const orphanScripts: RehydratingScript[] = [];
431
+ const targetToResources: Map<Protocol.Target.TargetID, RehydratingResource[]> =
432
+ new Map<Protocol.Target.TargetID, RehydratingResource[]>();
423
433
 
424
434
  // Initialize all the mapping needed
425
435
  for (const target of targets) {
426
436
  targetIds.add(target.targetId);
427
437
  targetToExecutionContexts.set(target.targetId, []);
428
438
  targetToScripts.set(target.targetId, []);
439
+ targetToResources.set(target.targetId, []);
429
440
  }
430
441
 
431
442
  // Put all of the known execution contexts under respective targets
@@ -481,12 +492,20 @@ export class EnhancedTracesParser {
481
492
  }
482
493
  }
483
494
 
495
+ for (const resource of resources) {
496
+ const frameId = resource.frame as Protocol.Target.TargetID;
497
+ if (targetIds.has(frameId)) {
498
+ targetToResources.get(frameId)?.push(resource);
499
+ }
500
+ }
501
+
484
502
  // Now all the scripts are linked to a target, we want to make sure all the scripts are pointing to a valid
485
503
  // execution context. If not, we will create an artificial execution context for the script
486
504
  for (const target of targets) {
487
505
  const targetId = target.targetId;
488
506
  const executionContexts = targetToExecutionContexts.get(targetId) || [];
489
507
  const scripts = targetToScripts.get(targetId) || [];
508
+ const resources = targetToResources.get(targetId) || [];
490
509
  for (const script of scripts) {
491
510
  if (!executionContexts.find(context => context.id === script.executionContextId)) {
492
511
  const artificialContext: RehydratingExecutionContext = {
@@ -507,7 +526,7 @@ export class EnhancedTracesParser {
507
526
  }
508
527
 
509
528
  // Finally, we put all the information into the data structure we want to return as.
510
- data.push({target, executionContexts, scripts});
529
+ data.push({target, executionContexts, scripts, resources});
511
530
  }
512
531
 
513
532
  return data;
@@ -32,8 +32,8 @@ import * as Root from '../root/root.js';
32
32
 
33
33
  import * as EnhancedTraces from './EnhancedTracesParser.js';
34
34
  import type {
35
- ProtocolMessage, RehydratingExecutionContext, RehydratingScript, RehydratingTarget, ServerMessage} from
36
- './RehydratingObject.js';
35
+ ProtocolMessage, RehydratingExecutionContext, RehydratingResource, RehydratingScript, RehydratingTarget,
36
+ ServerMessage} from './RehydratingObject.js';
37
37
  import {TraceObject} from './TraceObject.js';
38
38
 
39
39
  const UIStrings = {
@@ -157,6 +157,7 @@ export class RehydratingConnection implements ProtocolClient.ConnectionTransport
157
157
  const target = hydratingDataPerTarget.target;
158
158
  const executionContexts = hydratingDataPerTarget.executionContexts;
159
159
  const scripts = hydratingDataPerTarget.scripts;
160
+ const resources = hydratingDataPerTarget.resources;
160
161
  this.postToFrontend({
161
162
  method: 'Target.targetCreated',
162
163
  params: {
@@ -172,7 +173,7 @@ export class RehydratingConnection implements ProtocolClient.ConnectionTransport
172
173
  });
173
174
 
174
175
  sessionId += 1;
175
- const session = new RehydratingSession(sessionId, target, executionContexts, scripts, this);
176
+ const session = new RehydratingSession(sessionId, target, executionContexts, scripts, resources, this);
176
177
  this.sessions.set(sessionId, session);
177
178
  session.declareSessionAttachedToTarget();
178
179
  }
@@ -267,15 +268,17 @@ export class RehydratingSession extends RehydratingSessionBase {
267
268
  target: RehydratingTarget;
268
269
  executionContexts: RehydratingExecutionContext[] = [];
269
270
  scripts: RehydratingScript[] = [];
271
+ resources: RehydratingResource[] = [];
270
272
 
271
273
  constructor(
272
274
  sessionId: number, target: RehydratingTarget, executionContexts: RehydratingExecutionContext[],
273
- scripts: RehydratingScript[], connection: RehydratingConnectionInterface) {
275
+ scripts: RehydratingScript[], resources: RehydratingResource[], connection: RehydratingConnectionInterface) {
274
276
  super(connection);
275
277
  this.sessionId = sessionId;
276
278
  this.target = target;
277
279
  this.executionContexts = executionContexts;
278
280
  this.scripts = scripts;
281
+ this.resources = resources;
279
282
  }
280
283
 
281
284
  override sendMessageToFrontend(payload: ServerMessage, attachSessionId = true): void {
@@ -294,12 +297,31 @@ export class RehydratingSession extends RehydratingSessionBase {
294
297
  case 'Debugger.enable':
295
298
  this.handleDebuggerEnable(data.id);
296
299
  break;
300
+ case 'CSS.enable':
301
+ this.sendMessageToFrontend({
302
+ id: data.id,
303
+ result: {},
304
+ });
305
+ break;
297
306
  case 'Debugger.getScriptSource':
298
307
  if (data.params) {
299
308
  const params = data.params as Protocol.Debugger.GetScriptSourceRequest;
300
309
  this.handleDebuggerGetScriptSource(data.id, params.scriptId);
301
310
  }
302
311
  break;
312
+ case 'Page.getResourceTree':
313
+ this.handleGetResourceTree(data.id);
314
+ break;
315
+ case 'Page.getResourceContent': {
316
+ const request = data.params as unknown as Protocol.Page.GetResourceContentRequest;
317
+ this.handleGetResourceContent(request.frameId, request.url, data.id);
318
+ break;
319
+ }
320
+ case 'CSS.getStyleSheetText': {
321
+ const request = data.params as unknown as Protocol.CSS.GetStyleSheetTextRequest;
322
+ this.handleGetStyleSheetText(request.styleSheetId, data.id);
323
+ break;
324
+ }
303
325
  default:
304
326
  this.sendMessageToFrontend({
305
327
  id: data.id,
@@ -368,7 +390,22 @@ export class RehydratingSession extends RehydratingSessionBase {
368
390
  // script parsed event to communicate the current script state and respond with a mock
369
391
  // debugger id.
370
392
  private handleDebuggerEnable(id: number): void {
393
+ const htmlResourceUrls = new Set(this.resources.filter(r => r.mimeType === 'text/html').map(r => r.url));
394
+
371
395
  for (const script of this.scripts) {
396
+ // Handle inline scripts.
397
+ if (htmlResourceUrls.has(script.url)) {
398
+ script.embedderName = script.url;
399
+ // We don't have the actual embedded offset from this trace event. Non-zero
400
+ // values are important though: that is what `Script.isInlineScript()`
401
+ // checks. Otherwise these scripts would try to show individually within the
402
+ // Sources panel.
403
+ script.startColumn = 1;
404
+ script.startLine = 1;
405
+ script.endColumn = 1;
406
+ script.endLine = 1;
407
+ }
408
+
372
409
  this.sendMessageToFrontend({
373
410
  method: 'Debugger.scriptParsed',
374
411
  params: script,
@@ -383,4 +420,75 @@ export class RehydratingSession extends RehydratingSessionBase {
383
420
  },
384
421
  });
385
422
  }
423
+
424
+ private handleGetResourceTree(id: number): void {
425
+ const resources = this.resources.filter(r => r.mimeType === 'text/html' || r.mimeType === 'text/css');
426
+ if (!resources.length) {
427
+ return;
428
+ }
429
+
430
+ const frameTree = {
431
+ frame: {
432
+ id: this.target.targetId,
433
+ url: this.target.url,
434
+ },
435
+ childFrames: [],
436
+ resources: resources.map(r => ({
437
+ url: r.url,
438
+ type: r.mimeType === 'text/html' ? 'Document' : 'Stylesheet',
439
+ mimeType: r.mimeType,
440
+ contentSize: r.content.length,
441
+ })),
442
+ };
443
+
444
+ this.sendMessageToFrontend({
445
+ id,
446
+ result: {
447
+ frameTree,
448
+ },
449
+ });
450
+
451
+ const stylesheets = this.resources.filter(r => r.mimeType === 'text/css');
452
+ for (const stylesheet of stylesheets) {
453
+ this.sendMessageToFrontend({
454
+ method: 'CSS.styleSheetAdded',
455
+ params: {
456
+ header: {
457
+ styleSheetId: `sheet.${stylesheet.frame}.${stylesheet.url}`,
458
+ frameId: stylesheet.frame,
459
+ sourceURL: stylesheet.url,
460
+ },
461
+ },
462
+ });
463
+ }
464
+ }
465
+
466
+ private handleGetResourceContent(frame: string, url: string, id: number): void {
467
+ const resource = this.resources.find(r => r.frame === frame && r.url === url);
468
+ if (!resource) {
469
+ return;
470
+ }
471
+
472
+ this.sendMessageToFrontend({
473
+ id,
474
+ result: {
475
+ content: resource.content,
476
+ base64Encoded: false,
477
+ },
478
+ });
479
+ }
480
+
481
+ private handleGetStyleSheetText(stylesheetId: string, id: number): void {
482
+ const resource = this.resources.find(r => `sheet.${r.frame}.${r.url}` === stylesheetId);
483
+ if (!resource) {
484
+ return;
485
+ }
486
+
487
+ this.sendMessageToFrontend({
488
+ id,
489
+ result: {
490
+ text: resource.content,
491
+ },
492
+ });
493
+ }
386
494
  }
@@ -14,6 +14,13 @@ export interface RehydratingScript extends Protocol.Debugger.ScriptParsedEvent {
14
14
  pid: number;
15
15
  }
16
16
 
17
+ export interface RehydratingResource {
18
+ url: string;
19
+ content: string;
20
+ frame: string;
21
+ mimeType: string;
22
+ }
23
+
17
24
  export interface RehydratingExecutionContextAuxData {
18
25
  frameId?: Protocol.Page.FrameId;
19
26
  isDefault?: boolean;
@@ -39,6 +46,7 @@ export interface HydratingDataPerTarget {
39
46
  target: RehydratingTarget;
40
47
  executionContexts: RehydratingExecutionContext[];
41
48
  scripts: RehydratingScript[];
49
+ resources: RehydratingResource[];
42
50
  }
43
51
 
44
52
  export interface ProtocolMessage {
@@ -128,7 +128,7 @@ export class SourceMap {
128
128
  readonly #compiledURL: Platform.DevToolsPath.UrlString;
129
129
  readonly #sourceMappingURL: Platform.DevToolsPath.UrlString;
130
130
  readonly #baseURL: Platform.DevToolsPath.UrlString;
131
- #mappings: SourceMapEntry[]|null;
131
+ #mappings: SourceMapEntry[]|null = null;
132
132
 
133
133
  readonly #sourceInfos: SourceInfo[] = [];
134
134
  readonly #sourceInfoByURL = new Map<Platform.DevToolsPath.UrlString, SourceInfo>();
@@ -154,7 +154,6 @@ export class SourceMap {
154
154
  this.#baseURL = (Common.ParsedURL.schemeIs(sourceMappingURL, 'data:')) ? compiledURL : sourceMappingURL;
155
155
  this.#debugId = 'debugId' in payload ? (payload.debugId as DebugId | undefined) : undefined;
156
156
 
157
- this.#mappings = null;
158
157
  if ('sections' in this.#json) {
159
158
  if (this.#json.sections.find(section => 'url' in section)) {
160
159
  Common.Console.Console.instance().warn(
@@ -435,7 +434,7 @@ export class SourceMap {
435
434
  #computeReverseMappings(mappings: SourceMapEntry[]): void {
436
435
  const reverseMappingsPerUrl = new Map<Platform.DevToolsPath.UrlString, number[]>();
437
436
  for (let i = 0; i < mappings.length; i++) {
438
- const entryUrl = mappings[i].sourceURL;
437
+ const entryUrl = mappings[i]?.sourceURL;
439
438
  if (!entryUrl) {
440
439
  continue;
441
440
  }
@@ -7,13 +7,17 @@ import type * as Platform from '../../core/platform/platform.js';
7
7
  import type * as Protocol from '../../generated/protocol.js';
8
8
 
9
9
  import type {NetworkRequest} from './NetworkRequest.js';
10
+ import type {RehydratingResource} from './RehydratingObject.js';
10
11
  import {ResourceTreeModel} from './ResourceTreeModel.js';
11
12
  import type {SourceMapV3} from './SourceMap.js';
12
13
 
13
14
  /** A thin wrapper class, mostly to enable instanceof-based revealing of traces to open in Timeline. **/
14
15
  export class TraceObject {
15
16
  readonly traceEvents: Protocol.Tracing.DataCollectedEvent['value'];
16
- readonly metadata: {sourceMaps?: Array<{sourceMapUrl: string, sourceMap: SourceMapV3, url: string}>};
17
+ readonly metadata: {
18
+ sourceMaps?: Array<{sourceMapUrl: string, sourceMap: SourceMapV3, url: string}>,
19
+ resources?: RehydratingResource[],
20
+ };
17
21
  constructor(payload: Protocol.Tracing.DataCollectedEvent['value']|TraceObject, meta?: Object) {
18
22
  if (Array.isArray(payload)) {
19
23
  this.traceEvents = payload;
@@ -7,6 +7,7 @@ import type * as Common from '../../core/common/common.js';
7
7
  import * as Host from '../../core/host/host.js';
8
8
  import * as i18n from '../../core/i18n/i18n.js';
9
9
  import * as Buttons from '../../ui/components/buttons/buttons.js';
10
+ import * as uiI18n from '../../ui/i18n/i18n.js';
10
11
  import * as UI from '../../ui/legacy/legacy.js';
11
12
 
12
13
  import nodeConnectionsPanelStyles from './nodeConnectionsPanel.css.js';
@@ -97,7 +98,7 @@ export class NodeConnectionsView extends UI.Widget.VBox implements UI.ListWidget
97
98
  'https://nodejs.org/en/docs/inspector/', i18nString(UIStrings.nodejsDebuggingGuide), undefined, undefined,
98
99
  'node-js-debugging');
99
100
  networkDiscoveryFooter.appendChild(
100
- i18n.i18n.getFormatLocalizedString(str_, UIStrings.specifyNetworkEndpointAnd, {PH1: documentationLink}));
101
+ uiI18n.getFormatLocalizedString(str_, UIStrings.specifyNetworkEndpointAnd, {PH1: documentationLink}));
101
102
 
102
103
  this.#list = new UI.ListWidget.ListWidget(this);
103
104
  this.#list.registerRequiredCSS(nodeConnectionsPanelStyles);
@@ -1340,8 +1340,7 @@ inspectorBackend.registerType("SystemInfo.GPUDevice", [{"name": "vendorId", "typ
1340
1340
  inspectorBackend.registerType("SystemInfo.Size", [{"name": "width", "type": "number", "optional": false, "description": "Width in pixels.", "typeRef": null}, {"name": "height", "type": "number", "optional": false, "description": "Height in pixels.", "typeRef": null}]);
1341
1341
  inspectorBackend.registerType("SystemInfo.VideoDecodeAcceleratorCapability", [{"name": "profile", "type": "string", "optional": false, "description": "Video codec profile that is supported, e.g. VP9 Profile 2.", "typeRef": null}, {"name": "maxResolution", "type": "object", "optional": false, "description": "Maximum video dimensions in pixels supported for this |profile|.", "typeRef": "SystemInfo.Size"}, {"name": "minResolution", "type": "object", "optional": false, "description": "Minimum video dimensions in pixels supported for this |profile|.", "typeRef": "SystemInfo.Size"}]);
1342
1342
  inspectorBackend.registerType("SystemInfo.VideoEncodeAcceleratorCapability", [{"name": "profile", "type": "string", "optional": false, "description": "Video codec profile that is supported, e.g H264 Main.", "typeRef": null}, {"name": "maxResolution", "type": "object", "optional": false, "description": "Maximum video dimensions in pixels supported for this |profile|.", "typeRef": "SystemInfo.Size"}, {"name": "maxFramerateNumerator", "type": "number", "optional": false, "description": "Maximum encoding framerate in frames per second supported for this |profile|, as fraction's numerator and denominator, e.g. 24/1 fps, 24000/1001 fps, etc.", "typeRef": null}, {"name": "maxFramerateDenominator", "type": "number", "optional": false, "description": "", "typeRef": null}]);
1343
- inspectorBackend.registerType("SystemInfo.ImageDecodeAcceleratorCapability", [{"name": "imageType", "type": "string", "optional": false, "description": "Image coded, e.g. Jpeg.", "typeRef": "SystemInfo.ImageType"}, {"name": "maxDimensions", "type": "object", "optional": false, "description": "Maximum supported dimensions of the image in pixels.", "typeRef": "SystemInfo.Size"}, {"name": "minDimensions", "type": "object", "optional": false, "description": "Minimum supported dimensions of the image in pixels.", "typeRef": "SystemInfo.Size"}, {"name": "subsamplings", "type": "array", "optional": false, "description": "Optional array of supported subsampling formats, e.g. 4:2:0, if known.", "typeRef": "SystemInfo.SubsamplingFormat"}]);
1344
- inspectorBackend.registerType("SystemInfo.GPUInfo", [{"name": "devices", "type": "array", "optional": false, "description": "The graphics devices on the system. Element 0 is the primary GPU.", "typeRef": "SystemInfo.GPUDevice"}, {"name": "auxAttributes", "type": "object", "optional": true, "description": "An optional dictionary of additional GPU related attributes.", "typeRef": null}, {"name": "featureStatus", "type": "object", "optional": true, "description": "An optional dictionary of graphics features and their status.", "typeRef": null}, {"name": "driverBugWorkarounds", "type": "array", "optional": false, "description": "An optional array of GPU driver bug workarounds.", "typeRef": "string"}, {"name": "videoDecoding", "type": "array", "optional": false, "description": "Supported accelerated video decoding capabilities.", "typeRef": "SystemInfo.VideoDecodeAcceleratorCapability"}, {"name": "videoEncoding", "type": "array", "optional": false, "description": "Supported accelerated video encoding capabilities.", "typeRef": "SystemInfo.VideoEncodeAcceleratorCapability"}, {"name": "imageDecoding", "type": "array", "optional": false, "description": "Supported accelerated image decoding capabilities.", "typeRef": "SystemInfo.ImageDecodeAcceleratorCapability"}]);
1343
+ inspectorBackend.registerType("SystemInfo.GPUInfo", [{"name": "devices", "type": "array", "optional": false, "description": "The graphics devices on the system. Element 0 is the primary GPU.", "typeRef": "SystemInfo.GPUDevice"}, {"name": "auxAttributes", "type": "object", "optional": true, "description": "An optional dictionary of additional GPU related attributes.", "typeRef": null}, {"name": "featureStatus", "type": "object", "optional": true, "description": "An optional dictionary of graphics features and their status.", "typeRef": null}, {"name": "driverBugWorkarounds", "type": "array", "optional": false, "description": "An optional array of GPU driver bug workarounds.", "typeRef": "string"}, {"name": "videoDecoding", "type": "array", "optional": false, "description": "Supported accelerated video decoding capabilities.", "typeRef": "SystemInfo.VideoDecodeAcceleratorCapability"}, {"name": "videoEncoding", "type": "array", "optional": false, "description": "Supported accelerated video encoding capabilities.", "typeRef": "SystemInfo.VideoEncodeAcceleratorCapability"}]);
1345
1344
  inspectorBackend.registerType("SystemInfo.ProcessInfo", [{"name": "type", "type": "string", "optional": false, "description": "Specifies process type.", "typeRef": null}, {"name": "id", "type": "number", "optional": false, "description": "Specifies process id.", "typeRef": null}, {"name": "cpuTime", "type": "number", "optional": false, "description": "Specifies cumulative CPU usage in seconds across all threads of the process since the process start.", "typeRef": null}]);
1346
1345
 
1347
1346
  // Target.
@@ -640,6 +640,7 @@ export const generatedProperties = [
640
640
  "row-rule-color",
641
641
  "row-rule-outset",
642
642
  "row-rule-style",
643
+ "row-rule-visibility-items",
643
644
  "row-rule-width",
644
645
  "ruby-align",
645
646
  "ruby-overhang",
@@ -3726,6 +3727,16 @@ export const generatedProperties = [
3726
3727
  ],
3727
3728
  "name": "row-rule-style"
3728
3729
  },
3730
+ {
3731
+ "inherited": false,
3732
+ "keywords": [
3733
+ "all",
3734
+ "around",
3735
+ "between",
3736
+ "none"
3737
+ ],
3738
+ "name": "row-rule-visibility-items"
3739
+ },
3729
3740
  {
3730
3741
  "keywords": [
3731
3742
  "thin",
@@ -6510,6 +6521,14 @@ export const generatedPropertyValues = {
6510
6521
  "double"
6511
6522
  ]
6512
6523
  },
6524
+ "row-rule-visibility-items": {
6525
+ "values": [
6526
+ "all",
6527
+ "around",
6528
+ "between",
6529
+ "none"
6530
+ ]
6531
+ },
6513
6532
  "row-rule-width": {
6514
6533
  "values": [
6515
6534
  "thin",
@@ -18029,29 +18029,6 @@ export namespace SystemInfo {
18029
18029
  Unknown = 'unknown',
18030
18030
  }
18031
18031
 
18032
- /**
18033
- * Describes a supported image decoding profile with its associated minimum and
18034
- * maximum resolutions and subsampling.
18035
- */
18036
- export interface ImageDecodeAcceleratorCapability {
18037
- /**
18038
- * Image coded, e.g. Jpeg.
18039
- */
18040
- imageType: ImageType;
18041
- /**
18042
- * Maximum supported dimensions of the image in pixels.
18043
- */
18044
- maxDimensions: Size;
18045
- /**
18046
- * Minimum supported dimensions of the image in pixels.
18047
- */
18048
- minDimensions: Size;
18049
- /**
18050
- * Optional array of supported subsampling formats, e.g. 4:2:0, if known.
18051
- */
18052
- subsamplings: SubsamplingFormat[];
18053
- }
18054
-
18055
18032
  /**
18056
18033
  * Provides information about the GPU(s) on the system.
18057
18034
  */
@@ -18080,10 +18057,6 @@ export namespace SystemInfo {
18080
18057
  * Supported accelerated video encoding capabilities.
18081
18058
  */
18082
18059
  videoEncoding: VideoEncodeAcceleratorCapability[];
18083
- /**
18084
- * Supported accelerated image decoding capabilities.
18085
- */
18086
- imageDecoding: ImageDecodeAcceleratorCapability[];
18087
18060
  }
18088
18061
 
18089
18062
  /**
@@ -7971,7 +7971,7 @@ export const NativeFunctions = [
7971
7971
  },
7972
7972
  {
7973
7973
  name: "createContext",
7974
- signatures: [["?options"],["gpuDevice"]]
7974
+ signatures: [["?options"]]
7975
7975
  },
7976
7976
  {
7977
7977
  name: "MLGraphBuilder",
@@ -219,6 +219,8 @@ export interface MetaData {
219
219
  cruxFieldData?: CrUXManager.PageResult[];
220
220
  /** Currently only stores JS maps, not CSS. This never stores data url source maps. */
221
221
  sourceMaps?: MetadataSourceMap[];
222
+ /** Currently only stores HTML and CSS resources. */
223
+ resources?: MetadataResource[];
222
224
  visualTrackConfig?: PersistedTraceVisualConfig;
223
225
  hostDPR?: number;
224
226
  }
@@ -230,6 +232,13 @@ export interface MetadataSourceMap {
230
232
  sourceMap: SDK.SourceMap.SourceMapV3;
231
233
  }
232
234
 
235
+ export interface MetadataResource {
236
+ url: string;
237
+ frame: string;
238
+ content: string;
239
+ mimeType: string;
240
+ }
241
+
233
242
  export type Contents = TraceFile|Event[];
234
243
 
235
244
  export function traceEventKeyToValues(key: SerializableKey): SerializableKeyValues {