chrome-devtools-frontend 1.0.1713292 → 1.0.1716465

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 (288) hide show
  1. package/AUTHORS +1 -0
  2. package/DIR_METADATA +0 -4
  3. package/eslint.config.mjs +2 -0
  4. package/front_end/core/host/Platform.ts +37 -0
  5. package/front_end/core/host/UserMetricsEnums.ts +5 -2
  6. package/front_end/core/platform/browser/HostRuntime.ts +3 -3
  7. package/front_end/core/sdk/CSSProperty.ts +2 -1
  8. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +4 -1
  9. package/front_end/core/sdk/DebuggerModel.ts +26 -11
  10. package/front_end/core/sdk/PageFunctions.ts +7 -2
  11. package/front_end/core/sdk/ResourceTreeModel.ts +9 -0
  12. package/front_end/core/sdk/RuntimeModel.ts +6 -3
  13. package/front_end/core/sdk/SDKSettings.ts +7 -0
  14. package/front_end/core/sdk/ServerSentEventsProtocol.ts +4 -2
  15. package/front_end/core/sdk/SourceMap.ts +0 -5
  16. package/front_end/core/sdk/SourceMapFunctionRanges.ts +4 -1
  17. package/front_end/core/sdk/SourceMapScopesInfo.ts +8 -18
  18. package/front_end/devtools_compatibility.js +5 -2
  19. package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +56 -6
  20. package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +29 -6
  21. package/front_end/entrypoints/main/MainImpl.ts +6 -14
  22. package/front_end/generated/Deprecation.ts +8 -7
  23. package/front_end/generated/InspectorBackendCommands.ts +4 -3
  24. package/front_end/generated/protocol-mapping.d.ts +10 -0
  25. package/front_end/generated/protocol-proxy-api.d.ts +8 -0
  26. package/front_end/generated/protocol.ts +14 -2
  27. package/front_end/models/ai_assistance/AiAgent2.ts +0 -1
  28. package/front_end/models/ai_assistance/README.md +2 -2
  29. package/front_end/models/ai_assistance/agents/AiAgent.ts +179 -13
  30. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +7 -2
  31. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -0
  32. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +11 -16
  33. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +2 -2
  34. package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
  35. package/front_end/models/ai_assistance/skills/SkillRegistry.ts +0 -2
  36. package/front_end/models/ai_assistance/skills/lighthouse.md +28 -9
  37. package/front_end/models/ai_assistance/skills/performance.md +10 -6
  38. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +0 -3
  39. package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +1 -1
  40. package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +12 -0
  41. package/front_end/models/ai_assistance/tools/RunLighthouse.ts +1 -1
  42. package/front_end/models/ai_assistance/tools/Tool.ts +11 -2
  43. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +25 -11
  44. package/front_end/models/bindings/DefaultScriptMapping.ts +8 -2
  45. package/front_end/models/bindings/SourceMapStepping.ts +66 -5
  46. package/front_end/models/comment_manager/CommentManager.ts +8 -0
  47. package/front_end/models/emulation/DeviceModeModel.ts +4 -19
  48. package/front_end/models/formatter/ScriptFormatter.ts +6 -7
  49. package/front_end/models/javascript_metadata/NativeFunctions.ts +18 -58
  50. package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +9 -12
  51. package/front_end/models/trace/LanternComputationData.ts +9 -14
  52. package/front_end/models/trace/ModelImpl.ts +1 -1
  53. package/front_end/models/trace/extras/TraceTree.ts +44 -13
  54. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -1
  55. package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +2 -2
  56. package/front_end/models/trace/handlers/Threads.ts +1 -1
  57. package/front_end/models/trace/handlers/helpers.ts +1 -1
  58. package/front_end/models/trace/helpers/SamplesIntegrator.ts +71 -59
  59. package/front_end/models/trace/insights/CLSCulprits.ts +2 -2
  60. package/front_end/models/trace/insights/Common.ts +3 -2
  61. package/front_end/models/trace/insights/ImageDelivery.ts +3 -2
  62. package/front_end/models/trace/insights/RenderBlocking.ts +28 -6
  63. package/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +12 -20
  64. package/front_end/models/trace/lantern/graph/CPUNode.ts +26 -7
  65. package/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +27 -2
  66. package/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +8 -2
  67. package/front_end/models/trace/lantern/simulation/Simulator.ts +5 -2
  68. package/front_end/models/trace/lantern/simulation/TCPConnection.ts +1 -1
  69. package/front_end/models/trace/lantern/types/Lantern.ts +10 -0
  70. package/front_end/models/trace/types/File.ts +3 -3
  71. package/front_end/models/trace/types/Overlays.ts +4 -3
  72. package/front_end/models/trace/types/TraceEvents.ts +39 -35
  73. package/front_end/models/workspace/IgnoreListManager.ts +38 -6
  74. package/front_end/models/workspace_diff/WorkspaceDiff.ts +5 -3
  75. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +34 -4
  76. package/front_end/panels/ai_assistance/README.md +55 -14
  77. package/front_end/panels/ai_assistance/components/ChatMessage.ts +4 -6
  78. package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +0 -8
  79. package/front_end/panels/application/FrameDetailsView.ts +84 -0
  80. package/front_end/panels/application/ResourcesPanel.ts +3 -4
  81. package/front_end/panels/application/WebMCPView.ts +5 -5
  82. package/front_end/panels/application/preloading/PreloadingView.ts +6 -3
  83. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +5 -2
  84. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +5 -2
  85. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +7 -3
  86. package/front_end/panels/comments/CommentsPane.ts +65 -23
  87. package/front_end/panels/comments/commentsPane.css +11 -0
  88. package/front_end/panels/common/CommentThreadWidget.ts +129 -18
  89. package/front_end/panels/common/CommentsOverlayWidget.ts +33 -9
  90. package/front_end/panels/common/CommentsStatusBarPill.ts +8 -39
  91. package/front_end/panels/common/ExtensionServer.ts +84 -26
  92. package/front_end/panels/console/PromptBuilder.ts +5 -2
  93. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +1 -118
  94. package/front_end/panels/elements/DOMPath.ts +38 -5
  95. package/front_end/panels/elements/DOMTreeContextMenu.ts +13 -8
  96. package/front_end/panels/elements/{ElementsTreeElement.ts → DOMTreeElementWidget.ts} +110 -472
  97. package/front_end/panels/elements/DOMTreeWidget.ts +74 -1253
  98. package/front_end/panels/elements/StylePropertiesSection.ts +3 -3
  99. package/front_end/panels/elements/StylePropertyTreeElement.ts +2 -2
  100. package/front_end/panels/elements/StylesSidebarPane.ts +3 -1
  101. package/front_end/panels/elements/{elementsTreeOutline.css → domTreeWidget.css} +3 -178
  102. package/front_end/panels/elements/elements.ts +3 -6
  103. package/front_end/panels/emulation/DeviceModeToolbar.ts +0 -8
  104. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +13 -17
  105. package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +234 -182
  106. package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +2 -2
  107. package/front_end/panels/linear_memory_inspector/components/linearMemoryViewer.css +63 -56
  108. package/front_end/panels/media/PlayerPropertiesView.ts +4 -4
  109. package/front_end/panels/network/RequestPreviewView.ts +2 -6
  110. package/front_end/panels/profiler/HeapDetachedElementsView.ts +5 -2
  111. package/front_end/panels/profiler/HeapSnapshotView.ts +5 -2
  112. package/front_end/panels/profiler/ProfilesPanel.ts +2 -6
  113. package/front_end/panels/protocol_monitor/JSONEditor.ts +10 -3
  114. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +6 -5
  115. package/front_end/panels/recorder/RecorderPanel.ts +2 -1
  116. package/front_end/panels/recorder/RecordingView.ts +1 -1
  117. package/front_end/panels/recorder/StepView.ts +5 -3
  118. package/front_end/panels/recorder/stepView.css +4 -0
  119. package/front_end/panels/security/SecurityPanel.ts +163 -100
  120. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +36 -19
  121. package/front_end/panels/sources/DebuggerPlugin.ts +129 -82
  122. package/front_end/panels/sources/EditorHistory.ts +172 -0
  123. package/front_end/panels/sources/Plugin.ts +2 -2
  124. package/front_end/panels/sources/SnippetsPlugin.ts +20 -6
  125. package/front_end/panels/sources/SourcesPanel.ts +58 -8
  126. package/front_end/panels/sources/SourcesView.ts +135 -127
  127. package/front_end/panels/sources/TabbedEditorContainer.ts +262 -420
  128. package/front_end/panels/sources/UISourceCodeFrame.ts +9 -7
  129. package/front_end/panels/sources/sources-meta.ts +26 -63
  130. package/front_end/panels/sources/sources.ts +2 -0
  131. package/front_end/panels/sources/tabbedEditorContainer.css +98 -0
  132. package/front_end/panels/timeline/README.md +3 -1
  133. package/front_end/panels/timeline/TimelineUIUtils.ts +8 -13
  134. package/front_end/panels/timeline/components/DetailsView.ts +4 -4
  135. package/front_end/panels/timeline/components/LiveMetricsView.ts +2 -2
  136. package/front_end/panels/timeline/components/TimelineRangeSummaryView.ts +5 -8
  137. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +22 -36
  138. package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +9 -0
  139. package/front_end/panels/timeline/timelineFlameChartView.css +1 -42
  140. package/front_end/panels/whats_new/ReleaseNoteText.ts +8 -8
  141. package/front_end/panels/whats_new/resources/WNDT.md +5 -5
  142. package/front_end/third_party/chromium/README.chromium +1 -1
  143. package/front_end/third_party/legacy-javascript/README.chromium +2 -2
  144. package/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +337 -161
  145. package/front_end/third_party/legacy-javascript/package.json +1 -1
  146. package/front_end/third_party/puppeteer/README.chromium +2 -2
  147. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +77 -0
  148. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +474 -358
  149. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.d.ts +15 -0
  150. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.d.ts.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js +27 -0
  152. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js.map +1 -1
  153. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPResponse.d.ts +13 -0
  154. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPResponse.d.ts.map +1 -1
  155. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPResponse.js +38 -0
  156. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPResponse.js.map +1 -1
  157. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +20 -0
  158. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
  159. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.d.ts.map +1 -1
  161. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js +9 -2
  162. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js.map +1 -1
  163. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js +6 -5
  164. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js.map +1 -1
  165. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts.map +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js +2 -1
  167. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js.map +1 -1
  168. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js +2 -1
  169. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js +2 -1
  171. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Input.js +4 -3
  173. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Input.js.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js +9 -8
  175. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.d.ts.map +1 -1
  177. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js +9 -3
  178. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js.map +1 -1
  179. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js +3 -2
  180. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/UserPrompt.js +3 -2
  182. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/UserPrompt.js.map +1 -1
  183. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/util.d.ts +2 -1
  184. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/util.d.ts.map +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/util.js +2 -2
  186. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/util.js.map +1 -1
  187. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
  188. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +11 -2
  189. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js +9 -1
  192. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js.map +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +1 -1
  194. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts.map +1 -1
  195. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js +7 -2
  196. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js.map +1 -1
  197. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js +9 -2
  199. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/utils.d.ts +3 -1
  201. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/utils.d.ts.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/utils.js +2 -2
  203. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/utils.js.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts +1 -0
  205. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts.map +1 -1
  206. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +9 -2
  207. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts +8 -0
  209. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConsoleMessage.d.ts +24 -1
  211. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConsoleMessage.js +30 -1
  213. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConsoleMessage.js.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CustomQueryHandler.js +1 -1
  215. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CustomQueryHandler.js.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
  217. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
  219. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
  220. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/util.d.ts.map +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/util.js +5 -1
  222. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/util.js.map +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  224. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js +7 -2
  225. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js.map +1 -1
  226. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts +10 -0
  227. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -1
  228. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +7 -1
  229. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
  230. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  231. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  232. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  233. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/types.d.ts +77 -0
  235. package/front_end/third_party/puppeteer/package/package.json +7 -7
  236. package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +30 -0
  237. package/front_end/third_party/puppeteer/package/src/api/HTTPResponse.ts +41 -0
  238. package/front_end/third_party/puppeteer/package/src/api/Page.ts +20 -0
  239. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +6 -0
  240. package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +2 -1
  241. package/front_end/third_party/puppeteer/package/src/bidi/Realm.ts +1 -0
  242. package/front_end/third_party/puppeteer/package/src/bidi/util.ts +3 -0
  243. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +9 -2
  244. package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +10 -3
  245. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +11 -2
  246. package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +19 -2
  247. package/front_end/third_party/puppeteer/package/src/cdp/utils.ts +6 -1
  248. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +10 -2
  249. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +9 -0
  250. package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +35 -0
  251. package/front_end/third_party/puppeteer/package/src/common/CustomQueryHandler.ts +1 -1
  252. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  253. package/front_end/third_party/puppeteer/package/src/injected/util.ts +6 -2
  254. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +7 -2
  255. package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +12 -1
  256. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  257. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  258. package/front_end/ui/comments/CommentAnchorResolver.ts +105 -39
  259. package/front_end/ui/comments/CommentOverlayManager.ts +37 -15
  260. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +1 -2
  261. package/front_end/ui/components/text_editor/config.ts +32 -26
  262. package/front_end/ui/legacy/InspectorView.ts +13 -12
  263. package/front_end/ui/legacy/ProgressIndicator.ts +18 -0
  264. package/front_end/ui/legacy/SearchableView.ts +406 -308
  265. package/front_end/ui/legacy/SplitWidget.ts +30 -11
  266. package/front_end/ui/legacy/StackPane.ts +1 -2
  267. package/front_end/ui/legacy/StackedPane.ts +1 -2
  268. package/front_end/ui/legacy/TabbedPane.ts +19 -3
  269. package/front_end/ui/legacy/Toolbar.ts +2 -2
  270. package/front_end/ui/legacy/UIUtils.ts +1 -46
  271. package/front_end/ui/legacy/View.ts +5 -5
  272. package/front_end/ui/legacy/ViewManager.ts +8 -14
  273. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +4 -0
  274. package/front_end/ui/legacy/components/source_frame/ImageView.ts +98 -65
  275. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +59 -26
  276. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +165 -56
  277. package/front_end/ui/legacy/components/source_frame/imageView.css +27 -25
  278. package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +8 -6
  279. package/front_end/ui/legacy/components/source_frame/source_frame-meta.ts +3 -5
  280. package/front_end/ui/legacy/inspectorCommon.css +1 -1
  281. package/front_end/ui/legacy/tabbedPane.css +0 -91
  282. package/front_end/ui/settings/SourcesSettings.ts +62 -0
  283. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  284. package/package.json +1 -1
  285. package/front_end/models/ai_assistance/skills/accessibility.md +0 -33
  286. package/front_end/panels/common/commentsStatusBarPill.css +0 -13
  287. package/front_end/panels/elements/ShortcutTreeElement.ts +0 -172
  288. package/front_end/panels/elements/TopLayerContainer.ts +0 -54
@@ -89,7 +89,7 @@ inspectorBackend.registerEnum("Audits.SharedDictionaryError", {UseErrorCrossOrig
89
89
  inspectorBackend.registerEnum("Audits.SRIMessageSignatureError", {MissingSignatureHeader: "MissingSignatureHeader", MissingSignatureInputHeader: "MissingSignatureInputHeader", InvalidSignatureHeader: "InvalidSignatureHeader", InvalidSignatureInputHeader: "InvalidSignatureInputHeader", SignatureHeaderValueIsNotByteSequence: "SignatureHeaderValueIsNotByteSequence", SignatureHeaderValueIsParameterized: "SignatureHeaderValueIsParameterized", SignatureHeaderValueIsIncorrectLength: "SignatureHeaderValueIsIncorrectLength", SignatureInputHeaderMissingLabel: "SignatureInputHeaderMissingLabel", SignatureInputHeaderValueNotInnerList: "SignatureInputHeaderValueNotInnerList", SignatureInputHeaderValueMissingComponents: "SignatureInputHeaderValueMissingComponents", SignatureInputHeaderInvalidComponentType: "SignatureInputHeaderInvalidComponentType", SignatureInputHeaderInvalidComponentName: "SignatureInputHeaderInvalidComponentName", SignatureInputHeaderInvalidHeaderComponentParameter: "SignatureInputHeaderInvalidHeaderComponentParameter", SignatureInputHeaderInvalidDerivedComponentParameter: "SignatureInputHeaderInvalidDerivedComponentParameter", SignatureInputHeaderKeyIdLength: "SignatureInputHeaderKeyIdLength", SignatureInputHeaderInvalidParameter: "SignatureInputHeaderInvalidParameter", SignatureInputHeaderMissingRequiredParameters: "SignatureInputHeaderMissingRequiredParameters", ValidationFailedSignatureExpired: "ValidationFailedSignatureExpired", ValidationFailedInvalidLength: "ValidationFailedInvalidLength", ValidationFailedSignatureMismatch: "ValidationFailedSignatureMismatch", ValidationFailedIntegrityMismatch: "ValidationFailedIntegrityMismatch", SignatureBaseUnknownDerivedComponent: "SignatureBaseUnknownDerivedComponent", SignatureBaseMissingHeader: "SignatureBaseMissingHeader", SignatureBaseInvalidUnencodedDigest: "SignatureBaseInvalidUnencodedDigest", SignatureBaseUnsupportedComponent: "SignatureBaseUnsupportedComponent"});
90
90
  inspectorBackend.registerEnum("Audits.UnencodedDigestError", {MalformedDictionary: "MalformedDictionary", UnknownAlgorithm: "UnknownAlgorithm", IncorrectDigestType: "IncorrectDigestType", IncorrectDigestLength: "IncorrectDigestLength"});
91
91
  inspectorBackend.registerEnum("Audits.ConnectionAllowlistError", {InvalidHeader: "InvalidHeader", MoreThanOneList: "MoreThanOneList", ItemNotInnerList: "ItemNotInnerList", InvalidAllowlistItemType: "InvalidAllowlistItemType", ReportingEndpointNotToken: "ReportingEndpointNotToken", InvalidUrlPattern: "InvalidUrlPattern", IFrameAttributeLoosensEmbeddingRequirement: "IFrameAttributeLoosensEmbeddingRequirement", InvalidAllowConnectionAllowlistFrom: "InvalidAllowConnectionAllowlistFrom", EmbeddingRequirementNotSatisfied: "EmbeddingRequirementNotSatisfied"});
92
- inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable", BackUINavigationWouldSkipAd: "BackUINavigationWouldSkipAd", AutofillAndManualTextPolicyControlledFeaturesInfo: "AutofillAndManualTextPolicyControlledFeaturesInfo", AutofillPolicyControlledFeatureInfo: "AutofillPolicyControlledFeatureInfo", ManualTextPolicyControlledFeatureInfo: "ManualTextPolicyControlledFeatureInfo", FormModelContextParameterMissingTitleAndDescription: "FormModelContextParameterMissingTitleAndDescription", FormModelContextMissingToolName: "FormModelContextMissingToolName", FormModelContextMissingToolDescription: "FormModelContextMissingToolDescription", FormModelContextRequiredParameterMissingName: "FormModelContextRequiredParameterMissingName", FormModelContextParameterMissingName: "FormModelContextParameterMissingName"});
92
+ inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable", BackUINavigationWouldSkipAd: "BackUINavigationWouldSkipAd", AutofillAndManualTextPolicyControlledFeaturesInfo: "AutofillAndManualTextPolicyControlledFeaturesInfo", AutofillPolicyControlledFeatureInfo: "AutofillPolicyControlledFeatureInfo", ManualTextPolicyControlledFeatureInfo: "ManualTextPolicyControlledFeatureInfo", FormModelContextParameterMissingTitleAndDescription: "FormModelContextParameterMissingTitleAndDescription", FormModelContextMissingToolName: "FormModelContextMissingToolName", FormModelContextMissingToolDescription: "FormModelContextMissingToolDescription", FormModelContextRequiredParameterMissingName: "FormModelContextRequiredParameterMissingName", FormModelContextParameterMissingName: "FormModelContextParameterMissingName", GeolocationPromptWithoutUserGesture: "GeolocationPromptWithoutUserGesture"});
93
93
  inspectorBackend.registerEnum("Audits.ClientHintIssueReason", {MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML"});
94
94
  inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", {ShouldEmbargo: "ShouldEmbargo", TooManyRequests: "TooManyRequests", WellKnownHttpNotFound: "WellKnownHttpNotFound", WellKnownNoResponse: "WellKnownNoResponse", WellKnownBlockedByConnectionAllowlist: "WellKnownBlockedByConnectionAllowlist", WellKnownInvalidResponse: "WellKnownInvalidResponse", WellKnownListEmpty: "WellKnownListEmpty", WellKnownInvalidContentType: "WellKnownInvalidContentType", ConfigNotInWellKnown: "ConfigNotInWellKnown", WellKnownTooBig: "WellKnownTooBig", ConfigHttpNotFound: "ConfigHttpNotFound", ConfigNoResponse: "ConfigNoResponse", ConfigBlockedByConnectionAllowlist: "ConfigBlockedByConnectionAllowlist", ConfigInvalidResponse: "ConfigInvalidResponse", ConfigInvalidContentType: "ConfigInvalidContentType", IdpNotPotentiallyTrustworthy: "IdpNotPotentiallyTrustworthy", DisabledInSettings: "DisabledInSettings", DisabledInFlags: "DisabledInFlags", ErrorFetchingSignin: "ErrorFetchingSignin", InvalidSigninResponse: "InvalidSigninResponse", AccountsHttpNotFound: "AccountsHttpNotFound", AccountsNoResponse: "AccountsNoResponse", AccountsBlockedByConnectionAllowlist: "AccountsBlockedByConnectionAllowlist", AccountsInvalidResponse: "AccountsInvalidResponse", AccountsListEmpty: "AccountsListEmpty", AccountsInvalidContentType: "AccountsInvalidContentType", IdTokenHttpNotFound: "IdTokenHttpNotFound", IdTokenNoResponse: "IdTokenNoResponse", IdTokenBlockedByConnectionAllowlist: "IdTokenBlockedByConnectionAllowlist", IdTokenInvalidResponse: "IdTokenInvalidResponse", IdTokenIdpErrorResponse: "IdTokenIdpErrorResponse", IdTokenCrossSiteIdpErrorResponse: "IdTokenCrossSiteIdpErrorResponse", IdTokenInvalidRequest: "IdTokenInvalidRequest", IdTokenInvalidContentType: "IdTokenInvalidContentType", ErrorIdToken: "ErrorIdToken", Canceled: "Canceled", RpPageNotVisible: "RpPageNotVisible", SilentMediationFailure: "SilentMediationFailure", NotSignedInWithIdp: "NotSignedInWithIdp", MissingTransientUserActivation: "MissingTransientUserActivation", ReplacedByActiveMode: "ReplacedByActiveMode", RelyingPartyOriginIsOpaque: "RelyingPartyOriginIsOpaque", TypeNotMatching: "TypeNotMatching", UiDismissedNoEmbargo: "UiDismissedNoEmbargo", CorsError: "CorsError", SuppressedBySegmentationPlatform: "SuppressedBySegmentationPlatform", PopupBlockedByConnectionAllowlist: "PopupBlockedByConnectionAllowlist"});
95
95
  inspectorBackend.registerEnum("Audits.FederatedAuthUserInfoRequestIssueReason", {NotSameOrigin: "NotSameOrigin", NotIframe: "NotIframe", NotPotentiallyTrustworthy: "NotPotentiallyTrustworthy", NoAPIPermission: "NoApiPermission", NotSignedInWithIdp: "NotSignedInWithIdp", NoAccountSharingPermission: "NoAccountSharingPermission", InvalidConfigOrWellKnown: "InvalidConfigOrWellKnown", InvalidAccountsResponse: "InvalidAccountsResponse", NoReturningUserFromFetchedAccounts: "NoReturningUserFromFetchedAccounts"});
@@ -845,7 +845,7 @@ inspectorBackend.registerEnum("Network.ChallengeEventDetailsChallengeResult", {S
845
845
  inspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength", "data"]);
846
846
  inspectorBackend.registerEvent("Network.eventSourceMessageReceived", ["requestId", "timestamp", "eventName", "eventId", "data"]);
847
847
  inspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "type", "errorText", "canceled", "blockedReason", "corsErrorStatus"]);
848
- inspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "encodedDataLength"]);
848
+ inspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "encodedDataLength", "encodedBodyLength"]);
849
849
  inspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]);
850
850
  inspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "loaderId", "documentURL", "request", "timestamp", "wallTime", "initiator", "redirectHasExtraInfo", "redirectResponse", "type", "frameId", "hasUserGesture", "renderBlockingBehavior"]);
851
851
  inspectorBackend.registerEvent("Network.resourceChangedPriority", ["requestId", "newPriority", "timestamp"]);
@@ -1059,7 +1059,7 @@ inspectorBackend.registerEnum("Page.AdFrameExplanation", {ParentIsAd: "ParentIsA
1059
1059
  inspectorBackend.registerEnum("Page.SecureContextType", {Secure: "Secure", SecureLocalhost: "SecureLocalhost", InsecureScheme: "InsecureScheme", InsecureAncestor: "InsecureAncestor"});
1060
1060
  inspectorBackend.registerEnum("Page.CrossOriginIsolatedContextType", {Isolated: "Isolated", NotIsolated: "NotIsolated", NotIsolatedFeatureDisabled: "NotIsolatedFeatureDisabled"});
1061
1061
  inspectorBackend.registerEnum("Page.GatedAPIFeatures", {SharedArrayBuffers: "SharedArrayBuffers", SharedArrayBuffersTransferAllowed: "SharedArrayBuffersTransferAllowed", PerformanceMeasureMemory: "PerformanceMeasureMemory", PerformanceProfile: "PerformanceProfile"});
1062
- inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Haptics: "haptics", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", PublickeyCredentialsRemoteClientDataJson: "publickey-credentials-remote-client-data-json", Rewriter: "rewriter", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Tools: "tools", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", Webnn: "webnn", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking"});
1062
+ inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Haptics: "haptics", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", PublickeyCredentialsRemoteClientDataJson: "publickey-credentials-remote-client-data-json", Rewriter: "rewriter", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Tools: "tools", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", Webnn: "webnn", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking"});
1063
1063
  inspectorBackend.registerEnum("Page.PermissionsPolicyBlockReason", {Header: "Header", IframeAttribute: "IframeAttribute", InFencedFrameTree: "InFencedFrameTree", InIsolatedApp: "InIsolatedApp"});
1064
1064
  inspectorBackend.registerEnum("Page.OriginTrialTokenStatus", {Success: "Success", NotSupported: "NotSupported", Insecure: "Insecure", Expired: "Expired", WrongOrigin: "WrongOrigin", InvalidSignature: "InvalidSignature", Malformed: "Malformed", WrongVersion: "WrongVersion", FeatureDisabled: "FeatureDisabled", TokenDisabled: "TokenDisabled", FeatureDisabledForUser: "FeatureDisabledForUser", UnknownTrial: "UnknownTrial"});
1065
1065
  inspectorBackend.registerEnum("Page.OriginTrialStatus", {Enabled: "Enabled", ValidTokenNotProvided: "ValidTokenNotProvided", OSNotSupported: "OSNotSupported", TrialNotAllowed: "TrialNotAllowed"});
@@ -1126,6 +1126,7 @@ inspectorBackend.registerCommand("Page.getAppId", [], ["appId", "recommendedId",
1126
1126
  inspectorBackend.registerCommand("Page.getSubApps", [], ["subApps"], "Returns the list of installed child Sub-Apps for the inspected parent app.");
1127
1127
  inspectorBackend.registerCommand("Page.getSiblingSubApps", [], ["subApps"], "Returns the list of sibling Sub-Apps sharing the same parent app if the inspected context is a Sub-App.");
1128
1128
  inspectorBackend.registerCommand("Page.getAdScriptAncestry", [{"name": "frameId", "type": "string", "optional": false, "description": "", "typeRef": "Page.FrameId"}], ["adScriptAncestry"], "");
1129
+ inspectorBackend.registerCommand("Page.getSpellCheckCustomDictionary", [{"name": "frameId", "type": "string", "optional": false, "description": "", "typeRef": "Page.FrameId"}], ["words"], "Returns the words that the frame's document added to its spell check custom dictionary with `document.spellCheckCustomDictionary.addWords()`, sorted. Page script cannot read the dictionary back; this lets developers inspect it.");
1129
1130
  inspectorBackend.registerCommand("Page.getFrameTree", [], ["frameTree"], "Returns present frame tree structure.");
1130
1131
  inspectorBackend.registerCommand("Page.getLayoutMetrics", [], ["layoutViewport", "visualViewport", "contentSize", "cssLayoutViewport", "cssVisualViewport", "cssContentSize"], "Returns metrics relating to the layouting of the page, such as viewport bounds/scale.");
1131
1132
  inspectorBackend.registerCommand("Page.getNavigationHistory", [], ["currentIndex", "entries"], "Returns navigation history for the current page.");
@@ -4228,6 +4228,16 @@ export namespace ProtocolMapping {
4228
4228
  paramsType: [Protocol.Page.GetAdScriptAncestryRequest];
4229
4229
  returnType: Protocol.Page.GetAdScriptAncestryResponse;
4230
4230
  };
4231
+ /**
4232
+ * Returns the words that the frame's document added to its spell check custom
4233
+ * dictionary with `document.spellCheckCustomDictionary.addWords()`, sorted.
4234
+ * Page script cannot read the dictionary back; this lets developers inspect
4235
+ * it.
4236
+ */
4237
+ 'Page.getSpellCheckCustomDictionary': {
4238
+ paramsType: [Protocol.Page.GetSpellCheckCustomDictionaryRequest];
4239
+ returnType: Protocol.Page.GetSpellCheckCustomDictionaryResponse;
4240
+ };
4231
4241
  /**
4232
4242
  * Returns present frame tree structure.
4233
4243
  */
@@ -3422,6 +3422,14 @@ declare namespace ProtocolProxyApi {
3422
3422
 
3423
3423
  invoke_getAdScriptAncestry(params: Protocol.Page.GetAdScriptAncestryRequest): Promise<Protocol.Page.GetAdScriptAncestryResponse>;
3424
3424
 
3425
+ /**
3426
+ * Returns the words that the frame's document added to its spell check custom
3427
+ * dictionary with `document.spellCheckCustomDictionary.addWords()`, sorted.
3428
+ * Page script cannot read the dictionary back; this lets developers inspect
3429
+ * it.
3430
+ */
3431
+ invoke_getSpellCheckCustomDictionary(params: Protocol.Page.GetSpellCheckCustomDictionaryRequest): Promise<Protocol.Page.GetSpellCheckCustomDictionaryResponse>;
3432
+
3425
3433
  /**
3426
3434
  * Returns present frame tree structure.
3427
3435
  */
@@ -1291,6 +1291,7 @@ export namespace Audits {
1291
1291
  FormModelContextMissingToolDescription = 'FormModelContextMissingToolDescription',
1292
1292
  FormModelContextRequiredParameterMissingName = 'FormModelContextRequiredParameterMissingName',
1293
1293
  FormModelContextParameterMissingName = 'FormModelContextParameterMissingName',
1294
+ GeolocationPromptWithoutUserGesture = 'GeolocationPromptWithoutUserGesture',
1294
1295
  }
1295
1296
 
1296
1297
  /**
@@ -13002,6 +13003,11 @@ export namespace Network {
13002
13003
  * Total number of bytes received for this request.
13003
13004
  */
13004
13005
  encodedDataLength: number;
13006
+ /**
13007
+ * Size of the response body before removing content encodings.
13008
+ * Includes cached bodies, but excludes headers and transfer framing.
13009
+ */
13010
+ encodedBodyLength?: number;
13005
13011
  }
13006
13012
 
13007
13013
  /**
@@ -14834,8 +14840,6 @@ export namespace Page {
14834
14840
  Rewriter = 'rewriter',
14835
14841
  ScreenWakeLock = 'screen-wake-lock',
14836
14842
  Serial = 'serial',
14837
- SharedStorage = 'shared-storage',
14838
- SharedStorageSelectUrl = 'shared-storage-select-url',
14839
14843
  SmartCard = 'smart-card',
14840
14844
  SpeakerSelection = 'speaker-selection',
14841
14845
  StorageAccess = 'storage-access',
@@ -16027,6 +16031,14 @@ export namespace Page {
16027
16031
  adScriptAncestry?: Network.AdAncestry;
16028
16032
  }
16029
16033
 
16034
+ export interface GetSpellCheckCustomDictionaryRequest {
16035
+ frameId: FrameId;
16036
+ }
16037
+
16038
+ export interface GetSpellCheckCustomDictionaryResponse extends ProtocolResponseWithError {
16039
+ words: string[];
16040
+ }
16041
+
16030
16042
  export interface GetFrameTreeResponse extends ProtocolResponseWithError {
16031
16043
  /**
16032
16044
  * Present frame tree structure.
@@ -39,7 +39,6 @@ import {ToolRegistry} from './tools/ToolRegistry.js';
39
39
  const SKILL_DISPLAY_NAMES: Record<SkillName, string> = {
40
40
  styling: 'CSS and styling',
41
41
  network: 'Network requests',
42
- accessibility: 'Accessibility',
43
42
  performance: 'Performance',
44
43
  storage: 'Storage',
45
44
  sources: 'Sources',
@@ -143,6 +143,6 @@ To aid debugging, you can enable the AI Assistance logging. This setting is stor
143
143
 
144
144
  Now, when interacting with the AI and sending requests, you will see output logged to the console. You can use the `debugLog` helper to add your own logging as you are building out your feature.
145
145
 
146
- ### Testing the Accessibility Skill
146
+ ### Testing the Lighthouse Skill
147
147
 
148
- The accessibility skill (`accessibility.md`) relies on an active Lighthouse report. Before interacting with the agent using this skill, ensure you have run a Lighthouse audit on the page you are inspecting so that the `getLighthouseAudits` tool can retrieve the report data.
148
+ The Lighthouse skill (`lighthouse.md`) handles Lighthouse audits across all categories (including accessibility) as well as live DOM accessibility inspection. It can either inspect an existing Lighthouse report via `getLighthouseAudits` or record a new report via `runLighthouse`.
@@ -23,6 +23,65 @@ import {
23
23
  type UrlString = Platform.DevToolsPath.UrlString;
24
24
  const MAX_SUGGESTION_LENGTH = 200;
25
25
 
26
+ /**
27
+ * The types of event in the response stream that `AiConversation#run()`
28
+ * yields to the AI assistance panel. The same events, minus a few, are saved
29
+ * as the conversation history and replayed when a saved conversation opens.
30
+ *
31
+ * ## Order of events in one run
32
+ *
33
+ * ```
34
+ * USER_QUERY (AiConversation, first run of a query only)
35
+ * CONTEXT* (agent's handleContextDetails())
36
+ * repeated for each model request, up to MAX_STEPS:
37
+ * QUERYING
38
+ * one of:
39
+ * ANSWER (complete: false)*, ANSWER (complete: true) text-only reply; the run ends
40
+ * [ANSWER (complete: true)], <tool call events> function call, optionally with text
41
+ * ERROR the run ends
42
+ * ```
43
+ *
44
+ * An `ERROR` can also follow the tool call events, for example when the user
45
+ * aborts, the page navigates cross-origin, or the run reaches `MAX_STEPS`.
46
+ *
47
+ * ## Events for one tool call
48
+ *
49
+ * `AiAgent#callFunction()` yields these. All events for one call carry the
50
+ * same `callId`.
51
+ *
52
+ * ```
53
+ * TITLE?, THOUGHT? from the tool's displayInfoFromArgs()
54
+ * if the tool needs approval:
55
+ * ACTION {code} code only, shown above the approval prompt;
56
+ * skipped if displayInfoFromArgs() has no action
57
+ * SIDE_EFFECT the panel shows the prompt and calls confirm()
58
+ * if denied: ACTION {code, output, canceled: true}, and the call ends
59
+ * ACTION {code, output, widgets, toolName} result or error
60
+ * ```
61
+ *
62
+ * If the tool switches context instead of returning a result, there is no
63
+ * result `ACTION`. `AiAgent#run()` yields `CONTEXT_CHANGE` and returns, and
64
+ * `AiConversation` starts a new run with the agent for the new context.
65
+ *
66
+ * ## Saved history
67
+ *
68
+ * `AiConversation` saves every event except `CONTEXT_CHANGE` and partial
69
+ * `ANSWER`s. `AiConversation#serialize()` removes `confirm`, images and
70
+ * widgets, and redacts the `ACTION` output of tools annotated with
71
+ * `REDACT_FROM_HISTORY`. Saved data has no version field, so new fields must
72
+ * be optional.
73
+ *
74
+ * ## How the panel renders events
75
+ *
76
+ * `AiAssistancePanel#consumeResponseStream()` builds one chat message per
77
+ * `USER_QUERY` and one step per tool call:
78
+ * - `QUERYING` starts a new step with a spinner. The panel shows the step only
79
+ * if it is the first part of the message. Otherwise, the step stays hidden
80
+ * until a tool call fills it in.
81
+ * - `TITLE`, `THOUGHT`, `ACTION` and `SIDE_EFFECT` update the step for their
82
+ * `callId`. Events saved before `callId` existed update the current step.
83
+ * - `ANSWER` adds the answer text. `ERROR` sets the message error.
84
+ */
26
85
  export const enum ResponseType {
27
86
  CONTEXT = 'context',
28
87
  TITLE = 'title',
@@ -68,6 +127,10 @@ export interface AnswerResponse {
68
127
  widgets?: AiWidget[];
69
128
  }
70
129
 
130
+ /**
131
+ * No agent yields this event. The panel still handles it by attaching the
132
+ * suggestions to the last answer.
133
+ */
71
134
  export interface SuggestionsResponse {
72
135
  type: ResponseType.SUGGESTIONS;
73
136
  suggestions: [string, ...string[]];
@@ -83,32 +146,79 @@ export interface ContextDetail {
83
146
  text: string;
84
147
  codeLang?: string;
85
148
  }
149
+
150
+ /**
151
+ * Describes the context sent with the user's query, such as the selected
152
+ * element. The agent's `handleContextDetails()` yields it before the first
153
+ * model request. The panel shows it as a completed "Analyzing data" step.
154
+ */
86
155
  export interface ContextResponse {
87
156
  type: ResponseType.CONTEXT;
88
157
  details: [ContextDetail, ...ContextDetail[]];
89
158
  widgets?: AiWidget[];
90
159
  }
91
160
 
92
- export interface TitleResponse {
161
+ /**
162
+ * Identifies the tool call that an event belongs to. `AiAgent#callFunction()`
163
+ * generates one per call and sets it on every event for that call. Only the
164
+ * UI reads it; the agent never sends it to the model.
165
+ *
166
+ * Conversations saved before this field existed do not have it. The panel
167
+ * applies events without a `callId` to the current step.
168
+ */
169
+ interface ToolCallEvent {
170
+ callId?: string;
171
+ }
172
+
173
+ /**
174
+ * The heading of a tool call's step, from `displayInfoFromArgs().title`.
175
+ */
176
+ export interface TitleResponse extends ToolCallEvent {
93
177
  type: ResponseType.TITLE;
94
178
  title: string;
179
+ /**
180
+ * No agent sets this field.
181
+ */
95
182
  rpcId?: Host.AidaClient.RpcGlobalId;
96
183
  }
97
184
 
98
- export interface ThoughtResponse {
185
+ /**
186
+ * Explanation text for a tool call's step, from
187
+ * `displayInfoFromArgs().thought`. The panel marks the step as completed when
188
+ * it receives a thought, even though the tool has not run yet.
189
+ */
190
+ export interface ThoughtResponse extends ToolCallEvent {
99
191
  type: ResponseType.THOUGHT;
100
192
  thought: string;
193
+ /**
194
+ * No agent sets this field.
195
+ */
101
196
  rpcId?: Host.AidaClient.RpcGlobalId;
102
197
  }
103
198
 
104
- export interface SideEffectResponse {
199
+ /**
200
+ * Asks the user to approve a tool call that has side effects. The agent waits
201
+ * until `confirm()` is called. If `displayInfoFromArgs()` returns an
202
+ * `action`, the agent yields it in a code-only `ACTION` just before this
203
+ * event.
204
+ */
205
+ export interface SideEffectResponse extends ToolCallEvent {
105
206
  type: ResponseType.SIDE_EFFECT;
106
207
  description: string|null;
208
+ /**
209
+ * No agent sets this field. The code comes from the preceding `ACTION`.
210
+ */
107
211
  code?: string;
108
212
  confirm: (decision: PermissionDecision) => void;
109
213
  permissionPrompt?: PermissionPrompt;
110
214
  permissionTitle?: string;
111
215
  }
216
+
217
+ /**
218
+ * Yielded when a tool selects a new context, for example a network request.
219
+ * `AiConversation` switches to the agent for that context and starts a new
220
+ * run. `AiConversation` does not save this event in the history.
221
+ */
112
222
  export interface ContextChangeResponse {
113
223
  type: ResponseType.CONTEXT_CHANGE;
114
224
  /**
@@ -123,22 +233,51 @@ export interface ContextChangeResponse {
123
233
 
124
234
  interface SerializedSideEffectResponse extends Omit<SideEffectResponse, 'confirm'> {}
125
235
 
126
- export interface ActionResponse {
236
+ /**
237
+ * The code and result of a tool call. A call yields one or two:
238
+ * - Calls that need approval and have code first yield a code-only `ACTION`
239
+ * (no `output`), so the panel can show the code above the approval prompt.
240
+ * - Every call that runs, fails or is denied ends with an `ACTION` that has
241
+ * an `output`.
242
+ */
243
+ export interface ActionResponse extends ToolCallEvent {
127
244
  type: ResponseType.ACTION;
245
+ /**
246
+ * The text shown in the step's code box, from
247
+ * `displayInfoFromArgs().action`. It is real code only for tools that run
248
+ * code, such as `executeJavaScript`. For other tools it is a readable form of
249
+ * the call.
250
+ */
128
251
  code?: string;
252
+ /**
253
+ * The tool's result, error message, or the denial message. Missing on the
254
+ * code-only `ACTION` that precedes an approval prompt.
255
+ */
129
256
  output?: string;
257
+ /**
258
+ * True if the user denied the call, so the tool did not run.
259
+ */
130
260
  canceled: boolean;
131
261
  widgets?: AiWidget[];
132
262
  /**
133
- * The name of the executed tool. Only populated for AI v2.
263
+ * The name of the tool. Set on the result `ACTION` but not on the code-only
264
+ * or denied `ACTION`. `AiConversation#serialize()` uses it to redact the
265
+ * output of tools annotated with `REDACT_FROM_HISTORY`.
134
266
  */
135
267
  toolName?: string;
136
268
  }
137
269
 
270
+ /**
271
+ * Yielded before each model request. The panel starts a new step for it.
272
+ */
138
273
  export interface QueryingResponse {
139
274
  type: ResponseType.QUERYING;
140
275
  }
141
276
 
277
+ /**
278
+ * The user's query. Yielded by `AiConversation`, not by the agent, before
279
+ * the first run for the query. The panel starts a new chat message for it.
280
+ */
142
281
  export interface UserQuery {
143
282
  type: ResponseType.USER_QUERY;
144
283
  query: string;
@@ -476,7 +615,17 @@ export interface FunctionDeclaration<Args extends Record<string, unknown>, Retur
476
615
  */
477
616
  parameters: Host.AidaClient.FunctionObjectParam<keyof Args>;
478
617
  /**
479
- * Provided a way to give information back to the UI.
618
+ * Returns the text the UI shows for a call to this function. The agent
619
+ * calls it before the handler runs.
620
+ *
621
+ * - `title`: the step heading, sent as `TITLE`.
622
+ * - `thought`: optional explanation shown in the step, sent as `THOUGHT`.
623
+ * - `action`: the text shown in the step's code box, sent as
624
+ * `ACTION.code`. It is real code only for tools that run code, such as
625
+ * `executeJavaScript`. For other tools it is a readable form of the call,
626
+ * for example `getInsightDetails('NAVIGATION_0', 'LCPBreakdown')`, and is
627
+ * never executed.
628
+ * - `suggestions`: `AiAgent` does not use this field.
480
629
  */
481
630
  displayInfoFromArgs?: (
482
631
  args: Args,
@@ -981,6 +1130,17 @@ export abstract class AiAgent<T> {
981
1130
  response: {...result, widgets: undefined},
982
1131
  },
983
1132
  };
1133
+ if (i === MAX_STEPS - 1) {
1134
+ // Normally, the functionResponse is pushed at the start of the next
1135
+ // iteration. Since no further iteration will run, push it here so the
1136
+ // last functionCall is not left unpaired in history.
1137
+ this.#history.push({
1138
+ parts: [query],
1139
+ role: Host.AidaClient.Role.ROLE_UNSPECIFIED,
1140
+ });
1141
+ yield this.#createErrorResponse(ErrorType.MAX_STEPS);
1142
+ break;
1143
+ }
984
1144
  request = this.buildRequest(query, Host.AidaClient.Role.ROLE_UNSPECIFIED);
985
1145
  } catch (err) {
986
1146
  if (err instanceof CrossOriginError) {
@@ -995,11 +1155,6 @@ export abstract class AiAgent<T> {
995
1155
  yield this.#createErrorResponse(ErrorType.UNKNOWN);
996
1156
  break;
997
1157
  }
998
-
999
- if (i === MAX_STEPS - 1) {
1000
- yield this.#createErrorResponse(ErrorType.MAX_STEPS);
1001
- break;
1002
- }
1003
1158
  }
1004
1159
 
1005
1160
  if (isStructuredLogEnabled()) {
@@ -1042,6 +1197,7 @@ export abstract class AiAgent<T> {
1042
1197
  role: Host.AidaClient.Role.MODEL,
1043
1198
  });
1044
1199
 
1200
+ const callId = crypto.randomUUID();
1045
1201
  let code;
1046
1202
  if (call.displayInfoFromArgs) {
1047
1203
  const {title, thought, action: callCode} = call.displayInfoFromArgs(args);
@@ -1049,6 +1205,7 @@ export abstract class AiAgent<T> {
1049
1205
  if (title) {
1050
1206
  yield {
1051
1207
  type: ResponseType.TITLE,
1208
+ callId,
1052
1209
  title,
1053
1210
  };
1054
1211
  }
@@ -1056,6 +1213,7 @@ export abstract class AiAgent<T> {
1056
1213
  if (thought) {
1057
1214
  yield {
1058
1215
  type: ResponseType.THOUGHT,
1216
+ callId,
1059
1217
  thought,
1060
1218
  };
1061
1219
  }
@@ -1078,6 +1236,7 @@ export abstract class AiAgent<T> {
1078
1236
  if (code) {
1079
1237
  yield {
1080
1238
  type: ResponseType.ACTION,
1239
+ callId,
1081
1240
  code,
1082
1241
  canceled: false,
1083
1242
  };
@@ -1104,6 +1263,7 @@ export abstract class AiAgent<T> {
1104
1263
 
1105
1264
  yield {
1106
1265
  type: ResponseType.SIDE_EFFECT,
1266
+ callId,
1107
1267
  confirm: sideEffectConfirmationPromiseWithResolvers.resolve,
1108
1268
  description: result.description,
1109
1269
  permissionPrompt: call.permissionPrompt,
@@ -1119,6 +1279,7 @@ export abstract class AiAgent<T> {
1119
1279
  if (decision === PermissionDecision.REJECT) {
1120
1280
  yield {
1121
1281
  type: ResponseType.ACTION,
1282
+ callId,
1122
1283
  code,
1123
1284
  output: 'Error: User denied code execution with side effects.',
1124
1285
  canceled: true,
@@ -1152,6 +1313,7 @@ export abstract class AiAgent<T> {
1152
1313
  if ('result' in result) {
1153
1314
  yield {
1154
1315
  type: ResponseType.ACTION,
1316
+ callId,
1155
1317
  code,
1156
1318
  output: typeof result.result === 'string' ? result.result : JSON.stringify(result.result),
1157
1319
  widgets: result.widgets,
@@ -1163,6 +1325,7 @@ export abstract class AiAgent<T> {
1163
1325
  if ('error' in result) {
1164
1326
  yield {
1165
1327
  type: ResponseType.ACTION,
1328
+ callId,
1166
1329
  code,
1167
1330
  output: result.error,
1168
1331
  canceled: false,
@@ -1228,8 +1391,11 @@ export abstract class AiAgent<T> {
1228
1391
  }
1229
1392
 
1230
1393
  #createErrorResponse(error: ErrorType): ResponseData {
1231
- this.#removeLastRunParts();
1232
- this.clearCache();
1394
+ // If we hit MAX_STEPS, we still want to keep the call history as this may be relevant for follow-up requests.
1395
+ if (error !== ErrorType.MAX_STEPS) {
1396
+ this.#removeLastRunParts();
1397
+ this.clearCache();
1398
+ }
1233
1399
  if (error !== ErrorType.ABORT) {
1234
1400
  Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistanceError);
1235
1401
  }
@@ -150,10 +150,10 @@ Content:
150
150
  "",
151
151
  "## insight set id: NAVIGATION_1",
152
152
  "",
153
- "- name: Google CDN, main thread time: 38 ms, network transfer size: 990 B",
153
+ "- name: Google CDN, main thread time: 43 ms, network transfer size: 990 B",
154
154
  "- name: web.dev, main thread time: 3 ms, network transfer size: 84.3 kB",
155
155
  "- name: Google Analytics, main thread time: 0.6 ms, network transfer size: 52.9 kB",
156
- "- name: Google Fonts, main thread time: 0 ms, network transfer size: 42.2 kB",
156
+ "- name: Google Fonts, main thread time: 0.4 ms, network transfer size: 42.2 kB",
157
157
  "",
158
158
  "# Longest tasks",
159
159
  "",
@@ -256,6 +256,10 @@ Content:
256
256
  " relevant trace bounds: {min: 658799775876µs, max: 658799791419µs}",
257
257
  " example question: Show me the most impactful render-blocking requests that I should focus on",
258
258
  " example question: How can I reduce the number of render-blocking requests?",
259
+ " - insight name: ThirdParties",
260
+ " description: 3rd party code can significantly impact load performance. [Reduce and defer loading of 3rd party code](https://developer.chrome.com/docs/performance/insights/third-parties) to prioritize your page’s content.",
261
+ " relevant trace bounds: {min: 658799775876µs, max: 658799789804µs}",
262
+ " example question: Which third parties are having the largest impact on my page performance?",
259
263
  " - insight name: Cache",
260
264
  " description: A long cache lifetime can speed up repeat visits to your page. [Learn more about caching](https://developer.chrome.com/docs/performance/insights/cache).",
261
265
  " relevant trace bounds: {min: 658799777502µs, max: 658799791419µs}",
@@ -280,6 +284,7 @@ Content:
280
284
  "# 3rd party summary",
281
285
  "",
282
286
  "- name: GitHub, main thread time: 3 ms, network transfer size: 0 B",
287
+ "- name: Google Fonts, main thread time: 0.6 ms, network transfer size: 0 B",
283
288
  "",
284
289
  "# Longest tasks",
285
290
  "",
@@ -359,10 +359,12 @@ Content:
359
359
  },
360
360
  {
361
361
  "type": "thought",
362
+ "callId": "00000000-0000-0000-0000-000000000001",
362
363
  "thought": "I am thinking."
363
364
  },
364
365
  {
365
366
  "type": "action",
367
+ "callId": "00000000-0000-0000-0000-000000000001",
366
368
  "code": "console.log('hello');",
367
369
  "output": "hello",
368
370
  "canceled": false,
@@ -796,43 +796,38 @@ This insight identified legacy JavaScript in your application's modules that may
796
796
  Polyfills and transforms enable older browsers to use new JavaScript features. However, many are not necessary for modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you know you must support older browsers.
797
797
 
798
798
  ## Detailed analysis:
799
- Total legacy JavaScript: 8 files.
799
+ Total legacy JavaScript: 7 files.
800
800
 
801
801
  Legacy JavaScript by file:
802
802
 
803
- - Script: https://s.yimg.com/aaq/benji/benji-2.2.99.js (eventKey: s-3387, ts: 157423742567) - Wasted bytes: 37204 bytes
804
- Matches:
805
- Line: 0, Column: 133, Name: Promise.allSettled
806
-
807
- - Script: https://s.yimg.com/aaq/c/25fa214.caas-news_web.min.js (eventKey: s-3412, ts: 157423743431) - Wasted bytes: 36084 bytes
803
+ - Script: https://s.yimg.com/aaq/c/25fa214.caas-news_web.min.js (eventKey: s-3412, ts: 157423743431) - Wasted bytes: 37667 bytes
808
804
  Matches:
809
805
  Line: 0, Column: 13310, Name: Array.from
810
806
  Line: 0, Column: 14623, Name: Object.assign
811
807
 
812
- - Script: https://s.yimg.com/du/ay/wnsrvbjmeprtfrnfx.js (eventKey: s-6273, ts: 157423760794) - Wasted bytes: 12850 bytes
808
+ - Script: https://s.yimg.com/aaq/benji/benji-2.2.99.js (eventKey: s-3387, ts: 157423742567) - Wasted bytes: 36554 bytes
809
+ Matches:
810
+ Line: 0, Column: 133, Name: Promise.allSettled
811
+
812
+ - Script: https://s.yimg.com/du/ay/wnsrvbjmeprtfrnfx.js (eventKey: s-6273, ts: 157423760794) - Wasted bytes: 12851 bytes
813
813
  Matches:
814
814
  Line: 111, Column: 7829, Name: @babel/plugin-transform-spread
815
815
  Line: 111, Column: 1794, Name: Array.prototype.find
816
- Line: 111, Column: 2127, Name: Array.prototype.includes
817
816
  Line: 111, Column: 2748, Name: Object.values
818
817
  Line: 111, Column: 2473, Name: String.prototype.includes
819
818
  Line: 111, Column: 2627, Name: String.prototype.startsWith
820
819
 
821
- - Script: https://static.criteo.net/js/ld/publishertag.prebid.144.js (eventKey: s-257378, ts: 157426026656) - Wasted bytes: 10751 bytes
820
+ - Script: https://static.criteo.net/js/ld/publishertag.prebid.144.js (eventKey: s-257378, ts: 157426026656) - Wasted bytes: 10904 bytes
822
821
  Matches:
823
822
  Line: 1, Column: 74871, Name: Array.isArray
824
823
  Line: 1, Column: 75344, Name: Array.prototype.filter
825
824
  Line: 1, Column: 75013, Name: Array.prototype.indexOf
826
825
 
827
- - Script: https://s.yimg.com/oa/consent.js (eventKey: s-3384, ts: 157423742450) - Wasted bytes: 8157 bytes
828
- Matches:
829
- Line: 1, Column: 132267, Name: Array.prototype.includes
830
-
831
- - Script: https://pm-widget.taboola.com/yahooweb-network/pmk-20220605.1.js (eventKey: s-52229, ts: 157424128231) - Wasted bytes: 7625 bytes
826
+ - Script: https://pm-widget.taboola.com/yahooweb-network/pmk-20220605.1.js (eventKey: s-52229, ts: 157424128231) - Wasted bytes: 7655 bytes
832
827
  Matches:
833
828
  Line: 181, Column: 26, Name: Object.keys
834
829
 
835
- - Script: https://news.yahoo.com/ (eventKey: s-2116, ts: 157423489126) - Wasted bytes: 7141 bytes
830
+ - Script: https://news.yahoo.com/ (eventKey: s-2116, ts: 157423489126) - Wasted bytes: 7235 bytes
836
831
  Matches:
837
832
  Line: 0, Column: 8382, Name: @babel/plugin-transform-classes
838
833
  Line: 0, Column: 107712, Name: Array.prototype.filter
@@ -840,7 +835,7 @@ Line: 0, Column: 107393, Name: Array.prototype.forEach
840
835
  Line: 0, Column: 108005, Name: Array.prototype.map
841
836
  Line: 0, Column: 108358, Name: String.prototype.includes
842
837
 
843
- - Script: https://cdn.taboola.com/libtrc/yahooweb-network/loader.js (eventKey: s-6352, ts: 157423761978) - Wasted bytes: 7061 bytes
838
+ - Script: https://cdn.taboola.com/libtrc/yahooweb-network/loader.js (eventKey: s-6352, ts: 157423761978) - Wasted bytes: 7087 bytes
844
839
  Matches:
845
840
  Line: 0, Column: 390544, Name: Object.entries
846
841
  Line: 0, Column: 390688, Name: Object.values
@@ -265,7 +265,7 @@ Here are all the insights that contain some related request from the given range
265
265
  - ThirdParties: cmp.js (consent.cmp.oath.com) (eventKey: s-3382, ts: 157423742399), gpt.js (securepubads.g.doubleclick.net) (eventKey: s-6244, ts: 157423760529), loader.js (cdn.taboola.com) (eventKey: s-6352, ts: 157423761978)
266
266
  - Cache: prebid-2.0.js (s.yimg.com) (eventKey: s-6279, ts: 157423760925), cmp.js (consent.cmp.oath.com) (eventKey: s-3382, ts: 157423742399), d1irmdsmbztlvx.js (s.yimg.com) (eventKey: s-6185, ts: 157423759200), consent.js (s.yimg.com) (eventKey: s-3384, ts: 157423742450), wnsrvbjmeprtfrnfx.js (s.yimg.com) (eventKey: s-6273, ts: 157423760794)
267
267
  - CharacterSet: news.yahoo.com/ (news.yahoo.com) (eventKey: s-2116, ts: 157423489126)
268
- - LegacyJavaScript: benji-2.2.99.js (s.yimg.com) (eventKey: s-3387, ts: 157423742567), 25fa214.caas-news_web.min.js (s.yimg.com) (eventKey: s-3412, ts: 157423743431), wnsrvbjmeprtfrnfx.js (s.yimg.com) (eventKey: s-6273, ts: 157423760794), consent.js (s.yimg.com) (eventKey: s-3384, ts: 157423742450), news.yahoo.com/ (news.yahoo.com) (eventKey: s-2116, ts: 157423489126)
268
+ - LegacyJavaScript: 25fa214.caas-news_web.min.js (s.yimg.com) (eventKey: s-3412, ts: 157423743431), benji-2.2.99.js (s.yimg.com) (eventKey: s-3387, ts: 157423742567), wnsrvbjmeprtfrnfx.js (s.yimg.com) (eventKey: s-6273, ts: 157423760794), news.yahoo.com/ (news.yahoo.com) (eventKey: s-2116, ts: 157423489126), loader.js (cdn.taboola.com) (eventKey: s-6352, ts: 157423761978)
269
269
  === end content
270
270
 
271
271
  Title: PerformanceTraceFormatter formatTraceSummary web-dev.json.gz
@@ -380,7 +380,7 @@ Available insights:
380
380
  description: Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren’t necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/articles/baseline-and-polyfills) features, unless you know you must support older browsers. [Learn why most sites can deploy ES6+ code without transpiling](https://developer.chrome.com/docs/performance/insights/legacy-javascript).
381
381
  relevant trace bounds: {min: 157423489126µs, max: 157426132225µs}
382
382
  estimated metric savings: FCP 0 ms, LCP 0 ms
383
- estimated wasted bytes: 126.9 kB
383
+ estimated wasted bytes: 120 kB
384
384
  example question: Is my site polyfilling modern JavaScript features?
385
385
  example question: How can I reduce the amount of legacy JavaScript on my page?
386
386
  === end content