devtools-tracing 1.1.0 → 1.2.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 (528) hide show
  1. package/.claude/settings.local.json +14 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.js +28854 -0
  4. package/package.json +10 -8
  5. package/generate.ts +0 -649
  6. package/index.ts +0 -17
  7. package/lib/extension-api/ExtensionAPI.d.ts +0 -357
  8. package/lib/front_end/core/common/App.ts +0 -7
  9. package/lib/front_end/core/common/AppProvider.ts +0 -32
  10. package/lib/front_end/core/common/Base64.ts +0 -47
  11. package/lib/front_end/core/common/CharacterIdMap.ts +0 -30
  12. package/lib/front_end/core/common/Color.ts +0 -2506
  13. package/lib/front_end/core/common/ColorConverter.ts +0 -402
  14. package/lib/front_end/core/common/ColorUtils.ts +0 -252
  15. package/lib/front_end/core/common/Console.ts +0 -114
  16. package/lib/front_end/core/common/Debouncer.ts +0 -15
  17. package/lib/front_end/core/common/EventTarget.ts +0 -52
  18. package/lib/front_end/core/common/Gzip.ts +0 -74
  19. package/lib/front_end/core/common/JavaScriptMetaData.ts +0 -29
  20. package/lib/front_end/core/common/Lazy.ts +0 -31
  21. package/lib/front_end/core/common/Linkifier.ts +0 -55
  22. package/lib/front_end/core/common/MapWithDefault.ts +0 -26
  23. package/lib/front_end/core/common/Mutex.ts +0 -55
  24. package/lib/front_end/core/common/Object.ts +0 -145
  25. package/lib/front_end/core/common/ParsedURL.ts +0 -554
  26. package/lib/front_end/core/common/Progress.ts +0 -180
  27. package/lib/front_end/core/common/QueryParamHandler.ts +0 -7
  28. package/lib/front_end/core/common/ResolverBase.ts +0 -85
  29. package/lib/front_end/core/common/ResourceType.ts +0 -588
  30. package/lib/front_end/core/common/ReturnToPanel.ts +0 -17
  31. package/lib/front_end/core/common/Revealer.ts +0 -192
  32. package/lib/front_end/core/common/Runnable.ts +0 -41
  33. package/lib/front_end/core/common/SegmentedRange.ts +0 -87
  34. package/lib/front_end/core/common/SettingRegistration.ts +0 -339
  35. package/lib/front_end/core/common/Settings.ts +0 -1497
  36. package/lib/front_end/core/common/SimpleHistoryManager.ts +0 -124
  37. package/lib/front_end/core/common/StringOutputStream.ts +0 -26
  38. package/lib/front_end/core/common/TextDictionary.ts +0 -48
  39. package/lib/front_end/core/common/Throttler.ts +0 -99
  40. package/lib/front_end/core/common/Trie.ts +0 -152
  41. package/lib/front_end/core/common/Worker.ts +0 -60
  42. package/lib/front_end/core/common/common.ts +0 -81
  43. package/lib/front_end/core/host/AidaClient.ts +0 -733
  44. package/lib/front_end/core/host/GdpClient.ts +0 -316
  45. package/lib/front_end/core/host/InspectorFrontendHost.ts +0 -648
  46. package/lib/front_end/core/host/InspectorFrontendHostAPI.ts +0 -551
  47. package/lib/front_end/core/host/Platform.ts +0 -76
  48. package/lib/front_end/core/host/ResourceLoader.ts +0 -282
  49. package/lib/front_end/core/host/UserMetrics.ts +0 -1230
  50. package/lib/front_end/core/host/host.ts +0 -23
  51. package/lib/front_end/core/i18n/ByteUtilities.ts +0 -82
  52. package/lib/front_end/core/i18n/DevToolsLocale.ts +0 -87
  53. package/lib/front_end/core/i18n/NumberFormatter.ts +0 -82
  54. package/lib/front_end/core/i18n/i18n.ts +0 -17
  55. package/lib/front_end/core/i18n/i18nImpl.ts +0 -204
  56. package/lib/front_end/core/i18n/i18nTypes.ts +0 -10
  57. package/lib/front_end/core/i18n/locales.js +0 -14
  58. package/lib/front_end/core/i18n/time-utilities.ts +0 -174
  59. package/lib/front_end/core/platform/ArrayUtilities.ts +0 -271
  60. package/lib/front_end/core/platform/Brand.ts +0 -23
  61. package/lib/front_end/core/platform/Constructor.ts +0 -10
  62. package/lib/front_end/core/platform/DOMUtilities.ts +0 -138
  63. package/lib/front_end/core/platform/DateUtilities.ts +0 -15
  64. package/lib/front_end/core/platform/DevToolsPath.ts +0 -53
  65. package/lib/front_end/core/platform/KeyboardUtilities.ts +0 -38
  66. package/lib/front_end/core/platform/MapUtilities.ts +0 -95
  67. package/lib/front_end/core/platform/MimeType.ts +0 -175
  68. package/lib/front_end/core/platform/NumberUtilities.ts +0 -80
  69. package/lib/front_end/core/platform/StringUtilities.ts +0 -588
  70. package/lib/front_end/core/platform/Timing.ts +0 -17
  71. package/lib/front_end/core/platform/TypedArrayUtilities.ts +0 -189
  72. package/lib/front_end/core/platform/TypescriptUtilities.ts +0 -86
  73. package/lib/front_end/core/platform/UIString.ts +0 -39
  74. package/lib/front_end/core/platform/UserVisibleError.ts +0 -28
  75. package/lib/front_end/core/platform/platform.ts +0 -45
  76. package/lib/front_end/core/protocol_client/ConnectionTransport.ts +0 -26
  77. package/lib/front_end/core/protocol_client/InspectorBackend.ts +0 -1050
  78. package/lib/front_end/core/protocol_client/NodeURL.ts +0 -42
  79. package/lib/front_end/core/protocol_client/protocol_client.ts +0 -13
  80. package/lib/front_end/core/root/Runtime.ts +0 -609
  81. package/lib/front_end/core/root/root.ts +0 -6
  82. package/lib/front_end/core/sdk/AccessibilityModel.ts +0 -353
  83. package/lib/front_end/core/sdk/AnimationModel.ts +0 -1041
  84. package/lib/front_end/core/sdk/AutofillModel.ts +0 -184
  85. package/lib/front_end/core/sdk/CPUProfilerModel.ts +0 -148
  86. package/lib/front_end/core/sdk/CPUThrottlingManager.ts +0 -282
  87. package/lib/front_end/core/sdk/CSSContainerQuery.ts +0 -139
  88. package/lib/front_end/core/sdk/CSSFontFace.ts +0 -40
  89. package/lib/front_end/core/sdk/CSSLayer.ts +0 -30
  90. package/lib/front_end/core/sdk/CSSMatchedStyles.ts +0 -1646
  91. package/lib/front_end/core/sdk/CSSMedia.ts +0 -121
  92. package/lib/front_end/core/sdk/CSSMetadata.ts +0 -1647
  93. package/lib/front_end/core/sdk/CSSModel.ts +0 -1128
  94. package/lib/front_end/core/sdk/CSSProperty.ts +0 -384
  95. package/lib/front_end/core/sdk/CSSPropertyParser.ts +0 -681
  96. package/lib/front_end/core/sdk/CSSPropertyParserMatchers.ts +0 -1395
  97. package/lib/front_end/core/sdk/CSSQuery.ts +0 -72
  98. package/lib/front_end/core/sdk/CSSRule.ts +0 -465
  99. package/lib/front_end/core/sdk/CSSScope.ts +0 -30
  100. package/lib/front_end/core/sdk/CSSStartingStyle.ts +0 -29
  101. package/lib/front_end/core/sdk/CSSStyleDeclaration.ts +0 -313
  102. package/lib/front_end/core/sdk/CSSStyleSheetHeader.ts +0 -196
  103. package/lib/front_end/core/sdk/CSSSupports.ts +0 -33
  104. package/lib/front_end/core/sdk/CategorizedBreakpoint.ts +0 -64
  105. package/lib/front_end/core/sdk/ChildTargetManager.ts +0 -314
  106. package/lib/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +0 -62
  107. package/lib/front_end/core/sdk/Connections.ts +0 -293
  108. package/lib/front_end/core/sdk/ConsoleModel.ts +0 -808
  109. package/lib/front_end/core/sdk/ConsoleModelTypes.ts +0 -15
  110. package/lib/front_end/core/sdk/Cookie.ts +0 -319
  111. package/lib/front_end/core/sdk/CookieModel.ts +0 -239
  112. package/lib/front_end/core/sdk/CookieParser.ts +0 -185
  113. package/lib/front_end/core/sdk/DOMDebuggerModel.ts +0 -787
  114. package/lib/front_end/core/sdk/DOMModel.ts +0 -1961
  115. package/lib/front_end/core/sdk/DebuggerModel.ts +0 -1605
  116. package/lib/front_end/core/sdk/EmulationModel.ts +0 -648
  117. package/lib/front_end/core/sdk/EnhancedTracesParser.ts +0 -515
  118. package/lib/front_end/core/sdk/EventBreakpointsModel.ts +0 -183
  119. package/lib/front_end/core/sdk/FrameAssociated.ts +0 -11
  120. package/lib/front_end/core/sdk/FrameManager.ts +0 -259
  121. package/lib/front_end/core/sdk/HeapProfilerModel.ts +0 -225
  122. package/lib/front_end/core/sdk/HttpReasonPhraseStrings.ts +0 -77
  123. package/lib/front_end/core/sdk/IOModel.ts +0 -91
  124. package/lib/front_end/core/sdk/IsolateManager.ts +0 -257
  125. package/lib/front_end/core/sdk/IssuesModel.ts +0 -70
  126. package/lib/front_end/core/sdk/LayerTreeBase.ts +0 -169
  127. package/lib/front_end/core/sdk/LogModel.ts +0 -56
  128. package/lib/front_end/core/sdk/NetworkManager.ts +0 -2823
  129. package/lib/front_end/core/sdk/NetworkRequest.ts +0 -2253
  130. package/lib/front_end/core/sdk/OverlayColorGenerator.ts +0 -52
  131. package/lib/front_end/core/sdk/OverlayModel.ts +0 -1011
  132. package/lib/front_end/core/sdk/OverlayPersistentHighlighter.ts +0 -522
  133. package/lib/front_end/core/sdk/PageLoad.ts +0 -35
  134. package/lib/front_end/core/sdk/PageResourceLoader.ts +0 -435
  135. package/lib/front_end/core/sdk/PaintProfiler.ts +0 -110
  136. package/lib/front_end/core/sdk/PerformanceMetricsModel.ts +0 -84
  137. package/lib/front_end/core/sdk/PreloadingModel.ts +0 -863
  138. package/lib/front_end/core/sdk/RehydratingConnection.ts +0 -386
  139. package/lib/front_end/core/sdk/RehydratingObject.ts +0 -66
  140. package/lib/front_end/core/sdk/RemoteObject.ts +0 -1160
  141. package/lib/front_end/core/sdk/Resource.ts +0 -232
  142. package/lib/front_end/core/sdk/ResourceTreeModel.ts +0 -1160
  143. package/lib/front_end/core/sdk/RuntimeModel.ts +0 -732
  144. package/lib/front_end/core/sdk/SDKModel.ts +0 -65
  145. package/lib/front_end/core/sdk/ScopeTreeCache.ts +0 -45
  146. package/lib/front_end/core/sdk/ScreenCaptureModel.ts +0 -255
  147. package/lib/front_end/core/sdk/Script.ts +0 -534
  148. package/lib/front_end/core/sdk/SecurityOriginManager.ts +0 -76
  149. package/lib/front_end/core/sdk/ServerSentEvents.ts +0 -80
  150. package/lib/front_end/core/sdk/ServerSentEventsProtocol.ts +0 -122
  151. package/lib/front_end/core/sdk/ServerTiming.ts +0 -260
  152. package/lib/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -377
  153. package/lib/front_end/core/sdk/ServiceWorkerManager.ts +0 -605
  154. package/lib/front_end/core/sdk/SourceMap.ts +0 -867
  155. package/lib/front_end/core/sdk/SourceMapCache.ts +0 -54
  156. package/lib/front_end/core/sdk/SourceMapFunctionRanges.ts +0 -156
  157. package/lib/front_end/core/sdk/SourceMapManager.ts +0 -239
  158. package/lib/front_end/core/sdk/SourceMapScopeChainEntry.ts +0 -189
  159. package/lib/front_end/core/sdk/SourceMapScopesInfo.ts +0 -508
  160. package/lib/front_end/core/sdk/StorageBucketsModel.ts +0 -204
  161. package/lib/front_end/core/sdk/StorageKeyManager.ts +0 -98
  162. package/lib/front_end/core/sdk/Target.ts +0 -332
  163. package/lib/front_end/core/sdk/TargetManager.ts +0 -453
  164. package/lib/front_end/core/sdk/TraceObject.ts +0 -61
  165. package/lib/front_end/core/sdk/WebAuthnModel.ts +0 -104
  166. package/lib/front_end/core/sdk/sdk.ts +0 -174
  167. package/lib/front_end/entrypoints/formatter_worker/FormatterActions.ts +0 -59
  168. package/lib/front_end/generated/InspectorBackendCommands.js +0 -1617
  169. package/lib/front_end/generated/SupportedCSSProperties.js +0 -7512
  170. package/lib/front_end/generated/protocol-proxy-api.d.ts +0 -5022
  171. package/lib/front_end/generated/protocol.ts +0 -22014
  172. package/lib/front_end/models/bindings/CSSWorkspaceBinding.ts +0 -318
  173. package/lib/front_end/models/bindings/CompilerScriptMapping.ts +0 -536
  174. package/lib/front_end/models/bindings/ContentProviderBasedProject.ts +0 -187
  175. package/lib/front_end/models/bindings/DebuggerLanguagePlugins.ts +0 -1197
  176. package/lib/front_end/models/bindings/DebuggerWorkspaceBinding.ts +0 -733
  177. package/lib/front_end/models/bindings/DefaultScriptMapping.ts +0 -141
  178. package/lib/front_end/models/bindings/FileUtils.ts +0 -228
  179. package/lib/front_end/models/bindings/LiveLocation.ts +0 -81
  180. package/lib/front_end/models/bindings/NetworkProject.ts +0 -157
  181. package/lib/front_end/models/bindings/PresentationConsoleMessageHelper.ts +0 -312
  182. package/lib/front_end/models/bindings/ResourceMapping.ts +0 -539
  183. package/lib/front_end/models/bindings/ResourceScriptMapping.ts +0 -491
  184. package/lib/front_end/models/bindings/ResourceUtils.ts +0 -103
  185. package/lib/front_end/models/bindings/SASSSourceMapping.ts +0 -222
  186. package/lib/front_end/models/bindings/StylesSourceMapping.ts +0 -316
  187. package/lib/front_end/models/bindings/TempFile.ts +0 -67
  188. package/lib/front_end/models/bindings/bindings.ts +0 -39
  189. package/lib/front_end/models/cpu_profile/CPUProfileDataModel.ts +0 -571
  190. package/lib/front_end/models/cpu_profile/ProfileTreeModel.ts +0 -103
  191. package/lib/front_end/models/cpu_profile/cpu_profile.ts +0 -11
  192. package/lib/front_end/models/formatter/FormatterWorkerPool.ts +0 -219
  193. package/lib/front_end/models/formatter/ScriptFormatter.ts +0 -112
  194. package/lib/front_end/models/formatter/formatter.ts +0 -8
  195. package/lib/front_end/models/source_map_scopes/NamesResolver.ts +0 -765
  196. package/lib/front_end/models/source_map_scopes/ScopeChainModel.ts +0 -84
  197. package/lib/front_end/models/source_map_scopes/source_map_scopes.ts +0 -11
  198. package/lib/front_end/models/stack_trace/StackTrace.ts +0 -53
  199. package/lib/front_end/models/stack_trace/StackTraceImpl.ts +0 -85
  200. package/lib/front_end/models/stack_trace/StackTraceModel.ts +0 -128
  201. package/lib/front_end/models/stack_trace/Trie.ts +0 -163
  202. package/lib/front_end/models/stack_trace/stack_trace.ts +0 -9
  203. package/lib/front_end/models/stack_trace/stack_trace_impl.ts +0 -13
  204. package/lib/front_end/models/text_utils/CodeMirrorUtils.ts +0 -37
  205. package/lib/front_end/models/text_utils/ContentData.ts +0 -199
  206. package/lib/front_end/models/text_utils/ContentProvider.ts +0 -68
  207. package/lib/front_end/models/text_utils/StaticContentProvider.ts +0 -49
  208. package/lib/front_end/models/text_utils/StreamingContentData.ts +0 -108
  209. package/lib/front_end/models/text_utils/Text.ts +0 -90
  210. package/lib/front_end/models/text_utils/TextCursor.ts +0 -44
  211. package/lib/front_end/models/text_utils/TextRange.ts +0 -266
  212. package/lib/front_end/models/text_utils/TextUtils.ts +0 -401
  213. package/lib/front_end/models/text_utils/WasmDisassembly.ts +0 -87
  214. package/lib/front_end/models/text_utils/text_utils.ts +0 -27
  215. package/lib/front_end/models/trace/EntityMapper.ts +0 -141
  216. package/lib/front_end/models/trace/EventsSerializer.ts +0 -101
  217. package/lib/front_end/models/trace/LanternComputationData.ts +0 -438
  218. package/lib/front_end/models/trace/ModelImpl.ts +0 -236
  219. package/lib/front_end/models/trace/Name.ts +0 -136
  220. package/lib/front_end/models/trace/Processor.ts +0 -652
  221. package/lib/front_end/models/trace/Styles.ts +0 -1138
  222. package/lib/front_end/models/trace/extras/FilmStrip.ts +0 -78
  223. package/lib/front_end/models/trace/extras/MainThreadActivity.ts +0 -86
  224. package/lib/front_end/models/trace/extras/ScriptDuplication.ts +0 -236
  225. package/lib/front_end/models/trace/extras/StackTraceForEvent.ts +0 -203
  226. package/lib/front_end/models/trace/extras/ThirdParties.ts +0 -164
  227. package/lib/front_end/models/trace/extras/TraceFilter.ts +0 -62
  228. package/lib/front_end/models/trace/extras/TraceTree.ts +0 -701
  229. package/lib/front_end/models/trace/extras/extras.ts +0 -11
  230. package/lib/front_end/models/trace/handlers/AnimationFramesHandler.ts +0 -128
  231. package/lib/front_end/models/trace/handlers/AnimationHandler.ts +0 -36
  232. package/lib/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +0 -239
  233. package/lib/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +0 -183
  234. package/lib/front_end/models/trace/handlers/DOMStatsHandler.ts +0 -31
  235. package/lib/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +0 -306
  236. package/lib/front_end/models/trace/handlers/FlowsHandler.ts +0 -175
  237. package/lib/front_end/models/trace/handlers/FramesHandler.ts +0 -571
  238. package/lib/front_end/models/trace/handlers/GPUHandler.ts +0 -50
  239. package/lib/front_end/models/trace/handlers/ImagePaintingHandler.ts +0 -183
  240. package/lib/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -193
  241. package/lib/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -168
  242. package/lib/front_end/models/trace/handlers/LargestImagePaintHandler.ts +0 -109
  243. package/lib/front_end/models/trace/handlers/LargestTextPaintHandler.ts +0 -35
  244. package/lib/front_end/models/trace/handlers/LayerTreeHandler.ts +0 -123
  245. package/lib/front_end/models/trace/handlers/LayoutShiftsHandler.ts +0 -573
  246. package/lib/front_end/models/trace/handlers/MemoryHandler.ts +0 -31
  247. package/lib/front_end/models/trace/handlers/MetaHandler.ts +0 -525
  248. package/lib/front_end/models/trace/handlers/ModelHandlers.ts +0 -34
  249. package/lib/front_end/models/trace/handlers/NetworkRequestsHandler.ts +0 -672
  250. package/lib/front_end/models/trace/handlers/PageFramesHandler.ts +0 -52
  251. package/lib/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +0 -460
  252. package/lib/front_end/models/trace/handlers/RendererHandler.ts +0 -428
  253. package/lib/front_end/models/trace/handlers/SamplesHandler.ts +0 -271
  254. package/lib/front_end/models/trace/handlers/ScreenshotsHandler.ts +0 -122
  255. package/lib/front_end/models/trace/handlers/ScriptsHandler.ts +0 -336
  256. package/lib/front_end/models/trace/handlers/SelectorStatsHandler.ts +0 -110
  257. package/lib/front_end/models/trace/handlers/Threads.ts +0 -139
  258. package/lib/front_end/models/trace/handlers/UserInteractionsHandler.ts +0 -400
  259. package/lib/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -233
  260. package/lib/front_end/models/trace/handlers/WarningsHandler.ts +0 -162
  261. package/lib/front_end/models/trace/handlers/WorkersHandler.ts +0 -45
  262. package/lib/front_end/models/trace/handlers/handlers.ts +0 -8
  263. package/lib/front_end/models/trace/handlers/helpers.ts +0 -196
  264. package/lib/front_end/models/trace/handlers/types.ts +0 -75
  265. package/lib/front_end/models/trace/helpers/Extensions.ts +0 -54
  266. package/lib/front_end/models/trace/helpers/Network.ts +0 -129
  267. package/lib/front_end/models/trace/helpers/SamplesIntegrator.ts +0 -544
  268. package/lib/front_end/models/trace/helpers/SyntheticEvents.ts +0 -87
  269. package/lib/front_end/models/trace/helpers/Timing.ts +0 -248
  270. package/lib/front_end/models/trace/helpers/Trace.ts +0 -928
  271. package/lib/front_end/models/trace/helpers/TreeHelpers.ts +0 -320
  272. package/lib/front_end/models/trace/helpers/helpers.ts +0 -11
  273. package/lib/front_end/models/trace/insights/CLSCulprits.ts +0 -668
  274. package/lib/front_end/models/trace/insights/Cache.ts +0 -269
  275. package/lib/front_end/models/trace/insights/Common.ts +0 -453
  276. package/lib/front_end/models/trace/insights/DOMSize.ts +0 -223
  277. package/lib/front_end/models/trace/insights/DocumentLatency.ts +0 -319
  278. package/lib/front_end/models/trace/insights/DuplicatedJavaScript.ts +0 -126
  279. package/lib/front_end/models/trace/insights/FontDisplay.ts +0 -119
  280. package/lib/front_end/models/trace/insights/ForcedReflow.ts +0 -220
  281. package/lib/front_end/models/trace/insights/INPBreakdown.ts +0 -171
  282. package/lib/front_end/models/trace/insights/ImageDelivery.ts +0 -348
  283. package/lib/front_end/models/trace/insights/LCPBreakdown.ts +0 -268
  284. package/lib/front_end/models/trace/insights/LCPDiscovery.ts +0 -237
  285. package/lib/front_end/models/trace/insights/LegacyJavaScript.ts +0 -138
  286. package/lib/front_end/models/trace/insights/Models.ts +0 -22
  287. package/lib/front_end/models/trace/insights/ModernHTTP.ts +0 -257
  288. package/lib/front_end/models/trace/insights/NetworkDependencyTree.ts +0 -726
  289. package/lib/front_end/models/trace/insights/RenderBlocking.ts +0 -257
  290. package/lib/front_end/models/trace/insights/SlowCSSSelector.ts +0 -175
  291. package/lib/front_end/models/trace/insights/Statistics.ts +0 -101
  292. package/lib/front_end/models/trace/insights/ThirdParties.ts +0 -130
  293. package/lib/front_end/models/trace/insights/Viewport.ts +0 -138
  294. package/lib/front_end/models/trace/insights/insights.ts +0 -10
  295. package/lib/front_end/models/trace/insights/types.ts +0 -157
  296. package/lib/front_end/models/trace/lantern/core/LanternError.ts +0 -7
  297. package/lib/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +0 -619
  298. package/lib/front_end/models/trace/lantern/core/core.ts +0 -6
  299. package/lib/front_end/models/trace/lantern/graph/BaseNode.ts +0 -345
  300. package/lib/front_end/models/trace/lantern/graph/CPUNode.ts +0 -80
  301. package/lib/front_end/models/trace/lantern/graph/NetworkNode.ts +0 -101
  302. package/lib/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +0 -636
  303. package/lib/front_end/models/trace/lantern/graph/graph.ts +0 -8
  304. package/lib/front_end/models/trace/lantern/lantern.ts +0 -17
  305. package/lib/front_end/models/trace/lantern/metrics/FirstContentfulPaint.ts +0 -187
  306. package/lib/front_end/models/trace/lantern/metrics/Interactive.ts +0 -88
  307. package/lib/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +0 -92
  308. package/lib/front_end/models/trace/lantern/metrics/MaxPotentialFID.ts +0 -72
  309. package/lib/front_end/models/trace/lantern/metrics/Metric.ts +0 -126
  310. package/lib/front_end/models/trace/lantern/metrics/SpeedIndex.ts +0 -126
  311. package/lib/front_end/models/trace/lantern/metrics/TBTUtils.ts +0 -82
  312. package/lib/front_end/models/trace/lantern/metrics/TotalBlockingTime.ts +0 -112
  313. package/lib/front_end/models/trace/lantern/metrics/metrics.ts +0 -12
  314. package/lib/front_end/models/trace/lantern/simulation/ConnectionPool.ts +0 -150
  315. package/lib/front_end/models/trace/lantern/simulation/Constants.ts +0 -46
  316. package/lib/front_end/models/trace/lantern/simulation/DNSCache.ts +0 -61
  317. package/lib/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +0 -196
  318. package/lib/front_end/models/trace/lantern/simulation/Simulator.ts +0 -556
  319. package/lib/front_end/models/trace/lantern/simulation/TCPConnection.ts +0 -192
  320. package/lib/front_end/models/trace/lantern/simulation/simulation.ts +0 -10
  321. package/lib/front_end/models/trace/lantern/types/Lantern.ts +0 -220
  322. package/lib/front_end/models/trace/lantern/types/types.ts +0 -5
  323. package/lib/front_end/models/trace/trace.ts +0 -33
  324. package/lib/front_end/models/trace/types/Configuration.ts +0 -110
  325. package/lib/front_end/models/trace/types/Extensions.ts +0 -136
  326. package/lib/front_end/models/trace/types/File.ts +0 -281
  327. package/lib/front_end/models/trace/types/Overlays.ts +0 -138
  328. package/lib/front_end/models/trace/types/Timing.ts +0 -30
  329. package/lib/front_end/models/trace/types/TraceEvents.ts +0 -3277
  330. package/lib/front_end/models/trace/types/types.ts +0 -10
  331. package/lib/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +0 -240
  332. package/lib/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.ts +0 -5
  333. package/lib/front_end/models/workspace/FileManager.ts +0 -97
  334. package/lib/front_end/models/workspace/IgnoreListManager.ts +0 -628
  335. package/lib/front_end/models/workspace/SearchConfig.ts +0 -149
  336. package/lib/front_end/models/workspace/UISourceCode.ts +0 -698
  337. package/lib/front_end/models/workspace/WorkspaceImpl.ts +0 -339
  338. package/lib/front_end/models/workspace/workspace.ts +0 -17
  339. package/lib/front_end/panels/timeline/TimelineUIUtils.ts +0 -1029
  340. package/lib/front_end/panels/timeline/extensions/ExtensionUI.ts +0 -49
  341. package/lib/front_end/panels/timeline/extensions/extensions.ts +0 -9
  342. package/lib/front_end/third_party/codemirror.next/LICENSE +0 -21
  343. package/lib/front_end/third_party/codemirror.next/README.chromium +0 -30
  344. package/lib/front_end/third_party/codemirror.next/bundle-tsconfig.json +0 -24
  345. package/lib/front_end/third_party/codemirror.next/bundle.ts +0 -135
  346. package/lib/front_end/third_party/codemirror.next/chunk/angular.js +0 -2
  347. package/lib/front_end/third_party/codemirror.next/chunk/angular.js.map +0 -1
  348. package/lib/front_end/third_party/codemirror.next/chunk/codemirror.js +0 -2
  349. package/lib/front_end/third_party/codemirror.next/chunk/codemirror.js.map +0 -1
  350. package/lib/front_end/third_party/codemirror.next/chunk/cpp.js +0 -2
  351. package/lib/front_end/third_party/codemirror.next/chunk/cpp.js.map +0 -1
  352. package/lib/front_end/third_party/codemirror.next/chunk/css.js +0 -2
  353. package/lib/front_end/third_party/codemirror.next/chunk/html.js +0 -4
  354. package/lib/front_end/third_party/codemirror.next/chunk/java.js +0 -2
  355. package/lib/front_end/third_party/codemirror.next/chunk/java.js.map +0 -1
  356. package/lib/front_end/third_party/codemirror.next/chunk/javascript.js +0 -2
  357. package/lib/front_end/third_party/codemirror.next/chunk/legacy.js +0 -2
  358. package/lib/front_end/third_party/codemirror.next/chunk/legacy.js.map +0 -1
  359. package/lib/front_end/third_party/codemirror.next/chunk/less.js +0 -2
  360. package/lib/front_end/third_party/codemirror.next/chunk/less.js.map +0 -1
  361. package/lib/front_end/third_party/codemirror.next/chunk/markdown.js +0 -2
  362. package/lib/front_end/third_party/codemirror.next/chunk/markdown.js.map +0 -1
  363. package/lib/front_end/third_party/codemirror.next/chunk/php.js +0 -2
  364. package/lib/front_end/third_party/codemirror.next/chunk/php.js.map +0 -1
  365. package/lib/front_end/third_party/codemirror.next/chunk/python.js +0 -2
  366. package/lib/front_end/third_party/codemirror.next/chunk/python.js.map +0 -1
  367. package/lib/front_end/third_party/codemirror.next/chunk/sass.js +0 -2
  368. package/lib/front_end/third_party/codemirror.next/chunk/sass.js.map +0 -1
  369. package/lib/front_end/third_party/codemirror.next/chunk/svelte.js +0 -2
  370. package/lib/front_end/third_party/codemirror.next/chunk/svelte.js.map +0 -1
  371. package/lib/front_end/third_party/codemirror.next/chunk/vue.js +0 -2
  372. package/lib/front_end/third_party/codemirror.next/chunk/vue.js.map +0 -1
  373. package/lib/front_end/third_party/codemirror.next/chunk/wast.js +0 -2
  374. package/lib/front_end/third_party/codemirror.next/chunk/wast.js.map +0 -1
  375. package/lib/front_end/third_party/codemirror.next/chunk/xml.js +0 -2
  376. package/lib/front_end/third_party/codemirror.next/chunk/xml.js.map +0 -1
  377. package/lib/front_end/third_party/codemirror.next/codemirror.next.d.ts +0 -8057
  378. package/lib/front_end/third_party/codemirror.next/codemirror.next.js +0 -2
  379. package/lib/front_end/third_party/codemirror.next/codemirror.next.js.map +0 -1
  380. package/lib/front_end/third_party/codemirror.next/package.json +0 -43
  381. package/lib/front_end/third_party/codemirror.next/rebuild.sh +0 -6
  382. package/lib/front_end/third_party/codemirror.next/rollup.config.mjs +0 -49
  383. package/lib/front_end/third_party/i18n/LICENSE +0 -202
  384. package/lib/front_end/third_party/i18n/README.chromium +0 -15
  385. package/lib/front_end/third_party/i18n/i18n-impl.ts +0 -61
  386. package/lib/front_end/third_party/i18n/i18n.ts +0 -11
  387. package/lib/front_end/third_party/i18n/localized-string-set.ts +0 -129
  388. package/lib/front_end/third_party/intl-messageformat/LICENSE +0 -33
  389. package/lib/front_end/third_party/intl-messageformat/README.chromium +0 -24
  390. package/lib/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +0 -16
  391. package/lib/front_end/third_party/intl-messageformat/intl-messageformat.ts +0 -6
  392. package/lib/front_end/third_party/intl-messageformat/package/LICENSE.md +0 -33
  393. package/lib/front_end/third_party/intl-messageformat/package/README.md +0 -3
  394. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts +0 -6
  395. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts.map +0 -1
  396. package/lib/front_end/third_party/intl-messageformat/package/index.js +0 -13
  397. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.d.ts +0 -5
  398. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +0 -1710
  399. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +0 -1815
  400. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts +0 -6
  401. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts.map +0 -1
  402. package/lib/front_end/third_party/intl-messageformat/package/lib/index.js +0 -10
  403. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts +0 -34
  404. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts.map +0 -1
  405. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.js +0 -229
  406. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts +0 -28
  407. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts.map +0 -1
  408. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.js +0 -48
  409. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts +0 -34
  410. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts.map +0 -1
  411. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +0 -179
  412. package/lib/front_end/third_party/intl-messageformat/package/package.json +0 -42
  413. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts +0 -34
  414. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts.map +0 -1
  415. package/lib/front_end/third_party/intl-messageformat/package/src/core.js +0 -230
  416. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts +0 -28
  417. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts.map +0 -1
  418. package/lib/front_end/third_party/intl-messageformat/package/src/error.js +0 -51
  419. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts +0 -34
  420. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts.map +0 -1
  421. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.js +0 -182
  422. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/error.d.ts +0 -79
  423. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/index.d.ts +0 -15
  424. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/parser.d.ts +0 -153
  425. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/types.d.ts +0 -139
  426. package/lib/front_end/third_party/legacy-javascript/LICENSE +0 -202
  427. package/lib/front_end/third_party/legacy-javascript/README.chromium +0 -13
  428. package/lib/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +0 -8
  429. package/lib/front_end/third_party/legacy-javascript/legacy-javascript.ts +0 -3
  430. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.d.ts +0 -18
  431. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +0 -943
  432. package/lib/front_end/third_party/legacy-javascript/package.json +0 -8
  433. package/lib/front_end/third_party/legacy-javascript/rebuild.sh +0 -9
  434. package/lib/front_end/third_party/source-map-scopes-codec/LICENSE +0 -26
  435. package/lib/front_end/third_party/source-map-scopes-codec/README.chromium +0 -31
  436. package/lib/front_end/third_party/source-map-scopes-codec/package/CONTRIBUTING.md +0 -33
  437. package/lib/front_end/third_party/source-map-scopes-codec/package/LICENSE +0 -26
  438. package/lib/front_end/third_party/source-map-scopes-codec/package/README.md +0 -64
  439. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts +0 -62
  440. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts.map +0 -1
  441. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts +0 -37
  442. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts.map +0 -1
  443. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts +0 -29
  444. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts.map +0 -1
  445. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts +0 -8
  446. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts.map +0 -1
  447. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts +0 -6
  448. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts.map +0 -1
  449. package/lib/front_end/third_party/source-map-scopes-codec/package/deno.json +0 -21
  450. package/lib/front_end/third_party/source-map-scopes-codec/package/package.json +0 -14
  451. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +0 -196
  452. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js.map +0 -1
  453. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.ts +0 -262
  454. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +0 -235
  455. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js.map +0 -1
  456. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.ts +0 -359
  457. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -39
  458. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.js.map +0 -1
  459. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.ts +0 -53
  460. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +0 -438
  461. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js.map +0 -1
  462. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.ts +0 -539
  463. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +0 -23
  464. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js.map +0 -1
  465. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.ts +0 -35
  466. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +0 -257
  467. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js.map +0 -1
  468. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.ts +0 -348
  469. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.js +0 -8
  470. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.js.map +0 -1
  471. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.ts +0 -20
  472. package/lib/front_end/third_party/source-map-scopes-codec/package/src/scopes-tsconfig.json +0 -8
  473. package/lib/front_end/third_party/source-map-scopes-codec/package/src/scopes.d.ts +0 -184
  474. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.js +0 -9
  475. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.js.map +0 -1
  476. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.ts +0 -12
  477. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +0 -82
  478. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.js.map +0 -1
  479. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.ts +0 -99
  480. package/lib/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.ts +0 -5
  481. package/lib/front_end/third_party/third-party-web/LICENSE +0 -20
  482. package/lib/front_end/third_party/third-party-web/README.chromium +0 -13
  483. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.d.ts +0 -2
  484. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.js +0 -149
  485. package/lib/front_end/third_party/third-party-web/package/LICENSE +0 -20
  486. package/lib/front_end/third_party/third-party-web/package/README.md +0 -929
  487. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +0 -1
  488. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +0 -1
  489. package/lib/front_end/third_party/third-party-web/package/dist/entities-nostats.json +0 -1
  490. package/lib/front_end/third_party/third-party-web/package/dist/entities.json +0 -1
  491. package/lib/front_end/third_party/third-party-web/package/facades.md +0 -46
  492. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.d.ts +0 -1
  493. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +0 -1
  494. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.d.ts +0 -1
  495. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.js +0 -1
  496. package/lib/front_end/third_party/third-party-web/package/lib/__snapshots__/index.test.js.snap +0 -1006
  497. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +0 -139
  498. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +0 -44
  499. package/lib/front_end/third_party/third-party-web/package/lib/entities.test.js +0 -27
  500. package/lib/front_end/third_party/third-party-web/package/lib/index.d.ts +0 -34
  501. package/lib/front_end/third_party/third-party-web/package/lib/index.js +0 -3
  502. package/lib/front_end/third_party/third-party-web/package/lib/index.test.js +0 -246
  503. package/lib/front_end/third_party/third-party-web/package/lib/markdown/faqs.partial.md +0 -36
  504. package/lib/front_end/third_party/third-party-web/package/lib/markdown/goals.partial.md +0 -9
  505. package/lib/front_end/third_party/third-party-web/package/lib/markdown/methodology.partial.md +0 -5
  506. package/lib/front_end/third_party/third-party-web/package/lib/markdown/template.md +0 -151
  507. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-02-01.md +0 -1
  508. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-03-01.md +0 -1
  509. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-06.md +0 -1
  510. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-13.md +0 -14
  511. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2021-01-01.md +0 -1
  512. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2024-07-01.md +0 -3
  513. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.d.ts +0 -1
  514. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +0 -3
  515. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.d.ts +0 -1
  516. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +0 -3
  517. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.d.ts +0 -1
  518. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +0 -3
  519. package/lib/front_end/third_party/third-party-web/package/nostats-subset.d.ts +0 -1
  520. package/lib/front_end/third_party/third-party-web/package/nostats-subset.js +0 -1
  521. package/lib/front_end/third_party/third-party-web/package/package.json +0 -46
  522. package/lib/front_end/third_party/third-party-web/package.json +0 -8
  523. package/lib/front_end/third_party/third-party-web/rebuild.sh +0 -13
  524. package/lib/front_end/third_party/third-party-web/third-party-web-tsconfig.json +0 -8
  525. package/lib/front_end/third_party/third-party-web/third-party-web.ts +0 -3
  526. package/lib/front_end/ui/legacy/theme_support/ThemeSupport.ts +0 -222
  527. package/lib/front_end/ui/legacy/theme_support/theme_support.ts +0 -5
  528. package/patches/chrome-devtools-frontend+1.0.1533544.patch +0 -1716
@@ -1,928 +0,0 @@
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
-
5
- import * as Common from '../../../core/common/common.js';
6
- import * as Platform from '../../../core/platform/platform.js';
7
- import type * as Protocol from '../../../generated/protocol.js';
8
- import type * as CPUProfile from '../../cpu_profile/cpu_profile.js';
9
- import * as Types from '../types/types.js';
10
-
11
- import {SyntheticEventsManager} from './SyntheticEvents.js';
12
- import {eventTimingsMicroSeconds} from './Timing.js';
13
-
14
- interface MatchingPairableAsyncEvents {
15
- syntheticId: string;
16
- begin: Types.Events.PairableAsyncBegin|null;
17
- end: Types.Events.PairableAsyncEnd|null;
18
- instant?: Types.Events.PairableAsyncInstant[];
19
- }
20
-
21
- /**
22
- * Extracts the raw stack trace in known trace events. Most likely than
23
- * not you want to use `getZeroIndexedStackTraceForEvent`, which returns
24
- * the stack with zero based numbering. Since some trace events are
25
- * one based this function can yield unexpected results when used
26
- * indiscriminately.
27
- *
28
- * Note: this only returns the stack trace contained in the payload of
29
- * an event, which only contains the synchronous portion of the call
30
- * stack. If you want to obtain the whole stack trace you might need to
31
- * use the @see Trace.Extras.StackTraceForEvent util.
32
- */
33
- export function stackTraceInEvent(event: Types.Events.Event): Types.Events.CallFrame[]|null {
34
- if (event.args?.data?.stackTrace) {
35
- return event.args.data.stackTrace;
36
- }
37
- if (event.args?.stackTrace) {
38
- return event.args.stackTrace;
39
- }
40
- if (Types.Events.isRecalcStyle(event)) {
41
- return event.args.beginData?.stackTrace || null;
42
- }
43
- if (Types.Events.isLayout(event)) {
44
- return event.args.beginData.stackTrace ?? null;
45
- }
46
- if (Types.Events.isFunctionCall(event)) {
47
- const data = event.args.data;
48
- if (!data) {
49
- return null;
50
- }
51
- const {columnNumber, lineNumber, url, scriptId, functionName} = data;
52
- if (lineNumber === undefined || functionName === undefined || columnNumber === undefined ||
53
- scriptId === undefined || url === undefined) {
54
- return null;
55
- }
56
- return [{columnNumber, lineNumber, url, scriptId, functionName}];
57
- }
58
- if (Types.Events.isProfileCall(event)) {
59
- // Of type Protocol.Runtime.CallFrame, handle accordingly.
60
- const callFrame = event.callFrame;
61
- if (!callFrame) {
62
- return null;
63
- }
64
- const {columnNumber, lineNumber, url, scriptId, functionName} = callFrame;
65
- if (lineNumber === undefined || functionName === undefined || columnNumber === undefined ||
66
- scriptId === undefined || url === undefined) {
67
- return null;
68
- }
69
- return [{columnNumber, lineNumber, url, scriptId, functionName}];
70
- }
71
- return null;
72
- }
73
-
74
- export function extractOriginFromTrace(firstNavigationURL: string): string|null {
75
- const url = Common.ParsedURL.ParsedURL.fromString(firstNavigationURL);
76
- if (url) {
77
- // We do this to save some space in the toolbar - seeing the `www` is less
78
- // useful than seeing `foo.com` if it's truncated at narrow widths
79
- if (url.host.startsWith('www.')) {
80
- return url.host.slice(4);
81
- }
82
- return url.host;
83
- }
84
- return null;
85
- }
86
-
87
- export type EventsInThread<T extends Types.Events.Event> = Map<Types.Events.ThreadID, T[]>;
88
- /**
89
- * Each thread contains events. Events indicate the thread and process IDs, which are
90
- * used to store the event in the correct process thread entry below.
91
- **/
92
- export function addEventToProcessThread<T extends Types.Events.Event>(
93
- event: T,
94
- eventsInProcessThread: Map<Types.Events.ProcessID, EventsInThread<T>>,
95
- ): void {
96
- const {tid, pid} = event;
97
- let eventsInThread = eventsInProcessThread.get(pid);
98
- if (!eventsInThread) {
99
- eventsInThread = new Map<Types.Events.ThreadID, T[]>();
100
- }
101
-
102
- let events = eventsInThread.get(tid);
103
- if (!events) {
104
- events = [];
105
- }
106
-
107
- events.push(event);
108
- eventsInThread.set(event.tid, events);
109
- eventsInProcessThread.set(event.pid, eventsInThread);
110
- }
111
-
112
- export function compareBeginAndEnd(aBeginTime: number, bBeginTime: number, aEndTime: number, bEndTime: number): -1|0|1 {
113
- if (aBeginTime < bBeginTime) {
114
- return -1;
115
- }
116
- if (aBeginTime > bBeginTime) {
117
- return 1;
118
- }
119
-
120
- if (aEndTime > bEndTime) {
121
- return -1;
122
- }
123
- if (aEndTime < bEndTime) {
124
- return 1;
125
- }
126
-
127
- return 0;
128
- }
129
-
130
- export function eventTimeComparator(a: Types.Events.Event, b: Types.Events.Event): -1|0|1 {
131
- const aBeginTime = a.ts;
132
- const bBeginTime = b.ts;
133
- const aDuration = a.dur ?? 0;
134
- const bDuration = b.dur ?? 0;
135
- const aEndTime = aBeginTime + aDuration;
136
- const bEndTime = bBeginTime + bDuration;
137
- const timeDifference = compareBeginAndEnd(aBeginTime, bBeginTime, aEndTime, bEndTime);
138
- if (timeDifference) {
139
- return timeDifference;
140
- }
141
-
142
- // If times are equal, prioritize profile calls over trace events,
143
- // since an exactly equal timestamp with a trace event is likely
144
- // indicates that the SamplesIntegrator meant to parent the trace
145
- // event with the profile call.
146
- if (Types.Events.isProfileCall(a) && !Types.Events.isProfileCall(b)) {
147
- return -1;
148
- }
149
- if (Types.Events.isProfileCall(b) && !Types.Events.isProfileCall(a)) {
150
- return 1;
151
- }
152
- return 0;
153
- }
154
- /**
155
- * Sorts all the events in place, in order, by their start time. If they have
156
- * the same start time, orders them by longest first.
157
- */
158
- export function sortTraceEventsInPlace(events: Types.Events.Event[]): void {
159
- events.sort(eventTimeComparator);
160
- }
161
-
162
- /**
163
- * Returns an array of ordered events that results after merging the two
164
- * ordered input arrays.
165
- */
166
- export function mergeEventsInOrder<T1 extends Types.Events.Event, T2 extends Types.Events.Event>(
167
- eventsArray1: readonly T1[], eventsArray2: readonly T2[]): Array<T1|T2> {
168
- const result = [];
169
- let i = 0;
170
- let j = 0;
171
- while (i < eventsArray1.length && j < eventsArray2.length) {
172
- const event1 = eventsArray1[i];
173
- const event2 = eventsArray2[j];
174
- const compareValue = eventTimeComparator(event1, event2);
175
- if (compareValue <= 0) {
176
- result.push(event1);
177
- i++;
178
- }
179
- if (compareValue === 1) {
180
- result.push(event2);
181
- j++;
182
- }
183
- }
184
- while (i < eventsArray1.length) {
185
- result.push(eventsArray1[i++]);
186
- }
187
- while (j < eventsArray2.length) {
188
- result.push(eventsArray2[j++]);
189
- }
190
- return result;
191
- }
192
-
193
- export function parseDevtoolsDetails(timingDetail: string, key: string): Types.Extensions.DevToolsObj|
194
- Types.Extensions.ExtensionTrackEntryPayloadDeeplink|null {
195
- try {
196
- // Attempt to parse the detail as an object that might be coming from a
197
- // DevTools Perf extension.
198
- // Wrapped in a try-catch because timingDetail might either:
199
- // 1. Not be `json.parse`-able (it should, but just in case...)
200
- // 2. Not be an object - in which case the `in` check will error.
201
- // If we hit either of these cases, we just ignore this mark and move on.
202
- const detailObj = JSON.parse(timingDetail);
203
- if (!(key in detailObj)) {
204
- return null;
205
- }
206
- if (!Types.Extensions.isValidExtensionPayload(detailObj[key])) {
207
- return null;
208
- }
209
- return detailObj[key];
210
- } catch {
211
- // No need to worry about this error, just discard this event and don't
212
- // treat it as having any useful information for the purposes of extensions.
213
- return null;
214
- }
215
- }
216
-
217
- export function getNavigationForTraceEvent(
218
- event: Types.Events.Event,
219
- eventFrameId: string,
220
- navigationsByFrameId: Map<string, Types.Events.NavigationStart[]>,
221
- ): Types.Events.NavigationStart|null {
222
- const navigations = navigationsByFrameId.get(eventFrameId);
223
- if (!navigations || eventFrameId === '') {
224
- // This event's navigation has been filtered out by the meta handler as a noise event
225
- // or contains an empty frameId.
226
- return null;
227
- }
228
-
229
- const eventNavigationIndex =
230
- Platform.ArrayUtilities.nearestIndexFromEnd(navigations, navigation => navigation.ts <= event.ts);
231
-
232
- if (eventNavigationIndex === null) {
233
- // This event's navigation has been filtered out by the meta handler as a noise event.
234
- return null;
235
- }
236
- return navigations[eventNavigationIndex];
237
- }
238
-
239
- export function extractId(
240
- event: Types.Events.PairableAsync|Types.Events.SyntheticEventPair<Types.Events.PairableAsync>): string|undefined {
241
- return event.id ?? event.id2?.global ?? event.id2?.local;
242
- }
243
-
244
- export function activeURLForFrameAtTime(
245
- frameId: string, time: Types.Timing.Micro,
246
- rendererProcessesByFrame: Map<
247
- string,
248
- Map<Types.Events.ProcessID, Array<{frame: Types.Events.TraceFrame, window: Types.Timing.TraceWindowMicro}>>>):
249
- string|null {
250
- const processData = rendererProcessesByFrame.get(frameId);
251
- if (!processData) {
252
- return null;
253
- }
254
- for (const processes of processData.values()) {
255
- for (const processInfo of processes) {
256
- if (processInfo.window.min > time || processInfo.window.max < time) {
257
- continue;
258
- }
259
- return processInfo.frame.url;
260
- }
261
- }
262
- return null;
263
- }
264
-
265
- /**
266
- * @param node the node attached to the profile call. Here a node represents a function in the call tree.
267
- * @param profileId the profile ID that the sample came from that backs this call.
268
- * @param sampleIndex the index of the sample in the given profile that this call was created from
269
- * @param ts the timestamp of the profile call
270
- * @param pid the process ID of the profile call
271
- * @param tid the thread ID of the profile call
272
- *
273
- * See `panels/timeline/docs/profile_calls.md` for more context on how these events are created.
274
- */
275
- export function makeProfileCall(
276
- node: CPUProfile.ProfileTreeModel.ProfileNode, profileId: Types.Events.ProfileID, sampleIndex: number,
277
- ts: Types.Timing.Micro, pid: Types.Events.ProcessID,
278
- tid: Types.Events.ThreadID): Types.Events.SyntheticProfileCall {
279
- return {
280
- cat: '',
281
- name: 'ProfileCall',
282
- nodeId: node.id,
283
- args: {},
284
- ph: Types.Events.Phase.COMPLETE,
285
- pid,
286
- tid,
287
- ts,
288
- dur: Types.Timing.Micro(0),
289
- callFrame: node.callFrame,
290
- sampleIndex,
291
- profileId,
292
- };
293
- }
294
-
295
- /**
296
- * Matches beginning events with PairableAsyncEnd and PairableAsyncInstant
297
- * if provided. Traces may contain multiple instant events so we need to
298
- * account for that. Additionally we have seen cases where we might only have a
299
- * begin event & instant event(s), with no end event. So we account for that
300
- * situation also.
301
- *
302
- * You might also like to read the models/trace/README.md which has some
303
- * documentation on trace IDs. This is important as Perfetto will reuse trace
304
- * IDs when emitting events (if they do not overlap). This means it's not as
305
- * simple as grouping events by IDs. Instead, we group begin & instant events
306
- * by ID as we find them. When we find end events, we then pop any matching
307
- * begin/instant events off the stack and group those. That way, if we meet the
308
- * same ID later on it doesn't cause us collisions.
309
- *
310
- * @returns An array of all the matched event groups, along with their ID. Note
311
- * that two event groups can have the same ID if they were non-overlapping
312
- * events. You cannot rely on ID being unique across a trace. The returned set
313
- * of groups are NOT SORTED in any order.
314
- */
315
- function matchEvents(unpairedEvents: Types.Events.PairableAsync[]): MatchingPairableAsyncEvents[] {
316
- sortTraceEventsInPlace(unpairedEvents);
317
- // map to store begin and end of the event
318
- const matches: MatchingPairableAsyncEvents[] = [];
319
-
320
- const beginEventsById = new Map<string, Types.Events.PairableAsyncBegin[]>();
321
- const instantEventsById = new Map<string, Types.Events.PairableAsyncInstant[]>();
322
- for (const event of unpairedEvents) {
323
- const id = getSyntheticId(event);
324
- if (id === undefined) {
325
- continue;
326
- }
327
- if (Types.Events.isPairableAsyncBegin(event)) {
328
- const existingEvents = beginEventsById.get(id) ?? [];
329
- existingEvents.push(event);
330
- beginEventsById.set(id, existingEvents);
331
- } else if (Types.Events.isPairableAsyncInstant(event)) {
332
- const existingEvents = instantEventsById.get(id) ?? [];
333
- existingEvents.push(event);
334
- instantEventsById.set(id, existingEvents);
335
- } else if (Types.Events.isPairableAsyncEnd(event)) {
336
- // Find matching begin event by ID
337
- const beginEventsWithMatchingId = beginEventsById.get(id) ?? [];
338
- const beginEvent = beginEventsWithMatchingId.pop();
339
- if (!beginEvent) {
340
- continue;
341
- }
342
- const instantEventsWithMatchingId = instantEventsById.get(id) ?? [];
343
- // Find all instant events after the begin event ts.
344
- const instantEventsForThisGroup: Types.Events.PairableAsyncInstant[] = [];
345
- while (instantEventsWithMatchingId.length > 0) {
346
- if (instantEventsWithMatchingId[0].ts >= beginEvent.ts) {
347
- const event = instantEventsWithMatchingId.pop();
348
- if (event) {
349
- instantEventsForThisGroup.push(event);
350
- }
351
- } else {
352
- break;
353
- }
354
- }
355
- const matchingGroup: MatchingPairableAsyncEvents = {
356
- begin: beginEvent,
357
- end: event,
358
- instant: instantEventsForThisGroup,
359
- syntheticId: id,
360
- };
361
- matches.push(matchingGroup);
362
- }
363
- }
364
-
365
- // At this point we know we have paired up all the Begin & End & Instant
366
- // events. But it is possible to see only begin & instant events with the
367
- // same ID, and no end event. So now we do a second pass through our begin
368
- // events to find any that did not have an end event. If we find some
369
- // instant events for the begin event, we create a new group.
370
- // Also, because there were no end events, we know that the IDs will be
371
- // unique now; e.g. each key in the map should have no more than one item in
372
- // it.
373
- for (const [id, beginEvents] of beginEventsById) {
374
- const beginEvent = beginEvents.pop();
375
- if (!beginEvent) {
376
- continue;
377
- }
378
- const matchingInstantEvents = instantEventsById.get(id);
379
- if (matchingInstantEvents?.length) {
380
- matches.push({
381
- syntheticId: id,
382
- begin: beginEvent,
383
- end: null,
384
- instant: matchingInstantEvents,
385
- });
386
- }
387
- }
388
-
389
- return matches;
390
- }
391
-
392
- export function getSyntheticId(event: Types.Events.PairableAsync): string|undefined {
393
- const id = extractId(event);
394
- return id && `${event.cat}:${id}:${event.name}`;
395
- }
396
-
397
- function createSortedSyntheticEvents<T extends Types.Events.PairableAsync>(
398
- matchedPairs: MatchingPairableAsyncEvents[],
399
- ): Array<Types.Events.SyntheticEventPair<T>> {
400
- const syntheticEvents: Array<Types.Events.SyntheticEventPair<T>> = [];
401
- for (const eventsTriplet of matchedPairs) {
402
- const id = eventsTriplet.syntheticId;
403
- const beginEvent = eventsTriplet.begin;
404
- const endEvent = eventsTriplet.end;
405
- const instantEvents = eventsTriplet.instant;
406
- if (!beginEvent || !(endEvent || instantEvents)) {
407
- // This should never happen, the backend only creates the events once it
408
- // has them both (beginEvent & endEvent/instantEvents), so we should never get into this state.
409
- // If we do, something is very wrong, so let's just drop that problematic event.
410
- continue;
411
- }
412
- const triplet = {beginEvent, endEvent, instantEvents};
413
- /**
414
- * When trying to pair events with instant events present, there are times when these
415
- * ASYNC_NESTABLE_INSTANT ('n') don't have a corresponding ASYNC_NESTABLE_END ('e') event.
416
- * In these cases, pair without needing the endEvent.
417
- */
418
- function eventsArePairable(data: {
419
- beginEvent: Types.Events.PairableAsyncBegin,
420
- endEvent: Types.Events.PairableAsyncEnd|null,
421
- instantEvents?: Types.Events.PairableAsyncInstant[],
422
- }): data is Types.Events.SyntheticEventPair<T>['args']['data'] {
423
- const instantEventsMatch = data.instantEvents ? data.instantEvents.some(e => id === getSyntheticId(e)) : false;
424
- const endEventMatch = data.endEvent ? id === getSyntheticId(data.endEvent) : false;
425
- return Boolean(id) && (instantEventsMatch || endEventMatch);
426
- }
427
- if (!eventsArePairable(triplet)) {
428
- continue;
429
- }
430
- const targetEvent = endEvent || beginEvent;
431
-
432
- const event = SyntheticEventsManager.registerSyntheticEvent<Types.Events.SyntheticEventPair<T>>({
433
- rawSourceEvent: triplet.beginEvent,
434
- cat: targetEvent.cat,
435
- ph: targetEvent.ph,
436
- pid: targetEvent.pid,
437
- tid: targetEvent.tid,
438
- id,
439
- // Both events have the same name, so it doesn't matter which we pick to
440
- // use as the description
441
- name: beginEvent.name,
442
- dur: Types.Timing.Micro(targetEvent.ts - beginEvent.ts),
443
- ts: beginEvent.ts,
444
- args: {
445
- data: triplet,
446
- },
447
- });
448
-
449
- if (event.dur < 0) {
450
- // We have seen in the backend that sometimes animation events get
451
- // generated with multiple begin entries, or multiple end entries, and this
452
- // can cause invalid data on the performance panel, so we drop them.
453
- // crbug.com/1472375
454
- continue;
455
- }
456
- syntheticEvents.push(event);
457
- }
458
- sortTraceEventsInPlace(syntheticEvents);
459
- return syntheticEvents;
460
- }
461
-
462
- /**
463
- * Groups up sets of async events into synthetic events.
464
- * @param unpairedAsyncEvents the raw array of begin, end and async instant
465
- * events. These MUST be sorted in timestamp ASC order.
466
- */
467
- export function createMatchedSortedSyntheticEvents<T extends Types.Events.PairableAsync>(unpairedAsyncEvents: T[]):
468
- Array<Types.Events.SyntheticEventPair<T>> {
469
- const matchedPairs = matchEvents(unpairedAsyncEvents);
470
- const syntheticEvents = createSortedSyntheticEvents<T>(matchedPairs);
471
- return syntheticEvents;
472
- }
473
-
474
- /**
475
- * Different trace events return line/column numbers that are 1 or 0 indexed.
476
- * This function knows which events return 1 indexed numbers and normalizes
477
- * them. The UI expects 0 indexed line numbers, so that is what we return.
478
- */
479
- export function getZeroIndexedLineAndColumnForEvent(event: Types.Events.Event): {
480
- lineNumber?: number,
481
- columnNumber?: number,
482
- } {
483
- // Some events emit line numbers that are 1 indexed, but the UI layer expects
484
- // numbers to be 0 indexed. So here, if the event matches a known 1-indexed
485
- // number event, we subtract one from the line and column numbers.
486
- // Otherwise, if the event has args.data.lineNumber/colNumber, we return it
487
- // as is.
488
- const numbers = getRawLineAndColumnNumbersForEvent(event);
489
- const {lineNumber, columnNumber} = numbers;
490
-
491
- switch (event.name) {
492
- // All these events have line/column numbers which are 1 indexed; so we
493
- // subtract to make them 0 indexed.
494
- case Types.Events.Name.FUNCTION_CALL:
495
- case Types.Events.Name.EVALUATE_SCRIPT:
496
- case Types.Events.Name.COMPILE:
497
- case Types.Events.Name.CACHE_SCRIPT: {
498
- return {
499
- lineNumber: typeof lineNumber === 'number' ? lineNumber - 1 : undefined,
500
- columnNumber: typeof columnNumber === 'number' ? columnNumber - 1 : undefined,
501
- };
502
- }
503
- case Types.Events.Name.PROFILE_CALL: {
504
- const callFrame = (event as Types.Events.SyntheticProfileCall).callFrame;
505
- return {
506
- lineNumber: typeof lineNumber === 'number' ? callFrame.lineNumber - 1 : undefined,
507
- columnNumber: typeof columnNumber === 'number' ? callFrame.columnNumber - 1 : undefined,
508
- };
509
- }
510
- default: {
511
- return numbers;
512
- }
513
- }
514
- }
515
-
516
- /**
517
- * Different trace events contain stack traces with line/column numbers
518
- * that are 1 or 0 indexed.
519
- * This function knows which events return 1 indexed numbers and normalizes
520
- * them. The UI expects 0 indexed line numbers, so that is what we return.
521
- *
522
- * Note: this only returns the stack trace contained in the payload of
523
- * an event, which only contains the synchronous portion of the call
524
- * stack. If you want to obtain the whole stack trace you might need to
525
- * use the @see Trace.Extras.StackTraceForEvent util.
526
- */
527
- export function getZeroIndexedStackTraceInEventPayload(event: Types.Events.Event): Types.Events.CallFrame[]|null {
528
- const stack = stackTraceInEvent(event);
529
- if (!stack) {
530
- return null;
531
- }
532
-
533
- switch (event.name) {
534
- case Types.Events.Name.SCHEDULE_STYLE_RECALCULATION:
535
- case Types.Events.Name.INVALIDATE_LAYOUT:
536
- case Types.Events.Name.FUNCTION_CALL:
537
- case Types.Events.Name.LAYOUT:
538
- case Types.Events.Name.RECALC_STYLE: {
539
- return stack.map(makeZeroBasedCallFrame);
540
- }
541
-
542
- default: {
543
- if (Types.Events.isUserTiming(event) || Types.Extensions.isSyntheticExtensionEntry(event)) {
544
- return stack.map(makeZeroBasedCallFrame);
545
- }
546
-
547
- return stack;
548
- }
549
- }
550
- }
551
-
552
- /**
553
- * Same as getZeroIndexedStackTraceInEventPayload, but only returns the top call frame.
554
- */
555
- export function getStackTraceTopCallFrameInEventPayload(event: Types.Events.Event): Types.Events.CallFrame|null {
556
- const stack = stackTraceInEvent(event);
557
- if (!stack || stack.length === 0) {
558
- return null;
559
- }
560
-
561
- switch (event.name) {
562
- case Types.Events.Name.SCHEDULE_STYLE_RECALCULATION:
563
- case Types.Events.Name.INVALIDATE_LAYOUT:
564
- case Types.Events.Name.FUNCTION_CALL:
565
- case Types.Events.Name.LAYOUT:
566
- case Types.Events.Name.RECALC_STYLE: {
567
- return makeZeroBasedCallFrame(stack[0]);
568
- }
569
-
570
- default: {
571
- if (Types.Events.isUserTiming(event) || Types.Extensions.isSyntheticExtensionEntry(event)) {
572
- return makeZeroBasedCallFrame(stack[0]);
573
- }
574
-
575
- return stack[0];
576
- }
577
- }
578
- }
579
-
580
- /**
581
- * Given a 1-based call frame creates a 0-based one.
582
- */
583
- export function makeZeroBasedCallFrame(callFrame: Types.Events.CallFrame): Types.Events.CallFrame {
584
- const normalizedCallFrame = {...callFrame};
585
-
586
- normalizedCallFrame.lineNumber = callFrame.lineNumber && callFrame.lineNumber - 1;
587
- normalizedCallFrame.columnNumber = callFrame.columnNumber && callFrame.columnNumber - 1;
588
- return normalizedCallFrame;
589
- }
590
-
591
- /**
592
- * NOTE: you probably do not want this function! (Which is why it is not exported).
593
- *
594
- * Some trace events have 0 indexed line/column numbers, and others have 1
595
- * indexed. This function does NOT normalize them, but
596
- * `getZeroIndexedLineAndColumnNumbersForEvent` does. It is best to use that!
597
- *
598
- * @see {@link getZeroIndexedLineAndColumnForEvent}
599
- **/
600
- function getRawLineAndColumnNumbersForEvent(event: Types.Events.Event): {
601
- lineNumber?: number,
602
- columnNumber?: number,
603
- } {
604
- if (!event.args?.data) {
605
- return {
606
- lineNumber: undefined,
607
- columnNumber: undefined,
608
- };
609
- }
610
- let lineNumber: number|undefined = undefined;
611
- let columnNumber: number|undefined = undefined;
612
- if ('lineNumber' in event.args.data && typeof event.args.data.lineNumber === 'number') {
613
- lineNumber = event.args.data.lineNumber;
614
- }
615
- if ('columnNumber' in event.args.data && typeof event.args.data.columnNumber === 'number') {
616
- columnNumber = event.args.data.columnNumber;
617
- }
618
-
619
- return {lineNumber, columnNumber};
620
- }
621
-
622
- export function frameIDForEvent(event: Types.Events.Event): string|null {
623
- // There are a few events (for example RecalcStyle, ParseHTML) that have
624
- // the frame stored in args.beginData
625
- // Rather than list them all we just check for the presence of the field, so
626
- // we are robust against future trace events also doing this.
627
- // This check seems very robust, but it also helps satisfy TypeScript and
628
- // prevents us against unexpected data.
629
- if (event.args && 'beginData' in event.args && typeof event.args.beginData === 'object' &&
630
- event.args.beginData !== null && 'frame' in event.args.beginData &&
631
- typeof event.args.beginData.frame === 'string') {
632
- return event.args.beginData.frame;
633
- }
634
- // Otherwise, we expect frame to be in args.data
635
- if (event.args?.data?.frame) {
636
- return event.args.data.frame;
637
- }
638
-
639
- // No known frame for this event.
640
- return null;
641
- }
642
-
643
- const DevToolsTimelineEventCategory = 'disabled-by-default-devtools.timeline';
644
- export function isTopLevelEvent(event: Types.Events.Event): boolean {
645
- return event.cat.includes(DevToolsTimelineEventCategory) && event.name === Types.Events.Name.RUN_TASK;
646
- }
647
-
648
- export function isExtensionUrl(url: string): boolean {
649
- return url.startsWith('extensions:') || url.startsWith('chrome-extension:');
650
- }
651
-
652
- function topLevelEventIndexEndingAfter(events: Types.Events.Event[], time: Types.Timing.Micro): number {
653
- let index = Platform.ArrayUtilities.upperBound(events, time, (time, event) => time - event.ts) - 1;
654
- while (index > 0 && !isTopLevelEvent(events[index])) {
655
- index--;
656
- }
657
- return Math.max(index, 0);
658
- }
659
- export function findRecalcStyleEvents(
660
- events: Types.Events.Event[], startTime: Types.Timing.Micro,
661
- endTime?: Types.Timing.Micro): Types.Events.RecalcStyle[] {
662
- const foundEvents: Types.Events.RecalcStyle[] = [];
663
- const startEventIndex = topLevelEventIndexEndingAfter(events, startTime);
664
- for (let i = startEventIndex; i < events.length; i++) {
665
- const event = events[i];
666
- if (!Types.Events.isRecalcStyle(event)) {
667
- continue;
668
- }
669
- if (event.ts >= (endTime || Infinity)) {
670
- continue;
671
- }
672
- foundEvents.push(event);
673
- }
674
- return foundEvents;
675
- }
676
-
677
- export function findNextEventAfterTimestamp<T extends Types.Events.Event>(candidates: T[], ts: Types.Timing.Micro): T|
678
- null {
679
- const index = Platform.ArrayUtilities.nearestIndexFromBeginning(candidates, candidate => ts < candidate.ts);
680
- return index === null ? null : candidates[index];
681
- }
682
-
683
- export function findPreviousEventBeforeTimestamp<T extends Types.Events.Event>(
684
- candidates: T[], ts: Types.Timing.Micro): T|null {
685
- const index = Platform.ArrayUtilities.nearestIndexFromEnd(candidates, candidate => candidate.ts < ts);
686
- return index === null ? null : candidates[index];
687
- }
688
-
689
- export interface ForEachEventConfig {
690
- onStartEvent: (event: Types.Events.Event) => void;
691
- onEndEvent: (event: Types.Events.Event) => void;
692
- onInstantEvent?: (event: Types.Events.Event) => void;
693
- eventFilter?: (event: Types.Events.Event) => boolean;
694
- startTime?: Types.Timing.Micro;
695
- endTime?: Types.Timing.Micro;
696
- /* If async events should be skipped. Defaults to true */
697
- ignoreAsyncEvents?: boolean;
698
- }
699
-
700
- /**
701
- * Iterates events in a tree hierarchically, from top to bottom,
702
- * calling back on every event's start and end in the order
703
- * dictated by the corresponding timestamp.
704
- *
705
- * Events are assumed to be in ascendent order by timestamp.
706
- *
707
- * Events with 0 duration are treated as instant events. These do not have a
708
- * begin and end, but will be passed to the config.onInstantEvent callback as
709
- * they are discovered. Do not provide this callback if you are not interested
710
- * in them.
711
- *
712
- * For example, given this tree, the following callbacks
713
- * are expected to be made in the following order
714
- * |---------------A---------------|
715
- * |------B------||-------D------|
716
- * |---C---|
717
- *
718
- * 1. Start A
719
- * 3. Start B
720
- * 4. Start C
721
- * 5. End C
722
- * 6. End B
723
- * 7. Start D
724
- * 8. End D
725
- * 9. End A
726
- *
727
- * By default, async events are skipped. This behaviour can be
728
- * overridden making use of the config.ignoreAsyncEvents parameter.
729
- */
730
- export function forEachEvent(
731
- events: Types.Events.Event[],
732
- config: ForEachEventConfig,
733
- ): void {
734
- const globalStartTime = config.startTime ?? Types.Timing.Micro(0);
735
- const globalEndTime = config.endTime || Types.Timing.Micro(Infinity);
736
- const ignoreAsyncEvents = config.ignoreAsyncEvents === false ? false : true;
737
-
738
- const stack: Types.Events.Event[] = [];
739
- const startEventIndex = topLevelEventIndexEndingAfter(events, globalStartTime);
740
- for (let i = startEventIndex; i < events.length; i++) {
741
- const currentEvent = events[i];
742
- const currentEventTimings = eventTimingsMicroSeconds(currentEvent);
743
- if (currentEventTimings.endTime < globalStartTime) {
744
- continue;
745
- }
746
- if (currentEventTimings.startTime > globalEndTime) {
747
- break;
748
- }
749
-
750
- const isIgnoredAsyncEvent = ignoreAsyncEvents && Types.Events.isPhaseAsync(currentEvent.ph);
751
- if (isIgnoredAsyncEvent || Types.Events.isFlowPhase(currentEvent.ph)) {
752
- continue;
753
- }
754
-
755
- // If we have now reached an event that is after a bunch of events, we need
756
- // to call the onEndEvent callback for those events before moving on.
757
- let lastEventOnStack = stack.at(-1);
758
- let lastEventEndTime = lastEventOnStack ? eventTimingsMicroSeconds(lastEventOnStack).endTime : null;
759
- while (lastEventOnStack && lastEventEndTime && lastEventEndTime <= currentEventTimings.startTime) {
760
- stack.pop();
761
- config.onEndEvent(lastEventOnStack);
762
- lastEventOnStack = stack.at(-1);
763
- lastEventEndTime = lastEventOnStack ? eventTimingsMicroSeconds(lastEventOnStack).endTime : null;
764
- }
765
-
766
- // Now we have dealt with all events prior to this one, see if we need to care about this one.
767
- if (config.eventFilter && !config.eventFilter(currentEvent)) {
768
- // The user has chosen to filter this event out, so continue on and do nothing
769
- continue;
770
- }
771
-
772
- if (currentEventTimings.duration) {
773
- config.onStartEvent(currentEvent);
774
- stack.push(currentEvent);
775
- } else if (config.onInstantEvent) {
776
- // An event with 0 duration is an instant event.
777
- config.onInstantEvent(currentEvent);
778
- }
779
- }
780
-
781
- // Now we have finished looping over all events; any events remaining on the
782
- // stack need to have their onEndEvent called.
783
- while (stack.length) {
784
- const last = stack.pop();
785
- if (last) {
786
- config.onEndEvent(last);
787
- }
788
- }
789
- }
790
-
791
- // Parsed categories are cached to prevent calling cat.split()
792
- // multiple times on the same categories string.
793
- const parsedCategories = new Map<string, Set<string>>();
794
- export function eventHasCategory(event: Types.Events.Event, category: string): boolean {
795
- let parsedCategoriesForEvent = parsedCategories.get(event.cat);
796
- if (!parsedCategoriesForEvent) {
797
- parsedCategoriesForEvent = new Set(event.cat.split(',') || []);
798
- }
799
- return parsedCategoriesForEvent.has(category);
800
- }
801
-
802
- /**
803
- * This compares Types.Events.CallFrame with Protocol.Runtime.CallFrame and checks for equality.
804
- */
805
- export function isMatchingCallFrame(
806
- eventFrame: Types.Events.CallFrame, nodeFrame: Protocol.Runtime.CallFrame): boolean {
807
- return eventFrame.columnNumber === nodeFrame.columnNumber && eventFrame.lineNumber === nodeFrame.lineNumber &&
808
- String(eventFrame.scriptId) === nodeFrame.scriptId && eventFrame.url === nodeFrame.url &&
809
- eventFrame.functionName === nodeFrame.functionName;
810
- }
811
-
812
- export function eventContainsTimestamp(event: Types.Events.Event, ts: Types.Timing.Micro): boolean {
813
- return event.ts <= ts && event.ts + (event.dur || 0) >= ts;
814
- }
815
-
816
- export function extractSampleTraceId(event: Types.Events.Event): number|null {
817
- if (!event.args) {
818
- return null;
819
- }
820
- if ('beginData' in event.args) {
821
- const beginData = event.args['beginData'] as {sampleTraceId?: number};
822
- return beginData.sampleTraceId ?? null;
823
- }
824
- return event.args?.sampleTraceId ?? event.args?.data?.sampleTraceId ?? null;
825
- }
826
-
827
- /**
828
- * This exactly matches Trace.Styles.visibleTypes. See the runtime verification in maybeInitStylesMap.
829
- * TODO(crbug.com/410884528)
830
- **/
831
- export const VISIBLE_TRACE_EVENT_TYPES = new Set<Types.Events.Name>([
832
- Types.Events.Name.ABORT_POST_TASK_CALLBACK,
833
- Types.Events.Name.ANIMATION,
834
- Types.Events.Name.ASYNC_TASK,
835
- Types.Events.Name.BACKGROUND_DESERIALIZE,
836
- Types.Events.Name.CACHE_MODULE,
837
- Types.Events.Name.CACHE_SCRIPT,
838
- Types.Events.Name.CANCEL_ANIMATION_FRAME,
839
- Types.Events.Name.CANCEL_IDLE_CALLBACK,
840
- Types.Events.Name.COMMIT,
841
- Types.Events.Name.COMPILE_CODE,
842
- Types.Events.Name.COMPILE_MODULE,
843
- Types.Events.Name.COMPILE,
844
- Types.Events.Name.COMPOSITE_LAYERS,
845
- Types.Events.Name.COMPUTE_INTERSECTION,
846
- Types.Events.Name.CONSOLE_TIME,
847
- Types.Events.Name.CPPGC_SWEEP,
848
- Types.Events.Name.CRYPTO_DO_DECRYPT_REPLY,
849
- Types.Events.Name.CRYPTO_DO_DECRYPT,
850
- Types.Events.Name.CRYPTO_DO_DIGEST_REPLY,
851
- Types.Events.Name.CRYPTO_DO_DIGEST,
852
- Types.Events.Name.CRYPTO_DO_ENCRYPT_REPLY,
853
- Types.Events.Name.CRYPTO_DO_ENCRYPT,
854
- Types.Events.Name.CRYPTO_DO_SIGN_REPLY,
855
- Types.Events.Name.CRYPTO_DO_SIGN,
856
- Types.Events.Name.CRYPTO_DO_VERIFY_REPLY,
857
- Types.Events.Name.CRYPTO_DO_VERIFY,
858
- Types.Events.Name.DECODE_IMAGE,
859
- Types.Events.Name.EMBEDDER_CALLBACK,
860
- Types.Events.Name.EVALUATE_MODULE,
861
- Types.Events.Name.EVALUATE_SCRIPT,
862
- Types.Events.Name.EVENT_DISPATCH,
863
- Types.Events.Name.EVENT_TIMING,
864
- Types.Events.Name.FINALIZE_DESERIALIZATION,
865
- Types.Events.Name.FIRE_ANIMATION_FRAME,
866
- Types.Events.Name.FIRE_IDLE_CALLBACK,
867
- Types.Events.Name.FUNCTION_CALL,
868
- Types.Events.Name.GC_COLLECT_GARBARGE,
869
- Types.Events.Name.GC,
870
- Types.Events.Name.GPU_TASK,
871
- Types.Events.Name.HANDLE_POST_MESSAGE,
872
- Types.Events.Name.HIT_TEST,
873
- Types.Events.Name.JS_SAMPLE,
874
- Types.Events.Name.LAYERIZE,
875
- Types.Events.Name.LAYOUT,
876
- Types.Events.Name.MAJOR_GC,
877
- Types.Events.Name.MINOR_GC,
878
- Types.Events.Name.OPTIMIZE_CODE,
879
- Types.Events.Name.PAINT_SETUP,
880
- Types.Events.Name.PAINT,
881
- Types.Events.Name.PARSE_AUTHOR_STYLE_SHEET,
882
- Types.Events.Name.PARSE_HTML,
883
- Types.Events.Name.PRE_PAINT,
884
- Types.Events.Name.PROFILE_CALL,
885
- Types.Events.Name.PROGRAM,
886
- Types.Events.Name.RASTER_TASK,
887
- Types.Events.Name.REQUEST_ANIMATION_FRAME,
888
- Types.Events.Name.REQUEST_IDLE_CALLBACK,
889
- Types.Events.Name.RESOURCE_FINISH,
890
- Types.Events.Name.RESOURCE_RECEIVE_DATA,
891
- Types.Events.Name.RESOURCE_RECEIVE_RESPONSE,
892
- Types.Events.Name.RESOURCE_SEND_REQUEST,
893
- Types.Events.Name.RESOURCE_WILL_SEND_REQUEST,
894
- Types.Events.Name.RUN_MICROTASKS,
895
- Types.Events.Name.RUN_POST_TASK_CALLBACK,
896
- Types.Events.Name.RUN_TASK,
897
- Types.Events.Name.SCHEDULE_POST_MESSAGE,
898
- Types.Events.Name.SCHEDULE_POST_TASK_CALLBACK,
899
- Types.Events.Name.SCHEDULE_STYLE_RECALCULATION,
900
- Types.Events.Name.SCROLL_LAYER,
901
- Types.Events.Name.START_PROFILING,
902
- Types.Events.Name.STREAMING_COMPILE_SCRIPT_PARSING,
903
- Types.Events.Name.STREAMING_COMPILE_SCRIPT_WAITING,
904
- Types.Events.Name.STREAMING_COMPILE_SCRIPT,
905
- Types.Events.Name.SYNTHETIC_LAYOUT_SHIFT_CLUSTER,
906
- Types.Events.Name.SYNTHETIC_LAYOUT_SHIFT,
907
- Types.Events.Name.TIME_STAMP,
908
- Types.Events.Name.TIMER_FIRE,
909
- Types.Events.Name.TIMER_INSTALL,
910
- Types.Events.Name.TIMER_REMOVE,
911
- Types.Events.Name.UPDATE_LAYER_TREE,
912
- Types.Events.Name.RECALC_STYLE,
913
- Types.Events.Name.USER_TIMING,
914
- Types.Events.Name.V8_CONSOLE_RUN_TASK,
915
- Types.Events.Name.WASM_CACHED_MODULE,
916
- Types.Events.Name.WASM_COMPILED_MODULE,
917
- Types.Events.Name.WASM_MODULE_CACHE_HIT,
918
- Types.Events.Name.WASM_MODULE_CACHE_INVALID,
919
- Types.Events.Name.WASM_STREAM_FROM_RESPONSE_CALLBACK,
920
- Types.Events.Name.WEB_SOCKET_CREATE,
921
- Types.Events.Name.WEB_SOCKET_DESTROY,
922
- Types.Events.Name.WEB_SOCKET_RECEIVE_HANDSHAKE_REQUEST,
923
- Types.Events.Name.WEB_SOCKET_RECEIVE,
924
- Types.Events.Name.WEB_SOCKET_SEND_HANDSHAKE_REQUEST,
925
- Types.Events.Name.WEB_SOCKET_SEND,
926
- Types.Events.Name.XHR_LOAD,
927
- Types.Events.Name.XHR_READY_STATE_CHANGED,
928
- ]);