@mcp-b/chrome-devtools-mcp 2.0.13 → 2.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 (759) hide show
  1. package/README.md +178 -436
  2. package/build/src/DevtoolsUtils.js +185 -97
  3. package/build/src/McpContext.js +392 -834
  4. package/build/src/McpPage.js +95 -0
  5. package/build/src/McpResponse.js +399 -197
  6. package/build/src/PageCollector.js +28 -12
  7. package/build/src/SlimMcpResponse.js +18 -0
  8. package/build/src/WaitForHelper.js +2 -2
  9. package/build/src/bin/chrome-devtools-cli-options.js +700 -0
  10. package/build/src/{cli.js → bin/chrome-devtools-mcp-cli-options.js} +94 -15
  11. package/build/src/bin/chrome-devtools-mcp-main.js +35 -0
  12. package/build/src/bin/chrome-devtools-mcp.js +21 -0
  13. package/build/src/bin/chrome-devtools.js +207 -0
  14. package/build/src/browser.js +63 -218
  15. package/build/src/daemon/client.js +176 -0
  16. package/build/src/daemon/daemon.js +206 -0
  17. package/build/src/daemon/types.js +6 -0
  18. package/build/src/daemon/utils.js +108 -0
  19. package/build/src/formatters/IssueFormatter.js +50 -48
  20. package/build/src/formatters/consoleFormatter.js +217 -97
  21. package/build/src/formatters/networkFormatter.js +195 -54
  22. package/build/src/formatters/snapshotFormatter.js +113 -52
  23. package/build/src/index.js +207 -16
  24. package/build/src/issue-descriptions.js +1 -1
  25. package/build/src/logger.js +9 -0
  26. package/build/src/telemetry/{clearcut-logger.js → ClearcutLogger.js} +1 -1
  27. package/build/src/telemetry/watchdog/{clearcut-sender.js → ClearcutSender.js} +2 -0
  28. package/build/src/telemetry/watchdog/main.js +1 -1
  29. package/build/src/third_party/devtools-formatter-worker.js +1 -1
  30. package/build/src/third_party/index.js +12 -2
  31. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidAllowlistItemType.md +12 -0
  32. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidHeader.md +12 -0
  33. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidUrlPattern.md +8 -0
  34. package/build/src/third_party/issue-descriptions/connectionAllowlistItemNotInnerList.md +12 -0
  35. package/build/src/third_party/issue-descriptions/connectionAllowlistMoreThanOneList.md +7 -0
  36. package/build/src/third_party/issue-descriptions/connectionAllowlistReportingEndpointNotToken.md +10 -0
  37. package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsLocalNetworkAccessPermissionDenied.md +2 -2
  38. package/build/src/third_party/issue-descriptions/selectivePermissionsIntervention.md +7 -0
  39. package/build/src/third_party/lighthouse-devtools-mcp-bundle.js +54183 -0
  40. package/build/src/tools/ToolDefinition.js +52 -0
  41. package/build/src/tools/categories.js +2 -2
  42. package/build/src/tools/console.js +3 -3
  43. package/build/src/tools/emulation.js +23 -55
  44. package/build/src/tools/extensions.js +17 -0
  45. package/build/src/tools/input.js +138 -37
  46. package/build/src/tools/lighthouse.js +123 -0
  47. package/build/src/tools/memory.js +28 -0
  48. package/build/src/tools/network.js +24 -10
  49. package/build/src/tools/pages.js +169 -88
  50. package/build/src/tools/performance.js +81 -38
  51. package/build/src/tools/screencast.js +79 -0
  52. package/build/src/tools/screenshot.js +6 -6
  53. package/build/src/tools/script.js +100 -77
  54. package/build/src/tools/slim/tools.js +81 -0
  55. package/build/src/tools/snapshot.js +12 -9
  56. package/build/src/tools/tools.js +38 -20
  57. package/build/src/tools/webmcp.js +365 -804
  58. package/build/src/trace-processing/parse.js +7 -7
  59. package/build/src/types.js +6 -0
  60. package/build/src/utils/files.js +19 -0
  61. package/build/src/version.js +9 -0
  62. package/package.json +37 -68
  63. package/build/src/main.js +0 -372
  64. package/build/src/polyfillLoader.js +0 -44
  65. package/build/src/prompts/index.js +0 -156
  66. package/build/src/tools/WebMCPToolHub.js +0 -329
  67. package/build/src/tools/browser.js +0 -92
  68. package/build/src/tools/extension.js +0 -31
  69. package/build/src/transports/CDPClientTransport.js +0 -184
  70. package/build/src/transports/WebMCPBridgeScript.js +0 -229
  71. package/build/src/transports/WebMCPClientTransport.js +0 -449
  72. package/build/src/transports/bridgeConstants.js +0 -22
  73. package/build/src/transports/index.js +0 -7
  74. package/build/vendor/chrome-devtools-frontend/LICENSE +0 -27
  75. package/build/vendor/chrome-devtools-frontend/front_end/core/common/App.js +0 -4
  76. package/build/vendor/chrome-devtools-frontend/front_end/core/common/AppProvider.js +0 -17
  77. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Base64.js +0 -61
  78. package/build/vendor/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +0 -27
  79. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Color.js +0 -2033
  80. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +0 -332
  81. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +0 -221
  82. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Console.js +0 -79
  83. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Debouncer.js +0 -21
  84. package/build/vendor/chrome-devtools-frontend/front_end/core/common/EventTarget.js +0 -14
  85. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Gzip.js +0 -77
  86. package/build/vendor/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +0 -4
  87. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Lazy.js +0 -29
  88. package/build/vendor/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +0 -22
  89. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Mutex.js +0 -49
  90. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Object.js +0 -91
  91. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +0 -452
  92. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Progress.js +0 -144
  93. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +0 -69
  94. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ResourceType.js +0 -501
  95. package/build/vendor/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +0 -15
  96. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Revealer.js +0 -159
  97. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Runnable.js +0 -24
  98. package/build/vendor/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +0 -78
  99. package/build/vendor/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +0 -164
  100. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Settings.js +0 -1273
  101. package/build/vendor/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +0 -97
  102. package/build/vendor/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +0 -14
  103. package/build/vendor/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +0 -40
  104. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Throttler.js +0 -71
  105. package/build/vendor/chrome-devtools-frontend/front_end/core/common/Trie.js +0 -127
  106. package/build/vendor/chrome-devtools-frontend/front_end/core/common/common.js +0 -41
  107. package/build/vendor/chrome-devtools-frontend/front_end/core/host/AidaClient.js +0 -458
  108. package/build/vendor/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +0 -66
  109. package/build/vendor/chrome-devtools-frontend/front_end/core/host/GdpClient.js +0 -202
  110. package/build/vendor/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +0 -92
  111. package/build/vendor/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +0 -69
  112. package/build/vendor/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +0 -438
  113. package/build/vendor/chrome-devtools-frontend/front_end/core/host/Platform.js +0 -61
  114. package/build/vendor/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +0 -220
  115. package/build/vendor/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +0 -975
  116. package/build/vendor/chrome-devtools-frontend/front_end/core/host/host.js +0 -13
  117. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/ByteUtilities.js +0 -72
  118. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/DevToolsLocale.js +0 -64
  119. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/NumberFormatter.js +0 -67
  120. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/collect-ui-strings.js +0 -72
  121. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/generate-locales-js.js +0 -50
  122. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/i18n.js +0 -9
  123. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/i18nImpl.js +0 -135
  124. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/i18nTypes.js +0 -4
  125. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/locales.js +0 -14
  126. package/build/vendor/chrome-devtools-frontend/front_end/core/i18n/time-utilities.js +0 -148
  127. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +0 -209
  128. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/Brand.js +0 -4
  129. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/Constructor.js +0 -4
  130. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +0 -13
  131. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +0 -27
  132. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +0 -19
  133. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +0 -21
  134. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +0 -79
  135. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/MimeType.js +0 -143
  136. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +0 -72
  137. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +0 -589
  138. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/Timing.js +0 -9
  139. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +0 -157
  140. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +0 -24
  141. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/UIString.js +0 -4
  142. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +0 -22
  143. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +0 -4
  144. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/api/api.js +0 -5
  145. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +0 -63
  146. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +0 -5
  147. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +0 -72
  148. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/node/node.js +0 -5
  149. package/build/vendor/chrome-devtools-frontend/front_end/core/platform/platform.js +0 -26
  150. package/build/vendor/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +0 -18
  151. package/build/vendor/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +0 -12
  152. package/build/vendor/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +0 -138
  153. package/build/vendor/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +0 -542
  154. package/build/vendor/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +0 -8
  155. package/build/vendor/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +0 -54
  156. package/build/vendor/chrome-devtools-frontend/front_end/core/root/ExperimentNames.js +0 -30
  157. package/build/vendor/chrome-devtools-frontend/front_end/core/root/Runtime.js +0 -11
  158. package/build/vendor/chrome-devtools-frontend/front_end/core/root/root.js +0 -7
  159. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +0 -281
  160. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +0 -841
  161. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +0 -155
  162. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +0 -99
  163. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +0 -217
  164. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +0 -98
  165. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +0 -31
  166. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +0 -22
  167. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +0 -1378
  168. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +0 -100
  169. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +0 -1532
  170. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +0 -923
  171. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +0 -312
  172. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +0 -574
  173. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +0 -1352
  174. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +0 -53
  175. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +0 -403
  176. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +0 -22
  177. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +0 -21
  178. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +0 -275
  179. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +0 -166
  180. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +0 -24
  181. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +0 -29
  182. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +0 -236
  183. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +0 -47
  184. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/Connections.js +0 -205
  185. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +0 -627
  186. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +0 -14
  187. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +0 -241
  188. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +0 -198
  189. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +0 -163
  190. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +0 -597
  191. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +0 -1792
  192. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +0 -1182
  193. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +0 -527
  194. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +0 -364
  195. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +0 -127
  196. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +0 -4
  197. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +0 -199
  198. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +0 -137
  199. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +0 -75
  200. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +0 -80
  201. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +0 -208
  202. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +0 -41
  203. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +0 -95
  204. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +0 -34
  205. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +0 -2238
  206. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +0 -1645
  207. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +0 -48
  208. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +0 -778
  209. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +0 -384
  210. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +0 -25
  211. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +0 -310
  212. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +0 -67
  213. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +0 -62
  214. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +0 -608
  215. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +0 -417
  216. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +0 -4
  217. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +0 -908
  218. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/Resource.js +0 -163
  219. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +0 -926
  220. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +0 -535
  221. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +0 -45
  222. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +0 -36
  223. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +0 -176
  224. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/Script.js +0 -420
  225. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +0 -54
  226. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +0 -67
  227. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +0 -113
  228. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +0 -216
  229. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +0 -271
  230. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +0 -511
  231. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +0 -696
  232. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +0 -57
  233. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +0 -132
  234. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +0 -201
  235. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +0 -156
  236. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +0 -494
  237. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +0 -143
  238. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +0 -53
  239. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/Target.js +0 -259
  240. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +0 -395
  241. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +0 -55
  242. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +0 -66
  243. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +0 -1166
  244. package/build/vendor/chrome-devtools-frontend/front_end/core/sdk/sdk.js +0 -91
  245. package/build/vendor/chrome-devtools-frontend/front_end/foundation/Universe.js +0 -34
  246. package/build/vendor/chrome-devtools-frontend/front_end/foundation/foundation.js +0 -5
  247. package/build/vendor/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +0 -2634
  248. package/build/vendor/chrome-devtools-frontend/front_end/generated/Deprecation.js +0 -369
  249. package/build/vendor/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +0 -1592
  250. package/build/vendor/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +0 -7744
  251. package/build/vendor/chrome-devtools-frontend/front_end/generated/protocol.js +0 -4
  252. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +0 -290
  253. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +0 -989
  254. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +0 -735
  255. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +0 -139
  256. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +0 -412
  257. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +0 -131
  258. package/build/vendor/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +0 -149
  259. package/build/vendor/chrome-devtools-frontend/front_end/models/annotations/AnnotationRepository.js +0 -163
  260. package/build/vendor/chrome-devtools-frontend/front_end/models/annotations/AnnotationType.js +0 -10
  261. package/build/vendor/chrome-devtools-frontend/front_end/models/annotations/annotations.js +0 -5
  262. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +0 -245
  263. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +0 -488
  264. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +0 -130
  265. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +0 -963
  266. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +0 -554
  267. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +0 -112
  268. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +0 -186
  269. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +0 -60
  270. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +0 -107
  271. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +0 -244
  272. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +0 -564
  273. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +0 -437
  274. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +0 -87
  275. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +0 -182
  276. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +0 -268
  277. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +0 -55
  278. package/build/vendor/chrome-devtools-frontend/front_end/models/bindings/bindings.js +0 -20
  279. package/build/vendor/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +0 -516
  280. package/build/vendor/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +0 -89
  281. package/build/vendor/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +0 -6
  282. package/build/vendor/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +0 -285
  283. package/build/vendor/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +0 -4
  284. package/build/vendor/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +0 -775
  285. package/build/vendor/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +0 -1720
  286. package/build/vendor/chrome-devtools-frontend/front_end/models/emulation/emulation.js +0 -6
  287. package/build/vendor/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +0 -148
  288. package/build/vendor/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +0 -77
  289. package/build/vendor/chrome-devtools-frontend/front_end/models/formatter/formatter.js +0 -6
  290. package/build/vendor/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +0 -347
  291. package/build/vendor/chrome-devtools-frontend/front_end/models/geometry/geometry.js +0 -4
  292. package/build/vendor/chrome-devtools-frontend/front_end/models/greendev/Prototypes.js +0 -33
  293. package/build/vendor/chrome-devtools-frontend/front_end/models/greendev/greendev.js +0 -4
  294. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/AttributionReportingIssue.js +0 -201
  295. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/BounceTrackingIssue.js +0 -49
  296. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/CheckFormsIssuesTrigger.js +0 -31
  297. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/ClientHintIssue.js +0 -71
  298. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/ContentSecurityPolicyIssue.js +0 -135
  299. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/ContrastCheckTrigger.js +0 -59
  300. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/CookieDeprecationMetadataIssue.js +0 -58
  301. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/CookieIssue.js +0 -493
  302. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/CorsIssue.js +0 -207
  303. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.js +0 -110
  304. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/DeprecationIssue.js +0 -90
  305. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/ElementAccessibilityIssue.js +0 -95
  306. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthRequestIssue.js +0 -231
  307. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.js +0 -141
  308. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/GenericIssue.js +0 -212
  309. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/HeavyAdIssue.js +0 -52
  310. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/Issue.js +0 -152
  311. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/IssueAggregator.js +0 -322
  312. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/IssueResolver.js +0 -40
  313. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/IssuesManager.js +0 -410
  314. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/IssuesManagerEvents.js +0 -4
  315. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/LowTextContrastIssue.js +0 -48
  316. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/MarkdownIssueDescription.js +0 -104
  317. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/MixedContentIssue.js +0 -55
  318. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/PartitioningBlobURLIssue.js +0 -58
  319. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/PermissionElementIssue.js +0 -243
  320. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/PropertyRuleIssue.js +0 -58
  321. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/QuirksModeIssue.js +0 -48
  322. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/RelatedIssue.js +0 -70
  323. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/SRIMessageSignatureIssue.js +0 -87
  324. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/SharedArrayBufferIssue.js +0 -49
  325. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/SharedDictionaryIssue.js +0 -292
  326. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/SourceFrameIssuesManager.js +0 -81
  327. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/StylesheetLoadingIssue.js +0 -59
  328. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/UnencodedDigestIssue.js +0 -62
  329. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsInsecurePrivateNetwork.md +0 -10
  330. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsPreflightAllowPrivateNetworkError.md +0 -10
  331. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsPrivateNetworkPermissionDenied.md +0 -10
  332. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +0 -1
  333. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +0 -1
  334. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md +0 -1
  335. package/build/vendor/chrome-devtools-frontend/front_end/models/issues_manager/issues_manager.js +0 -36
  336. package/build/vendor/chrome-devtools-frontend/front_end/models/logs/LogManager.js +0 -67
  337. package/build/vendor/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +0 -486
  338. package/build/vendor/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +0 -49
  339. package/build/vendor/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +0 -73
  340. package/build/vendor/chrome-devtools-frontend/front_end/models/logs/logs.js +0 -7
  341. package/build/vendor/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +0 -4
  342. package/build/vendor/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +0 -256
  343. package/build/vendor/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +0 -122
  344. package/build/vendor/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +0 -6
  345. package/build/vendor/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +0 -192
  346. package/build/vendor/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +0 -618
  347. package/build/vendor/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +0 -59
  348. package/build/vendor/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +0 -7
  349. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +0 -33
  350. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +0 -136
  351. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +0 -149
  352. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +0 -121
  353. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +0 -5
  354. package/build/vendor/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +0 -7
  355. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +0 -32
  356. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +0 -173
  357. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +0 -30
  358. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +0 -32
  359. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +0 -79
  360. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/Text.js +0 -69
  361. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +0 -35
  362. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +0 -231
  363. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +0 -355
  364. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +0 -68
  365. package/build/vendor/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +0 -14
  366. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +0 -122
  367. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +0 -89
  368. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +0 -371
  369. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +0 -166
  370. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/Name.js +0 -114
  371. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/Processor.js +0 -554
  372. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/Styles.js +0 -823
  373. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +0 -44
  374. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/Initiators.js +0 -46
  375. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +0 -76
  376. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +0 -162
  377. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +0 -191
  378. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +0 -118
  379. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +0 -50
  380. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +0 -600
  381. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +0 -11
  382. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +0 -109
  383. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +0 -26
  384. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +0 -187
  385. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +0 -162
  386. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +0 -21
  387. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +0 -263
  388. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +0 -148
  389. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +0 -485
  390. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +0 -35
  391. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +0 -147
  392. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +0 -180
  393. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +0 -126
  394. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +0 -85
  395. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +0 -27
  396. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +0 -103
  397. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +0 -449
  398. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +0 -21
  399. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +0 -410
  400. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +0 -33
  401. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +0 -575
  402. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +0 -42
  403. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +0 -366
  404. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +0 -346
  405. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +0 -260
  406. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +0 -97
  407. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +0 -276
  408. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +0 -71
  409. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +0 -101
  410. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +0 -317
  411. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +0 -183
  412. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +0 -134
  413. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +0 -33
  414. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +0 -7
  415. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +0 -163
  416. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +0 -1
  417. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +0 -41
  418. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +0 -102
  419. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +0 -495
  420. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +0 -74
  421. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +0 -193
  422. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +0 -820
  423. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +0 -254
  424. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +0 -10
  425. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +0 -489
  426. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +0 -209
  427. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +0 -335
  428. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +0 -181
  429. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +0 -258
  430. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +0 -90
  431. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +0 -82
  432. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +0 -161
  433. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +0 -129
  434. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +0 -263
  435. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +0 -199
  436. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +0 -181
  437. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +0 -90
  438. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +0 -21
  439. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +0 -200
  440. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +0 -546
  441. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +0 -192
  442. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +0 -136
  443. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +0 -92
  444. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +0 -98
  445. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +0 -102
  446. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +0 -9
  447. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/insights/types.js +0 -18
  448. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +0 -6
  449. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +0 -488
  450. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +0 -5
  451. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +0 -276
  452. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +0 -63
  453. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +0 -82
  454. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +0 -551
  455. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +0 -7
  456. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +0 -9
  457. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +0 -136
  458. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +0 -67
  459. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +0 -68
  460. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +0 -48
  461. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +0 -68
  462. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +0 -101
  463. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +0 -64
  464. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +0 -78
  465. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +0 -11
  466. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +0 -115
  467. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +0 -42
  468. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +0 -47
  469. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +0 -134
  470. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +0 -450
  471. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +0 -154
  472. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +0 -9
  473. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +0 -24
  474. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +0 -4
  475. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/trace.js +0 -17
  476. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +0 -18
  477. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +0 -37
  478. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/File.js +0 -57
  479. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +0 -4
  480. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +0 -15
  481. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +0 -602
  482. package/build/vendor/chrome-devtools-frontend/front_end/models/trace/types/types.js +0 -9
  483. package/build/vendor/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +0 -224
  484. package/build/vendor/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +0 -4
  485. package/build/vendor/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +0 -64
  486. package/build/vendor/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +0 -504
  487. package/build/vendor/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +0 -113
  488. package/build/vendor/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +0 -601
  489. package/build/vendor/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +0 -201
  490. package/build/vendor/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +0 -34
  491. package/build/vendor/chrome-devtools-frontend/front_end/models/workspace/workspace.js +0 -9
  492. package/build/vendor/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +0 -1
  493. package/build/vendor/chrome-devtools-frontend/front_end/third_party/i18n/LICENSE +0 -202
  494. package/build/vendor/chrome-devtools-frontend/front_end/third_party/i18n/i18n-impl.js +0 -46
  495. package/build/vendor/chrome-devtools-frontend/front_end/third_party/i18n/i18n.js +0 -6
  496. package/build/vendor/chrome-devtools-frontend/front_end/third_party/i18n/localized-string-set.js +0 -122
  497. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/LICENSE +0 -33
  498. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/intl-messageformat.js +0 -5
  499. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/index.js +0 -13
  500. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +0 -1725
  501. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +0 -1840
  502. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/index.js +0 -10
  503. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/core.js +0 -233
  504. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/error.js +0 -48
  505. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +0 -177
  506. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/core.js +0 -236
  507. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/error.js +0 -51
  508. package/build/vendor/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/formatters.js +0 -182
  509. package/build/vendor/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +0 -202
  510. package/build/vendor/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +0 -2
  511. package/build/vendor/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +0 -940
  512. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/LICENSE +0 -39
  513. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/marked.js +0 -2
  514. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/bin/main.js +0 -255
  515. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/bin/marked.js +0 -11
  516. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.esm.js +0 -2695
  517. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.js +0 -2233
  518. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.umd.js +0 -2719
  519. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/Lexer.js +0 -453
  520. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/Parser.js +0 -233
  521. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/Renderer.js +0 -137
  522. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/Slugger.js +0 -46
  523. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/TextRenderer.js +0 -34
  524. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/Tokenizer.js +0 -683
  525. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/defaults.js +0 -27
  526. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/helpers.js +0 -240
  527. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/marked.js +0 -318
  528. package/build/vendor/chrome-devtools-frontend/front_end/third_party/marked/package/src/rules.js +0 -243
  529. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +0 -26
  530. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +0 -196
  531. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +0 -226
  532. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -4
  533. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +0 -427
  534. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +0 -24
  535. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +0 -283
  536. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +0 -7
  537. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/scopes.js +0 -4
  538. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +0 -9
  539. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +0 -84
  540. package/build/vendor/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +0 -4
  541. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +0 -20
  542. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +0 -146
  543. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +0 -2
  544. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +0 -2
  545. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +0 -118
  546. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +0 -40
  547. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +0 -26
  548. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +0 -4
  549. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +0 -215
  550. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +0 -4
  551. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +0 -4
  552. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +0 -4
  553. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +0 -2
  554. package/build/vendor/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +0 -2
  555. package/build/vendor/chrome-devtools-frontend/mcp/HostBindings.js +0 -226
  556. package/build/vendor/chrome-devtools-frontend/mcp/mcp.js +0 -39
  557. /package/build/src/telemetry/{watchdog-client.js → WatchdogClient.js} +0 -0
  558. /package/build/src/telemetry/{flag-utils.js → flagUtils.js} +0 -0
  559. /package/build/src/telemetry/{metric-utils.js → metricUtils.js} +0 -0
  560. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +0 -0
  561. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCorpNotSameOrigin.md +0 -0
  562. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +0 -0
  563. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCorpNotSameSite.md +0 -0
  564. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepFrameResourceNeedsCoepHeader.md +0 -0
  565. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CompatibilityModeQuirks.md +0 -0
  566. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CookieAttributeValueExceedsMaxSize.md +0 -0
  567. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/LowTextContrast.md +0 -0
  568. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteExcludeContextDowngradeRead.md +0 -0
  569. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteExcludeContextDowngradeSet.md +0 -0
  570. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteExcludeNavigationContextDowngrade.md +0 -0
  571. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureErrorRead.md +0 -0
  572. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureErrorSet.md +0 -0
  573. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureWarnRead.md +0 -0
  574. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureWarnSet.md +0 -0
  575. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteUnspecifiedLaxAllowUnsafeRead.md +0 -0
  576. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteUnspecifiedLaxAllowUnsafeSet.md +0 -0
  577. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteWarnCrossDowngradeRead.md +0 -0
  578. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteWarnCrossDowngradeSet.md +0 -0
  579. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteWarnStrictLaxDowngradeStrict.md +0 -0
  580. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInsecureContext.md +0 -0
  581. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidInfoHeader.md +0 -0
  582. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterOsSourceHeader.md +0 -0
  583. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterOsTriggerHeader.md +0 -0
  584. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterSourceHeader.md +0 -0
  585. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterTriggerHeader.md +0 -0
  586. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -0
  587. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNavigationRegistrationWithoutTransientUserActivation.md +0 -0
  588. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterOsSourceHeader.md +0 -0
  589. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterOsTriggerHeader.md +0 -0
  590. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterSourceHeader.md +0 -0
  591. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterTriggerHeader.md +0 -0
  592. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoWebOrOsSupport.md +0 -0
  593. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arOsSourceIgnored.md +0 -0
  594. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arOsTriggerIgnored.md +0 -0
  595. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arPermissionPolicyDisabled.md +0 -0
  596. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arSourceAndTriggerHeaders.md +0 -0
  597. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arSourceIgnored.md +0 -0
  598. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arTriggerIgnored.md +0 -0
  599. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arUntrustworthyReportingOrigin.md +0 -0
  600. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arWebAndOsHeaders.md +0 -0
  601. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/bounceTrackingMitigations.md +0 -0
  602. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/clientHintMetaTagAllowListInvalidOrigin.md +0 -0
  603. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/clientHintMetaTagModifiedHTML.md +0 -0
  604. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieCrossSiteRedirectDowngrade.md +0 -0
  605. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeBlockedWithinRelatedWebsiteSet.md +0 -0
  606. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeDomainNonAscii.md +0 -0
  607. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludePortMismatch.md +0 -0
  608. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeSchemeMismatch.md +0 -0
  609. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeThirdPartyPhaseoutRead.md +0 -0
  610. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeThirdPartyPhaseoutSet.md +0 -0
  611. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnDomainNonAscii.md +0 -0
  612. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnMetadataGrantRead.md +0 -0
  613. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnMetadataGrantSet.md +0 -0
  614. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnThirdPartyPhaseoutRead.md +0 -0
  615. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnThirdPartyPhaseoutSet.md +0 -0
  616. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsAllowCredentialsRequired.md +0 -0
  617. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsDisabledScheme.md +0 -0
  618. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsDisallowedByMode.md +0 -0
  619. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsHeaderDisallowedByPreflightResponse.md +0 -0
  620. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsInvalidHeaderValues.md +0 -0
  621. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsMethodDisallowedByPreflightResponse.md +0 -0
  622. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsNoCorsRedirectModeNotFollow.md +0 -0
  623. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsOriginMismatch.md +0 -0
  624. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsPreflightResponseInvalid.md +0 -0
  625. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsRedirectContainsCredentials.md +0 -0
  626. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsWildcardOriginNotAllowed.md +0 -0
  627. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspEvalViolation.md +0 -0
  628. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspInlineViolation.md +0 -0
  629. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspTrustedTypesPolicyViolation.md +0 -0
  630. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspTrustedTypesSinkViolation.md +0 -0
  631. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspURLViolation.md +0 -0
  632. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/deprecation.md +0 -0
  633. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestAccountsHttpNotFound.md +0 -0
  634. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestAccountsInvalidResponse.md +0 -0
  635. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestAccountsNoResponse.md +0 -0
  636. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestApprovalDeclined.md +0 -0
  637. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestCanceled.md +0 -0
  638. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestErrorFetchingSignin.md +0 -0
  639. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestErrorIdToken.md +0 -0
  640. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenHttpNotFound.md +0 -0
  641. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenInvalidRequest.md +0 -0
  642. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenInvalidResponse.md +0 -0
  643. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenNoResponse.md +0 -0
  644. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestInvalidSigninResponse.md +0 -0
  645. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestManifestHttpNotFound.md +0 -0
  646. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestManifestInvalidResponse.md +0 -0
  647. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestManifestNoResponse.md +0 -0
  648. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestTooManyRequests.md +0 -0
  649. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestInvalidAccountsResponse.md +0 -0
  650. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +0 -0
  651. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNoAccountSharingPermission.md +0 -0
  652. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNoApiPermission.md +0 -0
  653. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +0 -0
  654. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotIframe.md +0 -0
  655. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +0 -0
  656. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotSameOrigin.md +0 -0
  657. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotSignedInWithIdp.md +0 -0
  658. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/fetchingPartitionedBlobURL.md +0 -0
  659. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormAriaLabelledByToNonExistingIdError.md +0 -0
  660. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormAutocompleteAttributeEmptyError.md +0 -0
  661. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormDuplicateIdForInputError.md +0 -0
  662. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormEmptyIdAndNameAttributesForInputError.md +0 -0
  663. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +0 -0
  664. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +0 -0
  665. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormInputWithNoLabelError.md +0 -0
  666. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormLabelForMatchesNonExistingIdError.md +0 -0
  667. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormLabelForNameError.md +0 -0
  668. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormLabelHasNeitherForNorNestedInputError.md +0 -0
  669. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericNavigationEntryMarkedSkippable.md +0 -0
  670. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericResponseWasBlockedByORB.md +0 -0
  671. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/heavyAd.md +0 -0
  672. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/mixedContent.md +0 -0
  673. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/navigatingPartitionedBlobURL.md +0 -0
  674. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementActivationDisabled.md +0 -0
  675. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementActivationDisabledWithOccluder.md +0 -0
  676. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementActivationDisabledWithOccluderParent.md +0 -0
  677. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementCspFrameAncestorsMissing.md +0 -0
  678. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementFencedFrameDisallowed.md +0 -0
  679. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementFontSizeTooLarge.md +0 -0
  680. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementFontSizeTooSmall.md +0 -0
  681. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementGeolocationDeprecated.md +0 -0
  682. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementInsetBoxShadowUnsupported.md +0 -0
  683. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementInvalidDisplayStyle.md +0 -0
  684. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementInvalidSizeValue.md +0 -0
  685. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementInvalidType.md +0 -0
  686. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementInvalidTypeActivation.md +0 -0
  687. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementLowContrast.md +0 -0
  688. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementNonOpaqueColor.md +0 -0
  689. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementPaddingBottomUnsupported.md +0 -0
  690. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementPaddingRightUnsupported.md +0 -0
  691. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementPermissionsPolicyBlocked.md +0 -0
  692. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementRegistrationFailed.md +0 -0
  693. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementRequestInProgress.md +0 -0
  694. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementSecurityChecksFailed.md +0 -0
  695. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementTypeNotSupported.md +0 -0
  696. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/permissionElementUntrustedEvent.md +0 -0
  697. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/placeholderDescriptionForInvisibleIssues.md +0 -0
  698. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/propertyRuleInvalidNameIssue.md +0 -0
  699. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/propertyRuleIssue.md +0 -0
  700. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityDisallowedOptGroupChild.md +0 -0
  701. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityDisallowedSelectChild.md +0 -0
  702. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +0 -0
  703. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityInteractiveContentLegendChild.md +0 -0
  704. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityInteractiveContentOptionChild.md +0 -0
  705. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityNonPhrasingContentOptionChild.md +0 -0
  706. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedArrayBuffer.md +0 -0
  707. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +0 -0
  708. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorDictionaryLoadFailure.md +0 -0
  709. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +0 -0
  710. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +0 -0
  711. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +0 -0
  712. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorDisallowedBySettings.md +0 -0
  713. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorExpiredResponse.md +0 -0
  714. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorFeatureDisabled.md +0 -0
  715. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInsufficientResources.md +0 -0
  716. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInvalidMatchField.md +0 -0
  717. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInvalidStructuredHeader.md +0 -0
  718. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInvalidTTLField.md +0 -0
  719. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNavigationRequest.md +0 -0
  720. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNoMatchField.md +0 -0
  721. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonIntegerTTLField.md +0 -0
  722. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonListMatchDestField.md +0 -0
  723. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonSecureContext.md +0 -0
  724. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonStringIdField.md +0 -0
  725. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonStringInMatchDestList.md +0 -0
  726. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonStringMatchField.md +0 -0
  727. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonTokenTypeField.md +0 -0
  728. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorRequestAborted.md +0 -0
  729. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorShuttingDown.md +0 -0
  730. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorTooLongIdField.md +0 -0
  731. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorUnsupportedType.md +0 -0
  732. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriInvalidSignatureHeader.md +0 -0
  733. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriInvalidSignatureInputHeader.md +0 -0
  734. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriMissingSignatureHeader.md +0 -0
  735. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriMissingSignatureInputHeader.md +0 -0
  736. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureHeaderValueIsIncorrectLength.md +0 -0
  737. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureHeaderValueIsNotByteSequence.md +0 -0
  738. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureHeaderValueIsParameterized.md +0 -0
  739. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidComponentName.md +0 -0
  740. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidComponentType.md +0 -0
  741. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +0 -0
  742. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +0 -0
  743. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidParameter.md +0 -0
  744. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderKeyIdLength.md +0 -0
  745. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderMissingLabel.md +0 -0
  746. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderMissingRequiredParameters.md +0 -0
  747. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderValueMissingComponents.md +0 -0
  748. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderValueNotInnerList.md +0 -0
  749. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedIntegrityMismatch.md +0 -0
  750. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedInvalidLength.md +0 -0
  751. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedSignatureExpired.md +0 -0
  752. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedSignatureMismatch.md +0 -0
  753. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/stylesheetLateImport.md +0 -0
  754. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/stylesheetRequestFailed.md +0 -0
  755. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +0 -0
  756. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestIncorrectDigestLength.md +0 -0
  757. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestIncorrectDigestType.md +0 -0
  758. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestMalformedDictionary.md +0 -0
  759. /package/build/{vendor/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestUnknownAlgorithm.md +0 -0
@@ -1,2238 +0,0 @@
1
- // Copyright 2011 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
- var _a;
5
- import * as TextUtils from '../../models/text_utils/text_utils.js';
6
- import * as Common from '../common/common.js';
7
- import * as i18n from '../i18n/i18n.js';
8
- import * as Platform from '../platform/platform.js';
9
- import * as Root from '../root/root.js';
10
- import { Cookie } from './Cookie.js';
11
- import { DirectSocketChunkType, DirectSocketStatus, DirectSocketType, Events as NetworkRequestEvents, NetworkRequest, } from './NetworkRequest.js';
12
- import { SDKModel } from './SDKModel.js';
13
- import { TargetManager } from './TargetManager.js';
14
- const UIStrings = {
15
- /**
16
- * @description Explanation why no content is shown for WebSocket connection.
17
- */
18
- noContentForWebSocket: 'Content for WebSockets is currently not supported',
19
- /**
20
- * @description Explanation why no content is shown for redirect response.
21
- */
22
- noContentForRedirect: 'No content available because this request was redirected',
23
- /**
24
- * @description Explanation why no content is shown for preflight request.
25
- */
26
- noContentForPreflight: 'No content available for preflight request',
27
- /**
28
- * @description Text to indicate that network throttling is disabled
29
- */
30
- noThrottling: 'No throttling',
31
- /**
32
- * @description Text to indicate the network connectivity is offline
33
- */
34
- offline: 'Offline',
35
- /**
36
- * @description Text in Network Manager representing the "3G" throttling preset.
37
- */
38
- slowG: '3G', // Named `slowG` for legacy reasons and because this value
39
- // is serialized locally on the user's machine: if we
40
- // change it we break their stored throttling settings.
41
- // (See crrev.com/c/2947255)
42
- /**
43
- * @description Text in Network Manager representing the "Slow 4G" throttling preset
44
- */
45
- fastG: 'Slow 4G', // Named `fastG` for legacy reasons and because this value
46
- // is serialized locally on the user's machine: if we
47
- // change it we break their stored throttling settings.
48
- // (See crrev.com/c/2947255)
49
- /**
50
- * @description Text in Network Manager representing the "Fast 4G" throttling preset
51
- */
52
- fast4G: 'Fast 4G',
53
- /**
54
- * @description Text in Network Manager representing the "Blocking" throttling preset
55
- */
56
- block: 'Block',
57
- /**
58
- * @description Text in Network Manager
59
- * @example {https://example.com} PH1
60
- */
61
- requestWasBlockedByDevtoolsS: 'Request was blocked by DevTools: "{PH1}"',
62
- /**
63
- * @description Message in Network Manager
64
- * @example {XHR} PH1
65
- * @example {GET} PH2
66
- * @example {https://example.com} PH3
67
- */
68
- sFailedLoadingSS: '{PH1} failed loading: {PH2} "{PH3}".',
69
- /**
70
- * @description Message in Network Manager
71
- * @example {XHR} PH1
72
- * @example {GET} PH2
73
- * @example {https://example.com} PH3
74
- */
75
- sFinishedLoadingSS: '{PH1} finished loading: {PH2} "{PH3}".',
76
- /**
77
- * @description One of direct socket connection statuses
78
- */
79
- directSocketStatusOpening: 'Opening',
80
- /**
81
- * @description One of direct socket connection statuses
82
- */
83
- directSocketStatusOpen: 'Open',
84
- /**
85
- * @description One of direct socket connection statuses
86
- */
87
- directSocketStatusClosed: 'Closed',
88
- /**
89
- * @description One of direct socket connection statuses
90
- */
91
- directSocketStatusAborted: 'Aborted',
92
- };
93
- const str_ = i18n.i18n.registerUIStrings('core/sdk/NetworkManager.ts', UIStrings);
94
- const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
95
- const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
96
- const requestToManagerMap = new WeakMap();
97
- const CONNECTION_TYPES = new Map([
98
- ['2g', "cellular2g" /* Protocol.Network.ConnectionType.Cellular2g */],
99
- ['3g', "cellular3g" /* Protocol.Network.ConnectionType.Cellular3g */],
100
- ['4g', "cellular4g" /* Protocol.Network.ConnectionType.Cellular4g */],
101
- ['bluetooth', "bluetooth" /* Protocol.Network.ConnectionType.Bluetooth */],
102
- ['wifi', "wifi" /* Protocol.Network.ConnectionType.Wifi */],
103
- ['wimax', "wimax" /* Protocol.Network.ConnectionType.Wimax */],
104
- ]);
105
- /**
106
- * We store two settings to disk to persist network throttling.
107
- * 1. The custom conditions that the user has defined.
108
- * 2. The active `key` that applies the correct current preset.
109
- * The reason the setting creation functions are defined here is because they are referred
110
- * to in multiple places, and this ensures we don't have accidental typos which
111
- * mean extra settings get mistakenly created.
112
- */
113
- export function customUserNetworkConditionsSetting() {
114
- return Common.Settings.Settings.instance().moduleSetting('custom-network-conditions');
115
- }
116
- export function activeNetworkThrottlingKeySetting() {
117
- return Common.Settings.Settings.instance().createSetting('active-network-condition-key', "NO_THROTTLING" /* PredefinedThrottlingConditionKey.NO_THROTTLING */);
118
- }
119
- export class NetworkManager extends SDKModel {
120
- dispatcher;
121
- fetchDispatcher;
122
- #networkAgent;
123
- #bypassServiceWorkerSetting;
124
- activeNetworkThrottlingKey = activeNetworkThrottlingKeySetting();
125
- constructor(target) {
126
- super(target);
127
- this.dispatcher = new NetworkDispatcher(this);
128
- this.fetchDispatcher = new FetchDispatcher(target.fetchAgent(), this);
129
- this.#networkAgent = target.networkAgent();
130
- target.registerNetworkDispatcher(this.dispatcher);
131
- target.registerFetchDispatcher(this.fetchDispatcher);
132
- if (Common.Settings.Settings.instance().moduleSetting('cache-disabled').get()) {
133
- void this.#networkAgent.invoke_setCacheDisabled({ cacheDisabled: true });
134
- }
135
- if (Root.Runtime.hostConfig.devToolsPrivacyUI?.enabled &&
136
- Root.Runtime.hostConfig.thirdPartyCookieControls?.managedBlockThirdPartyCookies !== true &&
137
- (Common.Settings.Settings.instance().createSetting('cookie-control-override-enabled', undefined).get() ||
138
- Common.Settings.Settings.instance().createSetting('grace-period-mitigation-disabled', undefined).get() ||
139
- Common.Settings.Settings.instance().createSetting('heuristic-mitigation-disabled', undefined).get())) {
140
- this.cookieControlFlagsSettingChanged();
141
- }
142
- void this.#networkAgent.invoke_enable({
143
- maxPostDataSize: MAX_EAGER_POST_REQUEST_BODY_LENGTH,
144
- enableDurableMessages: Root.Runtime.hostConfig.devToolsEnableDurableMessages?.enabled,
145
- maxTotalBufferSize: MAX_RESPONSE_BODY_TOTAL_BUFFER_LENGTH,
146
- reportDirectSocketTraffic: true,
147
- });
148
- void this.#networkAgent.invoke_setAttachDebugStack({ enabled: true });
149
- this.#bypassServiceWorkerSetting =
150
- Common.Settings.Settings.instance().createSetting('bypass-service-worker', false);
151
- if (this.#bypassServiceWorkerSetting.get()) {
152
- this.bypassServiceWorkerChanged();
153
- }
154
- this.#bypassServiceWorkerSetting.addChangeListener(this.bypassServiceWorkerChanged, this);
155
- Common.Settings.Settings.instance()
156
- .moduleSetting('cache-disabled')
157
- .addChangeListener(this.cacheDisabledSettingChanged, this);
158
- Common.Settings.Settings.instance()
159
- .createSetting('cookie-control-override-enabled', undefined)
160
- .addChangeListener(this.cookieControlFlagsSettingChanged, this);
161
- Common.Settings.Settings.instance()
162
- .createSetting('grace-period-mitigation-disabled', undefined)
163
- .addChangeListener(this.cookieControlFlagsSettingChanged, this);
164
- Common.Settings.Settings.instance()
165
- .createSetting('heuristic-mitigation-disabled', undefined)
166
- .addChangeListener(this.cookieControlFlagsSettingChanged, this);
167
- }
168
- static forRequest(request) {
169
- return requestToManagerMap.get(request) || null;
170
- }
171
- static canReplayRequest(request) {
172
- return Boolean(requestToManagerMap.get(request)) && Boolean(request.backendRequestId()) && !request.isRedirect() &&
173
- request.resourceType() === Common.ResourceType.resourceTypes.XHR;
174
- }
175
- static replayRequest(request) {
176
- const manager = requestToManagerMap.get(request);
177
- const requestId = request.backendRequestId();
178
- if (!manager || !requestId || request.isRedirect()) {
179
- return;
180
- }
181
- void manager.#networkAgent.invoke_replayXHR({ requestId });
182
- }
183
- static async searchInRequest(request, query, caseSensitive, isRegex) {
184
- const manager = NetworkManager.forRequest(request);
185
- const requestId = request.backendRequestId();
186
- if (!manager || !requestId || request.isRedirect()) {
187
- return [];
188
- }
189
- const response = await manager.#networkAgent.invoke_searchInResponseBody({ requestId, query, caseSensitive, isRegex });
190
- return TextUtils.TextUtils.performSearchInSearchMatches(response.result || [], query, caseSensitive, isRegex);
191
- }
192
- static async requestContentData(request) {
193
- if (request.resourceType() === Common.ResourceType.resourceTypes.WebSocket) {
194
- return { error: i18nString(UIStrings.noContentForWebSocket) };
195
- }
196
- if (!request.finished) {
197
- await request.once(NetworkRequestEvents.FINISHED_LOADING);
198
- }
199
- if (request.isRedirect()) {
200
- return { error: i18nString(UIStrings.noContentForRedirect) };
201
- }
202
- if (request.isPreflightRequest()) {
203
- return { error: i18nString(UIStrings.noContentForPreflight) };
204
- }
205
- const manager = NetworkManager.forRequest(request);
206
- if (!manager) {
207
- return { error: 'No network manager for request' };
208
- }
209
- const requestId = request.backendRequestId();
210
- if (!requestId) {
211
- return { error: 'No backend request id for request' };
212
- }
213
- const response = await manager.#networkAgent.invoke_getResponseBody({ requestId });
214
- const error = response.getError();
215
- if (error) {
216
- return { error };
217
- }
218
- return new TextUtils.ContentData.ContentData(response.body, response.base64Encoded, request.mimeType, request.charset() ?? undefined);
219
- }
220
- /**
221
- * Returns the already received bytes for an in-flight request. After calling this method
222
- * "dataReceived" events will contain additional data.
223
- */
224
- static async streamResponseBody(request) {
225
- if (request.finished) {
226
- return { error: 'Streaming the response body is only available for in-flight requests.' };
227
- }
228
- const manager = NetworkManager.forRequest(request);
229
- if (!manager) {
230
- return { error: 'No network manager for request' };
231
- }
232
- const requestId = request.backendRequestId();
233
- if (!requestId) {
234
- return { error: 'No backend request id for request' };
235
- }
236
- const response = await manager.#networkAgent.invoke_streamResourceContent({ requestId });
237
- const error = response.getError();
238
- if (error) {
239
- return { error };
240
- }
241
- // Wait for at least the `responseReceived event so we have accurate mimetype and charset.
242
- await request.waitForResponseReceived();
243
- return new TextUtils.ContentData.ContentData(response.bufferedData, /* isBase64=*/ true, request.mimeType, request.charset() ?? undefined);
244
- }
245
- static async requestPostData(request) {
246
- const manager = NetworkManager.forRequest(request);
247
- if (!manager) {
248
- console.error('No network manager for request');
249
- return null;
250
- }
251
- const requestId = request.backendRequestId();
252
- if (!requestId) {
253
- console.error('No backend request id for request');
254
- return null;
255
- }
256
- try {
257
- const { postData } = await manager.#networkAgent.invoke_getRequestPostData({ requestId });
258
- return postData;
259
- }
260
- catch (e) {
261
- return e.message;
262
- }
263
- }
264
- static connectionType(conditions) {
265
- if (!conditions.download && !conditions.upload) {
266
- return "none" /* Protocol.Network.ConnectionType.None */;
267
- }
268
- try {
269
- const title = typeof conditions.title === 'function' ? conditions.title().toLowerCase() : conditions.title.toLowerCase();
270
- for (const [name, protocolType] of CONNECTION_TYPES) {
271
- if (title.includes(name)) {
272
- return protocolType;
273
- }
274
- }
275
- }
276
- catch {
277
- // If the i18nKey for this condition has changed, calling conditions.title() will break, so in that case we reset to NONE
278
- return "none" /* Protocol.Network.ConnectionType.None */;
279
- }
280
- return "other" /* Protocol.Network.ConnectionType.Other */;
281
- }
282
- static lowercaseHeaders(headers) {
283
- const newHeaders = {};
284
- for (const headerName in headers) {
285
- newHeaders[headerName.toLowerCase()] = headers[headerName];
286
- }
287
- return newHeaders;
288
- }
289
- requestForURL(url) {
290
- return this.dispatcher.requestForURL(url);
291
- }
292
- requestForId(id) {
293
- return this.dispatcher.requestForId(id);
294
- }
295
- requestForLoaderId(loaderId) {
296
- return this.dispatcher.requestForLoaderId(loaderId);
297
- }
298
- cacheDisabledSettingChanged({ data: enabled }) {
299
- void this.#networkAgent.invoke_setCacheDisabled({ cacheDisabled: enabled });
300
- }
301
- cookieControlFlagsSettingChanged() {
302
- const overridesEnabled = Boolean(Common.Settings.Settings.instance().createSetting('cookie-control-override-enabled', undefined).get());
303
- const gracePeriodEnabled = overridesEnabled ?
304
- Boolean(Common.Settings.Settings.instance().createSetting('grace-period-mitigation-disabled', undefined).get()) :
305
- false;
306
- const heuristicEnabled = overridesEnabled ?
307
- Boolean(Common.Settings.Settings.instance().createSetting('heuristic-mitigation-disabled', undefined).get()) :
308
- false;
309
- void this.#networkAgent.invoke_setCookieControls({
310
- enableThirdPartyCookieRestriction: overridesEnabled,
311
- disableThirdPartyCookieMetadata: gracePeriodEnabled,
312
- disableThirdPartyCookieHeuristics: heuristicEnabled,
313
- });
314
- }
315
- dispose() {
316
- Common.Settings.Settings.instance()
317
- .moduleSetting('cache-disabled')
318
- .removeChangeListener(this.cacheDisabledSettingChanged, this);
319
- }
320
- bypassServiceWorkerChanged() {
321
- void this.#networkAgent.invoke_setBypassServiceWorker({ bypass: this.#bypassServiceWorkerSetting.get() });
322
- }
323
- async getSecurityIsolationStatus(frameId) {
324
- const result = await this.#networkAgent.invoke_getSecurityIsolationStatus({ frameId: frameId ?? undefined });
325
- if (result.getError()) {
326
- return null;
327
- }
328
- return result.status;
329
- }
330
- async enableReportingApi(enable = true) {
331
- return await this.#networkAgent.invoke_enableReportingApi({ enable });
332
- }
333
- async enableDeviceBoundSessions(enable = true) {
334
- return await this.#networkAgent.invoke_enableDeviceBoundSessions({ enable });
335
- }
336
- async loadNetworkResource(frameId, url, options) {
337
- const result = await this.#networkAgent.invoke_loadNetworkResource({ frameId: frameId ?? undefined, url, options });
338
- if (result.getError()) {
339
- throw new Error(result.getError());
340
- }
341
- return result.resource;
342
- }
343
- clearRequests() {
344
- this.dispatcher.clearRequests();
345
- }
346
- }
347
- export var Events;
348
- (function (Events) {
349
- /* eslint-disable @typescript-eslint/naming-convention -- Used by web_tests. */
350
- Events["RequestStarted"] = "RequestStarted";
351
- Events["RequestUpdated"] = "RequestUpdated";
352
- Events["RequestFinished"] = "RequestFinished";
353
- Events["RequestUpdateDropped"] = "RequestUpdateDropped";
354
- Events["ResponseReceived"] = "ResponseReceived";
355
- Events["MessageGenerated"] = "MessageGenerated";
356
- Events["RequestRedirected"] = "RequestRedirected";
357
- Events["LoadingFinished"] = "LoadingFinished";
358
- Events["ReportingApiReportAdded"] = "ReportingApiReportAdded";
359
- Events["ReportingApiReportUpdated"] = "ReportingApiReportUpdated";
360
- Events["ReportingApiEndpointsChangedForOrigin"] = "ReportingApiEndpointsChangedForOrigin";
361
- Events["DeviceBoundSessionsAdded"] = "DeviceBoundSessionsAdded";
362
- Events["DeviceBoundSessionEventOccurred"] = "DeviceBoundSessionEventOccurred";
363
- /* eslint-enable @typescript-eslint/naming-convention */
364
- })(Events || (Events = {}));
365
- /**
366
- * Define some built-in DevTools throttling presets.
367
- * Note that for the download, upload and RTT values we multiply them by adjustment factors to make DevTools' emulation more accurate.
368
- * @see https://docs.google.com/document/d/10lfVdS1iDWCRKQXPfbxEn4Or99D64mvNlugP1AQuFlE/edit for historical context.
369
- * @see https://crbug.com/342406608#comment10 for context around the addition of 4G presets in June 2024.
370
- */
371
- export const BlockingConditions = {
372
- key: "BLOCKING" /* PredefinedThrottlingConditionKey.BLOCKING */,
373
- block: true,
374
- title: i18nLazyString(UIStrings.block),
375
- };
376
- export const NoThrottlingConditions = {
377
- key: "NO_THROTTLING" /* PredefinedThrottlingConditionKey.NO_THROTTLING */,
378
- title: i18nLazyString(UIStrings.noThrottling),
379
- i18nTitleKey: UIStrings.noThrottling,
380
- download: -1,
381
- upload: -1,
382
- latency: 0,
383
- };
384
- export const OfflineConditions = {
385
- key: "OFFLINE" /* PredefinedThrottlingConditionKey.OFFLINE */,
386
- title: i18nLazyString(UIStrings.offline),
387
- i18nTitleKey: UIStrings.offline,
388
- download: 0,
389
- upload: 0,
390
- latency: 0,
391
- };
392
- const slow3GTargetLatency = 400;
393
- export const Slow3GConditions = {
394
- key: "SPEED_3G" /* PredefinedThrottlingConditionKey.SPEED_3G */,
395
- title: i18nLazyString(UIStrings.slowG),
396
- i18nTitleKey: UIStrings.slowG,
397
- // ~500Kbps down
398
- download: 500 * 1000 / 8 * .8,
399
- // ~500Kbps up
400
- upload: 500 * 1000 / 8 * .8,
401
- // 400ms RTT
402
- latency: slow3GTargetLatency * 5,
403
- targetLatency: slow3GTargetLatency,
404
- };
405
- // Note for readers: this used to be called "Fast 3G" but it was renamed in May
406
- // 2024 to align with LH (crbug.com/342406608).
407
- const slow4GTargetLatency = 150;
408
- export const Slow4GConditions = {
409
- key: "SPEED_SLOW_4G" /* PredefinedThrottlingConditionKey.SPEED_SLOW_4G */,
410
- title: i18nLazyString(UIStrings.fastG),
411
- i18nTitleKey: UIStrings.fastG,
412
- // ~1.6 Mbps down
413
- download: 1.6 * 1000 * 1000 / 8 * .9,
414
- // ~0.75 Mbps up
415
- upload: 750 * 1000 / 8 * .9,
416
- // 150ms RTT
417
- latency: slow4GTargetLatency * 3.75,
418
- targetLatency: slow4GTargetLatency,
419
- };
420
- const fast4GTargetLatency = 60;
421
- export const Fast4GConditions = {
422
- key: "SPEED_FAST_4G" /* PredefinedThrottlingConditionKey.SPEED_FAST_4G */,
423
- title: i18nLazyString(UIStrings.fast4G),
424
- i18nTitleKey: UIStrings.fast4G,
425
- // 9 Mbps down
426
- download: 9 * 1000 * 1000 / 8 * .9,
427
- // 1.5 Mbps up
428
- upload: 1.5 * 1000 * 1000 / 8 * .9,
429
- // 60ms RTT
430
- latency: fast4GTargetLatency * 2.75,
431
- targetLatency: fast4GTargetLatency,
432
- };
433
- const MAX_EAGER_POST_REQUEST_BODY_LENGTH = 64 * 1024; // bytes
434
- const MAX_RESPONSE_BODY_TOTAL_BUFFER_LENGTH = 250 * 1024 * 1024; // bytes
435
- export class FetchDispatcher {
436
- #fetchAgent;
437
- #manager;
438
- constructor(agent, manager) {
439
- this.#fetchAgent = agent;
440
- this.#manager = manager;
441
- }
442
- requestPaused({ requestId, request, resourceType, responseStatusCode, responseHeaders, networkId }) {
443
- const networkRequest = networkId ? this.#manager.requestForId(networkId) : null;
444
- // If there was no 'Network.responseReceivedExtraInfo' event (e.g. for 'file:/' URLSs),
445
- // populate 'originalResponseHeaders' with the headers from the 'Fetch.requestPaused' event.
446
- if (networkRequest?.originalResponseHeaders.length === 0 && responseHeaders) {
447
- networkRequest.originalResponseHeaders = responseHeaders;
448
- }
449
- void MultitargetNetworkManager.instance().requestIntercepted(new InterceptedRequest(this.#fetchAgent, request, resourceType, requestId, networkRequest, responseStatusCode, responseHeaders));
450
- }
451
- authRequired({}) {
452
- }
453
- }
454
- export class NetworkDispatcher {
455
- #manager;
456
- #requestsById = new Map();
457
- #requestsByURL = new Map();
458
- #requestsByLoaderId = new Map();
459
- #requestIdToExtraInfoBuilder = new Map();
460
- /**
461
- * In case of an early abort or a cache hit, the Trust Token done event is
462
- * reported before the request itself is created in `requestWillBeSent`.
463
- * This causes the event to be lost as no `NetworkRequest` instance has been
464
- * created yet.
465
- * This map caches the events temporarily and populates the NetworkRequest
466
- * once it is created in `requestWillBeSent`.
467
- */
468
- #requestIdToTrustTokenEvent = new Map();
469
- constructor(manager) {
470
- this.#manager = manager;
471
- MultitargetNetworkManager.instance().addEventListener("RequestIntercepted" /* MultitargetNetworkManager.Events.REQUEST_INTERCEPTED */, this.#markAsIntercepted.bind(this));
472
- }
473
- #markAsIntercepted(event) {
474
- const request = this.requestForId(event.data);
475
- if (request) {
476
- request.setWasIntercepted(true);
477
- }
478
- }
479
- headersMapToHeadersArray(headersMap) {
480
- const result = [];
481
- for (const name in headersMap) {
482
- const values = headersMap[name].split('\n');
483
- for (let i = 0; i < values.length; ++i) {
484
- result.push({ name, value: values[i] });
485
- }
486
- }
487
- return result;
488
- }
489
- updateNetworkRequestWithRequest(networkRequest, request) {
490
- networkRequest.requestMethod = request.method;
491
- networkRequest.setRequestHeaders(this.headersMapToHeadersArray(request.headers));
492
- networkRequest.setRequestFormData(Boolean(request.hasPostData), request.postData || null);
493
- networkRequest.setInitialPriority(request.initialPriority);
494
- networkRequest.mixedContentType = request.mixedContentType || "none" /* Protocol.Security.MixedContentType.None */;
495
- networkRequest.setReferrerPolicy(request.referrerPolicy);
496
- networkRequest.setIsSameSite(request.isSameSite || false);
497
- networkRequest.setIsAdRelated(request.isAdRelated || false);
498
- }
499
- updateNetworkRequestWithResponse(networkRequest, response) {
500
- if (response.url && networkRequest.url() !== response.url) {
501
- networkRequest.setUrl(response.url);
502
- }
503
- networkRequest.mimeType = response.mimeType;
504
- networkRequest.setCharset(response.charset);
505
- if (!networkRequest.statusCode || networkRequest.wasIntercepted()) {
506
- networkRequest.statusCode = response.status;
507
- }
508
- if (!networkRequest.statusText || networkRequest.wasIntercepted()) {
509
- networkRequest.statusText = response.statusText;
510
- }
511
- if (!networkRequest.hasExtraResponseInfo() || networkRequest.wasIntercepted()) {
512
- networkRequest.responseHeaders = this.headersMapToHeadersArray(response.headers);
513
- }
514
- if (response.encodedDataLength >= 0) {
515
- networkRequest.setTransferSize(response.encodedDataLength);
516
- }
517
- if (response.requestHeaders && !networkRequest.hasExtraRequestInfo()) {
518
- // TODO(http://crbug.com/1004979): Stop using response.requestHeaders and
519
- // response.requestHeadersText once shared workers
520
- // emit Network.*ExtraInfo events for their network #requests.
521
- networkRequest.setRequestHeaders(this.headersMapToHeadersArray(response.requestHeaders));
522
- networkRequest.setRequestHeadersText(response.requestHeadersText || '');
523
- }
524
- networkRequest.connectionReused = response.connectionReused;
525
- networkRequest.connectionId = String(response.connectionId);
526
- if (response.remoteIPAddress) {
527
- networkRequest.setRemoteAddress(response.remoteIPAddress, response.remotePort || -1);
528
- }
529
- if (response.fromServiceWorker) {
530
- networkRequest.fetchedViaServiceWorker = true;
531
- }
532
- if (response.fromDiskCache) {
533
- networkRequest.setFromDiskCache();
534
- }
535
- if (response.fromPrefetchCache) {
536
- networkRequest.setFromPrefetchCache();
537
- }
538
- if (response.fromEarlyHints) {
539
- networkRequest.setFromEarlyHints();
540
- }
541
- if (response.cacheStorageCacheName) {
542
- networkRequest.setResponseCacheStorageCacheName(response.cacheStorageCacheName);
543
- }
544
- if (response.serviceWorkerRouterInfo) {
545
- networkRequest.serviceWorkerRouterInfo = response.serviceWorkerRouterInfo;
546
- }
547
- if (response.responseTime) {
548
- networkRequest.setResponseRetrievalTime(new Date(response.responseTime));
549
- }
550
- networkRequest.timing = response.timing;
551
- networkRequest.protocol = response.protocol || '';
552
- networkRequest.alternateProtocolUsage = response.alternateProtocolUsage;
553
- if (response.serviceWorkerResponseSource) {
554
- networkRequest.setServiceWorkerResponseSource(response.serviceWorkerResponseSource);
555
- }
556
- networkRequest.setSecurityState(response.securityState);
557
- if (response.securityDetails) {
558
- networkRequest.setSecurityDetails(response.securityDetails);
559
- }
560
- const newResourceType = Common.ResourceType.ResourceType.fromMimeTypeOverride(networkRequest.mimeType);
561
- if (newResourceType) {
562
- networkRequest.setResourceType(newResourceType);
563
- }
564
- if (networkRequest.responseReceivedPromiseResolve) {
565
- // Anyone interested in waiting for response headers being available?
566
- networkRequest.responseReceivedPromiseResolve();
567
- }
568
- else {
569
- // If not, make sure no one will wait on it in the future.
570
- networkRequest.responseReceivedPromise = Promise.resolve();
571
- }
572
- }
573
- requestForId(id) {
574
- return this.#requestsById.get(id) || null;
575
- }
576
- requestForURL(url) {
577
- return this.#requestsByURL.get(url) || null;
578
- }
579
- requestForLoaderId(loaderId) {
580
- return this.#requestsByLoaderId.get(loaderId) || null;
581
- }
582
- resourceChangedPriority({ requestId, newPriority }) {
583
- const networkRequest = this.#requestsById.get(requestId);
584
- if (networkRequest) {
585
- networkRequest.setPriority(newPriority);
586
- }
587
- }
588
- signedExchangeReceived({ requestId, info }) {
589
- // While loading a signed exchange, a signedExchangeReceived event is sent
590
- // between two requestWillBeSent events.
591
- // 1. The first requestWillBeSent is sent while starting the navigation (or
592
- // prefetching).
593
- // 2. This signedExchangeReceived event is sent when the browser detects the
594
- // signed exchange.
595
- // 3. The second requestWillBeSent is sent with the generated redirect
596
- // response and a new redirected request which URL is the inner request
597
- // URL of the signed exchange.
598
- let networkRequest = this.#requestsById.get(requestId);
599
- // |requestId| is available only for navigation #requests. If the request was
600
- // sent from a renderer process for prefetching, it is not available. In the
601
- // case, need to fallback to look for the URL.
602
- // TODO(crbug/841076): Sends the request ID of prefetching to the browser
603
- // process and DevTools to find the matching request.
604
- if (!networkRequest) {
605
- networkRequest = this.#requestsByURL.get(info.outerResponse.url);
606
- if (!networkRequest) {
607
- return;
608
- }
609
- // Or clause is never hit, but is here because we can't use non-null assertions.
610
- const backendRequestId = networkRequest.backendRequestId() || requestId;
611
- requestId = backendRequestId;
612
- }
613
- networkRequest.setSignedExchangeInfo(info);
614
- networkRequest.setResourceType(Common.ResourceType.resourceTypes.SignedExchange);
615
- this.updateNetworkRequestWithResponse(networkRequest, info.outerResponse);
616
- this.updateNetworkRequest(networkRequest);
617
- this.getExtraInfoBuilder(requestId).addHasExtraInfo(info.hasExtraInfo);
618
- this.#manager.dispatchEventToListeners(Events.ResponseReceived, { request: networkRequest, response: info.outerResponse });
619
- }
620
- requestWillBeSent({ requestId, loaderId, documentURL, request, timestamp, wallTime, initiator, redirectHasExtraInfo, redirectResponse, type, frameId, hasUserGesture, renderBlockingBehavior, }) {
621
- let networkRequest = this.#requestsById.get(requestId);
622
- if (networkRequest) {
623
- // FIXME: move this check to the backend.
624
- if (!redirectResponse) {
625
- return;
626
- }
627
- // If signedExchangeReceived event has already been sent for the request,
628
- // ignores the internally generated |redirectResponse|. The
629
- // |outerResponse| of SignedExchangeInfo was set to |networkRequest| in
630
- // signedExchangeReceived().
631
- if (!networkRequest.signedExchangeInfo()) {
632
- this.responseReceived({
633
- requestId,
634
- loaderId,
635
- timestamp,
636
- type: type || "Other" /* Protocol.Network.ResourceType.Other */,
637
- response: redirectResponse,
638
- hasExtraInfo: redirectHasExtraInfo,
639
- frameId,
640
- });
641
- }
642
- networkRequest = this.appendRedirect(requestId, timestamp, request.url);
643
- this.#manager.dispatchEventToListeners(Events.RequestRedirected, networkRequest);
644
- }
645
- else {
646
- networkRequest = NetworkRequest.create(requestId, request.url, documentURL, frameId ?? null, loaderId, initiator, hasUserGesture);
647
- if (renderBlockingBehavior) {
648
- networkRequest.setRenderBlockingBehavior(renderBlockingBehavior);
649
- }
650
- requestToManagerMap.set(networkRequest, this.#manager);
651
- }
652
- networkRequest.hasNetworkData = true;
653
- this.updateNetworkRequestWithRequest(networkRequest, request);
654
- networkRequest.setIssueTime(timestamp, wallTime);
655
- networkRequest.setResourceType(type ? Common.ResourceType.resourceTypes[type] : Common.ResourceType.resourceTypes.Other);
656
- if (request.trustTokenParams) {
657
- networkRequest.setTrustTokenParams(request.trustTokenParams);
658
- }
659
- const maybeTrustTokenEvent = this.#requestIdToTrustTokenEvent.get(requestId);
660
- if (maybeTrustTokenEvent) {
661
- networkRequest.setTrustTokenOperationDoneEvent(maybeTrustTokenEvent);
662
- this.#requestIdToTrustTokenEvent.delete(requestId);
663
- }
664
- this.getExtraInfoBuilder(requestId).addRequest(networkRequest);
665
- this.startNetworkRequest(networkRequest, request);
666
- }
667
- requestServedFromCache({ requestId }) {
668
- const networkRequest = this.#requestsById.get(requestId);
669
- if (!networkRequest) {
670
- return;
671
- }
672
- networkRequest.setFromMemoryCache();
673
- }
674
- responseReceived({ requestId, loaderId, timestamp, type, response, hasExtraInfo, frameId }) {
675
- const networkRequest = this.#requestsById.get(requestId);
676
- const lowercaseHeaders = NetworkManager.lowercaseHeaders(response.headers);
677
- if (!networkRequest) {
678
- const lastModifiedHeader = lowercaseHeaders['last-modified'];
679
- // We missed the requestWillBeSent.
680
- const eventData = {
681
- url: response.url,
682
- frameId: frameId ?? null,
683
- loaderId,
684
- resourceType: type,
685
- mimeType: response.mimeType,
686
- lastModified: lastModifiedHeader ? new Date(lastModifiedHeader) : null,
687
- };
688
- this.#manager.dispatchEventToListeners(Events.RequestUpdateDropped, eventData);
689
- return;
690
- }
691
- networkRequest.responseReceivedTime = timestamp;
692
- networkRequest.setResourceType(Common.ResourceType.resourceTypes[type]);
693
- this.updateNetworkRequestWithResponse(networkRequest, response);
694
- this.updateNetworkRequest(networkRequest);
695
- this.getExtraInfoBuilder(requestId).addHasExtraInfo(hasExtraInfo);
696
- this.#manager.dispatchEventToListeners(Events.ResponseReceived, { request: networkRequest, response });
697
- }
698
- dataReceived(event) {
699
- let networkRequest = this.#requestsById.get(event.requestId);
700
- if (!networkRequest) {
701
- networkRequest = this.maybeAdoptMainResourceRequest(event.requestId);
702
- }
703
- if (!networkRequest) {
704
- return;
705
- }
706
- networkRequest.addDataReceivedEvent(event);
707
- this.updateNetworkRequest(networkRequest);
708
- }
709
- loadingFinished({ requestId, timestamp: finishTime, encodedDataLength }) {
710
- let networkRequest = this.#requestsById.get(requestId);
711
- if (!networkRequest) {
712
- networkRequest = this.maybeAdoptMainResourceRequest(requestId);
713
- }
714
- if (!networkRequest) {
715
- return;
716
- }
717
- this.getExtraInfoBuilder(requestId).finished();
718
- this.finishNetworkRequest(networkRequest, finishTime, encodedDataLength);
719
- this.#manager.dispatchEventToListeners(Events.LoadingFinished, networkRequest);
720
- }
721
- loadingFailed({ requestId, timestamp: time, type: resourceType, errorText: localizedDescription, canceled, blockedReason, corsErrorStatus, }) {
722
- const networkRequest = this.#requestsById.get(requestId);
723
- if (!networkRequest) {
724
- return;
725
- }
726
- networkRequest.failed = true;
727
- networkRequest.setResourceType(Common.ResourceType.resourceTypes[resourceType]);
728
- networkRequest.canceled = Boolean(canceled);
729
- if (blockedReason) {
730
- networkRequest.setBlockedReason(blockedReason);
731
- if (blockedReason === "inspector" /* Protocol.Network.BlockedReason.Inspector */) {
732
- const message = i18nString(UIStrings.requestWasBlockedByDevtoolsS, { PH1: networkRequest.url() });
733
- this.#manager.dispatchEventToListeners(Events.MessageGenerated, { message, requestId, warning: true });
734
- }
735
- }
736
- if (corsErrorStatus) {
737
- networkRequest.setCorsErrorStatus(corsErrorStatus);
738
- }
739
- networkRequest.localizedFailDescription = localizedDescription;
740
- this.getExtraInfoBuilder(requestId).finished();
741
- this.finishNetworkRequest(networkRequest, time, -1);
742
- }
743
- webSocketCreated({ requestId, url: requestURL, initiator }) {
744
- const networkRequest = NetworkRequest.createForSocket(requestId, requestURL, initiator);
745
- requestToManagerMap.set(networkRequest, this.#manager);
746
- networkRequest.setResourceType(Common.ResourceType.resourceTypes.WebSocket);
747
- this.startNetworkRequest(networkRequest, null);
748
- }
749
- webSocketWillSendHandshakeRequest({ requestId, timestamp: time, wallTime, request }) {
750
- const networkRequest = this.#requestsById.get(requestId);
751
- if (!networkRequest) {
752
- return;
753
- }
754
- networkRequest.requestMethod = 'GET';
755
- networkRequest.setRequestHeaders(this.headersMapToHeadersArray(request.headers));
756
- networkRequest.setIssueTime(time, wallTime);
757
- this.updateNetworkRequest(networkRequest);
758
- }
759
- webSocketHandshakeResponseReceived({ requestId, timestamp: time, response }) {
760
- const networkRequest = this.#requestsById.get(requestId);
761
- if (!networkRequest) {
762
- return;
763
- }
764
- networkRequest.statusCode = response.status;
765
- networkRequest.statusText = response.statusText;
766
- networkRequest.responseHeaders = this.headersMapToHeadersArray(response.headers);
767
- networkRequest.responseHeadersText = response.headersText || '';
768
- if (response.requestHeaders) {
769
- networkRequest.setRequestHeaders(this.headersMapToHeadersArray(response.requestHeaders));
770
- }
771
- if (response.requestHeadersText) {
772
- networkRequest.setRequestHeadersText(response.requestHeadersText);
773
- }
774
- networkRequest.responseReceivedTime = time;
775
- networkRequest.protocol = 'websocket';
776
- this.updateNetworkRequest(networkRequest);
777
- }
778
- webSocketFrameReceived({ requestId, timestamp: time, response }) {
779
- const networkRequest = this.#requestsById.get(requestId);
780
- if (!networkRequest) {
781
- return;
782
- }
783
- networkRequest.addProtocolFrame(response, time, false);
784
- networkRequest.responseReceivedTime = time;
785
- this.updateNetworkRequest(networkRequest);
786
- }
787
- webSocketFrameSent({ requestId, timestamp: time, response }) {
788
- const networkRequest = this.#requestsById.get(requestId);
789
- if (!networkRequest) {
790
- return;
791
- }
792
- networkRequest.addProtocolFrame(response, time, true);
793
- networkRequest.responseReceivedTime = time;
794
- this.updateNetworkRequest(networkRequest);
795
- }
796
- webSocketFrameError({ requestId, timestamp: time, errorMessage }) {
797
- const networkRequest = this.#requestsById.get(requestId);
798
- if (!networkRequest) {
799
- return;
800
- }
801
- networkRequest.addProtocolFrameError(errorMessage, time);
802
- networkRequest.responseReceivedTime = time;
803
- this.updateNetworkRequest(networkRequest);
804
- }
805
- webSocketClosed({ requestId, timestamp: time }) {
806
- const networkRequest = this.#requestsById.get(requestId);
807
- if (!networkRequest) {
808
- return;
809
- }
810
- this.finishNetworkRequest(networkRequest, time, -1);
811
- }
812
- eventSourceMessageReceived({ requestId, timestamp: time, eventName, eventId, data }) {
813
- const networkRequest = this.#requestsById.get(requestId);
814
- if (!networkRequest) {
815
- return;
816
- }
817
- networkRequest.addEventSourceMessage(time, eventName, eventId, data);
818
- }
819
- requestIntercepted({}) {
820
- }
821
- requestWillBeSentExtraInfo({ requestId, associatedCookies, headers, deviceBoundSessionUsages, clientSecurityState, connectTiming, siteHasCookieInOtherPartition, appliedNetworkConditionsId }) {
822
- const blockedRequestCookies = [];
823
- const includedRequestCookies = [];
824
- for (const { blockedReasons, exemptionReason, cookie } of associatedCookies) {
825
- if (blockedReasons.length === 0) {
826
- includedRequestCookies.push({ exemptionReason, cookie: Cookie.fromProtocolCookie(cookie) });
827
- }
828
- else {
829
- blockedRequestCookies.push({ blockedReasons, cookie: Cookie.fromProtocolCookie(cookie) });
830
- }
831
- }
832
- const extraRequestInfo = {
833
- blockedRequestCookies,
834
- includedRequestCookies,
835
- requestHeaders: this.headersMapToHeadersArray(headers),
836
- deviceBoundSessionUsages,
837
- clientSecurityState,
838
- connectTiming,
839
- siteHasCookieInOtherPartition,
840
- appliedNetworkConditionsId,
841
- };
842
- this.getExtraInfoBuilder(requestId).addRequestExtraInfo(extraRequestInfo);
843
- const networkRequest = this.#requestsById.get(requestId);
844
- if (appliedNetworkConditionsId && networkRequest) {
845
- networkRequest.setAppliedNetworkConditions(appliedNetworkConditionsId);
846
- this.updateNetworkRequest(networkRequest);
847
- }
848
- }
849
- responseReceivedEarlyHints({ requestId, headers, }) {
850
- this.getExtraInfoBuilder(requestId).setEarlyHintsHeaders(this.headersMapToHeadersArray(headers));
851
- }
852
- responseReceivedExtraInfo({ requestId, blockedCookies, headers, headersText, resourceIPAddressSpace, statusCode, cookiePartitionKey, cookiePartitionKeyOpaque, exemptedCookies, }) {
853
- const extraResponseInfo = {
854
- blockedResponseCookies: blockedCookies.map(blockedCookie => ({
855
- blockedReasons: blockedCookie.blockedReasons,
856
- cookieLine: blockedCookie.cookieLine,
857
- cookie: blockedCookie.cookie ? Cookie.fromProtocolCookie(blockedCookie.cookie) : null,
858
- })),
859
- responseHeaders: this.headersMapToHeadersArray(headers),
860
- responseHeadersText: headersText,
861
- resourceIPAddressSpace,
862
- statusCode,
863
- cookiePartitionKey,
864
- cookiePartitionKeyOpaque,
865
- exemptedResponseCookies: exemptedCookies?.map(exemptedCookie => ({
866
- cookie: Cookie.fromProtocolCookie(exemptedCookie.cookie),
867
- cookieLine: exemptedCookie.cookieLine,
868
- exemptionReason: exemptedCookie.exemptionReason,
869
- })),
870
- };
871
- this.getExtraInfoBuilder(requestId).addResponseExtraInfo(extraResponseInfo);
872
- }
873
- getExtraInfoBuilder(requestId) {
874
- let builder;
875
- if (!this.#requestIdToExtraInfoBuilder.has(requestId)) {
876
- builder = new ExtraInfoBuilder();
877
- this.#requestIdToExtraInfoBuilder.set(requestId, builder);
878
- }
879
- else {
880
- builder = this.#requestIdToExtraInfoBuilder.get(requestId);
881
- }
882
- return builder;
883
- }
884
- appendRedirect(requestId, time, redirectURL) {
885
- const originalNetworkRequest = this.#requestsById.get(requestId);
886
- if (!originalNetworkRequest) {
887
- throw new Error(`Could not find original network request for ${requestId}`);
888
- }
889
- let redirectCount = 0;
890
- for (let redirect = originalNetworkRequest.redirectSource(); redirect; redirect = redirect.redirectSource()) {
891
- redirectCount++;
892
- }
893
- originalNetworkRequest.markAsRedirect(redirectCount);
894
- this.finishNetworkRequest(originalNetworkRequest, time, -1);
895
- const newNetworkRequest = NetworkRequest.create(requestId, redirectURL, originalNetworkRequest.documentURL, originalNetworkRequest.frameId, originalNetworkRequest.loaderId, originalNetworkRequest.initiator(), originalNetworkRequest.hasUserGesture() ?? undefined);
896
- requestToManagerMap.set(newNetworkRequest, this.#manager);
897
- newNetworkRequest.setRedirectSource(originalNetworkRequest);
898
- originalNetworkRequest.setRedirectDestination(newNetworkRequest);
899
- return newNetworkRequest;
900
- }
901
- maybeAdoptMainResourceRequest(requestId) {
902
- const request = MultitargetNetworkManager.instance().inflightMainResourceRequests.get(requestId);
903
- if (!request) {
904
- return null;
905
- }
906
- const oldDispatcher = NetworkManager.forRequest(request).dispatcher;
907
- oldDispatcher.#requestsById.delete(requestId);
908
- oldDispatcher.#requestsByURL.delete(request.url());
909
- const loaderId = request.loaderId;
910
- if (loaderId) {
911
- oldDispatcher.#requestsByLoaderId.delete(loaderId);
912
- }
913
- const builder = oldDispatcher.#requestIdToExtraInfoBuilder.get(requestId);
914
- oldDispatcher.#requestIdToExtraInfoBuilder.delete(requestId);
915
- this.#requestsById.set(requestId, request);
916
- this.#requestsByURL.set(request.url(), request);
917
- if (loaderId) {
918
- this.#requestsByLoaderId.set(loaderId, request);
919
- }
920
- if (builder) {
921
- this.#requestIdToExtraInfoBuilder.set(requestId, builder);
922
- }
923
- requestToManagerMap.set(request, this.#manager);
924
- return request;
925
- }
926
- startNetworkRequest(networkRequest, originalRequest) {
927
- this.#requestsById.set(networkRequest.requestId(), networkRequest);
928
- this.#requestsByURL.set(networkRequest.url(), networkRequest);
929
- const loaderId = networkRequest.loaderId;
930
- if (loaderId) {
931
- this.#requestsByLoaderId.set(loaderId, networkRequest);
932
- }
933
- // The following relies on the fact that loaderIds and requestIds
934
- // are globally unique and that the main request has them equal. If
935
- // loaderId is an empty string, it indicates a worker request. For the
936
- // request to fetch the main worker script, the request ID is the future
937
- // worker target ID and, therefore, it is unique.
938
- if (networkRequest.loaderId === networkRequest.requestId() || networkRequest.loaderId === '') {
939
- MultitargetNetworkManager.instance().inflightMainResourceRequests.set(networkRequest.requestId(), networkRequest);
940
- }
941
- this.#manager.dispatchEventToListeners(Events.RequestStarted, { request: networkRequest, originalRequest });
942
- }
943
- updateNetworkRequest(networkRequest) {
944
- this.#manager.dispatchEventToListeners(Events.RequestUpdated, networkRequest);
945
- }
946
- finishNetworkRequest(networkRequest, finishTime, encodedDataLength) {
947
- networkRequest.endTime = finishTime;
948
- networkRequest.finished = true;
949
- if (encodedDataLength >= 0) {
950
- const redirectSource = networkRequest.redirectSource();
951
- if (redirectSource?.signedExchangeInfo()) {
952
- networkRequest.setTransferSize(0);
953
- redirectSource.setTransferSize(encodedDataLength);
954
- this.updateNetworkRequest(redirectSource);
955
- }
956
- else {
957
- networkRequest.setTransferSize(encodedDataLength);
958
- }
959
- }
960
- this.#manager.dispatchEventToListeners(Events.RequestFinished, networkRequest);
961
- MultitargetNetworkManager.instance().inflightMainResourceRequests.delete(networkRequest.requestId());
962
- if (Common.Settings.Settings.instance().moduleSetting('monitoring-xhr-enabled').get() &&
963
- networkRequest.resourceType().category() === Common.ResourceType.resourceCategories.XHR) {
964
- let message;
965
- const failedToLoad = networkRequest.failed || networkRequest.hasErrorStatusCode();
966
- if (failedToLoad) {
967
- message = i18nString(UIStrings.sFailedLoadingSS, { PH1: networkRequest.resourceType().title(), PH2: networkRequest.requestMethod, PH3: networkRequest.url() });
968
- }
969
- else {
970
- message = i18nString(UIStrings.sFinishedLoadingSS, { PH1: networkRequest.resourceType().title(), PH2: networkRequest.requestMethod, PH3: networkRequest.url() });
971
- }
972
- this.#manager.dispatchEventToListeners(Events.MessageGenerated, { message, requestId: networkRequest.requestId(), warning: false });
973
- }
974
- }
975
- clearRequests() {
976
- for (const [requestId, request] of this.#requestsById) {
977
- if (request.finished) {
978
- this.#requestsById.delete(requestId);
979
- }
980
- }
981
- for (const [requestURL, request] of this.#requestsByURL) {
982
- if (request.finished) {
983
- this.#requestsByURL.delete(requestURL);
984
- }
985
- }
986
- for (const [requestLoaderId, request] of this.#requestsByLoaderId) {
987
- if (request.finished) {
988
- this.#requestsByLoaderId.delete(requestLoaderId);
989
- }
990
- }
991
- for (const [requestId, builder] of this.#requestIdToExtraInfoBuilder) {
992
- if (builder.isFinished()) {
993
- this.#requestIdToExtraInfoBuilder.delete(requestId);
994
- }
995
- }
996
- }
997
- webTransportCreated({ transportId, url: requestURL, timestamp: time, initiator }) {
998
- const networkRequest = NetworkRequest.createForSocket(transportId, requestURL, initiator);
999
- networkRequest.hasNetworkData = true;
1000
- requestToManagerMap.set(networkRequest, this.#manager);
1001
- networkRequest.setResourceType(Common.ResourceType.resourceTypes.WebTransport);
1002
- networkRequest.setIssueTime(time, 0);
1003
- // TODO(yoichio): Add appropreate events to address abort cases.
1004
- this.startNetworkRequest(networkRequest, null);
1005
- }
1006
- webTransportConnectionEstablished({ transportId, timestamp: time }) {
1007
- const networkRequest = this.#requestsById.get(transportId);
1008
- if (!networkRequest) {
1009
- return;
1010
- }
1011
- // This dummy deltas are needed to show this request as being
1012
- // downloaded(blue) given typical WebTransport is kept for a while.
1013
- // TODO(yoichio): Add appropreate events to fix these dummy datas.
1014
- // DNS lookup?
1015
- networkRequest.responseReceivedTime = time;
1016
- networkRequest.endTime = time + 0.001;
1017
- this.updateNetworkRequest(networkRequest);
1018
- }
1019
- webTransportClosed({ transportId, timestamp: time }) {
1020
- const networkRequest = this.#requestsById.get(transportId);
1021
- if (!networkRequest) {
1022
- return;
1023
- }
1024
- networkRequest.endTime = time;
1025
- this.finishNetworkRequest(networkRequest, time, 0);
1026
- }
1027
- directTCPSocketCreated(event) {
1028
- const requestURL = this.concatHostPort(event.remoteAddr, event.remotePort);
1029
- const networkRequest = NetworkRequest.createForSocket(event.identifier, requestURL, event.initiator);
1030
- networkRequest.hasNetworkData = true;
1031
- networkRequest.setRemoteAddress(event.remoteAddr, event.remotePort);
1032
- networkRequest.protocol = i18n.i18n.lockedString('tcp');
1033
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusOpening);
1034
- networkRequest.directSocketInfo = {
1035
- type: DirectSocketType.TCP,
1036
- status: DirectSocketStatus.OPENING,
1037
- createOptions: {
1038
- remoteAddr: event.remoteAddr,
1039
- remotePort: event.remotePort,
1040
- noDelay: event.options.noDelay,
1041
- keepAliveDelay: event.options.keepAliveDelay,
1042
- sendBufferSize: event.options.sendBufferSize,
1043
- receiveBufferSize: event.options.receiveBufferSize,
1044
- dnsQueryType: event.options.dnsQueryType,
1045
- }
1046
- };
1047
- networkRequest.setResourceType(Common.ResourceType.resourceTypes.DirectSocket);
1048
- networkRequest.setIssueTime(event.timestamp, event.timestamp);
1049
- requestToManagerMap.set(networkRequest, this.#manager);
1050
- this.startNetworkRequest(networkRequest, null);
1051
- }
1052
- directTCPSocketOpened(event) {
1053
- const networkRequest = this.#requestsById.get(event.identifier);
1054
- if (!networkRequest?.directSocketInfo) {
1055
- return;
1056
- }
1057
- networkRequest.responseReceivedTime = event.timestamp;
1058
- networkRequest.directSocketInfo.status = DirectSocketStatus.OPEN;
1059
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusOpen);
1060
- networkRequest.directSocketInfo.openInfo = {
1061
- remoteAddr: event.remoteAddr,
1062
- remotePort: event.remotePort,
1063
- localAddr: event.localAddr,
1064
- localPort: event.localPort,
1065
- };
1066
- networkRequest.setRemoteAddress(event.remoteAddr, event.remotePort);
1067
- const requestURL = this.concatHostPort(event.remoteAddr, event.remotePort);
1068
- networkRequest.setUrl(requestURL);
1069
- this.updateNetworkRequest(networkRequest);
1070
- }
1071
- directTCPSocketAborted(event) {
1072
- const networkRequest = this.#requestsById.get(event.identifier);
1073
- if (!networkRequest?.directSocketInfo) {
1074
- return;
1075
- }
1076
- networkRequest.failed = true;
1077
- networkRequest.directSocketInfo.status = DirectSocketStatus.ABORTED;
1078
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusAborted);
1079
- networkRequest.directSocketInfo.errorMessage = event.errorMessage;
1080
- this.finishNetworkRequest(networkRequest, event.timestamp, 0);
1081
- }
1082
- directTCPSocketClosed(event) {
1083
- const networkRequest = this.#requestsById.get(event.identifier);
1084
- if (!networkRequest?.directSocketInfo) {
1085
- return;
1086
- }
1087
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusClosed);
1088
- networkRequest.directSocketInfo.status = DirectSocketStatus.CLOSED;
1089
- this.finishNetworkRequest(networkRequest, event.timestamp, 0);
1090
- }
1091
- directTCPSocketChunkSent(event) {
1092
- const networkRequest = this.#requestsById.get(event.identifier);
1093
- if (!networkRequest) {
1094
- return;
1095
- }
1096
- networkRequest.addDirectSocketChunk({
1097
- data: event.data,
1098
- type: DirectSocketChunkType.SEND,
1099
- timestamp: event.timestamp,
1100
- });
1101
- networkRequest.responseReceivedTime = event.timestamp;
1102
- this.updateNetworkRequest(networkRequest);
1103
- }
1104
- directTCPSocketChunkReceived(event) {
1105
- const networkRequest = this.#requestsById.get(event.identifier);
1106
- if (!networkRequest) {
1107
- return;
1108
- }
1109
- networkRequest.addDirectSocketChunk({
1110
- data: event.data,
1111
- type: DirectSocketChunkType.RECEIVE,
1112
- timestamp: event.timestamp,
1113
- });
1114
- networkRequest.responseReceivedTime = event.timestamp;
1115
- this.updateNetworkRequest(networkRequest);
1116
- }
1117
- directUDPSocketCreated(event) {
1118
- let requestURL = '';
1119
- let type;
1120
- if (event.options.remoteAddr && event.options.remotePort) {
1121
- requestURL = this.concatHostPort(event.options.remoteAddr, event.options.remotePort);
1122
- type = DirectSocketType.UDP_CONNECTED;
1123
- }
1124
- else if (event.options.localAddr) {
1125
- requestURL = this.concatHostPort(event.options.localAddr, event.options.localPort);
1126
- type = DirectSocketType.UDP_BOUND;
1127
- }
1128
- else {
1129
- // Must be present in a valid command if remoteAddr
1130
- // is not specified.
1131
- return;
1132
- }
1133
- const networkRequest = NetworkRequest.createForSocket(event.identifier, requestURL, event.initiator);
1134
- networkRequest.hasNetworkData = true;
1135
- if (event.options.remoteAddr && event.options.remotePort) {
1136
- networkRequest.setRemoteAddress(event.options.remoteAddr, event.options.remotePort);
1137
- }
1138
- networkRequest.protocol = i18n.i18n.lockedString('udp');
1139
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusOpening);
1140
- networkRequest.directSocketInfo = {
1141
- type,
1142
- status: DirectSocketStatus.OPENING,
1143
- createOptions: {
1144
- remoteAddr: event.options.remoteAddr,
1145
- remotePort: event.options.remotePort,
1146
- localAddr: event.options.localAddr,
1147
- localPort: event.options.localPort,
1148
- sendBufferSize: event.options.sendBufferSize,
1149
- receiveBufferSize: event.options.receiveBufferSize,
1150
- dnsQueryType: event.options.dnsQueryType,
1151
- multicastLoopback: event.options.multicastLoopback,
1152
- multicastTimeToLive: event.options.multicastTimeToLive,
1153
- multicastAllowAddressSharing: event.options.multicastAllowAddressSharing,
1154
- },
1155
- joinedMulticastGroups: new Set(),
1156
- };
1157
- networkRequest.setResourceType(Common.ResourceType.resourceTypes.DirectSocket);
1158
- networkRequest.setIssueTime(event.timestamp, event.timestamp);
1159
- requestToManagerMap.set(networkRequest, this.#manager);
1160
- this.startNetworkRequest(networkRequest, null);
1161
- }
1162
- directUDPSocketOpened(event) {
1163
- const networkRequest = this.#requestsById.get(event.identifier);
1164
- if (!networkRequest?.directSocketInfo) {
1165
- return;
1166
- }
1167
- let requestURL;
1168
- if (networkRequest.directSocketInfo.type === DirectSocketType.UDP_CONNECTED) {
1169
- if (!event.remoteAddr || !event.remotePort) {
1170
- // Connected socket must have remoteAdd and remotePort.
1171
- return;
1172
- }
1173
- networkRequest.setRemoteAddress(event.remoteAddr, event.remotePort);
1174
- requestURL = this.concatHostPort(event.remoteAddr, event.remotePort);
1175
- }
1176
- else {
1177
- requestURL = this.concatHostPort(event.localAddr, event.localPort);
1178
- }
1179
- networkRequest.setUrl(requestURL);
1180
- networkRequest.responseReceivedTime = event.timestamp;
1181
- networkRequest.directSocketInfo.status = DirectSocketStatus.OPEN;
1182
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusOpen);
1183
- networkRequest.directSocketInfo.openInfo = {
1184
- remoteAddr: event.remoteAddr,
1185
- remotePort: event.remotePort,
1186
- localAddr: event.localAddr,
1187
- localPort: event.localPort,
1188
- };
1189
- this.updateNetworkRequest(networkRequest);
1190
- }
1191
- directUDPSocketAborted(event) {
1192
- const networkRequest = this.#requestsById.get(event.identifier);
1193
- if (!networkRequest?.directSocketInfo) {
1194
- return;
1195
- }
1196
- networkRequest.failed = true;
1197
- networkRequest.directSocketInfo.status = DirectSocketStatus.ABORTED;
1198
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusAborted);
1199
- networkRequest.directSocketInfo.errorMessage = event.errorMessage;
1200
- this.finishNetworkRequest(networkRequest, event.timestamp, 0);
1201
- }
1202
- directUDPSocketClosed(event) {
1203
- const networkRequest = this.#requestsById.get(event.identifier);
1204
- if (!networkRequest?.directSocketInfo) {
1205
- return;
1206
- }
1207
- networkRequest.statusText = i18nString(UIStrings.directSocketStatusClosed);
1208
- networkRequest.directSocketInfo.status = DirectSocketStatus.CLOSED;
1209
- this.finishNetworkRequest(networkRequest, event.timestamp, 0);
1210
- }
1211
- directUDPSocketChunkSent(event) {
1212
- const networkRequest = this.#requestsById.get(event.identifier);
1213
- if (!networkRequest) {
1214
- return;
1215
- }
1216
- networkRequest.addDirectSocketChunk({
1217
- data: event.message.data,
1218
- type: DirectSocketChunkType.SEND,
1219
- timestamp: event.timestamp,
1220
- remoteAddress: event.message.remoteAddr,
1221
- remotePort: event.message.remotePort
1222
- });
1223
- networkRequest.responseReceivedTime = event.timestamp;
1224
- this.updateNetworkRequest(networkRequest);
1225
- }
1226
- directUDPSocketChunkReceived(event) {
1227
- const networkRequest = this.#requestsById.get(event.identifier);
1228
- if (!networkRequest) {
1229
- return;
1230
- }
1231
- networkRequest.addDirectSocketChunk({
1232
- data: event.message.data,
1233
- type: DirectSocketChunkType.RECEIVE,
1234
- timestamp: event.timestamp,
1235
- remoteAddress: event.message.remoteAddr,
1236
- remotePort: event.message.remotePort
1237
- });
1238
- networkRequest.responseReceivedTime = event.timestamp;
1239
- this.updateNetworkRequest(networkRequest);
1240
- }
1241
- directUDPSocketJoinedMulticastGroup(event) {
1242
- const networkRequest = this.#requestsById.get(event.identifier);
1243
- if (!networkRequest?.directSocketInfo) {
1244
- return;
1245
- }
1246
- if (!networkRequest.directSocketInfo.joinedMulticastGroups) {
1247
- networkRequest.directSocketInfo.joinedMulticastGroups = new Set();
1248
- }
1249
- if (!networkRequest.directSocketInfo.joinedMulticastGroups.has(event.IPAddress)) {
1250
- networkRequest.directSocketInfo.joinedMulticastGroups.add(event.IPAddress);
1251
- this.updateNetworkRequest(networkRequest);
1252
- }
1253
- }
1254
- directUDPSocketLeftMulticastGroup(event) {
1255
- const networkRequest = this.#requestsById.get(event.identifier);
1256
- if (!networkRequest?.directSocketInfo?.joinedMulticastGroups) {
1257
- return;
1258
- }
1259
- if (networkRequest.directSocketInfo.joinedMulticastGroups.delete(event.IPAddress)) {
1260
- this.updateNetworkRequest(networkRequest);
1261
- }
1262
- }
1263
- trustTokenOperationDone(event) {
1264
- const request = this.#requestsById.get(event.requestId);
1265
- if (!request) {
1266
- this.#requestIdToTrustTokenEvent.set(event.requestId, event);
1267
- return;
1268
- }
1269
- request.setTrustTokenOperationDoneEvent(event);
1270
- }
1271
- reportingApiReportAdded(data) {
1272
- this.#manager.dispatchEventToListeners(Events.ReportingApiReportAdded, data.report);
1273
- }
1274
- reportingApiReportUpdated(data) {
1275
- this.#manager.dispatchEventToListeners(Events.ReportingApiReportUpdated, data.report);
1276
- }
1277
- reportingApiEndpointsChangedForOrigin(data) {
1278
- this.#manager.dispatchEventToListeners(Events.ReportingApiEndpointsChangedForOrigin, data);
1279
- }
1280
- deviceBoundSessionsAdded(_params) {
1281
- this.#manager.dispatchEventToListeners(Events.DeviceBoundSessionsAdded, _params.sessions);
1282
- }
1283
- deviceBoundSessionEventOccurred(_params) {
1284
- this.#manager.dispatchEventToListeners(Events.DeviceBoundSessionEventOccurred, _params);
1285
- }
1286
- policyUpdated() {
1287
- }
1288
- /**
1289
- * @deprecated
1290
- * This method is only kept for usage in a web test.
1291
- */
1292
- createNetworkRequest(requestId, frameId, loaderId, url, documentURL, initiator) {
1293
- const request = NetworkRequest.create(requestId, url, documentURL, frameId, loaderId, initiator);
1294
- requestToManagerMap.set(request, this.#manager);
1295
- return request;
1296
- }
1297
- concatHostPort(host, port) {
1298
- if (!port || port === 0) {
1299
- return host;
1300
- }
1301
- return `${host}:${port}`;
1302
- }
1303
- }
1304
- export class RequestURLPattern {
1305
- constructorString;
1306
- pattern;
1307
- constructor(constructorString, pattern) {
1308
- this.constructorString = constructorString;
1309
- this.pattern = pattern;
1310
- if (pattern.hasRegExpGroups) {
1311
- throw new Error('RegExp groups are not allowed');
1312
- }
1313
- }
1314
- static isValidPattern(pattern) {
1315
- try {
1316
- const urlPattern = new URLPattern(pattern);
1317
- return urlPattern.hasRegExpGroups ? "has-regexp-groups" /* RequestURLPatternValidity.HAS_REGEXP_GROUPS */ : "valid" /* RequestURLPatternValidity.VALID */;
1318
- }
1319
- catch {
1320
- return "failed-to-parse" /* RequestURLPatternValidity.FAILED_TO_PARSE */;
1321
- }
1322
- }
1323
- static create(constructorString) {
1324
- try {
1325
- const urlPattern = new URLPattern(constructorString);
1326
- return urlPattern.hasRegExpGroups ? null : new RequestURLPattern(constructorString, urlPattern);
1327
- }
1328
- catch {
1329
- return null;
1330
- }
1331
- }
1332
- static upgradeFromWildcard(pattern) {
1333
- const tryCreate = (constructorString) => {
1334
- const result = this.create(constructorString);
1335
- if (result?.pattern.protocol === 'localhost' && result?.pattern.hostname === '') {
1336
- // localhost:1234 parses as a valid pattern, do the right thing here instead
1337
- return tryCreate(`*://${constructorString}`);
1338
- }
1339
- return result;
1340
- };
1341
- return tryCreate(pattern) // try as is
1342
- ??
1343
- // Try to upgrade patterns created from the network panel, which either blocks the full url (sans
1344
- // protocol) or just the domain name. In both cases the wildcard patterns had implicit wildcards at the end.
1345
- // We explicitly add that here, which will match both domain names without path (implicitly setting pathname
1346
- // to '*') and urls with path (appending * to the pathname).
1347
- tryCreate(`*://${pattern}*`);
1348
- }
1349
- }
1350
- export class RequestCondition extends Common.ObjectWrapper.ObjectWrapper {
1351
- #pattern;
1352
- #enabled;
1353
- #conditions;
1354
- #ruleIds = new Set();
1355
- static createFromSetting(setting) {
1356
- if ('urlPattern' in setting) {
1357
- const pattern = RequestURLPattern.create(setting.urlPattern) ?? {
1358
- wildcardURL: setting.urlPattern,
1359
- upgradedPattern: RequestURLPattern.upgradeFromWildcard(setting.urlPattern) ?? undefined,
1360
- };
1361
- const conditions = getPredefinedOrBlockingCondition(setting.conditions) ??
1362
- customUserNetworkConditionsSetting().get().find(condition => condition.key === setting.conditions) ??
1363
- NoThrottlingConditions;
1364
- return new this(pattern, setting.enabled, conditions);
1365
- }
1366
- const pattern = {
1367
- wildcardURL: setting.url,
1368
- upgradedPattern: RequestURLPattern.upgradeFromWildcard(setting.url) ?? undefined
1369
- };
1370
- return new this(pattern, setting.enabled, BlockingConditions);
1371
- }
1372
- static create(pattern, conditions) {
1373
- return new this(pattern, /* enabled=*/ true, conditions);
1374
- }
1375
- constructor(pattern, enabled, conditions) {
1376
- super();
1377
- this.#pattern = pattern;
1378
- this.#enabled = enabled;
1379
- this.#conditions = conditions;
1380
- }
1381
- get isBlocking() {
1382
- return this.conditions === BlockingConditions;
1383
- }
1384
- get ruleIds() {
1385
- return this.#ruleIds;
1386
- }
1387
- get constructorString() {
1388
- return this.#pattern instanceof RequestURLPattern ? this.#pattern.constructorString :
1389
- this.#pattern.upgradedPattern?.constructorString;
1390
- }
1391
- get wildcardURL() {
1392
- return 'wildcardURL' in this.#pattern ? this.#pattern.wildcardURL : undefined;
1393
- }
1394
- get constructorStringOrWildcardURL() {
1395
- return this.#pattern instanceof RequestURLPattern ?
1396
- this.#pattern.constructorString :
1397
- (this.#pattern.upgradedPattern?.constructorString ?? this.#pattern.wildcardURL);
1398
- }
1399
- set pattern(pattern) {
1400
- if (typeof pattern === 'string') {
1401
- // TODO(pfaffe) Remove once the feature flag is no longer required
1402
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1403
- throw new Error('Should not use wildcard urls');
1404
- }
1405
- this.#pattern = {
1406
- wildcardURL: pattern,
1407
- upgradedPattern: RequestURLPattern.upgradeFromWildcard(pattern) ?? undefined
1408
- };
1409
- }
1410
- else {
1411
- this.#pattern = pattern;
1412
- }
1413
- this.dispatchEventToListeners("request-condition-changed" /* RequestCondition.Events.REQUEST_CONDITION_CHANGED */);
1414
- }
1415
- get enabled() {
1416
- return this.#enabled;
1417
- }
1418
- set enabled(enabled) {
1419
- this.#enabled = enabled;
1420
- this.dispatchEventToListeners("request-condition-changed" /* RequestCondition.Events.REQUEST_CONDITION_CHANGED */);
1421
- }
1422
- get conditions() {
1423
- return this.#conditions;
1424
- }
1425
- set conditions(conditions) {
1426
- this.#conditions = conditions;
1427
- this.#ruleIds = new Set();
1428
- this.dispatchEventToListeners("request-condition-changed" /* RequestCondition.Events.REQUEST_CONDITION_CHANGED */);
1429
- }
1430
- toSetting() {
1431
- const enabled = this.enabled;
1432
- if (this.#pattern instanceof RequestURLPattern) {
1433
- return { enabled, urlPattern: this.#pattern.constructorString, conditions: this.#conditions.key };
1434
- }
1435
- if (this.#conditions !== BlockingConditions && this.#pattern.upgradedPattern) {
1436
- return { enabled, urlPattern: this.#pattern.upgradedPattern.constructorString, conditions: this.#conditions.key };
1437
- }
1438
- return { enabled, url: this.#pattern.wildcardURL };
1439
- }
1440
- get originalOrUpgradedURLPattern() {
1441
- return this.#pattern instanceof RequestURLPattern ? this.#pattern.pattern : this.#pattern.upgradedPattern?.pattern;
1442
- }
1443
- }
1444
- export class RequestConditions extends Common.ObjectWrapper.ObjectWrapper {
1445
- #setting = Common.Settings.Settings.instance().createSetting('network-blocked-patterns', []);
1446
- #conditionsEnabledSetting = Common.Settings.Settings.instance().moduleSetting('request-blocking-enabled');
1447
- #conditions = [];
1448
- #requestConditionsById = new Map();
1449
- #conditionsAppliedForTestPromise = Promise.resolve();
1450
- constructor() {
1451
- super();
1452
- for (const condition of this.#setting.get()) {
1453
- try {
1454
- this.#conditions.push(RequestCondition.createFromSetting(condition));
1455
- }
1456
- catch (e) {
1457
- console.error('Error loading throttling settings: ', e);
1458
- }
1459
- }
1460
- for (const condition of this.#conditions) {
1461
- condition.addEventListener("request-condition-changed" /* RequestCondition.Events.REQUEST_CONDITION_CHANGED */, this.#conditionsChanged, this);
1462
- }
1463
- this.#conditionsEnabledSetting.addChangeListener(() => this.dispatchEventToListeners("request-conditions-changed" /* RequestConditions.Events.REQUEST_CONDITIONS_CHANGED */));
1464
- }
1465
- get count() {
1466
- return this.#conditions.length;
1467
- }
1468
- get conditionsEnabled() {
1469
- return this.#conditionsEnabledSetting.get();
1470
- }
1471
- set conditionsEnabled(enabled) {
1472
- if (this.#conditionsEnabledSetting.get() === enabled) {
1473
- return;
1474
- }
1475
- this.#conditionsEnabledSetting.set(enabled);
1476
- }
1477
- findCondition(pattern) {
1478
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1479
- return this.#conditions.find(condition => condition.constructorString === pattern);
1480
- }
1481
- return this.#conditions.find(condition => condition.wildcardURL === pattern);
1482
- }
1483
- has(url) {
1484
- return Boolean(this.findCondition(url));
1485
- }
1486
- add(...conditions) {
1487
- this.#conditions.push(...conditions);
1488
- for (const condition of conditions) {
1489
- condition.addEventListener("request-condition-changed" /* RequestCondition.Events.REQUEST_CONDITION_CHANGED */, this.#conditionsChanged, this);
1490
- }
1491
- this.#conditionsChanged();
1492
- }
1493
- decreasePriority(condition) {
1494
- const index = this.#conditions.indexOf(condition);
1495
- if (index < 0 || index >= this.#conditions.length - 1) {
1496
- return;
1497
- }
1498
- Platform.ArrayUtilities.swap(this.#conditions, index, index + 1);
1499
- this.#conditionsChanged();
1500
- }
1501
- increasePriority(condition) {
1502
- const index = this.#conditions.indexOf(condition);
1503
- if (index <= 0) {
1504
- return;
1505
- }
1506
- Platform.ArrayUtilities.swap(this.#conditions, index - 1, index);
1507
- this.#conditionsChanged();
1508
- }
1509
- delete(condition) {
1510
- const index = this.#conditions.indexOf(condition);
1511
- if (index < 0) {
1512
- return;
1513
- }
1514
- condition.removeEventListener("request-condition-changed" /* RequestCondition.Events.REQUEST_CONDITION_CHANGED */, this.#conditionsChanged, this);
1515
- this.#conditions.splice(index, 1);
1516
- this.#conditionsChanged();
1517
- }
1518
- clear() {
1519
- this.#conditions.splice(0);
1520
- this.#conditionsChanged();
1521
- for (const condition of this.#conditions) {
1522
- condition.removeEventListener("request-condition-changed" /* RequestCondition.Events.REQUEST_CONDITION_CHANGED */, this.#conditionsChanged, this);
1523
- }
1524
- }
1525
- #conditionsChanged() {
1526
- this.#setting.set(this.#conditions.map(condition => condition.toSetting()));
1527
- this.dispatchEventToListeners("request-conditions-changed" /* RequestConditions.Events.REQUEST_CONDITIONS_CHANGED */);
1528
- }
1529
- get conditions() {
1530
- return this.#conditions.values();
1531
- }
1532
- applyConditions(offline, globalConditions, ...agents) {
1533
- function isNonBlockingCondition(condition) {
1534
- return !('block' in condition);
1535
- }
1536
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1537
- const urlPatterns = [];
1538
- // We store all this info out-of-band to prevent races with changing conditions while the promise is still pending
1539
- const matchedNetworkConditions = [];
1540
- if (this.conditionsEnabled) {
1541
- for (const condition of this.#conditions) {
1542
- const urlPattern = condition.constructorString;
1543
- const conditions = condition.conditions;
1544
- if (!condition.enabled || !urlPattern || conditions === NoThrottlingConditions) {
1545
- continue;
1546
- }
1547
- const block = !isNonBlockingCondition(conditions);
1548
- urlPatterns.push({ urlPattern, block });
1549
- if (!block) {
1550
- const { ruleIds } = condition;
1551
- matchedNetworkConditions.push({ ruleIds, urlPattern, conditions });
1552
- }
1553
- }
1554
- }
1555
- if (globalConditions) {
1556
- matchedNetworkConditions.push({ conditions: globalConditions });
1557
- }
1558
- const promises = [];
1559
- for (const agent of agents) {
1560
- promises.push(agent.invoke_setBlockedURLs({ urlPatterns }));
1561
- promises.push(agent
1562
- .invoke_emulateNetworkConditionsByRule({
1563
- offline,
1564
- matchedNetworkConditions: matchedNetworkConditions.map(({ urlPattern, conditions }) => ({
1565
- urlPattern: urlPattern ?? '',
1566
- latency: conditions.latency,
1567
- downloadThroughput: conditions.download < 0 ? 0 : conditions.download,
1568
- uploadThroughput: conditions.upload < 0 ? 0 : conditions.upload,
1569
- packetLoss: (conditions.packetLoss ?? 0) < 0 ? 0 : conditions.packetLoss,
1570
- packetQueueLength: conditions.packetQueueLength,
1571
- packetReordering: conditions.packetReordering,
1572
- connectionType: NetworkManager.connectionType(conditions),
1573
- }))
1574
- })
1575
- .then(response => {
1576
- if (!response.getError()) {
1577
- for (let i = 0; i < response.ruleIds.length; ++i) {
1578
- const ruleId = response.ruleIds[i];
1579
- const { ruleIds, conditions, urlPattern } = matchedNetworkConditions[i];
1580
- if (ruleIds) {
1581
- this.#requestConditionsById.set(ruleId, { urlPattern, conditions });
1582
- matchedNetworkConditions[i].ruleIds?.add(ruleId);
1583
- }
1584
- }
1585
- }
1586
- }));
1587
- promises.push(agent.invoke_overrideNetworkState({
1588
- offline,
1589
- latency: globalConditions?.latency ?? 0,
1590
- downloadThroughput: globalConditions?.download ?? -1,
1591
- uploadThroughput: globalConditions?.upload ?? -1,
1592
- connectionType: globalConditions ? NetworkManager.connectionType(globalConditions) :
1593
- "none" /* Protocol.Network.ConnectionType.None */,
1594
- }));
1595
- }
1596
- this.#conditionsAppliedForTestPromise = this.#conditionsAppliedForTestPromise.then(() => Promise.all(promises));
1597
- return urlPatterns.length > 0;
1598
- }
1599
- const urls = this.conditionsEnabled ?
1600
- this.#conditions.filter(condition => condition.enabled && condition.wildcardURL)
1601
- .map(condition => condition.wildcardURL) :
1602
- [];
1603
- for (const agent of agents) {
1604
- void agent.invoke_setBlockedURLs({ urls });
1605
- }
1606
- return urls.length > 0;
1607
- }
1608
- conditionsAppliedForTest() {
1609
- return this.#conditionsAppliedForTestPromise;
1610
- }
1611
- conditionsForId(appliedNetworkConditionsId) {
1612
- const requestConditions = this.#requestConditionsById.get(appliedNetworkConditionsId);
1613
- if (!requestConditions) {
1614
- return undefined;
1615
- }
1616
- const { conditions, urlPattern } = requestConditions;
1617
- return new AppliedNetworkConditions(conditions, appliedNetworkConditionsId, urlPattern);
1618
- }
1619
- }
1620
- _a = RequestConditions;
1621
- export class AppliedNetworkConditions {
1622
- conditions;
1623
- appliedNetworkConditionsId;
1624
- urlPattern;
1625
- constructor(conditions, appliedNetworkConditionsId, urlPattern) {
1626
- this.conditions = conditions;
1627
- this.appliedNetworkConditionsId = appliedNetworkConditionsId;
1628
- this.urlPattern = urlPattern;
1629
- }
1630
- }
1631
- export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrapper {
1632
- #targetManager;
1633
- #userAgentOverride = '';
1634
- #userAgentMetadataOverride = null;
1635
- #customAcceptedEncodings = null;
1636
- #networkAgents = new Set();
1637
- #fetchAgents = new Set();
1638
- inflightMainResourceRequests = new Map();
1639
- #networkConditions = NoThrottlingConditions;
1640
- #updatingInterceptionPatternsPromise = null;
1641
- #requestConditions = new RequestConditions();
1642
- #urlsForRequestInterceptor = new Platform.MapUtilities.Multimap();
1643
- #extraHeaders;
1644
- #customUserAgent;
1645
- #isBlocking = false;
1646
- constructor(targetManager) {
1647
- super();
1648
- this.#targetManager = targetManager;
1649
- // TODO(allada) Remove these and merge it with request interception.
1650
- const blockedPatternChanged = () => {
1651
- this.updateBlockedPatterns();
1652
- this.dispatchEventToListeners("BlockedPatternsChanged" /* MultitargetNetworkManager.Events.BLOCKED_PATTERNS_CHANGED */);
1653
- };
1654
- this.#requestConditions.addEventListener("request-conditions-changed" /* RequestConditions.Events.REQUEST_CONDITIONS_CHANGED */, blockedPatternChanged);
1655
- this.updateBlockedPatterns();
1656
- this.#targetManager.observeModels(NetworkManager, this);
1657
- }
1658
- static instance(opts = { forceNew: null }) {
1659
- const { forceNew, targetManager } = opts;
1660
- if (!Root.DevToolsContext.globalInstance().has(MultitargetNetworkManager) || forceNew) {
1661
- Root.DevToolsContext.globalInstance().set(MultitargetNetworkManager, new MultitargetNetworkManager(targetManager ?? TargetManager.instance()));
1662
- }
1663
- return Root.DevToolsContext.globalInstance().get(MultitargetNetworkManager);
1664
- }
1665
- static dispose() {
1666
- Root.DevToolsContext.globalInstance().delete(MultitargetNetworkManager);
1667
- }
1668
- static patchUserAgentWithChromeVersion(uaString) {
1669
- // Patches Chrome/ChrOS version from user #agent ("1.2.3.4" when user #agent is: "Chrome/1.2.3.4").
1670
- // Otherwise, ignore it. This assumes additional appVersions appear after the Chrome version.
1671
- const chromeVersion = Root.Runtime.getChromeVersion();
1672
- if (chromeVersion.length > 0) {
1673
- // "1.2.3.4" becomes "1.0.100.0"
1674
- const additionalAppVersion = chromeVersion.split('.', 1)[0] + '.0.100.0';
1675
- return Platform.StringUtilities.sprintf(uaString, chromeVersion, additionalAppVersion);
1676
- }
1677
- return uaString;
1678
- }
1679
- static patchUserAgentMetadataWithChromeVersion(userAgentMetadata) {
1680
- // Patches Chrome/ChrOS version from user #agent metadata ("1.2.3.4" when user #agent is: "Chrome/1.2.3.4").
1681
- // Otherwise, ignore it. This assumes additional appVersions appear after the Chrome version.
1682
- if (!userAgentMetadata.brands) {
1683
- return;
1684
- }
1685
- const chromeVersion = Root.Runtime.getChromeVersion();
1686
- if (chromeVersion.length === 0) {
1687
- return;
1688
- }
1689
- const majorVersion = chromeVersion.split('.', 1)[0];
1690
- for (const brand of userAgentMetadata.brands) {
1691
- if (brand.version.includes('%s')) {
1692
- brand.version = Platform.StringUtilities.sprintf(brand.version, majorVersion);
1693
- }
1694
- }
1695
- if (userAgentMetadata.fullVersion) {
1696
- if (userAgentMetadata.fullVersion.includes('%s')) {
1697
- userAgentMetadata.fullVersion = Platform.StringUtilities.sprintf(userAgentMetadata.fullVersion, chromeVersion);
1698
- }
1699
- }
1700
- }
1701
- modelAdded(networkManager) {
1702
- const networkAgent = networkManager.target().networkAgent();
1703
- const fetchAgent = networkManager.target().fetchAgent();
1704
- if (this.#extraHeaders) {
1705
- void networkAgent.invoke_setExtraHTTPHeaders({ headers: this.#extraHeaders });
1706
- }
1707
- if (this.currentUserAgent()) {
1708
- void networkAgent.invoke_setUserAgentOverride({ userAgent: this.currentUserAgent(), userAgentMetadata: this.#userAgentMetadataOverride || undefined });
1709
- }
1710
- this.#requestConditions.applyConditions(this.isOffline(), this.isThrottling() ? this.#networkConditions : null, networkAgent);
1711
- if (this.isIntercepting()) {
1712
- void fetchAgent.invoke_enable({ patterns: this.#urlsForRequestInterceptor.valuesArray() });
1713
- }
1714
- if (this.#customAcceptedEncodings === null) {
1715
- void networkAgent.invoke_clearAcceptedEncodingsOverride();
1716
- }
1717
- else {
1718
- void networkAgent.invoke_setAcceptedEncodings({ encodings: this.#customAcceptedEncodings });
1719
- }
1720
- this.#networkAgents.add(networkAgent);
1721
- this.#fetchAgents.add(fetchAgent);
1722
- if (this.isThrottling() && !Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1723
- this.updateNetworkConditions(networkAgent);
1724
- }
1725
- }
1726
- modelRemoved(networkManager) {
1727
- for (const entry of this.inflightMainResourceRequests) {
1728
- const manager = NetworkManager.forRequest((entry[1]));
1729
- if (manager !== networkManager) {
1730
- continue;
1731
- }
1732
- this.inflightMainResourceRequests.delete((entry[0]));
1733
- }
1734
- this.#networkAgents.delete(networkManager.target().networkAgent());
1735
- this.#fetchAgents.delete(networkManager.target().fetchAgent());
1736
- }
1737
- isThrottling() {
1738
- return this.#networkConditions.download >= 0 || this.#networkConditions.upload >= 0 ||
1739
- this.#networkConditions.latency > 0;
1740
- }
1741
- isOffline() {
1742
- return !this.#networkConditions.download && !this.#networkConditions.upload;
1743
- }
1744
- setNetworkConditions(conditions) {
1745
- this.#networkConditions = conditions;
1746
- if (Root.Runtime.hostConfig.devToolsIndividualRequestThrottling?.enabled) {
1747
- this.#requestConditions.applyConditions(this.isOffline(), this.isThrottling() ? this.#networkConditions : null, ...this.#networkAgents);
1748
- }
1749
- else {
1750
- for (const agent of this.#networkAgents) {
1751
- this.updateNetworkConditions(agent);
1752
- }
1753
- }
1754
- this.dispatchEventToListeners("ConditionsChanged" /* MultitargetNetworkManager.Events.CONDITIONS_CHANGED */);
1755
- }
1756
- networkConditions() {
1757
- return this.#networkConditions;
1758
- }
1759
- updateNetworkConditions(networkAgent) {
1760
- const conditions = this.#networkConditions;
1761
- if (!this.isThrottling()) {
1762
- void networkAgent.invoke_emulateNetworkConditions({
1763
- offline: false,
1764
- latency: 0,
1765
- downloadThroughput: 0,
1766
- uploadThroughput: 0,
1767
- });
1768
- }
1769
- else {
1770
- void networkAgent.invoke_emulateNetworkConditions({
1771
- offline: this.isOffline(),
1772
- latency: conditions.latency,
1773
- downloadThroughput: conditions.download < 0 ? 0 : conditions.download,
1774
- uploadThroughput: conditions.upload < 0 ? 0 : conditions.upload,
1775
- packetLoss: (conditions.packetLoss ?? 0) < 0 ? 0 : conditions.packetLoss,
1776
- packetQueueLength: conditions.packetQueueLength,
1777
- packetReordering: conditions.packetReordering,
1778
- connectionType: NetworkManager.connectionType(conditions),
1779
- });
1780
- }
1781
- }
1782
- setExtraHTTPHeaders(headers) {
1783
- this.#extraHeaders = headers;
1784
- for (const agent of this.#networkAgents) {
1785
- void agent.invoke_setExtraHTTPHeaders({ headers: this.#extraHeaders });
1786
- }
1787
- }
1788
- currentUserAgent() {
1789
- return this.#customUserAgent ? this.#customUserAgent : this.#userAgentOverride;
1790
- }
1791
- updateUserAgentOverride() {
1792
- const userAgent = this.currentUserAgent();
1793
- for (const agent of this.#networkAgents) {
1794
- void agent.invoke_setUserAgentOverride({ userAgent, userAgentMetadata: this.#userAgentMetadataOverride || undefined });
1795
- }
1796
- }
1797
- setUserAgentOverride(userAgent, userAgentMetadataOverride) {
1798
- const uaChanged = (this.#userAgentOverride !== userAgent);
1799
- this.#userAgentOverride = userAgent;
1800
- if (!this.#customUserAgent) {
1801
- this.#userAgentMetadataOverride = userAgentMetadataOverride;
1802
- this.updateUserAgentOverride();
1803
- }
1804
- else {
1805
- this.#userAgentMetadataOverride = null;
1806
- }
1807
- if (uaChanged) {
1808
- this.dispatchEventToListeners("UserAgentChanged" /* MultitargetNetworkManager.Events.USER_AGENT_CHANGED */);
1809
- }
1810
- }
1811
- setCustomUserAgentOverride(userAgent, userAgentMetadataOverride = null) {
1812
- this.#customUserAgent = userAgent;
1813
- this.#userAgentMetadataOverride = userAgentMetadataOverride;
1814
- this.updateUserAgentOverride();
1815
- }
1816
- setCustomAcceptedEncodingsOverride(acceptedEncodings) {
1817
- this.#customAcceptedEncodings = acceptedEncodings;
1818
- this.updateAcceptedEncodingsOverride();
1819
- this.dispatchEventToListeners("AcceptedEncodingsChanged" /* MultitargetNetworkManager.Events.ACCEPTED_ENCODINGS_CHANGED */);
1820
- }
1821
- clearCustomAcceptedEncodingsOverride() {
1822
- this.#customAcceptedEncodings = null;
1823
- this.updateAcceptedEncodingsOverride();
1824
- this.dispatchEventToListeners("AcceptedEncodingsChanged" /* MultitargetNetworkManager.Events.ACCEPTED_ENCODINGS_CHANGED */);
1825
- }
1826
- isAcceptedEncodingOverrideSet() {
1827
- return this.#customAcceptedEncodings !== null;
1828
- }
1829
- updateAcceptedEncodingsOverride() {
1830
- const customAcceptedEncodings = this.#customAcceptedEncodings;
1831
- for (const agent of this.#networkAgents) {
1832
- if (customAcceptedEncodings === null) {
1833
- void agent.invoke_clearAcceptedEncodingsOverride();
1834
- }
1835
- else {
1836
- void agent.invoke_setAcceptedEncodings({ encodings: customAcceptedEncodings });
1837
- }
1838
- }
1839
- }
1840
- get requestConditions() {
1841
- return this.#requestConditions;
1842
- }
1843
- isBlocking() {
1844
- return this.#isBlocking && this.requestConditions.conditionsEnabled;
1845
- }
1846
- /**
1847
- * @deprecated Kept for layout tests
1848
- * TODO(pfaffe) remove
1849
- */
1850
- setBlockingEnabled(enabled) {
1851
- this.requestConditions.conditionsEnabled = enabled;
1852
- }
1853
- /**
1854
- * @deprecated Kept for layout tests
1855
- * TODO(pfaffe) remove
1856
- */
1857
- setBlockedPatterns(patterns) {
1858
- this.requestConditions.clear();
1859
- this.requestConditions.add(...patterns.map(pattern => RequestCondition.createFromSetting(pattern)));
1860
- }
1861
- updateBlockedPatterns() {
1862
- this.#isBlocking = this.#requestConditions.applyConditions(this.isOffline(), this.isThrottling() ? this.#networkConditions : null, ...this.#networkAgents);
1863
- }
1864
- isIntercepting() {
1865
- return Boolean(this.#urlsForRequestInterceptor.size);
1866
- }
1867
- setInterceptionHandlerForPatterns(patterns, requestInterceptor) {
1868
- // Note: requestInterceptors may receive interception #requests for patterns they did not subscribe to.
1869
- this.#urlsForRequestInterceptor.deleteAll(requestInterceptor);
1870
- for (const newPattern of patterns) {
1871
- this.#urlsForRequestInterceptor.set(requestInterceptor, newPattern);
1872
- }
1873
- return this.updateInterceptionPatternsOnNextTick();
1874
- }
1875
- updateInterceptionPatternsOnNextTick() {
1876
- // This is used so we can register and unregister patterns in loops without sending lots of protocol messages.
1877
- if (!this.#updatingInterceptionPatternsPromise) {
1878
- this.#updatingInterceptionPatternsPromise = Promise.resolve().then(this.updateInterceptionPatterns.bind(this));
1879
- }
1880
- return this.#updatingInterceptionPatternsPromise;
1881
- }
1882
- async updateInterceptionPatterns() {
1883
- if (!Common.Settings.Settings.instance().moduleSetting('cache-disabled').get()) {
1884
- Common.Settings.Settings.instance().moduleSetting('cache-disabled').set(true);
1885
- }
1886
- this.#updatingInterceptionPatternsPromise = null;
1887
- const promises = [];
1888
- for (const agent of this.#fetchAgents) {
1889
- promises.push(agent.invoke_enable({ patterns: this.#urlsForRequestInterceptor.valuesArray() }));
1890
- }
1891
- this.dispatchEventToListeners("InterceptorsChanged" /* MultitargetNetworkManager.Events.INTERCEPTORS_CHANGED */);
1892
- await Promise.all(promises);
1893
- }
1894
- async requestIntercepted(interceptedRequest) {
1895
- for (const requestInterceptor of this.#urlsForRequestInterceptor.keysArray()) {
1896
- await requestInterceptor(interceptedRequest);
1897
- if (interceptedRequest.hasResponded() && interceptedRequest.networkRequest) {
1898
- this.dispatchEventToListeners("RequestIntercepted" /* MultitargetNetworkManager.Events.REQUEST_INTERCEPTED */, interceptedRequest.networkRequest.requestId());
1899
- return;
1900
- }
1901
- }
1902
- if (!interceptedRequest.hasResponded()) {
1903
- interceptedRequest.continueRequestWithoutChange();
1904
- }
1905
- }
1906
- clearBrowserCache() {
1907
- for (const agent of this.#networkAgents) {
1908
- void agent.invoke_clearBrowserCache();
1909
- }
1910
- }
1911
- clearBrowserCookies() {
1912
- for (const agent of this.#networkAgents) {
1913
- void agent.invoke_clearBrowserCookies();
1914
- }
1915
- }
1916
- async getCertificate(origin) {
1917
- const target = this.#targetManager.primaryPageTarget();
1918
- if (!target) {
1919
- return [];
1920
- }
1921
- const certificate = await target.networkAgent().invoke_getCertificate({ origin });
1922
- if (!certificate) {
1923
- return [];
1924
- }
1925
- return certificate.tableNames;
1926
- }
1927
- appliedRequestConditions(requestInternal) {
1928
- if (!requestInternal.appliedNetworkConditionsId) {
1929
- return undefined;
1930
- }
1931
- return this.requestConditions.conditionsForId(requestInternal.appliedNetworkConditionsId);
1932
- }
1933
- }
1934
- export class InterceptedRequest {
1935
- #fetchAgent;
1936
- #hasResponded = false;
1937
- request;
1938
- resourceType;
1939
- responseStatusCode;
1940
- responseHeaders;
1941
- requestId;
1942
- networkRequest;
1943
- constructor(fetchAgent, request, resourceType, requestId, networkRequest, responseStatusCode, responseHeaders) {
1944
- this.#fetchAgent = fetchAgent;
1945
- this.request = request;
1946
- this.resourceType = resourceType;
1947
- this.responseStatusCode = responseStatusCode;
1948
- this.responseHeaders = responseHeaders;
1949
- this.requestId = requestId;
1950
- this.networkRequest = networkRequest;
1951
- }
1952
- hasResponded() {
1953
- return this.#hasResponded;
1954
- }
1955
- static mergeSetCookieHeaders(originalSetCookieHeaders, setCookieHeadersFromOverrides) {
1956
- // Generates a map containing the `set-cookie` headers. Valid `set-cookie`
1957
- // headers are stored by the cookie name. Malformed `set-cookie` headers are
1958
- // stored by the whole header value. Duplicates are allowed.
1959
- const generateHeaderMap = (headers) => {
1960
- const result = new Map();
1961
- for (const header of headers) {
1962
- // The regex matches cookie headers of the form '<header-name>=<header-value>'.
1963
- // <header-name> is a token as defined in https://www.rfc-editor.org/rfc/rfc9110.html#name-tokens.
1964
- // The shape of <header-value> is not being validated at all here.
1965
- const match = header.value.match(/^([a-zA-Z0-9!#$%&'*+.^_`|~-]+=)(.*)$/);
1966
- if (match) {
1967
- if (result.has(match[1])) {
1968
- result.get(match[1])?.push(header.value);
1969
- }
1970
- else {
1971
- result.set(match[1], [header.value]);
1972
- }
1973
- }
1974
- else if (result.has(header.value)) {
1975
- result.get(header.value)?.push(header.value);
1976
- }
1977
- else {
1978
- result.set(header.value, [header.value]);
1979
- }
1980
- }
1981
- return result;
1982
- };
1983
- const originalHeadersMap = generateHeaderMap(originalSetCookieHeaders);
1984
- const overridesHeaderMap = generateHeaderMap(setCookieHeadersFromOverrides);
1985
- // Iterate over original headers. If the same key is found among the
1986
- // overrides, use those instead.
1987
- const mergedHeaders = [];
1988
- for (const [key, headerValues] of originalHeadersMap) {
1989
- if (overridesHeaderMap.has(key)) {
1990
- for (const headerValue of overridesHeaderMap.get(key) || []) {
1991
- mergedHeaders.push({ name: 'set-cookie', value: headerValue });
1992
- }
1993
- }
1994
- else {
1995
- for (const headerValue of headerValues) {
1996
- mergedHeaders.push({ name: 'set-cookie', value: headerValue });
1997
- }
1998
- }
1999
- }
2000
- // Finally add all overrides which have not been added yet.
2001
- for (const [key, headerValues] of overridesHeaderMap) {
2002
- if (originalHeadersMap.has(key)) {
2003
- continue;
2004
- }
2005
- for (const headerValue of headerValues) {
2006
- mergedHeaders.push({ name: 'set-cookie', value: headerValue });
2007
- }
2008
- }
2009
- return mergedHeaders;
2010
- }
2011
- async continueRequestWithContent(contentBlob, encoded, responseHeaders, isBodyOverridden) {
2012
- this.#hasResponded = true;
2013
- const body = encoded ? await contentBlob.text() : await Common.Base64.encode(contentBlob).catch(err => {
2014
- console.error(err);
2015
- return '';
2016
- });
2017
- const responseCode = isBodyOverridden ? 200 : (this.responseStatusCode || 200);
2018
- if (this.networkRequest) {
2019
- const originalSetCookieHeaders = this.networkRequest?.originalResponseHeaders.filter(header => header.name === 'set-cookie') || [];
2020
- const setCookieHeadersFromOverrides = responseHeaders.filter(header => header.name === 'set-cookie');
2021
- this.networkRequest.setCookieHeaders =
2022
- InterceptedRequest.mergeSetCookieHeaders(originalSetCookieHeaders, setCookieHeadersFromOverrides);
2023
- this.networkRequest.hasOverriddenContent = isBodyOverridden;
2024
- }
2025
- void this.#fetchAgent.invoke_fulfillRequest({ requestId: this.requestId, responseCode, body, responseHeaders });
2026
- MultitargetNetworkManager.instance().dispatchEventToListeners("RequestFulfilled" /* MultitargetNetworkManager.Events.REQUEST_FULFILLED */, this.request.url);
2027
- }
2028
- continueRequestWithoutChange() {
2029
- console.assert(!this.#hasResponded);
2030
- this.#hasResponded = true;
2031
- void this.#fetchAgent.invoke_continueRequest({ requestId: this.requestId });
2032
- }
2033
- async responseBody() {
2034
- const response = await this.#fetchAgent.invoke_getResponseBody({ requestId: this.requestId });
2035
- const error = response.getError();
2036
- if (error) {
2037
- return { error };
2038
- }
2039
- const { mimeType, charset } = this.getMimeTypeAndCharset();
2040
- return new TextUtils.ContentData.ContentData(response.body, response.base64Encoded, mimeType ?? 'application/octet-stream', charset ?? undefined);
2041
- }
2042
- isRedirect() {
2043
- return this.responseStatusCode !== undefined && this.responseStatusCode >= 300 && this.responseStatusCode < 400;
2044
- }
2045
- /**
2046
- * Tries to determine the MIME type and charset for this intercepted request.
2047
- * Looks at the intercepted response headers first (for Content-Type header), then
2048
- * checks the `NetworkRequest` if we have one.
2049
- */
2050
- getMimeTypeAndCharset() {
2051
- for (const header of this.responseHeaders ?? []) {
2052
- if (header.name.toLowerCase() === 'content-type') {
2053
- return Platform.MimeType.parseContentType(header.value);
2054
- }
2055
- }
2056
- const mimeType = this.networkRequest?.mimeType ?? null;
2057
- const charset = this.networkRequest?.charset() ?? null;
2058
- return { mimeType, charset };
2059
- }
2060
- }
2061
- /**
2062
- * Helper class to match #requests created from requestWillBeSent with
2063
- * requestWillBeSentExtraInfo and responseReceivedExtraInfo when they have the
2064
- * same requestId due to redirects.
2065
- */
2066
- class ExtraInfoBuilder {
2067
- #requests = [];
2068
- #responseExtraInfoFlag = [];
2069
- #requestExtraInfos = [];
2070
- #responseExtraInfos = [];
2071
- #responseEarlyHintsHeaders = [];
2072
- #finished = false;
2073
- addRequest(req) {
2074
- this.#requests.push(req);
2075
- this.sync(this.#requests.length - 1);
2076
- }
2077
- addHasExtraInfo(hasExtraInfo) {
2078
- this.#responseExtraInfoFlag.push(hasExtraInfo);
2079
- // This comes in response, so it can't come before request or after next
2080
- // request in the redirect chain.
2081
- console.assert(this.#requests.length === this.#responseExtraInfoFlag.length, 'request/response count mismatch');
2082
- if (!hasExtraInfo) {
2083
- // We may potentially have gotten extra infos from the next redirect
2084
- // request already. Account for that by inserting null for missing
2085
- // extra infos at current position.
2086
- this.#requestExtraInfos.splice(this.#requests.length - 1, 0, null);
2087
- this.#responseExtraInfos.splice(this.#requests.length - 1, 0, null);
2088
- }
2089
- this.sync(this.#requests.length - 1);
2090
- }
2091
- addRequestExtraInfo(info) {
2092
- this.#requestExtraInfos.push(info);
2093
- this.sync(this.#requestExtraInfos.length - 1);
2094
- }
2095
- addResponseExtraInfo(info) {
2096
- this.#responseExtraInfos.push(info);
2097
- this.sync(this.#responseExtraInfos.length - 1);
2098
- }
2099
- setEarlyHintsHeaders(earlyHintsHeaders) {
2100
- this.#responseEarlyHintsHeaders = earlyHintsHeaders;
2101
- this.updateFinalRequest();
2102
- }
2103
- finished() {
2104
- this.#finished = true;
2105
- // We may have missed responseReceived event in case of failure.
2106
- // That said, the ExtraInfo events still may be here, so mark them
2107
- // as present. Event if they are not, this is harmless.
2108
- // TODO(caseq): consider if we need to report hasExtraInfo in the
2109
- // loadingFailed event.
2110
- if (this.#responseExtraInfoFlag.length < this.#requests.length) {
2111
- this.#responseExtraInfoFlag.push(true);
2112
- this.sync(this.#responseExtraInfoFlag.length - 1);
2113
- }
2114
- console.assert(this.#requests.length === this.#responseExtraInfoFlag.length, 'request/response count mismatch when request finished');
2115
- this.updateFinalRequest();
2116
- }
2117
- isFinished() {
2118
- return this.#finished;
2119
- }
2120
- sync(index) {
2121
- const req = this.#requests[index];
2122
- if (!req) {
2123
- return;
2124
- }
2125
- // No response yet, so we don't know if extra info would
2126
- // be there, bail out for now.
2127
- if (index >= this.#responseExtraInfoFlag.length) {
2128
- return;
2129
- }
2130
- if (!this.#responseExtraInfoFlag[index]) {
2131
- return;
2132
- }
2133
- const requestExtraInfo = this.#requestExtraInfos[index];
2134
- if (requestExtraInfo) {
2135
- req.addExtraRequestInfo(requestExtraInfo);
2136
- this.#requestExtraInfos[index] = null;
2137
- }
2138
- const responseExtraInfo = this.#responseExtraInfos[index];
2139
- if (responseExtraInfo) {
2140
- req.addExtraResponseInfo(responseExtraInfo);
2141
- this.#responseExtraInfos[index] = null;
2142
- }
2143
- }
2144
- finalRequest() {
2145
- if (!this.#finished) {
2146
- return null;
2147
- }
2148
- return this.#requests[this.#requests.length - 1] || null;
2149
- }
2150
- updateFinalRequest() {
2151
- if (!this.#finished) {
2152
- return;
2153
- }
2154
- const finalRequest = this.finalRequest();
2155
- finalRequest?.setEarlyHintsHeaders(this.#responseEarlyHintsHeaders);
2156
- }
2157
- }
2158
- SDKModel.register(NetworkManager, { capabilities: 16 /* Capability.NETWORK */, autostart: true });
2159
- export function networkConditionsEqual(first, second) {
2160
- if ('block' in first || 'block' in second) {
2161
- if ('block' in first && 'block' in second) {
2162
- const firstTitle = (typeof first.title === 'function' ? first.title() : first.title);
2163
- const secondTitle = (typeof second.title === 'function' ? second.title() : second.title);
2164
- return firstTitle === secondTitle && first.block === second.block;
2165
- }
2166
- return false;
2167
- }
2168
- // Caution: titles might be different function instances, which produce
2169
- // the same value.
2170
- // We prefer to use the i18nTitleKey to prevent against locale changes or
2171
- // UIString changes that might change the value vs what the user has stored
2172
- // locally.
2173
- const firstTitle = first.i18nTitleKey || (typeof first.title === 'function' ? first.title() : first.title);
2174
- const secondTitle = second.i18nTitleKey || (typeof second.title === 'function' ? second.title() : second.title);
2175
- return second.download === first.download && second.upload === first.upload && second.latency === first.latency &&
2176
- first.packetLoss === second.packetLoss && first.packetQueueLength === second.packetQueueLength &&
2177
- first.packetReordering === second.packetReordering && secondTitle === firstTitle;
2178
- }
2179
- export const THROTTLING_CONDITIONS_LOOKUP = new Map([
2180
- ["NO_THROTTLING" /* PredefinedThrottlingConditionKey.NO_THROTTLING */, NoThrottlingConditions],
2181
- ["OFFLINE" /* PredefinedThrottlingConditionKey.OFFLINE */, OfflineConditions],
2182
- ["SPEED_3G" /* PredefinedThrottlingConditionKey.SPEED_3G */, Slow3GConditions],
2183
- ["SPEED_SLOW_4G" /* PredefinedThrottlingConditionKey.SPEED_SLOW_4G */, Slow4GConditions],
2184
- ["SPEED_FAST_4G" /* PredefinedThrottlingConditionKey.SPEED_FAST_4G */, Fast4GConditions]
2185
- ]);
2186
- function keyIsPredefined(key) {
2187
- return !key.startsWith('USER_CUSTOM_SETTING_');
2188
- }
2189
- export function keyIsCustomUser(key) {
2190
- return key.startsWith('USER_CUSTOM_SETTING_');
2191
- }
2192
- export function getPredefinedCondition(key) {
2193
- if (!keyIsPredefined(key)) {
2194
- return null;
2195
- }
2196
- return THROTTLING_CONDITIONS_LOOKUP.get(key) ?? null;
2197
- }
2198
- export function getPredefinedOrBlockingCondition(key) {
2199
- return key === "BLOCKING" /* PredefinedThrottlingConditionKey.BLOCKING */ ? BlockingConditions : getPredefinedCondition(key);
2200
- }
2201
- /**
2202
- * For the given Round Trip Time (in MilliSeconds), return the best throttling conditions.
2203
- */
2204
- export function getRecommendedNetworkPreset(rtt) {
2205
- const RTT_COMPARISON_THRESHOLD = 200;
2206
- const RTT_MINIMUM = 60;
2207
- if (!Number.isFinite(rtt)) {
2208
- return null;
2209
- }
2210
- if (rtt < RTT_MINIMUM) {
2211
- return null;
2212
- }
2213
- // We pick from the set of presets in the panel but do not want to allow
2214
- // the "No Throttling" option to be picked.
2215
- const presets = THROTTLING_CONDITIONS_LOOKUP.values()
2216
- .filter(condition => {
2217
- return condition !== NoThrottlingConditions;
2218
- })
2219
- .toArray();
2220
- let closestPreset = null;
2221
- let smallestDiff = Infinity;
2222
- for (const preset of presets) {
2223
- const { targetLatency } = preset;
2224
- if (!targetLatency) {
2225
- continue;
2226
- }
2227
- const diff = Math.abs(targetLatency - rtt);
2228
- if (diff > RTT_COMPARISON_THRESHOLD) {
2229
- continue;
2230
- }
2231
- if (smallestDiff < diff) {
2232
- continue;
2233
- }
2234
- closestPreset = preset;
2235
- smallestDiff = diff;
2236
- }
2237
- return closestPreset;
2238
- }