chrome-ai-bridge 1.0.0

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 (443) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +252 -0
  3. package/build/node_modules/chrome-devtools-frontend/LICENSE +27 -0
  4. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +4 -0
  5. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +17 -0
  6. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +43 -0
  7. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +27 -0
  8. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +2033 -0
  9. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +332 -0
  10. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +221 -0
  11. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +79 -0
  12. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +14 -0
  13. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +14 -0
  14. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +66 -0
  15. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +4 -0
  16. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +29 -0
  17. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +22 -0
  18. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +49 -0
  19. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +86 -0
  20. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +449 -0
  21. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +144 -0
  22. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +69 -0
  23. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +495 -0
  24. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +15 -0
  25. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +164 -0
  26. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +24 -0
  27. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +78 -0
  28. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +164 -0
  29. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +1263 -0
  30. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +97 -0
  31. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +14 -0
  32. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +40 -0
  33. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +71 -0
  34. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +127 -0
  35. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +41 -0
  36. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +434 -0
  37. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +66 -0
  38. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +202 -0
  39. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +92 -0
  40. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +69 -0
  41. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
  42. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +61 -0
  43. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +220 -0
  44. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +968 -0
  45. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +13 -0
  46. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +60 -0
  47. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +199 -0
  48. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +4 -0
  49. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +4 -0
  50. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +13 -0
  51. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +27 -0
  52. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
  53. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +21 -0
  54. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +79 -0
  55. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +143 -0
  56. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +72 -0
  57. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +538 -0
  58. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +9 -0
  59. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +157 -0
  60. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +24 -0
  61. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +4 -0
  62. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +22 -0
  63. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
  64. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
  65. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +63 -0
  66. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
  67. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
  68. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
  69. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +26 -0
  70. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +17 -0
  71. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +12 -0
  72. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +138 -0
  73. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +539 -0
  74. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +8 -0
  75. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +54 -0
  76. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +4 -0
  77. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +6 -0
  78. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +281 -0
  79. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +845 -0
  80. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +155 -0
  81. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +99 -0
  82. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +217 -0
  83. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +98 -0
  84. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +31 -0
  85. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +22 -0
  86. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +1318 -0
  87. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +100 -0
  88. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +1532 -0
  89. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +908 -0
  90. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +312 -0
  91. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +574 -0
  92. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1346 -0
  93. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +53 -0
  94. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +403 -0
  95. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +22 -0
  96. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +21 -0
  97. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +275 -0
  98. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +166 -0
  99. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +24 -0
  100. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +29 -0
  101. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +236 -0
  102. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +47 -0
  103. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +205 -0
  104. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +629 -0
  105. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +14 -0
  106. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +241 -0
  107. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +198 -0
  108. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +163 -0
  109. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +597 -0
  110. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +1635 -0
  111. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1216 -0
  112. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +527 -0
  113. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +364 -0
  114. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +127 -0
  115. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +4 -0
  116. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +199 -0
  117. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +130 -0
  118. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +75 -0
  119. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +80 -0
  120. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +208 -0
  121. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +41 -0
  122. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +95 -0
  123. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +34 -0
  124. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +2223 -0
  125. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1654 -0
  126. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +48 -0
  127. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +765 -0
  128. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +384 -0
  129. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +25 -0
  130. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +310 -0
  131. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +67 -0
  132. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +62 -0
  133. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +608 -0
  134. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +413 -0
  135. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +4 -0
  136. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +908 -0
  137. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +163 -0
  138. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +923 -0
  139. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +535 -0
  140. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +45 -0
  141. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +36 -0
  142. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +176 -0
  143. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +420 -0
  144. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +54 -0
  145. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +67 -0
  146. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +113 -0
  147. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +216 -0
  148. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +271 -0
  149. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +511 -0
  150. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +691 -0
  151. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +57 -0
  152. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +132 -0
  153. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +201 -0
  154. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +156 -0
  155. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +508 -0
  156. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +143 -0
  157. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +53 -0
  158. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +257 -0
  159. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +395 -0
  160. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +55 -0
  161. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +66 -0
  162. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +1166 -0
  163. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +91 -0
  164. package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +2640 -0
  165. package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +384 -0
  166. package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1532 -0
  167. package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7602 -0
  168. package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +4 -0
  169. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +289 -0
  170. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +995 -0
  171. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +664 -0
  172. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +139 -0
  173. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +377 -0
  174. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +131 -0
  175. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +149 -0
  176. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +245 -0
  177. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +486 -0
  178. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +130 -0
  179. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +992 -0
  180. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +592 -0
  181. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +112 -0
  182. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +186 -0
  183. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +60 -0
  184. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +107 -0
  185. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +244 -0
  186. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +564 -0
  187. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +437 -0
  188. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +87 -0
  189. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +182 -0
  190. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +268 -0
  191. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +55 -0
  192. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +20 -0
  193. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +516 -0
  194. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +89 -0
  195. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +6 -0
  196. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +285 -0
  197. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +4 -0
  198. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +775 -0
  199. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +1706 -0
  200. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +6 -0
  201. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +145 -0
  202. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +77 -0
  203. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +6 -0
  204. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +347 -0
  205. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +4 -0
  206. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +67 -0
  207. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +494 -0
  208. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +49 -0
  209. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +73 -0
  210. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +7 -0
  211. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +4 -0
  212. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +256 -0
  213. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +122 -0
  214. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +6 -0
  215. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
  216. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +622 -0
  217. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +59 -0
  218. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +7 -0
  219. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +4 -0
  220. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +67 -0
  221. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +97 -0
  222. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +121 -0
  223. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +5 -0
  224. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +7 -0
  225. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +32 -0
  226. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +173 -0
  227. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +30 -0
  228. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +32 -0
  229. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +79 -0
  230. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +69 -0
  231. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +35 -0
  232. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +231 -0
  233. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +355 -0
  234. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +68 -0
  235. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +14 -0
  236. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +122 -0
  237. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +81 -0
  238. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +371 -0
  239. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +169 -0
  240. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +114 -0
  241. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +555 -0
  242. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +815 -0
  243. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +44 -0
  244. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +76 -0
  245. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +162 -0
  246. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +191 -0
  247. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +118 -0
  248. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +50 -0
  249. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +599 -0
  250. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +10 -0
  251. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +109 -0
  252. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +26 -0
  253. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +187 -0
  254. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +162 -0
  255. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +21 -0
  256. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +263 -0
  257. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +148 -0
  258. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +485 -0
  259. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +35 -0
  260. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +147 -0
  261. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +180 -0
  262. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +126 -0
  263. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +85 -0
  264. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +27 -0
  265. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +103 -0
  266. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +449 -0
  267. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +21 -0
  268. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +404 -0
  269. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +33 -0
  270. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +566 -0
  271. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +42 -0
  272. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +349 -0
  273. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +346 -0
  274. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +260 -0
  275. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +97 -0
  276. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +276 -0
  277. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +71 -0
  278. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +101 -0
  279. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +317 -0
  280. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +183 -0
  281. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +134 -0
  282. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +33 -0
  283. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +7 -0
  284. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +163 -0
  285. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +1 -0
  286. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +41 -0
  287. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +102 -0
  288. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +495 -0
  289. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +74 -0
  290. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +186 -0
  291. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +820 -0
  292. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +254 -0
  293. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +10 -0
  294. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +489 -0
  295. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +209 -0
  296. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +340 -0
  297. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +181 -0
  298. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +258 -0
  299. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +90 -0
  300. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +82 -0
  301. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +161 -0
  302. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +129 -0
  303. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +263 -0
  304. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +199 -0
  305. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +183 -0
  306. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +90 -0
  307. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +21 -0
  308. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +200 -0
  309. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +545 -0
  310. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +192 -0
  311. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +136 -0
  312. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +92 -0
  313. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +98 -0
  314. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +102 -0
  315. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +9 -0
  316. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +18 -0
  317. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +6 -0
  318. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +488 -0
  319. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +5 -0
  320. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +276 -0
  321. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +63 -0
  322. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +82 -0
  323. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +551 -0
  324. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +7 -0
  325. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +9 -0
  326. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +136 -0
  327. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +67 -0
  328. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +68 -0
  329. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +48 -0
  330. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +68 -0
  331. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +101 -0
  332. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +64 -0
  333. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +78 -0
  334. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +11 -0
  335. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +115 -0
  336. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +42 -0
  337. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +47 -0
  338. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +134 -0
  339. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +450 -0
  340. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +154 -0
  341. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +9 -0
  342. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +24 -0
  343. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +4 -0
  344. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +17 -0
  345. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +18 -0
  346. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +37 -0
  347. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +57 -0
  348. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +4 -0
  349. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +15 -0
  350. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +580 -0
  351. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +9 -0
  352. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +224 -0
  353. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +4 -0
  354. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +64 -0
  355. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +504 -0
  356. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +113 -0
  357. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +601 -0
  358. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +201 -0
  359. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
  360. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +9 -0
  361. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +1 -0
  362. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +202 -0
  363. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +2 -0
  364. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +940 -0
  365. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +26 -0
  366. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +196 -0
  367. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +226 -0
  368. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +4 -0
  369. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +394 -0
  370. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +24 -0
  371. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +283 -0
  372. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +7 -0
  373. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +9 -0
  374. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +84 -0
  375. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +4 -0
  376. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +20 -0
  377. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +146 -0
  378. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +2 -0
  379. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +2 -0
  380. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +118 -0
  381. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +40 -0
  382. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +26 -0
  383. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +4 -0
  384. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +215 -0
  385. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +4 -0
  386. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +4 -0
  387. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +4 -0
  388. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +2 -0
  389. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +2 -0
  390. package/build/src/McpContext.js +400 -0
  391. package/build/src/McpResponse.js +237 -0
  392. package/build/src/Mutex.js +40 -0
  393. package/build/src/PageCollector.js +68 -0
  394. package/build/src/WaitForHelper.js +134 -0
  395. package/build/src/browser-connection-manager.js +373 -0
  396. package/build/src/browser.js +719 -0
  397. package/build/src/cli.js +120 -0
  398. package/build/src/client-detector.js +93 -0
  399. package/build/src/config.js +38 -0
  400. package/build/src/formatters/consoleFormatter.js +73 -0
  401. package/build/src/formatters/extensionsPageFormatter.js +184 -0
  402. package/build/src/formatters/networkFormatter.js +34 -0
  403. package/build/src/formatters/snapshotFormatter.js +80 -0
  404. package/build/src/graceful.js +125 -0
  405. package/build/src/index.js +13 -0
  406. package/build/src/logger.js +27 -0
  407. package/build/src/login-helper.js +431 -0
  408. package/build/src/main.js +268 -0
  409. package/build/src/plugin-api.js +189 -0
  410. package/build/src/profile-migration.js +82 -0
  411. package/build/src/profile-resolver.js +555 -0
  412. package/build/src/project-detector.js +71 -0
  413. package/build/src/project-root-state.js +18 -0
  414. package/build/src/roots-manager.js +253 -0
  415. package/build/src/selectors/chatgpt.json +61 -0
  416. package/build/src/selectors/gemini.json +24 -0
  417. package/build/src/selectors/loader.js +128 -0
  418. package/build/src/stable-identity.js +193 -0
  419. package/build/src/startup-check.js +147 -0
  420. package/build/src/system-profile.js +181 -0
  421. package/build/src/tools/ToolDefinition.js +9 -0
  422. package/build/src/tools/bookmarks.js +170 -0
  423. package/build/src/tools/categories.js +15 -0
  424. package/build/src/tools/chatgpt-web.js +507 -0
  425. package/build/src/tools/console.js +19 -0
  426. package/build/src/tools/core-tools.js +65 -0
  427. package/build/src/tools/diagnose-ui.js +328 -0
  428. package/build/src/tools/emulation.js +67 -0
  429. package/build/src/tools/extensions.js +185 -0
  430. package/build/src/tools/gemini-web.js +491 -0
  431. package/build/src/tools/iframe-popup-tools.js +204 -0
  432. package/build/src/tools/input.js +185 -0
  433. package/build/src/tools/network.js +68 -0
  434. package/build/src/tools/optional-tools.js +69 -0
  435. package/build/src/tools/pages.js +172 -0
  436. package/build/src/tools/performance.js +127 -0
  437. package/build/src/tools/screenshot.js +48 -0
  438. package/build/src/tools/script.js +39 -0
  439. package/build/src/tools/snapshot.js +45 -0
  440. package/build/src/trace-processing/parse.js +93 -0
  441. package/build/src/utils/pagination.js +49 -0
  442. package/package.json +90 -0
  443. package/scripts/cli.mjs +49 -0
@@ -0,0 +1,485 @@
1
+ // Copyright 2023 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+ import * as Platform from '../../../core/platform/platform.js';
5
+ import * as Helpers from '../helpers/helpers.js';
6
+ import * as Types from '../types/types.js';
7
+ import { data as auctionWorkletsData } from './AuctionWorkletsHandler.js';
8
+ import { data as layerTreeHandlerData } from './LayerTreeHandler.js';
9
+ import { data as metaHandlerData } from './MetaHandler.js';
10
+ import { data as rendererHandlerData } from './RendererHandler.js';
11
+ import * as Threads from './Threads.js';
12
+ /**
13
+ * IMPORTANT: this handler is slightly different to the rest. This is because
14
+ * it is an adaptation of the TimelineFrameModel that has been used in DevTools
15
+ * for many years. Rather than re-implement all the logic from scratch, instead
16
+ * this handler gathers up the events and instantitates the class in the
17
+ * finalize() method. Once the class has parsed all events, it is used to then
18
+ * return the array of frames.
19
+ *
20
+ * In time we expect to migrate this code to a more "typical" handler.
21
+ */
22
+ let model = null;
23
+ let relevantFrameEvents = [];
24
+ function isFrameEvent(event) {
25
+ return (Types.Events.isSetLayerId(event) || Types.Events.isBeginFrame(event) || Types.Events.isDroppedFrame(event) ||
26
+ Types.Events.isRequestMainThreadFrame(event) || Types.Events.isBeginMainThreadFrame(event) ||
27
+ Types.Events.isNeedsBeginFrameChanged(event) ||
28
+ // Note that "Commit" is the replacement for "CompositeLayers" so in a trace
29
+ // we wouldn't expect to see a combination of these. All "new" trace
30
+ // recordings use "Commit", but we can easily support "CompositeLayers" too
31
+ // to not break older traces being imported.
32
+ Types.Events.isCommit(event) || Types.Events.isCompositeLayers(event) ||
33
+ Types.Events.isActivateLayerTree(event) || Types.Events.isDrawFrame(event));
34
+ }
35
+ function entryIsTopLevel(entry) {
36
+ const devtoolsTimelineCategory = 'disabled-by-default-devtools.timeline';
37
+ return entry.name === "RunTask" /* Types.Events.Name.RUN_TASK */ && entry.cat.includes(devtoolsTimelineCategory);
38
+ }
39
+ const MAIN_FRAME_MARKERS = new Set([
40
+ "ScheduleStyleRecalculation" /* Types.Events.Name.SCHEDULE_STYLE_RECALCULATION */,
41
+ "InvalidateLayout" /* Types.Events.Name.INVALIDATE_LAYOUT */,
42
+ "BeginMainThreadFrame" /* Types.Events.Name.BEGIN_MAIN_THREAD_FRAME */,
43
+ "ScrollLayer" /* Types.Events.Name.SCROLL_LAYER */,
44
+ ]);
45
+ export function reset() {
46
+ model = null;
47
+ relevantFrameEvents = [];
48
+ }
49
+ export function handleEvent(event) {
50
+ // This might seem like a wide set of events to filter for, but these are all
51
+ // the types of events that we care about in the TimelineFrameModel class at
52
+ // the bottom of this file. Previously we would take a copy of an array of
53
+ // all trace events, but on a few test traces, this set of filtered events
54
+ // accounts for about 10% of the total events, so it's a big performance win
55
+ // to deal with a much smaller subset of the data.
56
+ if (isFrameEvent(event) || Types.Events.isLayerTreeHostImplSnapshot(event) || entryIsTopLevel(event) ||
57
+ MAIN_FRAME_MARKERS.has(event.name) || Types.Events.isPaint(event)) {
58
+ relevantFrameEvents.push(event);
59
+ }
60
+ }
61
+ export async function finalize() {
62
+ // We have to sort the events by timestamp, because the model code expects to
63
+ // process events in order.
64
+ Helpers.Trace.sortTraceEventsInPlace(relevantFrameEvents);
65
+ const modelForTrace = new TimelineFrameModel(relevantFrameEvents, rendererHandlerData(), auctionWorkletsData(), metaHandlerData(), layerTreeHandlerData());
66
+ model = modelForTrace;
67
+ }
68
+ export function data() {
69
+ return {
70
+ frames: model?.frames() ?? [],
71
+ framesById: model?.framesById() ?? {},
72
+ };
73
+ }
74
+ export function deps() {
75
+ return ['Meta', 'Renderer', 'AuctionWorklets', 'LayerTree'];
76
+ }
77
+ export class TimelineFrameModel {
78
+ #frames = [];
79
+ #frameById = {};
80
+ #beginFrameQueue = new TimelineFrameBeginFrameQueue();
81
+ #lastFrame = null;
82
+ #mainFrameCommitted = false;
83
+ #mainFrameRequested = false;
84
+ #lastLayerTree = null;
85
+ #framePendingActivation = null;
86
+ #framePendingCommit = null;
87
+ #lastBeginFrame = null;
88
+ #lastNeedsBeginFrame = null;
89
+ #lastTaskBeginTime = null;
90
+ #layerTreeId = null;
91
+ #activeProcessId = null;
92
+ #activeThreadId = null;
93
+ #layerTreeData;
94
+ constructor(allEvents, rendererData, auctionWorkletsData, metaData, layerTreeData) {
95
+ // We only care about getting threads from the Renderer, not Samples,
96
+ // because Frames don't exist in a CPU Profile (which won't have Renderer
97
+ // threads.)
98
+ const mainThreads = Threads.threadsInRenderer(rendererData, auctionWorkletsData).filter(thread => {
99
+ return thread.type === "MAIN_THREAD" /* Threads.ThreadType.MAIN_THREAD */ && thread.processIsOnMainFrame;
100
+ });
101
+ const threadData = mainThreads.map(thread => {
102
+ return {
103
+ tid: thread.tid,
104
+ pid: thread.pid,
105
+ startTime: thread.entries[0].ts,
106
+ };
107
+ });
108
+ this.#layerTreeData = layerTreeData;
109
+ this.#addTraceEvents(allEvents, threadData, metaData.mainFrameId);
110
+ }
111
+ framesById() {
112
+ return this.#frameById;
113
+ }
114
+ frames() {
115
+ return this.#frames;
116
+ }
117
+ #handleBeginFrame(startTime, seqId) {
118
+ if (!this.#lastFrame) {
119
+ this.#startFrame(startTime, seqId);
120
+ }
121
+ this.#lastBeginFrame = startTime;
122
+ this.#beginFrameQueue.addFrameIfNotExists(seqId, startTime, false, false);
123
+ }
124
+ #handleDroppedFrame(startTime, seqId, isPartial) {
125
+ if (!this.#lastFrame) {
126
+ this.#startFrame(startTime, seqId);
127
+ }
128
+ // This line handles the case where no BeginFrame event is issued for
129
+ // the dropped frame. In this situation, add a BeginFrame to the queue
130
+ // as if it actually occurred.
131
+ this.#beginFrameQueue.addFrameIfNotExists(seqId, startTime, true, isPartial);
132
+ this.#beginFrameQueue.setDropped(seqId, true);
133
+ this.#beginFrameQueue.setPartial(seqId, isPartial);
134
+ }
135
+ #handleDrawFrame(startTime, seqId) {
136
+ if (!this.#lastFrame) {
137
+ this.#startFrame(startTime, seqId);
138
+ return;
139
+ }
140
+ // - if it wasn't drawn, it didn't happen!
141
+ // - only show frames that either did not wait for the main thread frame or had one committed.
142
+ if (this.#mainFrameCommitted || !this.#mainFrameRequested) {
143
+ if (this.#lastNeedsBeginFrame) {
144
+ const idleTimeEnd = this.#framePendingActivation ? this.#framePendingActivation.triggerTime :
145
+ (this.#lastBeginFrame || this.#lastNeedsBeginFrame);
146
+ if (idleTimeEnd > this.#lastFrame.startTime) {
147
+ this.#lastFrame.idle = true;
148
+ this.#lastBeginFrame = null;
149
+ }
150
+ this.#lastNeedsBeginFrame = null;
151
+ }
152
+ const framesToVisualize = this.#beginFrameQueue.processPendingBeginFramesOnDrawFrame(seqId);
153
+ // Visualize the current frame and all pending frames before it.
154
+ for (const frame of framesToVisualize) {
155
+ const isLastFrameIdle = this.#lastFrame.idle;
156
+ // If |frame| is the first frame after an idle period, the CPU time
157
+ // will be logged ("committed") under |frame| if applicable.
158
+ this.#startFrame(frame.startTime, seqId);
159
+ if (isLastFrameIdle && this.#framePendingActivation) {
160
+ this.#commitPendingFrame();
161
+ }
162
+ if (frame.isDropped) {
163
+ this.#lastFrame.dropped = true;
164
+ }
165
+ if (frame.isPartial) {
166
+ this.#lastFrame.isPartial = true;
167
+ }
168
+ }
169
+ }
170
+ this.#mainFrameCommitted = false;
171
+ }
172
+ #handleActivateLayerTree() {
173
+ if (!this.#lastFrame) {
174
+ return;
175
+ }
176
+ if (this.#framePendingActivation && !this.#lastNeedsBeginFrame) {
177
+ this.#commitPendingFrame();
178
+ }
179
+ }
180
+ #handleRequestMainThreadFrame() {
181
+ if (!this.#lastFrame) {
182
+ return;
183
+ }
184
+ this.#mainFrameRequested = true;
185
+ }
186
+ #handleCommit() {
187
+ if (!this.#framePendingCommit) {
188
+ return;
189
+ }
190
+ this.#framePendingActivation = this.#framePendingCommit;
191
+ this.#framePendingCommit = null;
192
+ this.#mainFrameRequested = false;
193
+ this.#mainFrameCommitted = true;
194
+ }
195
+ #handleLayerTreeSnapshot(layerTree) {
196
+ this.#lastLayerTree = layerTree;
197
+ }
198
+ #handleNeedFrameChanged(startTime, needsBeginFrame) {
199
+ if (needsBeginFrame) {
200
+ this.#lastNeedsBeginFrame = startTime;
201
+ }
202
+ }
203
+ #startFrame(startTime, seqId) {
204
+ if (this.#lastFrame) {
205
+ this.#flushFrame(this.#lastFrame, startTime);
206
+ }
207
+ this.#lastFrame =
208
+ new TimelineFrame(seqId, startTime, Types.Timing.Micro(startTime - metaHandlerData().traceBounds.min));
209
+ }
210
+ #flushFrame(frame, endTime) {
211
+ frame.setLayerTree(this.#lastLayerTree);
212
+ frame.setEndTime(endTime);
213
+ if (this.#lastLayerTree) {
214
+ this.#lastLayerTree.paints = frame.paints;
215
+ }
216
+ const lastFrame = this.#frames[this.#frames.length - 1];
217
+ if (this.#frames.length && lastFrame &&
218
+ (frame.startTime !== lastFrame.endTime || frame.startTime > frame.endTime)) {
219
+ console.assert(false, `Inconsistent frame time for frame ${this.#frames.length} (${frame.startTime} - ${frame.endTime})`);
220
+ }
221
+ const newFramesLength = this.#frames.push(frame);
222
+ frame.setIndex(newFramesLength - 1);
223
+ if (typeof frame.mainFrameId === 'number') {
224
+ this.#frameById[frame.mainFrameId] = frame;
225
+ }
226
+ }
227
+ #commitPendingFrame() {
228
+ if (!this.#framePendingActivation || !this.#lastFrame) {
229
+ return;
230
+ }
231
+ this.#lastFrame.paints = this.#framePendingActivation.paints;
232
+ this.#lastFrame.mainFrameId = this.#framePendingActivation.mainFrameId;
233
+ this.#framePendingActivation = null;
234
+ }
235
+ #addTraceEvents(events, threadData, mainFrameId) {
236
+ let j = 0;
237
+ this.#activeThreadId = threadData.length && threadData[0].tid || null;
238
+ this.#activeProcessId = threadData.length && threadData[0].pid || null;
239
+ for (let i = 0; i < events.length; ++i) {
240
+ while (j + 1 < threadData.length && threadData[j + 1].startTime <= events[i].ts) {
241
+ this.#activeThreadId = threadData[++j].tid;
242
+ this.#activeProcessId = threadData[j].pid;
243
+ }
244
+ this.#addTraceEvent(events[i], mainFrameId);
245
+ }
246
+ this.#activeThreadId = null;
247
+ this.#activeProcessId = null;
248
+ }
249
+ #addTraceEvent(event, mainFrameId) {
250
+ if (Types.Events.isSetLayerId(event) && event.args.data.frame === mainFrameId) {
251
+ this.#layerTreeId = event.args.data.layerTreeId;
252
+ }
253
+ else if (Types.Events.isLayerTreeHostImplSnapshot(event) && Number(event.id) === this.#layerTreeId) {
254
+ this.#handleLayerTreeSnapshot({
255
+ entry: event,
256
+ paints: [],
257
+ });
258
+ }
259
+ else {
260
+ if (isFrameEvent(event)) {
261
+ this.#processCompositorEvents(event);
262
+ }
263
+ // Make sure we only use events from the main thread: we check the PID as
264
+ // well in case two processes have a thread with the same TID.
265
+ if (event.tid === this.#activeThreadId && event.pid === this.#activeProcessId) {
266
+ this.#addMainThreadTraceEvent(event);
267
+ }
268
+ }
269
+ }
270
+ #processCompositorEvents(entry) {
271
+ if (entry.args['layerTreeId'] !== this.#layerTreeId) {
272
+ return;
273
+ }
274
+ if (Types.Events.isBeginFrame(entry)) {
275
+ this.#handleBeginFrame(entry.ts, entry.args['frameSeqId']);
276
+ }
277
+ else if (Types.Events.isDrawFrame(entry)) {
278
+ this.#handleDrawFrame(entry.ts, entry.args['frameSeqId']);
279
+ }
280
+ else if (Types.Events.isActivateLayerTree(entry)) {
281
+ this.#handleActivateLayerTree();
282
+ }
283
+ else if (Types.Events.isRequestMainThreadFrame(entry)) {
284
+ this.#handleRequestMainThreadFrame();
285
+ }
286
+ else if (Types.Events.isNeedsBeginFrameChanged(entry)) {
287
+ // needsBeginFrame property will either be 0 or 1, which represents
288
+ // true/false in this case, hence the Boolean() wrapper.
289
+ this.#handleNeedFrameChanged(entry.ts, entry.args['data'] && Boolean(entry.args['data']['needsBeginFrame']));
290
+ }
291
+ else if (Types.Events.isDroppedFrame(entry)) {
292
+ this.#handleDroppedFrame(entry.ts, entry.args['frameSeqId'], Boolean(entry.args['hasPartialUpdate']));
293
+ }
294
+ }
295
+ #addMainThreadTraceEvent(entry) {
296
+ if (entryIsTopLevel(entry)) {
297
+ this.#lastTaskBeginTime = entry.ts;
298
+ }
299
+ if (!this.#framePendingCommit && MAIN_FRAME_MARKERS.has(entry.name)) {
300
+ this.#framePendingCommit = new PendingFrame(this.#lastTaskBeginTime || entry.ts);
301
+ }
302
+ if (!this.#framePendingCommit) {
303
+ return;
304
+ }
305
+ if (Types.Events.isBeginMainThreadFrame(entry) && entry.args.data.frameId) {
306
+ this.#framePendingCommit.mainFrameId = entry.args.data.frameId;
307
+ }
308
+ if (Types.Events.isPaint(entry)) {
309
+ const snapshot = this.#layerTreeData.paintsToSnapshots.get(entry);
310
+ if (snapshot) {
311
+ this.#framePendingCommit.paints.push(new LayerPaintEvent(entry, snapshot));
312
+ }
313
+ }
314
+ // Commit will be replacing CompositeLayers but CompositeLayers is kept
315
+ // around for backwards compatibility.
316
+ if ((Types.Events.isCompositeLayers(entry) || Types.Events.isCommit(entry)) &&
317
+ entry.args['layerTreeId'] === this.#layerTreeId) {
318
+ this.#handleCommit();
319
+ }
320
+ }
321
+ }
322
+ /**
323
+ * Legacy class that represents TimelineFrames that was ported from the old SDK.
324
+ * This class is purposefully not exported as it breaks the abstraction that
325
+ * every event shown on the timeline is a trace event. Instead, we use the Type
326
+ * LegacyTimelineFrame to represent frames in the codebase. These do implement
327
+ * the right interface to be treated just like they were a trace event.
328
+ */
329
+ class TimelineFrame {
330
+ // These fields exist to satisfy the base Event type which all
331
+ // "trace events" must implement. They aren't used, but doing this means we
332
+ // can pass `TimelineFrame` instances into places that expect
333
+ // Types.Events.Event.
334
+ cat = 'devtools.legacy_frame';
335
+ name = 'frame';
336
+ ph = "X" /* Types.Events.Phase.COMPLETE */;
337
+ ts;
338
+ pid = Types.Events.ProcessID(-1);
339
+ tid = Types.Events.ThreadID(-1);
340
+ index = -1;
341
+ startTime;
342
+ startTimeOffset;
343
+ endTime;
344
+ duration;
345
+ idle;
346
+ dropped;
347
+ isPartial;
348
+ layerTree;
349
+ paints;
350
+ mainFrameId;
351
+ seqId;
352
+ constructor(seqId, startTime, startTimeOffset) {
353
+ this.seqId = seqId;
354
+ this.startTime = startTime;
355
+ this.ts = startTime;
356
+ this.startTimeOffset = startTimeOffset;
357
+ this.endTime = this.startTime;
358
+ this.duration = Types.Timing.Micro(0);
359
+ this.idle = false;
360
+ this.dropped = false;
361
+ this.isPartial = false;
362
+ this.layerTree = null;
363
+ this.paints = [];
364
+ this.mainFrameId = undefined;
365
+ }
366
+ setIndex(i) {
367
+ this.index = i;
368
+ }
369
+ setEndTime(endTime) {
370
+ this.endTime = endTime;
371
+ this.duration = Types.Timing.Micro(this.endTime - this.startTime);
372
+ }
373
+ setLayerTree(layerTree) {
374
+ this.layerTree = layerTree;
375
+ }
376
+ /**
377
+ * Fake the `dur` field to meet the expected value given that we pretend
378
+ * these TimelineFrame classes are trace events across the codebase.
379
+ */
380
+ get dur() {
381
+ return this.duration;
382
+ }
383
+ }
384
+ export class LayerPaintEvent {
385
+ #event;
386
+ #snapshot;
387
+ constructor(event, snapshot) {
388
+ this.#event = event;
389
+ this.#snapshot = snapshot;
390
+ }
391
+ layerId() {
392
+ return this.#event.args.data.layerId;
393
+ }
394
+ event() {
395
+ return this.#event;
396
+ }
397
+ picture() {
398
+ const rect = this.#snapshot.args.snapshot.params?.layer_rect;
399
+ const pictureData = this.#snapshot.args.snapshot.skp64;
400
+ return rect && pictureData ? { rect, serializedPicture: pictureData } : null;
401
+ }
402
+ }
403
+ export class PendingFrame {
404
+ paints;
405
+ mainFrameId;
406
+ triggerTime;
407
+ constructor(triggerTime) {
408
+ this.paints = [];
409
+ this.mainFrameId = undefined;
410
+ this.triggerTime = triggerTime;
411
+ }
412
+ }
413
+ /** The parameters of an impl-side BeginFrame. **/
414
+ class BeginFrameInfo {
415
+ seqId;
416
+ startTime;
417
+ isDropped;
418
+ isPartial;
419
+ constructor(seqId, startTime, isDropped, isPartial) {
420
+ this.seqId = seqId;
421
+ this.startTime = startTime;
422
+ this.isDropped = isDropped;
423
+ this.isPartial = isPartial;
424
+ }
425
+ }
426
+ /**
427
+ * A queue of BeginFrames pending visualization.
428
+ * BeginFrames are added into this queue as they occur; later when their
429
+ * corresponding DrawFrames occur (or lack thereof), the BeginFrames are removed
430
+ * from the queue and their timestamps are used for visualization.
431
+ **/
432
+ export class TimelineFrameBeginFrameQueue {
433
+ queueFrames = [];
434
+ // Maps frameSeqId to BeginFrameInfo.
435
+ mapFrames = {};
436
+ // Add a BeginFrame to the queue, if it does not already exit.
437
+ addFrameIfNotExists(seqId, startTime, isDropped, isPartial) {
438
+ if (!(seqId in this.mapFrames)) {
439
+ this.mapFrames[seqId] = new BeginFrameInfo(seqId, startTime, isDropped, isPartial);
440
+ this.queueFrames.push(seqId);
441
+ }
442
+ }
443
+ // Set a BeginFrame in queue as dropped.
444
+ setDropped(seqId, isDropped) {
445
+ if (seqId in this.mapFrames) {
446
+ this.mapFrames[seqId].isDropped = isDropped;
447
+ }
448
+ }
449
+ setPartial(seqId, isPartial) {
450
+ if (seqId in this.mapFrames) {
451
+ this.mapFrames[seqId].isPartial = isPartial;
452
+ }
453
+ }
454
+ processPendingBeginFramesOnDrawFrame(seqId) {
455
+ const framesToVisualize = [];
456
+ // Do not visualize this frame in the rare case where the current DrawFrame
457
+ // does not have a corresponding BeginFrame.
458
+ if (seqId in this.mapFrames) {
459
+ // Pop all BeginFrames before the current frame, and add only the dropped
460
+ // ones in |frames_to_visualize|.
461
+ // Non-dropped frames popped here are BeginFrames that are never
462
+ // drawn (but not considered dropped either for some reason).
463
+ // Those frames do not require an proactive visualization effort and will
464
+ // be naturally presented as continuationss of other frames.
465
+ while (this.queueFrames[0] !== seqId) {
466
+ const currentSeqId = this.queueFrames[0];
467
+ if (this.mapFrames[currentSeqId].isDropped) {
468
+ framesToVisualize.push(this.mapFrames[currentSeqId]);
469
+ }
470
+ delete this.mapFrames[currentSeqId];
471
+ this.queueFrames.shift();
472
+ }
473
+ // Pop the BeginFrame associated with the current DrawFrame.
474
+ framesToVisualize.push(this.mapFrames[seqId]);
475
+ delete this.mapFrames[seqId];
476
+ this.queueFrames.shift();
477
+ }
478
+ return framesToVisualize;
479
+ }
480
+ }
481
+ export function framesWithinWindow(frames, startTime, endTime) {
482
+ const firstFrame = Platform.ArrayUtilities.lowerBound(frames, startTime || 0, (time, frame) => time - frame.endTime);
483
+ const lastFrame = Platform.ArrayUtilities.lowerBound(frames, endTime || Infinity, (time, frame) => time - frame.startTime);
484
+ return frames.slice(firstFrame, lastFrame);
485
+ }
@@ -0,0 +1,35 @@
1
+ // Copyright 2022 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
+ import * as Helpers from '../helpers/helpers.js';
5
+ import * as Types from '../types/types.js';
6
+ import { data as metaHandlerData } from './MetaHandler.js';
7
+ // Each thread contains events. Events indicate the thread and process IDs, which are
8
+ // used to store the event in the correct process thread entry below.
9
+ let eventsInProcessThread = new Map();
10
+ let mainGPUThreadTasks = [];
11
+ export function reset() {
12
+ eventsInProcessThread = new Map();
13
+ mainGPUThreadTasks = [];
14
+ }
15
+ export function handleEvent(event) {
16
+ if (!Types.Events.isGPUTask(event)) {
17
+ return;
18
+ }
19
+ Helpers.Trace.addEventToProcessThread(event, eventsInProcessThread);
20
+ }
21
+ export async function finalize() {
22
+ const { gpuProcessId, gpuThreadId } = metaHandlerData();
23
+ const gpuThreadsForProcess = eventsInProcessThread.get(gpuProcessId);
24
+ if (gpuThreadsForProcess && gpuThreadId) {
25
+ mainGPUThreadTasks = gpuThreadsForProcess.get(gpuThreadId) || [];
26
+ }
27
+ }
28
+ export function data() {
29
+ return {
30
+ mainGPUThreadTasks,
31
+ };
32
+ }
33
+ export function deps() {
34
+ return ['Meta'];
35
+ }
@@ -0,0 +1,147 @@
1
+ // Copyright 2024 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
+ import * as Platform from '../../../core/platform/platform.js';
5
+ import * as Types from '../types/types.js';
6
+ import { data as metaHandlerData } from './MetaHandler.js';
7
+ /**
8
+ * This handler is responsible for the relationships between:
9
+ * DecodeImage/ResizeImage, PaintImage and DrawLazyPixelRef events.
10
+ *
11
+ * When we get a DecodeImage event, we want to associate it to a PaintImage
12
+ * event, primarily so we can determine the NodeID of the image that was
13
+ * decoded.
14
+ * We can do this in two ways:
15
+ *
16
+ * 1. If there is a PaintImage event on the same thread, use that
17
+ * (if there are multiple, use the latest one).
18
+ *
19
+ * 2. If not, we can find the DecodeLazyPixelRef event on the same thread, and
20
+ * use the PaintImage event associated with it via the `LazyPixelRef` key.
21
+ */
22
+ // Track paintImageEvents across threads.
23
+ let paintImageEvents = new Map();
24
+ let decodeLazyPixelRefEvents = new Map();
25
+ // A DrawLazyPixelRef event will contain a numerical reference in
26
+ // args.LazyPixelRef. As we parse each DrawLazyPixelRef, we can assign it to a
27
+ // paint event. Later we want to look up paint events by this reference, so we
28
+ // store them in this map.
29
+ let paintImageByLazyPixelRef = new Map();
30
+ // When we find events that we want to tie to a particular PaintImage event, we add them to this map.
31
+ // These are currently only DecodeImage and ResizeImage events, but the type is
32
+ // deliberately generic as in the future we might want to add more events that
33
+ // have a relationship to a individual PaintImage event.
34
+ let eventToPaintImage = new Map();
35
+ let urlToPaintImage = new Map();
36
+ let paintEventToCorrectedDisplaySize = new Map();
37
+ let didCorrectForHostDpr = false;
38
+ export function reset() {
39
+ paintImageEvents = new Map();
40
+ decodeLazyPixelRefEvents = new Map();
41
+ paintImageByLazyPixelRef = new Map();
42
+ eventToPaintImage = new Map();
43
+ urlToPaintImage = new Map();
44
+ paintEventToCorrectedDisplaySize = new Map();
45
+ didCorrectForHostDpr = false;
46
+ }
47
+ export function handleEvent(event) {
48
+ if (Types.Events.isPaintImage(event)) {
49
+ const forProcess = paintImageEvents.get(event.pid) || new Map();
50
+ const forThread = forProcess.get(event.tid) || [];
51
+ forThread.push(event);
52
+ forProcess.set(event.tid, forThread);
53
+ paintImageEvents.set(event.pid, forProcess);
54
+ if (event.args.data.url) {
55
+ const paintsForUrl = Platform.MapUtilities.getWithDefault(urlToPaintImage, event.args.data.url, () => []);
56
+ paintsForUrl.push(event);
57
+ }
58
+ return;
59
+ }
60
+ if (Types.Events.isDecodeLazyPixelRef(event) && typeof event.args?.LazyPixelRef !== 'undefined') {
61
+ // Store these because we use them to tie DecodeImage to a PaintEvent.
62
+ const forProcess = decodeLazyPixelRefEvents.get(event.pid) || new Map();
63
+ const forThread = forProcess.get(event.tid) || [];
64
+ forThread.push(event);
65
+ forProcess.set(event.tid, forThread);
66
+ decodeLazyPixelRefEvents.set(event.pid, forProcess);
67
+ }
68
+ // If we see a DrawLazyPixelRef event, we need to find the last PaintImage
69
+ // event on the thread and associate it to the LazyPixelRef that is supplied
70
+ // in the DrawLazyPixelRef event.
71
+ // This means that later on if we see a DecodeLazyPixelRef event with the
72
+ // same LazyPixelRef key, we can find its associated PaintImage event by
73
+ // looking it up.
74
+ if (Types.Events.isDrawLazyPixelRef(event) && typeof event.args?.LazyPixelRef !== 'undefined') {
75
+ const lastPaintEvent = paintImageEvents.get(event.pid)?.get(event.tid)?.at(-1);
76
+ if (!lastPaintEvent) {
77
+ return;
78
+ }
79
+ paintImageByLazyPixelRef.set(event.args.LazyPixelRef, lastPaintEvent);
80
+ return;
81
+ }
82
+ if (Types.Events.isDecodeImage(event)) {
83
+ // When we see a DecodeImage, we want to associate it to a PaintImage
84
+ // event. We try two approaches:
85
+ //
86
+ // 1. If the thread of the DecodeImage event has a previous PaintImage
87
+ // event, that is the associated event.
88
+ //
89
+ // 2. If that is false, we then look on the thread for a DecodeLazyPixelRef
90
+ // event. If we find that, we then look for its associated PaintImage
91
+ // event, which we associate via DrawLazyPixelRef events (the code block
92
+ // above this one)
93
+ //
94
+ // 1. Find a PaintImage event on the same thread. If we find it, that's our association done.
95
+ const lastPaintImageEventOnThread = paintImageEvents.get(event.pid)?.get(event.tid)?.at(-1);
96
+ if (lastPaintImageEventOnThread) {
97
+ eventToPaintImage.set(event, lastPaintImageEventOnThread);
98
+ return;
99
+ }
100
+ // 2. Find the last DecodeLazyPixelRef event and, if we find it, find its associated PaintImage event.
101
+ const lastDecodeLazyPixelRef = decodeLazyPixelRefEvents.get(event.pid)?.get(event.tid)?.at(-1);
102
+ if (typeof lastDecodeLazyPixelRef?.args?.LazyPixelRef === 'undefined') {
103
+ return;
104
+ }
105
+ const paintEvent = paintImageByLazyPixelRef.get(lastDecodeLazyPixelRef.args.LazyPixelRef);
106
+ if (!paintEvent) {
107
+ return;
108
+ }
109
+ eventToPaintImage.set(event, paintEvent);
110
+ }
111
+ }
112
+ export async function finalize(options) {
113
+ // Painting in Chrome never uses the emulated DPR, but instead used the host's DPR.
114
+ // We need to correct for that for our responsive image checks in the ImageDelivery
115
+ // insight.
116
+ // See: crbug.com/427552461 crbug.com/416580500#comment5
117
+ if (!options.metadata?.hostDPR) {
118
+ return;
119
+ }
120
+ // Note: this isn't necessarily emulated (for desktop+no DPR emulation, it's equal
121
+ // to host DPR).
122
+ const { devicePixelRatio: emulatedDpr } = metaHandlerData();
123
+ if (!emulatedDpr) {
124
+ return;
125
+ }
126
+ for (const byThread of paintImageEvents.values()) {
127
+ for (const paintEvents of byThread.values()) {
128
+ for (const paintEvent of paintEvents) {
129
+ const cssPixelsWidth = paintEvent.args.data.width / options.metadata.hostDPR;
130
+ const cssPixelsHeight = paintEvent.args.data.height / options.metadata.hostDPR;
131
+ const width = cssPixelsWidth * emulatedDpr;
132
+ const height = cssPixelsHeight * emulatedDpr;
133
+ paintEventToCorrectedDisplaySize.set(paintEvent, { width, height });
134
+ }
135
+ }
136
+ }
137
+ didCorrectForHostDpr = true;
138
+ }
139
+ export function data() {
140
+ return {
141
+ paintImageByDrawLazyPixelRef: paintImageByLazyPixelRef,
142
+ paintImageForEvent: eventToPaintImage,
143
+ paintImageEventForUrl: urlToPaintImage,
144
+ paintEventToCorrectedDisplaySize,
145
+ didCorrectForHostDpr,
146
+ };
147
+ }