chrome-devtools-frontend 1.0.1555430 → 1.0.1558690

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 (232) hide show
  1. package/front_end/core/common/Object.ts +5 -1
  2. package/front_end/core/host/ResourceLoader.ts +1 -1
  3. package/front_end/core/host/UserMetrics.ts +3 -1
  4. package/front_end/core/sdk/DOMModel.ts +7 -0
  5. package/front_end/core/sdk/NetworkManager.ts +0 -7
  6. package/front_end/core/sdk/SourceMap.ts +16 -2
  7. package/front_end/core/sdk/SourceMapManager.ts +1 -1
  8. package/front_end/core/sdk/SourceMapScopesInfo.ts +11 -4
  9. package/front_end/entrypoints/formatter_worker/FormatterActions.ts +3 -0
  10. package/front_end/entrypoints/formatter_worker/ScopeParser.ts +119 -8
  11. package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
  12. package/front_end/entrypoints/main/GlobalAiButton.ts +5 -1
  13. package/front_end/generated/Deprecation.ts +0 -7
  14. package/front_end/generated/InspectorBackendCommands.ts +4 -4
  15. package/front_end/generated/protocol.ts +9 -1
  16. package/front_end/models/ai_assistance/AiConversation.ts +71 -10
  17. package/front_end/models/ai_assistance/ArtifactsManager.ts +67 -0
  18. package/front_end/models/ai_assistance/ConversationHandler.ts +3 -2
  19. package/front_end/models/ai_assistance/agents/AiAgent.ts +17 -27
  20. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +151 -3
  21. package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
  22. package/front_end/models/ai_assistance/ai_assistance.ts +2 -0
  23. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +0 -2
  24. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +3 -3
  25. package/front_end/models/annotations/AnnotationRepository.ts +2 -2
  26. package/front_end/models/bindings/CompilerScriptMapping.ts +7 -6
  27. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +4 -4
  28. package/front_end/models/greendev/Prototypes.ts +56 -0
  29. package/front_end/models/greendev/README.md +5 -0
  30. package/front_end/models/greendev/greendev.ts +5 -0
  31. package/front_end/models/javascript_metadata/NativeFunctions.js +2 -2
  32. package/front_end/models/stack_trace/StackTraceImpl.ts +5 -3
  33. package/front_end/models/stack_trace/StackTraceModel.ts +53 -40
  34. package/front_end/models/trace/EventsSerializer.ts +8 -2
  35. package/front_end/models/trace/extras/TraceTree.ts +4 -2
  36. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
  37. package/front_end/models/trace/insights/LCPDiscovery.ts +0 -2
  38. package/front_end/models/trace/types/TraceEvents.ts +0 -1
  39. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +96 -91
  40. package/front_end/panels/ai_assistance/aiAssistancePanel.css +16 -0
  41. package/front_end/panels/ai_assistance/components/ArtifactsViewer.ts +109 -7
  42. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -2
  43. package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +7 -8
  44. package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +15 -8
  45. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +9 -9
  46. package/front_end/panels/ai_assistance/components/artifactsViewer.css +6 -1
  47. package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +5 -6
  48. package/front_end/panels/application/AppManifestView.ts +360 -391
  49. package/front_end/panels/application/ApplicationPanelSidebar.ts +24 -57
  50. package/front_end/panels/application/CookieItemsView.ts +1 -0
  51. package/front_end/panels/application/OpenedWindowDetailsView.ts +2 -0
  52. package/front_end/panels/application/ServiceWorkersView.ts +2 -0
  53. package/front_end/panels/application/SharedStorageTreeElement.ts +3 -0
  54. package/front_end/panels/application/StorageView.ts +1 -0
  55. package/front_end/panels/application/appManifestView.css +49 -1
  56. package/front_end/panels/application/components/ProtocolHandlersView.ts +2 -2
  57. package/front_end/panels/console/ConsoleViewMessage.ts +4 -3
  58. package/front_end/panels/elements/ElementsTreeElement.ts +30 -1
  59. package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
  60. package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +7 -1
  61. package/front_end/panels/elements/components/AdornerManager.ts +8 -0
  62. package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
  63. package/front_end/panels/issues/AffectedResourcesView.ts +0 -1
  64. package/front_end/panels/lighthouse/LighthousePanel.ts +10 -0
  65. package/front_end/panels/lighthouse/lighthousePanel.css +46 -3
  66. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +4 -8
  67. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +148 -97
  68. package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +1 -1
  69. package/front_end/panels/linear_memory_inspector/components/linearMemoryValueInterpreter.css +37 -35
  70. package/front_end/panels/network/NetworkLogViewColumns.ts +9 -9
  71. package/front_end/panels/network/RequestCookiesView.ts +125 -141
  72. package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
  73. package/front_end/panels/network/requestCookiesView.css +22 -20
  74. package/front_end/panels/recorder/components/RecordingView.ts +3 -3
  75. package/front_end/panels/recorder/components/StepView.ts +2 -1
  76. package/front_end/panels/settings/SettingsScreen.ts +133 -1
  77. package/front_end/panels/settings/keybindsSettingsTab.css +4 -0
  78. package/front_end/panels/settings/settings-meta.ts +24 -0
  79. package/front_end/panels/settings/settingsScreen.css +4 -0
  80. package/front_end/panels/sources/CallStackSidebarPane.ts +7 -3
  81. package/front_end/panels/sources/DebuggerPausedMessage.ts +125 -90
  82. package/front_end/panels/sources/SourcesPanel.ts +10 -7
  83. package/front_end/panels/sources/UISourceCodeFrame.ts +3 -17
  84. package/front_end/panels/sources/debuggerPausedMessage.css +8 -0
  85. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -1
  86. package/front_end/panels/timeline/components/sidebarInsightsTab.css +2 -0
  87. package/front_end/third_party/acorn/estree-legacy.d.ts +4 -0
  88. package/front_end/third_party/chromium/README.chromium +1 -1
  89. package/front_end/third_party/puppeteer/README.chromium +2 -2
  90. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +12 -0
  91. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  92. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/CDPSession.d.ts.map +1 -1
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/CDPSession.js.map +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +14 -2
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +3 -1
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +6 -0
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts +0 -1
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +0 -20
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +3 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +10 -14
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -0
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Connection.d.ts.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +3 -1
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +12 -0
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts +1 -0
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js +22 -0
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +3 -1
  128. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  129. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +9 -2
  130. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +21 -7
  132. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.d.ts.map +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  135. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  136. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  137. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  139. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  140. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +26 -0
  142. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +86 -20
  143. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +12 -0
  144. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  146. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/CDPSession.d.ts.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/CDPSession.js.map +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
  152. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +14 -2
  153. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  155. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +3 -1
  156. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  157. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +6 -0
  158. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  159. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts +0 -1
  160. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  161. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +0 -20
  162. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
  163. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +3 -1
  164. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  165. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +11 -15
  166. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  167. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
  168. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  169. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -0
  170. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  171. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Connection.d.ts.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +3 -1
  173. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +12 -0
  175. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts +1 -0
  177. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js +22 -0
  179. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js.map +1 -1
  180. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +3 -1
  181. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  182. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +9 -2
  183. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  184. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +21 -7
  185. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
  186. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts.map +1 -1
  187. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  188. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  189. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  192. package/front_end/third_party/puppeteer/package/lib/types.d.ts +26 -0
  193. package/front_end/third_party/puppeteer/package/package.json +2 -2
  194. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +18 -0
  195. package/front_end/third_party/puppeteer/package/src/api/CDPSession.ts +1 -2
  196. package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +2 -4
  197. package/front_end/third_party/puppeteer/package/src/api/Frame.ts +2 -4
  198. package/front_end/third_party/puppeteer/package/src/api/Page.ts +18 -6
  199. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +13 -0
  200. package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +0 -33
  201. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +14 -28
  202. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +19 -0
  203. package/front_end/third_party/puppeteer/package/src/bidi/core/Connection.ts +3 -2
  204. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +19 -0
  205. package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +30 -0
  206. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +15 -6
  207. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +29 -10
  208. package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +3 -3
  209. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  210. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  211. package/front_end/ui/components/icon_button/iconButton.css +3 -1
  212. package/front_end/ui/components/report_view/ReportView.docs.ts +37 -0
  213. package/front_end/ui/components/report_view/ReportView.ts +12 -6
  214. package/front_end/ui/components/report_view/report.css +16 -0
  215. package/front_end/ui/components/settings/SettingCheckbox.ts +1 -1
  216. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +135 -7
  217. package/front_end/ui/components/text_editor/config.ts +6 -6
  218. package/front_end/ui/legacy/ContextMenu.ts +11 -2
  219. package/front_end/ui/legacy/Floaty.ts +5 -9
  220. package/front_end/ui/legacy/InspectorView.ts +2 -1
  221. package/front_end/ui/legacy/ReportView.ts +5 -4
  222. package/front_end/ui/legacy/TextPrompt.ts +1 -1
  223. package/front_end/ui/legacy/Toolbar.ts +4 -0
  224. package/front_end/ui/legacy/UIUtils.ts +0 -2
  225. package/front_end/ui/legacy/Widget.ts +7 -0
  226. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +18 -3
  227. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +3 -3
  228. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +6 -0
  229. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +0 -1
  230. package/front_end/ui/legacy/reportView.css +0 -24
  231. package/front_end/ui/visual_logging/KnownContextValues.ts +7 -0
  232. package/package.json +1 -1
@@ -496,7 +496,7 @@ export class DebuggerWorkspaceBinding implements SDK.TargetManager.SDKModelObser
496
496
  const modelData =
497
497
  this.#debuggerModelToData.get(target.model(SDK.DebuggerModel.DebuggerModel) as SDK.DebuggerModel.DebuggerModel);
498
498
  if (modelData) {
499
- modelData.translateRawFramesStep(rawFrames, translatedFrames);
499
+ await modelData.translateRawFramesStep(rawFrames, translatedFrames);
500
500
  return;
501
501
  }
502
502
 
@@ -609,10 +609,10 @@ class ModelData {
609
609
  return scope;
610
610
  }
611
611
 
612
- translateRawFramesStep(
612
+ async translateRawFramesStep(
613
613
  rawFrames: StackTraceImpl.Trie.RawFrame[],
614
- translatedFrames: Awaited<ReturnType<StackTraceImpl.StackTraceModel.TranslateRawFrames>>): void {
615
- if (!this.compilerMapping.translateRawFramesStep(rawFrames, translatedFrames)) {
614
+ translatedFrames: Awaited<ReturnType<StackTraceImpl.StackTraceModel.TranslateRawFrames>>): Promise<void> {
615
+ if (!await this.compilerMapping.translateRawFramesStep(rawFrames, translatedFrames)) {
616
616
  this.#defaultTranslateRawFramesStep(rawFrames, translatedFrames);
617
617
  }
618
618
  }
@@ -0,0 +1,56 @@
1
+ // Copyright 2025 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
+ import * as Root from '../../core/root/root.js';
7
+
8
+ let instance: Prototypes|null = null;
9
+
10
+ export interface GreenDevSettings {
11
+ inDevToolsFloaty: Common.Settings.Setting<boolean>;
12
+ inlineWidgets: Common.Settings.Setting<boolean>;
13
+ artifactViewer: Common.Settings.Setting<boolean>;
14
+ aiAnnotations: Common.Settings.Setting<boolean>;
15
+ }
16
+
17
+ export class Prototypes {
18
+ private constructor() {
19
+ }
20
+
21
+ static instance(): Prototypes {
22
+ if (instance) {
23
+ return instance;
24
+ }
25
+ instance = new Prototypes();
26
+ return instance;
27
+ }
28
+
29
+ /**
30
+ * Returns true if the specific setting is turned on AND the GreenDev flag is enabled
31
+ */
32
+ isEnabled(setting: keyof GreenDevSettings): boolean {
33
+ const greendevFlagEnabled = Boolean(Root.Runtime.hostConfig.devToolsGreenDevUi?.enabled);
34
+
35
+ return greendevFlagEnabled && this.settings()[setting].get();
36
+ }
37
+
38
+ settings(): Readonly<GreenDevSettings> {
39
+ const settings = Common.Settings.Settings.instance();
40
+ const inDevToolsFloaty =
41
+ settings.createSetting('greendev-in-devtools-floaty-enabled', false, Common.Settings.SettingStorageType.LOCAL);
42
+
43
+ const inlineWidgets =
44
+ settings.createSetting('greendev-inline-widgets-enabled', false, Common.Settings.SettingStorageType.LOCAL);
45
+
46
+ const aiAnnotations = settings.createSetting(
47
+ 'greendev-ai-annotations-enabled',
48
+ false,
49
+ Common.Settings.SettingStorageType.LOCAL,
50
+ );
51
+
52
+ const artifactViewer =
53
+ settings.createSetting('greendev-artifact-viewer-enabled', false, Common.Settings.SettingStorageType.LOCAL);
54
+ return {inDevToolsFloaty, inlineWidgets, aiAnnotations, artifactViewer};
55
+ }
56
+ }
@@ -0,0 +1,5 @@
1
+ # GreenDev Model
2
+
3
+ As part of GreenDev we are building a bunch of prototypes into DevTools to user test. This model holds which prototypes are enabled for a given user.
4
+
5
+ The settings is only stored in local storage, and not synced across devices or persisted in anyway beyond that.
@@ -0,0 +1,5 @@
1
+ // Copyright 2025 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
+ export * from './Prototypes.js';
@@ -8896,11 +8896,11 @@ export const NativeFunctions = [
8896
8896
  },
8897
8897
  {
8898
8898
  name: "texElementImage2D",
8899
- signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"]]
8899
+ signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","width","height","format","type","element"]]
8900
8900
  },
8901
8901
  {
8902
8902
  name: "texElement2D",
8903
- signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"]]
8903
+ signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","width","height","format","type","element"]]
8904
8904
  },
8905
8905
  {
8906
8906
  name: "drawingBufferStorage",
@@ -105,9 +105,11 @@ export class DebuggableFragmentImpl implements StackTrace.StackTrace.DebuggableF
105
105
 
106
106
  let index = 0;
107
107
  for (const node of this.fragment.node.getCallStack()) {
108
- for (const frame of node.frames) {
109
- // Each inlined frame gets the same DebugerModel.CallFrame for debugging.
110
- frames.push(new DebuggableFrameImpl(frame, this.callFrames[index]));
108
+ for (const [inlineIdx, frame] of node.frames.entries()) {
109
+ // Create virtual frames for inlined frames.
110
+ const sdkFrame = inlineIdx === 0 ? this.callFrames[index] :
111
+ this.callFrames[index].createVirtualCallFrame(inlineIdx, frame.name ?? '');
112
+ frames.push(new DebuggableFrameImpl(frame, sdkFrame));
111
113
  }
112
114
  index++;
113
115
  }
@@ -2,6 +2,7 @@
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
+ import * as Common from '../../core/common/common.js';
5
6
  import * as SDK from '../../core/sdk/sdk.js';
6
7
  import type * as Protocol from '../../generated/protocol.js';
7
8
 
@@ -32,6 +33,7 @@ export type TranslateRawFrames = (frames: readonly RawFrame[], target: SDK.Targe
32
33
  */
33
34
  export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
34
35
  readonly #trie = new Trie();
36
+ readonly #mutex = new Common.Mutex.Mutex();
35
37
 
36
38
  /** @returns the {@link StackTraceModel} for the target, or the model for the primaryPageTarget when passing null/undefined */
37
39
  static #modelForTarget(target: SDK.Target.Target|null|undefined): StackTraceModel {
@@ -45,7 +47,7 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
45
47
  async createFromProtocolRuntime(stackTrace: Protocol.Runtime.StackTrace, rawFramesToUIFrames: TranslateRawFrames):
46
48
  Promise<StackTrace.StackTrace.StackTrace> {
47
49
  const [syncFragment, asyncFragments] = await Promise.all([
48
- this.#createSyncFragment(stackTrace, rawFramesToUIFrames),
50
+ this.#createFragment(stackTrace.callFrames, rawFramesToUIFrames),
49
51
  this.#createAsyncFragments(stackTrace, rawFramesToUIFrames),
50
52
  ]);
51
53
 
@@ -65,53 +67,51 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
65
67
 
66
68
  /** Trigger re-translation of all fragments with the provide script in their call stack */
67
69
  async scriptInfoChanged(script: SDK.Script.Script, translateRawFrames: TranslateRawFrames): Promise<void> {
68
- const translatePromises: Array<Promise<unknown>> = [];
69
- let stackTracesToUpdate = new Set<AnyStackTraceImpl>();
70
-
71
- for (const fragment of this.#affectedFragments(script)) {
72
- // We trigger re-translation only for fragments of leaf-nodes. Any fragment along the ancestor-chain
73
- // is re-translated as a side-effect.
74
- // We just need to remember the stack traces of the skipped over fragments, so we can send the
75
- // UPDATED event also to them.
76
- if (fragment.node.children.length === 0) {
77
- translatePromises.push(this.#translateFragment(fragment, translateRawFrames));
70
+ const release = await this.#mutex.acquire();
71
+ try {
72
+ const translatePromises: Array<Promise<unknown>> = [];
73
+ let stackTracesToUpdate = new Set<AnyStackTraceImpl>();
74
+
75
+ for (const fragment of this.#affectedFragments(script)) {
76
+ // We trigger re-translation only for fragments of leaf-nodes. Any fragment along the ancestor-chain
77
+ // is re-translated as a side-effect.
78
+ // We just need to remember the stack traces of the skipped over fragments, so we can send the
79
+ // UPDATED event also to them.
80
+ if (fragment.node.children.length === 0) {
81
+ translatePromises.push(this.#translateFragment(fragment, translateRawFrames));
82
+ }
83
+ stackTracesToUpdate = stackTracesToUpdate.union(fragment.stackTraces);
78
84
  }
79
- stackTracesToUpdate = stackTracesToUpdate.union(fragment.stackTraces);
80
- }
81
85
 
82
- await Promise.all(translatePromises);
86
+ await Promise.all(translatePromises);
83
87
 
84
- for (const stackTrace of stackTracesToUpdate) {
85
- stackTrace.dispatchEventToListeners(StackTrace.StackTrace.Events.UPDATED);
88
+ for (const stackTrace of stackTracesToUpdate) {
89
+ stackTrace.dispatchEventToListeners(StackTrace.StackTrace.Events.UPDATED);
90
+ }
91
+ } finally {
92
+ release();
86
93
  }
87
94
  }
88
95
 
89
- async #createSyncFragment(stackTrace: Protocol.Runtime.StackTrace, rawFramesToUIFrames: TranslateRawFrames):
90
- Promise<FragmentImpl> {
91
- const fragment = this.#createFragment(stackTrace.callFrames);
92
- await this.#translateFragment(fragment, rawFramesToUIFrames);
93
- return fragment;
94
- }
95
-
96
96
  async #createDebuggableFragment(
97
97
  pausedDetails: SDK.DebuggerModel.DebuggerPausedDetails,
98
98
  rawFramesToUIFrames: TranslateRawFrames): Promise<DebuggableFragmentImpl> {
99
- const fragment = this.#createFragment(pausedDetails.callFrames.map(frame => ({
100
- scriptId: frame.script.scriptId,
101
- url: frame.script.sourceURL,
102
- functionName: frame.functionName,
103
- lineNumber: frame.location().lineNumber,
104
- columnNumber: frame.location().columnNumber,
105
- })));
106
- await this.#translateFragment(fragment, rawFramesToUIFrames);
99
+ const fragment = await this.#createFragment(
100
+ pausedDetails.callFrames.map(frame => ({
101
+ scriptId: frame.script.scriptId,
102
+ url: frame.script.sourceURL,
103
+ functionName: frame.functionName,
104
+ lineNumber: frame.location().lineNumber,
105
+ columnNumber: frame.location().columnNumber,
106
+ })),
107
+ rawFramesToUIFrames);
107
108
  return new DebuggableFragmentImpl(fragment, pausedDetails.callFrames);
108
109
  }
109
110
 
110
111
  async #createAsyncFragments(
111
112
  stackTraceOrPausedEvent: Protocol.Runtime.StackTrace|SDK.DebuggerModel.DebuggerPausedDetails,
112
113
  rawFramesToUIFrames: TranslateRawFrames): Promise<AsyncFragmentImpl[]> {
113
- const asyncFragments: AsyncFragmentImpl[] = [];
114
- const translatePromises: Array<Promise<unknown>> = [];
114
+ const asyncFragments: Array<Promise<AsyncFragmentImpl>> = [];
115
115
 
116
116
  const debuggerModel = this.target().model(SDK.DebuggerModel.DebuggerModel);
117
117
  if (debuggerModel) {
@@ -122,18 +122,31 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
122
122
  continue;
123
123
  }
124
124
  const model = StackTraceModel.#modelForTarget(target);
125
- const fragment = model.#createFragment(asyncStackTrace.callFrames);
126
- translatePromises.push(model.#translateFragment(fragment, rawFramesToUIFrames));
127
- asyncFragments.push(new AsyncFragmentImpl(asyncStackTrace.description ?? '', fragment));
125
+ const asyncFragmentPromise =
126
+ model.#createFragment(asyncStackTrace.callFrames, rawFramesToUIFrames)
127
+ .then(fragment => new AsyncFragmentImpl(asyncStackTrace.description ?? '', fragment));
128
+ asyncFragments.push(asyncFragmentPromise);
128
129
  }
129
130
  }
130
131
 
131
- await Promise.all(translatePromises);
132
- return asyncFragments;
132
+ return await Promise.all(asyncFragments);
133
133
  }
134
134
 
135
- #createFragment(frames: RawFrame[]): FragmentImpl {
136
- return FragmentImpl.getOrCreate(this.#trie.insert(frames));
135
+ async #createFragment(frames: RawFrame[], rawFramesToUIFrames: TranslateRawFrames): Promise<FragmentImpl> {
136
+ const release = await this.#mutex.acquire();
137
+ try {
138
+ const node = this.#trie.insert(frames);
139
+ const requiresTranslation = !Boolean(node.fragment);
140
+ const fragment = FragmentImpl.getOrCreate(node);
141
+
142
+ if (requiresTranslation) {
143
+ await this.#translateFragment(fragment, rawFramesToUIFrames);
144
+ }
145
+
146
+ return fragment;
147
+ } finally {
148
+ release();
149
+ }
137
150
  }
138
151
 
139
152
  async #translateFragment(fragment: FragmentImpl, rawFramesToUIFrames: TranslateRawFrames): Promise<void> {
@@ -20,9 +20,15 @@ export class EventsSerializer {
20
20
  }
21
21
 
22
22
  const rawEvents = Helpers.SyntheticEvents.SyntheticEventsManager.getActiveManager().getRawTraceEvents();
23
+ const isSynthetic = Types.Events.isSyntheticBased(event);
24
+ const index = rawEvents.indexOf(isSynthetic ? event.rawSourceEvent : event);
25
+ if (index === -1) {
26
+ throw new Error(`Unknown trace event: ${event.name}`);
27
+ }
28
+
23
29
  const key: Types.File.SyntheticEventKey|Types.File.RawEventKey = Types.Events.isSyntheticBased(event) ?
24
- `${Types.File.EventKeyType.SYNTHETIC_EVENT}-${rawEvents.indexOf(event.rawSourceEvent)}` :
25
- `${Types.File.EventKeyType.RAW_EVENT}-${rawEvents.indexOf(event)}`;
30
+ `${Types.File.EventKeyType.SYNTHETIC_EVENT}-${index}` :
31
+ `${Types.File.EventKeyType.RAW_EVENT}-${index}`;
26
32
  if (key.length < 3) {
27
33
  return null;
28
34
  }
@@ -493,8 +493,10 @@ export class BottomUpRootNode extends Node {
493
493
  node.totalTime += totalTimeById.get(id) || 0;
494
494
  totalTimeById.delete(id);
495
495
  }
496
- // TODO: this may be wrong. See the skipped test in TraceTree.test.ts.
497
- if (firstNodeStack.length) {
496
+
497
+ // An item on this stack means that this current node has a caller. Therefore,
498
+ // in a bottom-up view it has children.
499
+ if (idStack.length > 0) {
498
500
  node.setHasChildren(true);
499
501
  }
500
502
  }
@@ -443,7 +443,7 @@ async function buildLayoutShiftsClusters(): Promise<void> {
443
443
  }
444
444
 
445
445
  let largestScore = 0;
446
- let worstShiftEvent: Types.Events.Event|null = null;
446
+ let worstShiftEvent: Types.Events.SyntheticLayoutShift|null = null;
447
447
 
448
448
  for (const shift of cluster.events) {
449
449
  weightedScore += shift.args.data ? shift.args.data.weighted_score_delta : 0;
@@ -504,7 +504,7 @@ async function buildLayoutShiftsClusters(): Promise<void> {
504
504
  // Update the cluster's worst layout shift.
505
505
  if (worstShiftEvent) {
506
506
  cluster.worstShiftEvent = worstShiftEvent;
507
- cluster.rawSourceEvent = worstShiftEvent;
507
+ cluster.rawSourceEvent = worstShiftEvent.rawSourceEvent;
508
508
  }
509
509
 
510
510
  // layout shifts are already sorted by time ascending.
@@ -129,8 +129,6 @@ export function generateInsight(
129
129
  }
130
130
 
131
131
  const initiatorUrl = lcpRequest.args.data.initiator?.url;
132
- // TODO(b/372319476): Explore using trace event HTMLDocumentParser::FetchQueuedPreloads to determine if the request
133
- // is discovered by the preload scanner.
134
132
  const initiatedByMainDoc =
135
133
  lcpRequest?.args.data.initiator?.type === 'parser' && docRequest.args.data.url === initiatorUrl;
136
134
  const imgPreloadedOrFoundInHTML = lcpRequest?.args.data.isLinkPreload || initiatedByMainDoc;
@@ -1078,7 +1078,6 @@ export interface ResourceSendRequest extends Instant {
1078
1078
  resourceType?: Protocol.Network.ResourceType,
1079
1079
  /** Added Feb 2024. https://crrev.com/c/5297615 */
1080
1080
  fetchPriorityHint?: FetchPriorityHint,
1081
- // TODO(crbug.com/1457985): change requestMethod to enum when confirm in the backend code.
1082
1081
  requestMethod?: string,
1083
1082
  renderBlocking?: RenderBlocking,
1084
1083
  initiator?: Initiator,