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