devtools-tracing 1.1.1 → 1.2.1

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 (527) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.js +28854 -0
  3. package/package.json +11 -8
  4. package/generate.ts +0 -649
  5. package/index.ts +0 -17
  6. package/lib/extension-api/ExtensionAPI.d.ts +0 -357
  7. package/lib/front_end/core/common/App.ts +0 -7
  8. package/lib/front_end/core/common/AppProvider.ts +0 -32
  9. package/lib/front_end/core/common/Base64.ts +0 -47
  10. package/lib/front_end/core/common/CharacterIdMap.ts +0 -30
  11. package/lib/front_end/core/common/Color.ts +0 -2506
  12. package/lib/front_end/core/common/ColorConverter.ts +0 -402
  13. package/lib/front_end/core/common/ColorUtils.ts +0 -252
  14. package/lib/front_end/core/common/Console.ts +0 -114
  15. package/lib/front_end/core/common/Debouncer.ts +0 -15
  16. package/lib/front_end/core/common/EventTarget.ts +0 -52
  17. package/lib/front_end/core/common/Gzip.ts +0 -74
  18. package/lib/front_end/core/common/JavaScriptMetaData.ts +0 -29
  19. package/lib/front_end/core/common/Lazy.ts +0 -31
  20. package/lib/front_end/core/common/Linkifier.ts +0 -55
  21. package/lib/front_end/core/common/MapWithDefault.ts +0 -26
  22. package/lib/front_end/core/common/Mutex.ts +0 -55
  23. package/lib/front_end/core/common/Object.ts +0 -145
  24. package/lib/front_end/core/common/ParsedURL.ts +0 -554
  25. package/lib/front_end/core/common/Progress.ts +0 -180
  26. package/lib/front_end/core/common/QueryParamHandler.ts +0 -7
  27. package/lib/front_end/core/common/ResolverBase.ts +0 -85
  28. package/lib/front_end/core/common/ResourceType.ts +0 -588
  29. package/lib/front_end/core/common/ReturnToPanel.ts +0 -17
  30. package/lib/front_end/core/common/Revealer.ts +0 -192
  31. package/lib/front_end/core/common/Runnable.ts +0 -41
  32. package/lib/front_end/core/common/SegmentedRange.ts +0 -87
  33. package/lib/front_end/core/common/SettingRegistration.ts +0 -339
  34. package/lib/front_end/core/common/Settings.ts +0 -1497
  35. package/lib/front_end/core/common/SimpleHistoryManager.ts +0 -124
  36. package/lib/front_end/core/common/StringOutputStream.ts +0 -26
  37. package/lib/front_end/core/common/TextDictionary.ts +0 -48
  38. package/lib/front_end/core/common/Throttler.ts +0 -99
  39. package/lib/front_end/core/common/Trie.ts +0 -152
  40. package/lib/front_end/core/common/Worker.ts +0 -60
  41. package/lib/front_end/core/common/common.ts +0 -81
  42. package/lib/front_end/core/host/AidaClient.ts +0 -733
  43. package/lib/front_end/core/host/GdpClient.ts +0 -316
  44. package/lib/front_end/core/host/InspectorFrontendHost.ts +0 -648
  45. package/lib/front_end/core/host/InspectorFrontendHostAPI.ts +0 -551
  46. package/lib/front_end/core/host/Platform.ts +0 -76
  47. package/lib/front_end/core/host/ResourceLoader.ts +0 -282
  48. package/lib/front_end/core/host/UserMetrics.ts +0 -1230
  49. package/lib/front_end/core/host/host.ts +0 -23
  50. package/lib/front_end/core/i18n/ByteUtilities.ts +0 -82
  51. package/lib/front_end/core/i18n/DevToolsLocale.ts +0 -87
  52. package/lib/front_end/core/i18n/NumberFormatter.ts +0 -82
  53. package/lib/front_end/core/i18n/i18n.ts +0 -17
  54. package/lib/front_end/core/i18n/i18nImpl.ts +0 -204
  55. package/lib/front_end/core/i18n/i18nTypes.ts +0 -10
  56. package/lib/front_end/core/i18n/locales.js +0 -14
  57. package/lib/front_end/core/i18n/time-utilities.ts +0 -174
  58. package/lib/front_end/core/platform/ArrayUtilities.ts +0 -271
  59. package/lib/front_end/core/platform/Brand.ts +0 -23
  60. package/lib/front_end/core/platform/Constructor.ts +0 -10
  61. package/lib/front_end/core/platform/DOMUtilities.ts +0 -138
  62. package/lib/front_end/core/platform/DateUtilities.ts +0 -15
  63. package/lib/front_end/core/platform/DevToolsPath.ts +0 -53
  64. package/lib/front_end/core/platform/KeyboardUtilities.ts +0 -38
  65. package/lib/front_end/core/platform/MapUtilities.ts +0 -95
  66. package/lib/front_end/core/platform/MimeType.ts +0 -175
  67. package/lib/front_end/core/platform/NumberUtilities.ts +0 -80
  68. package/lib/front_end/core/platform/StringUtilities.ts +0 -588
  69. package/lib/front_end/core/platform/Timing.ts +0 -17
  70. package/lib/front_end/core/platform/TypedArrayUtilities.ts +0 -189
  71. package/lib/front_end/core/platform/TypescriptUtilities.ts +0 -86
  72. package/lib/front_end/core/platform/UIString.ts +0 -39
  73. package/lib/front_end/core/platform/UserVisibleError.ts +0 -28
  74. package/lib/front_end/core/platform/platform.ts +0 -45
  75. package/lib/front_end/core/protocol_client/ConnectionTransport.ts +0 -26
  76. package/lib/front_end/core/protocol_client/InspectorBackend.ts +0 -1050
  77. package/lib/front_end/core/protocol_client/NodeURL.ts +0 -42
  78. package/lib/front_end/core/protocol_client/protocol_client.ts +0 -13
  79. package/lib/front_end/core/root/Runtime.ts +0 -609
  80. package/lib/front_end/core/root/root.ts +0 -6
  81. package/lib/front_end/core/sdk/AccessibilityModel.ts +0 -353
  82. package/lib/front_end/core/sdk/AnimationModel.ts +0 -1041
  83. package/lib/front_end/core/sdk/AutofillModel.ts +0 -184
  84. package/lib/front_end/core/sdk/CPUProfilerModel.ts +0 -148
  85. package/lib/front_end/core/sdk/CPUThrottlingManager.ts +0 -282
  86. package/lib/front_end/core/sdk/CSSContainerQuery.ts +0 -139
  87. package/lib/front_end/core/sdk/CSSFontFace.ts +0 -40
  88. package/lib/front_end/core/sdk/CSSLayer.ts +0 -30
  89. package/lib/front_end/core/sdk/CSSMatchedStyles.ts +0 -1646
  90. package/lib/front_end/core/sdk/CSSMedia.ts +0 -121
  91. package/lib/front_end/core/sdk/CSSMetadata.ts +0 -1647
  92. package/lib/front_end/core/sdk/CSSModel.ts +0 -1128
  93. package/lib/front_end/core/sdk/CSSProperty.ts +0 -384
  94. package/lib/front_end/core/sdk/CSSPropertyParser.ts +0 -681
  95. package/lib/front_end/core/sdk/CSSPropertyParserMatchers.ts +0 -1395
  96. package/lib/front_end/core/sdk/CSSQuery.ts +0 -72
  97. package/lib/front_end/core/sdk/CSSRule.ts +0 -465
  98. package/lib/front_end/core/sdk/CSSScope.ts +0 -30
  99. package/lib/front_end/core/sdk/CSSStartingStyle.ts +0 -29
  100. package/lib/front_end/core/sdk/CSSStyleDeclaration.ts +0 -313
  101. package/lib/front_end/core/sdk/CSSStyleSheetHeader.ts +0 -196
  102. package/lib/front_end/core/sdk/CSSSupports.ts +0 -33
  103. package/lib/front_end/core/sdk/CategorizedBreakpoint.ts +0 -64
  104. package/lib/front_end/core/sdk/ChildTargetManager.ts +0 -314
  105. package/lib/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +0 -62
  106. package/lib/front_end/core/sdk/Connections.ts +0 -293
  107. package/lib/front_end/core/sdk/ConsoleModel.ts +0 -808
  108. package/lib/front_end/core/sdk/ConsoleModelTypes.ts +0 -15
  109. package/lib/front_end/core/sdk/Cookie.ts +0 -319
  110. package/lib/front_end/core/sdk/CookieModel.ts +0 -239
  111. package/lib/front_end/core/sdk/CookieParser.ts +0 -185
  112. package/lib/front_end/core/sdk/DOMDebuggerModel.ts +0 -787
  113. package/lib/front_end/core/sdk/DOMModel.ts +0 -1961
  114. package/lib/front_end/core/sdk/DebuggerModel.ts +0 -1605
  115. package/lib/front_end/core/sdk/EmulationModel.ts +0 -648
  116. package/lib/front_end/core/sdk/EnhancedTracesParser.ts +0 -515
  117. package/lib/front_end/core/sdk/EventBreakpointsModel.ts +0 -183
  118. package/lib/front_end/core/sdk/FrameAssociated.ts +0 -11
  119. package/lib/front_end/core/sdk/FrameManager.ts +0 -259
  120. package/lib/front_end/core/sdk/HeapProfilerModel.ts +0 -225
  121. package/lib/front_end/core/sdk/HttpReasonPhraseStrings.ts +0 -77
  122. package/lib/front_end/core/sdk/IOModel.ts +0 -91
  123. package/lib/front_end/core/sdk/IsolateManager.ts +0 -257
  124. package/lib/front_end/core/sdk/IssuesModel.ts +0 -70
  125. package/lib/front_end/core/sdk/LayerTreeBase.ts +0 -169
  126. package/lib/front_end/core/sdk/LogModel.ts +0 -56
  127. package/lib/front_end/core/sdk/NetworkManager.ts +0 -2823
  128. package/lib/front_end/core/sdk/NetworkRequest.ts +0 -2253
  129. package/lib/front_end/core/sdk/OverlayColorGenerator.ts +0 -52
  130. package/lib/front_end/core/sdk/OverlayModel.ts +0 -1011
  131. package/lib/front_end/core/sdk/OverlayPersistentHighlighter.ts +0 -522
  132. package/lib/front_end/core/sdk/PageLoad.ts +0 -35
  133. package/lib/front_end/core/sdk/PageResourceLoader.ts +0 -435
  134. package/lib/front_end/core/sdk/PaintProfiler.ts +0 -110
  135. package/lib/front_end/core/sdk/PerformanceMetricsModel.ts +0 -84
  136. package/lib/front_end/core/sdk/PreloadingModel.ts +0 -863
  137. package/lib/front_end/core/sdk/RehydratingConnection.ts +0 -386
  138. package/lib/front_end/core/sdk/RehydratingObject.ts +0 -66
  139. package/lib/front_end/core/sdk/RemoteObject.ts +0 -1160
  140. package/lib/front_end/core/sdk/Resource.ts +0 -232
  141. package/lib/front_end/core/sdk/ResourceTreeModel.ts +0 -1160
  142. package/lib/front_end/core/sdk/RuntimeModel.ts +0 -732
  143. package/lib/front_end/core/sdk/SDKModel.ts +0 -65
  144. package/lib/front_end/core/sdk/ScopeTreeCache.ts +0 -45
  145. package/lib/front_end/core/sdk/ScreenCaptureModel.ts +0 -255
  146. package/lib/front_end/core/sdk/Script.ts +0 -534
  147. package/lib/front_end/core/sdk/SecurityOriginManager.ts +0 -76
  148. package/lib/front_end/core/sdk/ServerSentEvents.ts +0 -80
  149. package/lib/front_end/core/sdk/ServerSentEventsProtocol.ts +0 -122
  150. package/lib/front_end/core/sdk/ServerTiming.ts +0 -260
  151. package/lib/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -377
  152. package/lib/front_end/core/sdk/ServiceWorkerManager.ts +0 -605
  153. package/lib/front_end/core/sdk/SourceMap.ts +0 -867
  154. package/lib/front_end/core/sdk/SourceMapCache.ts +0 -54
  155. package/lib/front_end/core/sdk/SourceMapFunctionRanges.ts +0 -156
  156. package/lib/front_end/core/sdk/SourceMapManager.ts +0 -239
  157. package/lib/front_end/core/sdk/SourceMapScopeChainEntry.ts +0 -189
  158. package/lib/front_end/core/sdk/SourceMapScopesInfo.ts +0 -508
  159. package/lib/front_end/core/sdk/StorageBucketsModel.ts +0 -204
  160. package/lib/front_end/core/sdk/StorageKeyManager.ts +0 -98
  161. package/lib/front_end/core/sdk/Target.ts +0 -332
  162. package/lib/front_end/core/sdk/TargetManager.ts +0 -453
  163. package/lib/front_end/core/sdk/TraceObject.ts +0 -61
  164. package/lib/front_end/core/sdk/WebAuthnModel.ts +0 -104
  165. package/lib/front_end/core/sdk/sdk.ts +0 -174
  166. package/lib/front_end/entrypoints/formatter_worker/FormatterActions.ts +0 -59
  167. package/lib/front_end/generated/InspectorBackendCommands.js +0 -1617
  168. package/lib/front_end/generated/SupportedCSSProperties.js +0 -7512
  169. package/lib/front_end/generated/protocol-proxy-api.d.ts +0 -5022
  170. package/lib/front_end/generated/protocol.ts +0 -22014
  171. package/lib/front_end/models/bindings/CSSWorkspaceBinding.ts +0 -318
  172. package/lib/front_end/models/bindings/CompilerScriptMapping.ts +0 -536
  173. package/lib/front_end/models/bindings/ContentProviderBasedProject.ts +0 -187
  174. package/lib/front_end/models/bindings/DebuggerLanguagePlugins.ts +0 -1197
  175. package/lib/front_end/models/bindings/DebuggerWorkspaceBinding.ts +0 -733
  176. package/lib/front_end/models/bindings/DefaultScriptMapping.ts +0 -141
  177. package/lib/front_end/models/bindings/FileUtils.ts +0 -228
  178. package/lib/front_end/models/bindings/LiveLocation.ts +0 -81
  179. package/lib/front_end/models/bindings/NetworkProject.ts +0 -157
  180. package/lib/front_end/models/bindings/PresentationConsoleMessageHelper.ts +0 -312
  181. package/lib/front_end/models/bindings/ResourceMapping.ts +0 -539
  182. package/lib/front_end/models/bindings/ResourceScriptMapping.ts +0 -491
  183. package/lib/front_end/models/bindings/ResourceUtils.ts +0 -103
  184. package/lib/front_end/models/bindings/SASSSourceMapping.ts +0 -222
  185. package/lib/front_end/models/bindings/StylesSourceMapping.ts +0 -316
  186. package/lib/front_end/models/bindings/TempFile.ts +0 -67
  187. package/lib/front_end/models/bindings/bindings.ts +0 -39
  188. package/lib/front_end/models/cpu_profile/CPUProfileDataModel.ts +0 -571
  189. package/lib/front_end/models/cpu_profile/ProfileTreeModel.ts +0 -103
  190. package/lib/front_end/models/cpu_profile/cpu_profile.ts +0 -11
  191. package/lib/front_end/models/formatter/FormatterWorkerPool.ts +0 -219
  192. package/lib/front_end/models/formatter/ScriptFormatter.ts +0 -112
  193. package/lib/front_end/models/formatter/formatter.ts +0 -8
  194. package/lib/front_end/models/source_map_scopes/NamesResolver.ts +0 -765
  195. package/lib/front_end/models/source_map_scopes/ScopeChainModel.ts +0 -84
  196. package/lib/front_end/models/source_map_scopes/source_map_scopes.ts +0 -11
  197. package/lib/front_end/models/stack_trace/StackTrace.ts +0 -53
  198. package/lib/front_end/models/stack_trace/StackTraceImpl.ts +0 -85
  199. package/lib/front_end/models/stack_trace/StackTraceModel.ts +0 -128
  200. package/lib/front_end/models/stack_trace/Trie.ts +0 -163
  201. package/lib/front_end/models/stack_trace/stack_trace.ts +0 -9
  202. package/lib/front_end/models/stack_trace/stack_trace_impl.ts +0 -13
  203. package/lib/front_end/models/text_utils/CodeMirrorUtils.ts +0 -37
  204. package/lib/front_end/models/text_utils/ContentData.ts +0 -199
  205. package/lib/front_end/models/text_utils/ContentProvider.ts +0 -68
  206. package/lib/front_end/models/text_utils/StaticContentProvider.ts +0 -49
  207. package/lib/front_end/models/text_utils/StreamingContentData.ts +0 -108
  208. package/lib/front_end/models/text_utils/Text.ts +0 -90
  209. package/lib/front_end/models/text_utils/TextCursor.ts +0 -44
  210. package/lib/front_end/models/text_utils/TextRange.ts +0 -266
  211. package/lib/front_end/models/text_utils/TextUtils.ts +0 -401
  212. package/lib/front_end/models/text_utils/WasmDisassembly.ts +0 -87
  213. package/lib/front_end/models/text_utils/text_utils.ts +0 -27
  214. package/lib/front_end/models/trace/EntityMapper.ts +0 -141
  215. package/lib/front_end/models/trace/EventsSerializer.ts +0 -101
  216. package/lib/front_end/models/trace/LanternComputationData.ts +0 -438
  217. package/lib/front_end/models/trace/ModelImpl.ts +0 -236
  218. package/lib/front_end/models/trace/Name.ts +0 -136
  219. package/lib/front_end/models/trace/Processor.ts +0 -652
  220. package/lib/front_end/models/trace/Styles.ts +0 -1138
  221. package/lib/front_end/models/trace/extras/FilmStrip.ts +0 -78
  222. package/lib/front_end/models/trace/extras/MainThreadActivity.ts +0 -86
  223. package/lib/front_end/models/trace/extras/ScriptDuplication.ts +0 -236
  224. package/lib/front_end/models/trace/extras/StackTraceForEvent.ts +0 -203
  225. package/lib/front_end/models/trace/extras/ThirdParties.ts +0 -164
  226. package/lib/front_end/models/trace/extras/TraceFilter.ts +0 -62
  227. package/lib/front_end/models/trace/extras/TraceTree.ts +0 -701
  228. package/lib/front_end/models/trace/extras/extras.ts +0 -11
  229. package/lib/front_end/models/trace/handlers/AnimationFramesHandler.ts +0 -128
  230. package/lib/front_end/models/trace/handlers/AnimationHandler.ts +0 -36
  231. package/lib/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +0 -239
  232. package/lib/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +0 -183
  233. package/lib/front_end/models/trace/handlers/DOMStatsHandler.ts +0 -31
  234. package/lib/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +0 -306
  235. package/lib/front_end/models/trace/handlers/FlowsHandler.ts +0 -175
  236. package/lib/front_end/models/trace/handlers/FramesHandler.ts +0 -571
  237. package/lib/front_end/models/trace/handlers/GPUHandler.ts +0 -50
  238. package/lib/front_end/models/trace/handlers/ImagePaintingHandler.ts +0 -183
  239. package/lib/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -193
  240. package/lib/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -168
  241. package/lib/front_end/models/trace/handlers/LargestImagePaintHandler.ts +0 -109
  242. package/lib/front_end/models/trace/handlers/LargestTextPaintHandler.ts +0 -35
  243. package/lib/front_end/models/trace/handlers/LayerTreeHandler.ts +0 -123
  244. package/lib/front_end/models/trace/handlers/LayoutShiftsHandler.ts +0 -573
  245. package/lib/front_end/models/trace/handlers/MemoryHandler.ts +0 -31
  246. package/lib/front_end/models/trace/handlers/MetaHandler.ts +0 -525
  247. package/lib/front_end/models/trace/handlers/ModelHandlers.ts +0 -34
  248. package/lib/front_end/models/trace/handlers/NetworkRequestsHandler.ts +0 -672
  249. package/lib/front_end/models/trace/handlers/PageFramesHandler.ts +0 -52
  250. package/lib/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +0 -460
  251. package/lib/front_end/models/trace/handlers/RendererHandler.ts +0 -428
  252. package/lib/front_end/models/trace/handlers/SamplesHandler.ts +0 -271
  253. package/lib/front_end/models/trace/handlers/ScreenshotsHandler.ts +0 -122
  254. package/lib/front_end/models/trace/handlers/ScriptsHandler.ts +0 -336
  255. package/lib/front_end/models/trace/handlers/SelectorStatsHandler.ts +0 -110
  256. package/lib/front_end/models/trace/handlers/Threads.ts +0 -139
  257. package/lib/front_end/models/trace/handlers/UserInteractionsHandler.ts +0 -400
  258. package/lib/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -233
  259. package/lib/front_end/models/trace/handlers/WarningsHandler.ts +0 -162
  260. package/lib/front_end/models/trace/handlers/WorkersHandler.ts +0 -45
  261. package/lib/front_end/models/trace/handlers/handlers.ts +0 -8
  262. package/lib/front_end/models/trace/handlers/helpers.ts +0 -196
  263. package/lib/front_end/models/trace/handlers/types.ts +0 -75
  264. package/lib/front_end/models/trace/helpers/Extensions.ts +0 -54
  265. package/lib/front_end/models/trace/helpers/Network.ts +0 -129
  266. package/lib/front_end/models/trace/helpers/SamplesIntegrator.ts +0 -544
  267. package/lib/front_end/models/trace/helpers/SyntheticEvents.ts +0 -87
  268. package/lib/front_end/models/trace/helpers/Timing.ts +0 -248
  269. package/lib/front_end/models/trace/helpers/Trace.ts +0 -928
  270. package/lib/front_end/models/trace/helpers/TreeHelpers.ts +0 -320
  271. package/lib/front_end/models/trace/helpers/helpers.ts +0 -11
  272. package/lib/front_end/models/trace/insights/CLSCulprits.ts +0 -668
  273. package/lib/front_end/models/trace/insights/Cache.ts +0 -269
  274. package/lib/front_end/models/trace/insights/Common.ts +0 -453
  275. package/lib/front_end/models/trace/insights/DOMSize.ts +0 -223
  276. package/lib/front_end/models/trace/insights/DocumentLatency.ts +0 -319
  277. package/lib/front_end/models/trace/insights/DuplicatedJavaScript.ts +0 -126
  278. package/lib/front_end/models/trace/insights/FontDisplay.ts +0 -119
  279. package/lib/front_end/models/trace/insights/ForcedReflow.ts +0 -220
  280. package/lib/front_end/models/trace/insights/INPBreakdown.ts +0 -171
  281. package/lib/front_end/models/trace/insights/ImageDelivery.ts +0 -348
  282. package/lib/front_end/models/trace/insights/LCPBreakdown.ts +0 -268
  283. package/lib/front_end/models/trace/insights/LCPDiscovery.ts +0 -237
  284. package/lib/front_end/models/trace/insights/LegacyJavaScript.ts +0 -138
  285. package/lib/front_end/models/trace/insights/Models.ts +0 -22
  286. package/lib/front_end/models/trace/insights/ModernHTTP.ts +0 -257
  287. package/lib/front_end/models/trace/insights/NetworkDependencyTree.ts +0 -726
  288. package/lib/front_end/models/trace/insights/RenderBlocking.ts +0 -257
  289. package/lib/front_end/models/trace/insights/SlowCSSSelector.ts +0 -175
  290. package/lib/front_end/models/trace/insights/Statistics.ts +0 -101
  291. package/lib/front_end/models/trace/insights/ThirdParties.ts +0 -130
  292. package/lib/front_end/models/trace/insights/Viewport.ts +0 -138
  293. package/lib/front_end/models/trace/insights/insights.ts +0 -10
  294. package/lib/front_end/models/trace/insights/types.ts +0 -157
  295. package/lib/front_end/models/trace/lantern/core/LanternError.ts +0 -7
  296. package/lib/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +0 -619
  297. package/lib/front_end/models/trace/lantern/core/core.ts +0 -6
  298. package/lib/front_end/models/trace/lantern/graph/BaseNode.ts +0 -345
  299. package/lib/front_end/models/trace/lantern/graph/CPUNode.ts +0 -80
  300. package/lib/front_end/models/trace/lantern/graph/NetworkNode.ts +0 -101
  301. package/lib/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +0 -636
  302. package/lib/front_end/models/trace/lantern/graph/graph.ts +0 -8
  303. package/lib/front_end/models/trace/lantern/lantern.ts +0 -17
  304. package/lib/front_end/models/trace/lantern/metrics/FirstContentfulPaint.ts +0 -187
  305. package/lib/front_end/models/trace/lantern/metrics/Interactive.ts +0 -88
  306. package/lib/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +0 -92
  307. package/lib/front_end/models/trace/lantern/metrics/MaxPotentialFID.ts +0 -72
  308. package/lib/front_end/models/trace/lantern/metrics/Metric.ts +0 -126
  309. package/lib/front_end/models/trace/lantern/metrics/SpeedIndex.ts +0 -126
  310. package/lib/front_end/models/trace/lantern/metrics/TBTUtils.ts +0 -82
  311. package/lib/front_end/models/trace/lantern/metrics/TotalBlockingTime.ts +0 -112
  312. package/lib/front_end/models/trace/lantern/metrics/metrics.ts +0 -12
  313. package/lib/front_end/models/trace/lantern/simulation/ConnectionPool.ts +0 -150
  314. package/lib/front_end/models/trace/lantern/simulation/Constants.ts +0 -46
  315. package/lib/front_end/models/trace/lantern/simulation/DNSCache.ts +0 -61
  316. package/lib/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +0 -196
  317. package/lib/front_end/models/trace/lantern/simulation/Simulator.ts +0 -556
  318. package/lib/front_end/models/trace/lantern/simulation/TCPConnection.ts +0 -192
  319. package/lib/front_end/models/trace/lantern/simulation/simulation.ts +0 -10
  320. package/lib/front_end/models/trace/lantern/types/Lantern.ts +0 -220
  321. package/lib/front_end/models/trace/lantern/types/types.ts +0 -5
  322. package/lib/front_end/models/trace/trace.ts +0 -33
  323. package/lib/front_end/models/trace/types/Configuration.ts +0 -110
  324. package/lib/front_end/models/trace/types/Extensions.ts +0 -136
  325. package/lib/front_end/models/trace/types/File.ts +0 -281
  326. package/lib/front_end/models/trace/types/Overlays.ts +0 -138
  327. package/lib/front_end/models/trace/types/Timing.ts +0 -30
  328. package/lib/front_end/models/trace/types/TraceEvents.ts +0 -3277
  329. package/lib/front_end/models/trace/types/types.ts +0 -10
  330. package/lib/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +0 -240
  331. package/lib/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.ts +0 -5
  332. package/lib/front_end/models/workspace/FileManager.ts +0 -97
  333. package/lib/front_end/models/workspace/IgnoreListManager.ts +0 -628
  334. package/lib/front_end/models/workspace/SearchConfig.ts +0 -149
  335. package/lib/front_end/models/workspace/UISourceCode.ts +0 -698
  336. package/lib/front_end/models/workspace/WorkspaceImpl.ts +0 -339
  337. package/lib/front_end/models/workspace/workspace.ts +0 -17
  338. package/lib/front_end/panels/timeline/TimelineUIUtils.ts +0 -1029
  339. package/lib/front_end/panels/timeline/extensions/ExtensionUI.ts +0 -49
  340. package/lib/front_end/panels/timeline/extensions/extensions.ts +0 -9
  341. package/lib/front_end/third_party/codemirror.next/LICENSE +0 -21
  342. package/lib/front_end/third_party/codemirror.next/README.chromium +0 -30
  343. package/lib/front_end/third_party/codemirror.next/bundle-tsconfig.json +0 -24
  344. package/lib/front_end/third_party/codemirror.next/bundle.ts +0 -135
  345. package/lib/front_end/third_party/codemirror.next/chunk/angular.js +0 -2
  346. package/lib/front_end/third_party/codemirror.next/chunk/angular.js.map +0 -1
  347. package/lib/front_end/third_party/codemirror.next/chunk/codemirror.js +0 -2
  348. package/lib/front_end/third_party/codemirror.next/chunk/codemirror.js.map +0 -1
  349. package/lib/front_end/third_party/codemirror.next/chunk/cpp.js +0 -2
  350. package/lib/front_end/third_party/codemirror.next/chunk/cpp.js.map +0 -1
  351. package/lib/front_end/third_party/codemirror.next/chunk/css.js +0 -2
  352. package/lib/front_end/third_party/codemirror.next/chunk/html.js +0 -4
  353. package/lib/front_end/third_party/codemirror.next/chunk/java.js +0 -2
  354. package/lib/front_end/third_party/codemirror.next/chunk/java.js.map +0 -1
  355. package/lib/front_end/third_party/codemirror.next/chunk/javascript.js +0 -2
  356. package/lib/front_end/third_party/codemirror.next/chunk/legacy.js +0 -2
  357. package/lib/front_end/third_party/codemirror.next/chunk/legacy.js.map +0 -1
  358. package/lib/front_end/third_party/codemirror.next/chunk/less.js +0 -2
  359. package/lib/front_end/third_party/codemirror.next/chunk/less.js.map +0 -1
  360. package/lib/front_end/third_party/codemirror.next/chunk/markdown.js +0 -2
  361. package/lib/front_end/third_party/codemirror.next/chunk/markdown.js.map +0 -1
  362. package/lib/front_end/third_party/codemirror.next/chunk/php.js +0 -2
  363. package/lib/front_end/third_party/codemirror.next/chunk/php.js.map +0 -1
  364. package/lib/front_end/third_party/codemirror.next/chunk/python.js +0 -2
  365. package/lib/front_end/third_party/codemirror.next/chunk/python.js.map +0 -1
  366. package/lib/front_end/third_party/codemirror.next/chunk/sass.js +0 -2
  367. package/lib/front_end/third_party/codemirror.next/chunk/sass.js.map +0 -1
  368. package/lib/front_end/third_party/codemirror.next/chunk/svelte.js +0 -2
  369. package/lib/front_end/third_party/codemirror.next/chunk/svelte.js.map +0 -1
  370. package/lib/front_end/third_party/codemirror.next/chunk/vue.js +0 -2
  371. package/lib/front_end/third_party/codemirror.next/chunk/vue.js.map +0 -1
  372. package/lib/front_end/third_party/codemirror.next/chunk/wast.js +0 -2
  373. package/lib/front_end/third_party/codemirror.next/chunk/wast.js.map +0 -1
  374. package/lib/front_end/third_party/codemirror.next/chunk/xml.js +0 -2
  375. package/lib/front_end/third_party/codemirror.next/chunk/xml.js.map +0 -1
  376. package/lib/front_end/third_party/codemirror.next/codemirror.next.d.ts +0 -8057
  377. package/lib/front_end/third_party/codemirror.next/codemirror.next.js +0 -2
  378. package/lib/front_end/third_party/codemirror.next/codemirror.next.js.map +0 -1
  379. package/lib/front_end/third_party/codemirror.next/package.json +0 -43
  380. package/lib/front_end/third_party/codemirror.next/rebuild.sh +0 -6
  381. package/lib/front_end/third_party/codemirror.next/rollup.config.mjs +0 -49
  382. package/lib/front_end/third_party/i18n/LICENSE +0 -202
  383. package/lib/front_end/third_party/i18n/README.chromium +0 -15
  384. package/lib/front_end/third_party/i18n/i18n-impl.ts +0 -61
  385. package/lib/front_end/third_party/i18n/i18n.ts +0 -11
  386. package/lib/front_end/third_party/i18n/localized-string-set.ts +0 -129
  387. package/lib/front_end/third_party/intl-messageformat/LICENSE +0 -33
  388. package/lib/front_end/third_party/intl-messageformat/README.chromium +0 -24
  389. package/lib/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +0 -16
  390. package/lib/front_end/third_party/intl-messageformat/intl-messageformat.ts +0 -6
  391. package/lib/front_end/third_party/intl-messageformat/package/LICENSE.md +0 -33
  392. package/lib/front_end/third_party/intl-messageformat/package/README.md +0 -3
  393. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts +0 -6
  394. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts.map +0 -1
  395. package/lib/front_end/third_party/intl-messageformat/package/index.js +0 -13
  396. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.d.ts +0 -5
  397. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +0 -1710
  398. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +0 -1815
  399. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts +0 -6
  400. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts.map +0 -1
  401. package/lib/front_end/third_party/intl-messageformat/package/lib/index.js +0 -10
  402. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts +0 -34
  403. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts.map +0 -1
  404. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.js +0 -229
  405. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts +0 -28
  406. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts.map +0 -1
  407. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.js +0 -48
  408. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts +0 -34
  409. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts.map +0 -1
  410. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +0 -179
  411. package/lib/front_end/third_party/intl-messageformat/package/package.json +0 -42
  412. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts +0 -34
  413. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts.map +0 -1
  414. package/lib/front_end/third_party/intl-messageformat/package/src/core.js +0 -230
  415. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts +0 -28
  416. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts.map +0 -1
  417. package/lib/front_end/third_party/intl-messageformat/package/src/error.js +0 -51
  418. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts +0 -34
  419. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts.map +0 -1
  420. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.js +0 -182
  421. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/error.d.ts +0 -79
  422. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/index.d.ts +0 -15
  423. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/parser.d.ts +0 -153
  424. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/types.d.ts +0 -139
  425. package/lib/front_end/third_party/legacy-javascript/LICENSE +0 -202
  426. package/lib/front_end/third_party/legacy-javascript/README.chromium +0 -13
  427. package/lib/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +0 -8
  428. package/lib/front_end/third_party/legacy-javascript/legacy-javascript.ts +0 -3
  429. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.d.ts +0 -18
  430. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +0 -943
  431. package/lib/front_end/third_party/legacy-javascript/package.json +0 -8
  432. package/lib/front_end/third_party/legacy-javascript/rebuild.sh +0 -9
  433. package/lib/front_end/third_party/source-map-scopes-codec/LICENSE +0 -26
  434. package/lib/front_end/third_party/source-map-scopes-codec/README.chromium +0 -31
  435. package/lib/front_end/third_party/source-map-scopes-codec/package/CONTRIBUTING.md +0 -33
  436. package/lib/front_end/third_party/source-map-scopes-codec/package/LICENSE +0 -26
  437. package/lib/front_end/third_party/source-map-scopes-codec/package/README.md +0 -64
  438. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts +0 -62
  439. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts.map +0 -1
  440. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts +0 -37
  441. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts.map +0 -1
  442. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts +0 -29
  443. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts.map +0 -1
  444. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts +0 -8
  445. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts.map +0 -1
  446. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts +0 -6
  447. package/lib/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts.map +0 -1
  448. package/lib/front_end/third_party/source-map-scopes-codec/package/deno.json +0 -21
  449. package/lib/front_end/third_party/source-map-scopes-codec/package/package.json +0 -14
  450. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +0 -196
  451. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js.map +0 -1
  452. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.ts +0 -262
  453. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +0 -235
  454. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js.map +0 -1
  455. package/lib/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.ts +0 -359
  456. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -39
  457. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.js.map +0 -1
  458. package/lib/front_end/third_party/source-map-scopes-codec/package/src/codec.ts +0 -53
  459. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +0 -438
  460. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js.map +0 -1
  461. package/lib/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.ts +0 -539
  462. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +0 -23
  463. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js.map +0 -1
  464. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.ts +0 -35
  465. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +0 -257
  466. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js.map +0 -1
  467. package/lib/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.ts +0 -348
  468. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.js +0 -8
  469. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.js.map +0 -1
  470. package/lib/front_end/third_party/source-map-scopes-codec/package/src/mod.ts +0 -20
  471. package/lib/front_end/third_party/source-map-scopes-codec/package/src/scopes-tsconfig.json +0 -8
  472. package/lib/front_end/third_party/source-map-scopes-codec/package/src/scopes.d.ts +0 -184
  473. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.js +0 -9
  474. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.js.map +0 -1
  475. package/lib/front_end/third_party/source-map-scopes-codec/package/src/util.ts +0 -12
  476. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +0 -82
  477. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.js.map +0 -1
  478. package/lib/front_end/third_party/source-map-scopes-codec/package/src/vlq.ts +0 -99
  479. package/lib/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.ts +0 -5
  480. package/lib/front_end/third_party/third-party-web/LICENSE +0 -20
  481. package/lib/front_end/third_party/third-party-web/README.chromium +0 -13
  482. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.d.ts +0 -2
  483. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.js +0 -149
  484. package/lib/front_end/third_party/third-party-web/package/LICENSE +0 -20
  485. package/lib/front_end/third_party/third-party-web/package/README.md +0 -929
  486. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +0 -1
  487. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +0 -1
  488. package/lib/front_end/third_party/third-party-web/package/dist/entities-nostats.json +0 -1
  489. package/lib/front_end/third_party/third-party-web/package/dist/entities.json +0 -1
  490. package/lib/front_end/third_party/third-party-web/package/facades.md +0 -46
  491. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.d.ts +0 -1
  492. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +0 -1
  493. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.d.ts +0 -1
  494. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.js +0 -1
  495. package/lib/front_end/third_party/third-party-web/package/lib/__snapshots__/index.test.js.snap +0 -1006
  496. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +0 -139
  497. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +0 -44
  498. package/lib/front_end/third_party/third-party-web/package/lib/entities.test.js +0 -27
  499. package/lib/front_end/third_party/third-party-web/package/lib/index.d.ts +0 -34
  500. package/lib/front_end/third_party/third-party-web/package/lib/index.js +0 -3
  501. package/lib/front_end/third_party/third-party-web/package/lib/index.test.js +0 -246
  502. package/lib/front_end/third_party/third-party-web/package/lib/markdown/faqs.partial.md +0 -36
  503. package/lib/front_end/third_party/third-party-web/package/lib/markdown/goals.partial.md +0 -9
  504. package/lib/front_end/third_party/third-party-web/package/lib/markdown/methodology.partial.md +0 -5
  505. package/lib/front_end/third_party/third-party-web/package/lib/markdown/template.md +0 -151
  506. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-02-01.md +0 -1
  507. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-03-01.md +0 -1
  508. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-06.md +0 -1
  509. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-13.md +0 -14
  510. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2021-01-01.md +0 -1
  511. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2024-07-01.md +0 -3
  512. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.d.ts +0 -1
  513. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +0 -3
  514. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.d.ts +0 -1
  515. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +0 -3
  516. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.d.ts +0 -1
  517. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +0 -3
  518. package/lib/front_end/third_party/third-party-web/package/nostats-subset.d.ts +0 -1
  519. package/lib/front_end/third_party/third-party-web/package/nostats-subset.js +0 -1
  520. package/lib/front_end/third_party/third-party-web/package/package.json +0 -46
  521. package/lib/front_end/third_party/third-party-web/package.json +0 -8
  522. package/lib/front_end/third_party/third-party-web/rebuild.sh +0 -13
  523. package/lib/front_end/third_party/third-party-web/third-party-web-tsconfig.json +0 -8
  524. package/lib/front_end/third_party/third-party-web/third-party-web.ts +0 -3
  525. package/lib/front_end/ui/legacy/theme_support/ThemeSupport.ts +0 -222
  526. package/lib/front_end/ui/legacy/theme_support/theme_support.ts +0 -5
  527. package/patches/chrome-devtools-frontend+1.0.1533544.patch +0 -1716
@@ -1,453 +0,0 @@
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
-
5
- import * as Protocol from '../../../generated/protocol.js';
6
- import type * as CrUXManager from '../../crux-manager/crux-manager.js';
7
- import type * as Handlers from '../handlers/handlers.js';
8
- import * as Helpers from '../helpers/helpers.js';
9
- import type * as Lantern from '../lantern/lantern.js';
10
- import * as Types from '../types/types.js';
11
-
12
- import {getLogNormalScore} from './Statistics.js';
13
- import {
14
- InsightKeys,
15
- type InsightModel,
16
- type InsightModels,
17
- type InsightSet,
18
- type InsightSetContext,
19
- type MetricSavings,
20
- } from './types.js';
21
-
22
- const GRAPH_SAVINGS_PRECISION = 50;
23
-
24
- export function getInsight<InsightName extends keyof InsightModels>(
25
- insightName: InsightName, insightSet: InsightSet): InsightModels[InsightName]|null {
26
- const insight = insightSet.model[insightName];
27
- if (insight instanceof Error) {
28
- return null;
29
- }
30
-
31
- // For some reason typescript won't narrow the type by removing Error, so do it manually.
32
- return insight;
33
- }
34
-
35
- export function getLCP(insightSet: InsightSet):
36
- {value: Types.Timing.Micro, event: Types.Events.LargestContentfulPaintCandidate}|null {
37
- const insight = getInsight(InsightKeys.LCP_BREAKDOWN, insightSet);
38
- if (!insight || !insight.lcpMs || !insight.lcpEvent) {
39
- return null;
40
- }
41
-
42
- const value = Helpers.Timing.milliToMicro(insight.lcpMs);
43
- return {value, event: insight.lcpEvent};
44
- }
45
-
46
- export function getINP(insightSet: InsightSet):
47
- {value: Types.Timing.Micro, event: Types.Events.SyntheticInteractionPair}|null {
48
- const insight = getInsight(InsightKeys.INP_BREAKDOWN, insightSet);
49
- if (!insight?.longestInteractionEvent?.dur) {
50
- return null;
51
- }
52
-
53
- const value = insight.longestInteractionEvent.dur;
54
- return {value, event: insight.longestInteractionEvent};
55
- }
56
-
57
- export function getCLS(insightSet: InsightSet): {value: number, worstClusterEvent: Types.Events.Event|null} {
58
- const insight = getInsight(InsightKeys.CLS_CULPRITS, insightSet);
59
- if (!insight) {
60
- // Unlike the other metrics, there is always a value for CLS even with no data.
61
- return {value: 0, worstClusterEvent: null};
62
- }
63
-
64
- // TODO(cjamcl): the CLS insight should be doing this for us.
65
- let maxScore = 0;
66
- let worstCluster;
67
- for (const cluster of insight.clusters) {
68
- if (cluster.clusterCumulativeScore > maxScore) {
69
- maxScore = cluster.clusterCumulativeScore;
70
- worstCluster = cluster;
71
- }
72
- }
73
-
74
- return {value: maxScore, worstClusterEvent: worstCluster ?? null};
75
- }
76
-
77
- export function evaluateLCPMetricScore(value: Types.Timing.Milli): number {
78
- return getLogNormalScore({p10: 2500, median: 4000}, value);
79
- }
80
-
81
- export function evaluateINPMetricScore(value: Types.Timing.Milli): number {
82
- return getLogNormalScore({p10: 200, median: 500}, value);
83
- }
84
-
85
- export function evaluateCLSMetricScore(value: number): number {
86
- return getLogNormalScore({p10: 0.1, median: 0.25}, value);
87
- }
88
-
89
- export interface CrUXFieldMetricTimingResult {
90
- value: Types.Timing.Micro;
91
- pageScope: CrUXManager.PageScope;
92
- }
93
- export interface CrUXFieldMetricNumberResult {
94
- value: number;
95
- pageScope: CrUXManager.PageScope;
96
- }
97
- export interface CrUXFieldMetricResults {
98
- fcp: CrUXFieldMetricTimingResult|null;
99
- lcp: CrUXFieldMetricTimingResult|null;
100
- inp: CrUXFieldMetricTimingResult|null;
101
- cls: CrUXFieldMetricNumberResult|null;
102
- lcpBreakdown: {
103
- ttfb: CrUXFieldMetricTimingResult|null,
104
- loadDelay: CrUXFieldMetricTimingResult|null,
105
- loadDuration: CrUXFieldMetricTimingResult|null,
106
- renderDelay: CrUXFieldMetricTimingResult|null,
107
- };
108
- }
109
-
110
- function getPageResult(
111
- cruxFieldData: CrUXManager.PageResult[], url: string, origin: string,
112
- scope: CrUXManager.Scope|null = null): CrUXManager.PageResult|undefined {
113
- return cruxFieldData.find(result => {
114
- const key = scope ? result[`${scope.pageScope}-${scope.deviceScope}`]?.record.key :
115
- (result['url-ALL'] || result['origin-ALL'])?.record.key;
116
- return (key?.url && key.url === url) || (key?.origin && key.origin === origin);
117
- });
118
- }
119
-
120
- function getMetricResult(
121
- pageResult: CrUXManager.PageResult, name: CrUXManager.StandardMetricNames,
122
- scope: CrUXManager.Scope|null = null): CrUXFieldMetricNumberResult|null {
123
- const scopes: Array<{pageScope: CrUXManager.PageScope, deviceScope: CrUXManager.DeviceScope}> = [];
124
- if (scope) {
125
- scopes.push(scope);
126
- } else {
127
- scopes.push({pageScope: 'url', deviceScope: 'ALL'});
128
- scopes.push({pageScope: 'origin', deviceScope: 'ALL'});
129
- }
130
-
131
- for (const scope of scopes) {
132
- const key = `${scope.pageScope}-${scope.deviceScope}` as const;
133
- let value = pageResult[key]?.record.metrics[name]?.percentiles?.p75;
134
- if (typeof value === 'string') {
135
- value = Number(value);
136
- }
137
- if (typeof value === 'number' && Number.isFinite(value)) {
138
- return {value, pageScope: scope.pageScope};
139
- }
140
- }
141
-
142
- return null;
143
- }
144
-
145
- function getMetricTimingResult(
146
- pageResult: CrUXManager.PageResult, name: CrUXManager.StandardMetricNames,
147
- scope: CrUXManager.Scope|null = null): CrUXFieldMetricTimingResult|null {
148
- const result = getMetricResult(pageResult, name, scope);
149
- if (result) {
150
- const valueMs = result.value as Types.Timing.Milli;
151
- return {value: Helpers.Timing.milliToMicro(valueMs), pageScope: result.pageScope};
152
- }
153
-
154
- return null;
155
- }
156
-
157
- export function getFieldMetricsForInsightSet(
158
- insightSet: InsightSet, metadata: Types.File.MetaData|null,
159
- scope: CrUXManager.Scope|null = null): CrUXFieldMetricResults|null {
160
- const cruxFieldData = metadata?.cruxFieldData;
161
- if (!cruxFieldData) {
162
- return null;
163
- }
164
-
165
- const pageResult = getPageResult(cruxFieldData, insightSet.url.href, insightSet.url.origin, scope);
166
- if (!pageResult) {
167
- return null;
168
- }
169
-
170
- return {
171
- fcp: getMetricTimingResult(pageResult, 'first_contentful_paint', scope),
172
- lcp: getMetricTimingResult(pageResult, 'largest_contentful_paint', scope),
173
- inp: getMetricTimingResult(pageResult, 'interaction_to_next_paint', scope),
174
- cls: getMetricResult(pageResult, 'cumulative_layout_shift', scope),
175
- lcpBreakdown: {
176
- ttfb: getMetricTimingResult(pageResult, 'largest_contentful_paint_image_time_to_first_byte', scope),
177
- loadDelay: getMetricTimingResult(pageResult, 'largest_contentful_paint_image_resource_load_delay', scope),
178
- loadDuration: getMetricTimingResult(pageResult, 'largest_contentful_paint_image_resource_load_duration', scope),
179
- renderDelay: getMetricTimingResult(pageResult, 'largest_contentful_paint_image_element_render_delay', scope),
180
- }
181
- };
182
- }
183
-
184
- export function calculateMetricWeightsForSorting(
185
- insightSet: InsightSet, metadata: Types.File.MetaData|null): {lcp: number, inp: number, cls: number} {
186
- const weights = {
187
- lcp: 1 / 3,
188
- inp: 1 / 3,
189
- cls: 1 / 3,
190
- };
191
-
192
- const cruxFieldData = metadata?.cruxFieldData;
193
- if (!cruxFieldData) {
194
- return weights;
195
- }
196
-
197
- const fieldMetrics = getFieldMetricsForInsightSet(insightSet, metadata);
198
- if (!fieldMetrics) {
199
- return weights;
200
- }
201
-
202
- const fieldLcp = fieldMetrics.lcp?.value ?? null;
203
- const fieldInp = fieldMetrics.inp?.value ?? null;
204
- const fieldCls = fieldMetrics.cls?.value ?? null;
205
- const fieldLcpScore = fieldLcp !== null ? evaluateLCPMetricScore(Helpers.Timing.microToMilli(fieldLcp)) : 0;
206
- const fieldInpScore = fieldInp !== null ? evaluateINPMetricScore(Helpers.Timing.microToMilli(fieldInp)) : 0;
207
- const fieldClsScore = fieldCls !== null ? evaluateCLSMetricScore(fieldCls) : 0;
208
- const fieldLcpScoreInverted = 1 - fieldLcpScore;
209
- const fieldInpScoreInverted = 1 - fieldInpScore;
210
- const fieldClsScoreInverted = 1 - fieldClsScore;
211
- const invertedSum = fieldLcpScoreInverted + fieldInpScoreInverted + fieldClsScoreInverted;
212
- if (!invertedSum) {
213
- return weights;
214
- }
215
-
216
- weights.lcp = fieldLcpScoreInverted / invertedSum;
217
- weights.inp = fieldInpScoreInverted / invertedSum;
218
- weights.cls = fieldClsScoreInverted / invertedSum;
219
-
220
- return weights;
221
- }
222
-
223
- /**
224
- * Simulates the provided graph before and after the byte savings from `wastedBytesByRequestId` are applied.
225
- */
226
- function estimateSavingsWithGraphs(
227
- wastedBytesByRequestId: Map<string, number>, simulator: Lantern.Simulation.Simulator,
228
- graph: Lantern.Graph.Node): Types.Timing.Milli {
229
- const simulationBeforeChanges = simulator.simulate(graph);
230
-
231
- const originalTransferSizes = new Map<string, number>();
232
- graph.traverse(node => {
233
- if (node.type !== 'network') {
234
- return;
235
- }
236
- const wastedBytes = wastedBytesByRequestId.get(node.request.requestId);
237
- if (!wastedBytes) {
238
- return;
239
- }
240
-
241
- const original = node.request.transferSize;
242
- originalTransferSizes.set(node.request.requestId, original);
243
-
244
- node.request.transferSize = Math.max(original - wastedBytes, 0);
245
- });
246
-
247
- const simulationAfterChanges = simulator.simulate(graph);
248
-
249
- // Restore the original transfer size after we've done our simulation
250
- graph.traverse(node => {
251
- if (node.type !== 'network') {
252
- return;
253
- }
254
- const originalTransferSize = originalTransferSizes.get(node.request.requestId);
255
- if (originalTransferSize === undefined) {
256
- return;
257
- }
258
- node.request.transferSize = originalTransferSize;
259
- });
260
-
261
- let savings = simulationBeforeChanges.timeInMs - simulationAfterChanges.timeInMs;
262
- savings = Math.round(savings / GRAPH_SAVINGS_PRECISION) * GRAPH_SAVINGS_PRECISION;
263
- return Types.Timing.Milli(savings);
264
- }
265
-
266
- /**
267
- * Estimates the FCP & LCP savings for wasted bytes in `wastedBytesByRequestId`.
268
- */
269
- export function metricSavingsForWastedBytes(
270
- wastedBytesByRequestId: Map<string, number>, context: InsightSetContext): MetricSavings|undefined {
271
- if (!context.navigation || !context.lantern) {
272
- return;
273
- }
274
-
275
- if (!wastedBytesByRequestId.size) {
276
- return {FCP: Types.Timing.Milli(0), LCP: Types.Timing.Milli(0)};
277
- }
278
-
279
- const simulator = context.lantern.simulator;
280
- const fcpGraph = context.lantern.metrics.firstContentfulPaint.optimisticGraph;
281
- const lcpGraph = context.lantern.metrics.largestContentfulPaint.optimisticGraph;
282
-
283
- return {
284
- FCP: estimateSavingsWithGraphs(wastedBytesByRequestId, simulator, fcpGraph),
285
- LCP: estimateSavingsWithGraphs(wastedBytesByRequestId, simulator, lcpGraph),
286
- };
287
- }
288
-
289
- /**
290
- * Returns whether the network request was sent encoded.
291
- */
292
- export function isRequestCompressed(request: Types.Events.SyntheticNetworkRequest): boolean {
293
- if (!request.args.data.responseHeaders) {
294
- return false;
295
- }
296
-
297
- // FYI: In Lighthouse, older devtools logs (like our test fixtures) seems to be
298
- // lower case, while modern logs are Cased-Like-This.
299
- const patterns = [
300
- /^content-encoding$/i, /^x-content-encoding-over-network$/i,
301
- /^x-original-content-encoding$/i, // Lightrider.
302
- ];
303
- const compressionTypes = ['gzip', 'br', 'deflate', 'zstd'];
304
- return request.args.data.responseHeaders.some(
305
- header => patterns.some(p => header.name.match(p)) && compressionTypes.includes(header.value));
306
- }
307
-
308
- export function isRequestServedFromBrowserCache(request: Types.Events.SyntheticNetworkRequest): boolean {
309
- if (!request.args.data.responseHeaders || request.args.data.failed) {
310
- return false;
311
- }
312
-
313
- // Not Modified?
314
- if (request.args.data.statusCode === 304) {
315
- return true;
316
- }
317
-
318
- // TODO: for some reason ResourceReceiveResponse events never show a 304 status
319
- // code, so the above is never gonna work. For now, fall back to a dirty check of
320
- // looking at the ratio of transfer size and resource size. If it's really small,
321
- // we certainly did not use the network to fetch it.
322
-
323
- const {transferSize, resourceSize} = getRequestSizes(request);
324
- const ratio = resourceSize ? transferSize / resourceSize : 0;
325
- if (ratio < 0.01) {
326
- return true;
327
- }
328
-
329
- return false;
330
- }
331
-
332
- function getRequestSizes(request: Types.Events.SyntheticNetworkRequest): {resourceSize: number, transferSize: number} {
333
- const resourceSize = request.args.data.decodedBodyLength;
334
- const transferSize = request.args.data.encodedDataLength;
335
- return {resourceSize, transferSize};
336
- }
337
-
338
- /**
339
- * Estimates the number of bytes the content of this network record would have consumed on the network based on the
340
- * uncompressed size (totalBytes). Uses the actual transfer size from the network record if applicable,
341
- * minus the size of the response headers.
342
- *
343
- * @param totalBytes Uncompressed size of the resource
344
- */
345
- export function estimateCompressedContentSize(
346
- request: Types.Events.SyntheticNetworkRequest|undefined, totalBytes: number,
347
- resourceType: Protocol.Network.ResourceType): number {
348
- if (!request || isRequestServedFromBrowserCache(request)) {
349
- // We don't know how many bytes this asset used on the network, but we can guess it was
350
- // roughly the size of the content gzipped.
351
- // See https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/optimize-encoding-and-transfer for specific CSS/Script examples
352
- // See https://discuss.httparchive.org/t/file-size-and-compression-savings/145 for fallback multipliers
353
- switch (resourceType) {
354
- case 'Stylesheet':
355
- // Stylesheets tend to compress extremely well.
356
- return Math.round(totalBytes * 0.2);
357
- case 'Script':
358
- case 'Document':
359
- // Scripts and HTML compress fairly well too.
360
- return Math.round(totalBytes * 0.33);
361
- default:
362
- // Otherwise we'll just fallback to the average savings in HTTPArchive
363
- return Math.round(totalBytes * 0.5);
364
- }
365
- }
366
-
367
- // Get the size of the response body on the network.
368
- const {transferSize, resourceSize} = getRequestSizes(request);
369
- let contentTransferSize = transferSize;
370
- if (!isRequestCompressed(request)) {
371
- // This is not compressed, so we can use resourceSize directly.
372
- // This would be equivalent to transfer size minus headers transfer size, but transfer size
373
- // may also include bytes for SSL connection etc.
374
- contentTransferSize = resourceSize;
375
- }
376
- // TODO(cjamcl): Get "responseHeadersTransferSize" in Network handler.
377
- // else if (request.responseHeadersTransferSize) {
378
- // // Subtract the size of the encoded headers.
379
- // contentTransferSize =
380
- // Math.max(0, contentTransferSize - request.responseHeadersTransferSize);
381
- // }
382
-
383
- if (request.args.data.resourceType === resourceType) {
384
- // This was a regular standalone asset, just use the transfer size.
385
- return contentTransferSize;
386
- }
387
-
388
- // This was an asset that was inlined in a different resource type (e.g. HTML document).
389
- // Use the compression ratio of the resource to estimate the total transferred bytes.
390
- // Get the compression ratio, if it's an invalid number, assume no compression.
391
- const compressionRatio = Number.isFinite(resourceSize) && resourceSize > 0 ? (contentTransferSize / resourceSize) : 1;
392
- return Math.round(totalBytes * compressionRatio);
393
- }
394
-
395
- /**
396
- * Utility function to estimate the ratio of the compression of a script.
397
- * This excludes the size of the response headers.
398
- */
399
- export function estimateCompressionRatioForScript(script: Handlers.ModelHandlers.Scripts.Script): number {
400
- if (!script.request) {
401
- // Can't find request, so just use 1.
402
- return 1;
403
- }
404
-
405
- const request = script.request;
406
- const contentLength = request.args.data.decodedBodyLength ?? script.content?.length ?? 0;
407
- const compressedSize = estimateCompressedContentSize(request, contentLength, Protocol.Network.ResourceType.Script);
408
- if (contentLength === 0 || compressedSize === 0) {
409
- return 1;
410
- }
411
-
412
- const compressionRatio = compressedSize / contentLength;
413
- return compressionRatio;
414
- }
415
-
416
- export function calculateDocFirstByteTs(docRequest: Types.Events.SyntheticNetworkRequest): Types.Timing.Micro|null {
417
- if (docRequest.args.data.protocol === 'file') {
418
- // file: requests do not have timings
419
- return docRequest.ts;
420
- }
421
-
422
- const timing = docRequest.args.data.timing;
423
- if (!timing) {
424
- // Older traces do not have timings.
425
- return null;
426
- }
427
-
428
- // Time that first byte (headers) are received.
429
- // For older traces, receiveHeadersStart can be missing (ex: web.dev.json.gz).
430
- // In that case use the headers end timing, which should be pretty close to when
431
- // the headers start.
432
- return Types.Timing.Micro(
433
- Helpers.Timing.secondsToMicro(timing.requestTime) +
434
- Helpers.Timing.milliToMicro(timing.receiveHeadersStart ?? timing.receiveHeadersEnd));
435
- }
436
-
437
- /**
438
- * Calculates the trace bounds for the given insight that are relevant.
439
- *
440
- * Uses the insight's overlays to determine the relevant trace bounds. If there are
441
- * no overlays, falls back to the insight set's navigation bounds.
442
- */
443
- export function insightBounds(
444
- insight: InsightModel, insightSetBounds: Types.Timing.TraceWindowMicro): Types.Timing.TraceWindowMicro {
445
- const overlays = insight.createOverlays?.() ?? [];
446
- const windows = overlays.map(Helpers.Timing.traceWindowFromOverlay).filter(bounds => !!bounds);
447
- const overlaysBounds = Helpers.Timing.combineTraceWindowsMicro(windows);
448
- if (overlaysBounds) {
449
- return overlaysBounds;
450
- }
451
-
452
- return insightSetBounds;
453
- }
@@ -1,223 +0,0 @@
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
-
5
- import type * as Common from '../../../core/common/common.js';
6
- import * as i18n from '../../../core/i18n/i18n.js';
7
- import * as Handlers from '../handlers/handlers.js';
8
- import * as Helpers from '../helpers/helpers.js';
9
- import * as Types from '../types/types.js';
10
-
11
- import {
12
- InsightCategory,
13
- InsightKeys,
14
- type InsightModel,
15
- type InsightSetContext,
16
- type PartialInsightModel,
17
- } from './types.js';
18
-
19
- export const UIStrings = {
20
- /**
21
- * @description Title of an insight that recommends reducing the size of the DOM tree as a means to improve page responsiveness. "DOM" is an acronym and should not be translated.
22
- */
23
- title: 'Optimize DOM size',
24
- /**
25
- * @description Description of an insight that recommends reducing the size of the DOM tree as a means to improve page responsiveness. "DOM" is an acronym and should not be translated. "layout reflows" are when the browser will recompute the layout of content on the page.
26
- */
27
- description:
28
- 'A large DOM can increase the duration of style calculations and layout reflows, impacting page responsiveness. A large DOM will also increase memory usage. [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/performance/insights/dom-size).',
29
- /**
30
- * @description Header for a column containing the names of statistics as opposed to the actual statistic values.
31
- */
32
- statistic: 'Statistic',
33
- /**
34
- * @description Header for a column containing the value of a statistic.
35
- */
36
- value: 'Value',
37
- /**
38
- * @description Header for a column containing the page element related to a statistic.
39
- */
40
- element: 'Element',
41
- /**
42
- * @description Label for a value representing the total number of elements on the page.
43
- */
44
- totalElements: 'Total elements',
45
- /**
46
- * @description Label for a value representing the maximum depth of the Document Object Model (DOM). "DOM" is a acronym and should not be translated.
47
- */
48
- maxDOMDepth: 'DOM depth',
49
- /**
50
- * @description Label for a value representing the maximum number of child elements of any parent element on the page.
51
- */
52
- maxChildren: 'Most children',
53
- /**
54
- * @description Text for a section.
55
- */
56
- topUpdatesDescription:
57
- 'These are the largest layout and style recalculation events. Their performance impact may be reduced by making the DOM simpler.',
58
- /**
59
- * @description Label used for a time duration.
60
- */
61
- duration: 'Duration',
62
- /**
63
- * @description Message displayed in a table detailing how big a layout (rendering) is.
64
- * @example {134} PH1
65
- */
66
- largeLayout: 'Layout ({PH1} objects)',
67
- /**
68
- * @description Message displayed in a table detailing how big a style recalculation (rendering) is.
69
- * @example {134} PH1
70
- */
71
- largeStyleRecalc: 'Style recalculation ({PH1} elements)',
72
- } as const;
73
-
74
- const str_ = i18n.i18n.registerUIStrings('models/trace/insights/DOMSize.ts', UIStrings);
75
- export const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
76
-
77
- const DOM_SIZE_DURATION_THRESHOLD = Helpers.Timing.milliToMicro(Types.Timing.Milli(40));
78
-
79
- // These thresholds were selected to maximize the number of long (>40ms) events above
80
- // the threshold while maximizing the number of short (<40ms) events below the threshold.
81
- // See go/rpp-dom-size-thresholds for the analysis that produced these thresholds.
82
- const LAYOUT_OBJECTS_THRESHOLD = 100;
83
- const STYLE_RECALC_ELEMENTS_THRESHOLD = 300;
84
-
85
- export type DOMSizeInsightModel = InsightModel<typeof UIStrings, {
86
- largeLayoutUpdates: Types.Events.Layout[],
87
- largeStyleRecalcs: Types.Events.RecalcStyle[],
88
- largeUpdates: Array<
89
- {label: Common.UIString.LocalizedString, duration: Types.Timing.Milli, size: number, event: Types.Events.Event}>,
90
- maxDOMStats?: Types.Events.DOMStats,
91
- }>;
92
-
93
- function finalize(partialModel: PartialInsightModel<DOMSizeInsightModel>): DOMSizeInsightModel {
94
- const relatedEvents = [...partialModel.largeLayoutUpdates, ...partialModel.largeStyleRecalcs];
95
- return {
96
- insightKey: InsightKeys.DOM_SIZE,
97
- strings: UIStrings,
98
- title: i18nString(UIStrings.title),
99
- description: i18nString(UIStrings.description),
100
- docs: 'https://developer.chrome.com/docs/performance/insights/dom-size',
101
- category: InsightCategory.INP,
102
- state: relatedEvents.length > 0 ? 'informative' : 'pass',
103
- ...partialModel,
104
- relatedEvents,
105
- };
106
- }
107
-
108
- export function isDomSizeInsight(model: InsightModel): model is DOMSizeInsightModel {
109
- return model.insightKey === InsightKeys.DOM_SIZE;
110
- }
111
-
112
- export function generateInsight(data: Handlers.Types.HandlerData, context: InsightSetContext): DOMSizeInsightModel {
113
- const isWithinContext = (event: Types.Events.Event): boolean => Helpers.Timing.eventIsInBounds(event, context.bounds);
114
-
115
- const mainTid = context.navigation?.tid;
116
-
117
- const largeLayoutUpdates: Types.Events.Layout[] = [];
118
- const largeStyleRecalcs: Types.Events.RecalcStyle[] = [];
119
-
120
- const threads = Handlers.Threads.threadsInRenderer(data.Renderer, data.AuctionWorklets);
121
- for (const thread of threads) {
122
- if (thread.type !== Handlers.Threads.ThreadType.MAIN_THREAD) {
123
- continue;
124
- }
125
-
126
- if (mainTid === undefined) {
127
- // We won't have a specific thread ID to reference if the context does not have a navigation.
128
- // In this case, we'll just filter out any OOPIFs threads.
129
- if (!thread.processIsOnMainFrame) {
130
- continue;
131
- }
132
- } else if (thread.tid !== mainTid) {
133
- continue;
134
- }
135
-
136
- const rendererThread = data.Renderer.processes.get(thread.pid)?.threads.get(thread.tid);
137
- if (!rendererThread) {
138
- continue;
139
- }
140
-
141
- const {entries, layoutEvents, recalcStyleEvents} = rendererThread;
142
- if (!entries.length) {
143
- continue;
144
- }
145
-
146
- const first = entries[0];
147
- const last = entries[entries.length - 1];
148
- const timeRange =
149
- Helpers.Timing.traceWindowFromMicroSeconds(first.ts, Types.Timing.Micro(last.ts + (last.dur ?? 0)));
150
- if (!Helpers.Timing.boundsIncludeTimeRange({timeRange, bounds: context.bounds})) {
151
- continue;
152
- }
153
-
154
- for (const event of layoutEvents) {
155
- if (event.dur < DOM_SIZE_DURATION_THRESHOLD || !isWithinContext(event)) {
156
- continue;
157
- }
158
-
159
- const {dirtyObjects} = event.args.beginData;
160
- if (dirtyObjects > LAYOUT_OBJECTS_THRESHOLD) {
161
- largeLayoutUpdates.push(event);
162
- }
163
- }
164
-
165
- for (const event of recalcStyleEvents) {
166
- if (event.dur < DOM_SIZE_DURATION_THRESHOLD || !isWithinContext(event)) {
167
- continue;
168
- }
169
-
170
- const {elementCount} = event.args;
171
- if (elementCount > STYLE_RECALC_ELEMENTS_THRESHOLD) {
172
- largeStyleRecalcs.push(event);
173
- }
174
- }
175
- }
176
-
177
- const largeUpdates: DOMSizeInsightModel['largeUpdates'] = [
178
- ...largeLayoutUpdates.map(event => {
179
- const duration = (event.dur / 1000) as Types.Timing.Milli;
180
- const size = event.args.beginData.dirtyObjects;
181
- const label = i18nString(UIStrings.largeLayout, {PH1: size});
182
- return {label, duration, size, event};
183
- }),
184
- ...largeStyleRecalcs.map(event => {
185
- const duration = (event.dur / 1000) as Types.Timing.Milli;
186
- const size = event.args.elementCount;
187
- const label = i18nString(UIStrings.largeStyleRecalc, {PH1: size});
188
- return {label, duration, size, event};
189
- }),
190
- ].sort((a, b) => b.duration - a.duration).slice(0, 5);
191
-
192
- const domStatsEvents = data.DOMStats.domStatsByFrameId.get(context.frameId)?.filter(isWithinContext) ?? [];
193
- let maxDOMStats: Types.Events.DOMStats|undefined;
194
- for (const domStats of domStatsEvents) {
195
- // While recording a cross-origin navigation, there can be overlapping dom stats from before & after
196
- // the navigation which share a frameId. In this case we should also ensure the pid matches up with
197
- // the navigation we care about (i.e. from after the navigation event).
198
- const navigationPid = context.navigation?.pid;
199
- if (navigationPid && domStats.pid !== navigationPid) {
200
- continue;
201
- }
202
-
203
- if (!maxDOMStats || domStats.args.data.totalElements > maxDOMStats.args.data.totalElements) {
204
- maxDOMStats = domStats;
205
- }
206
- }
207
-
208
- return finalize({
209
- largeLayoutUpdates,
210
- largeStyleRecalcs,
211
- largeUpdates,
212
- maxDOMStats,
213
- });
214
- }
215
-
216
- export function createOverlays(model: DOMSizeInsightModel): Types.Overlays.Overlay[] {
217
- const entries = [...model.largeStyleRecalcs, ...model.largeLayoutUpdates];
218
- return entries.map(entry => ({
219
- type: 'ENTRY_OUTLINE',
220
- entry,
221
- outlineReason: 'ERROR',
222
- }));
223
- }