patchright-core 1.57.0 → 1.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ThirdPartyNotices.txt +2688 -297
- package/browsers.json +23 -22
- package/lib/bootstrap.js +77 -0
- package/lib/cli/browserActions.js +308 -0
- package/lib/cli/driver.js +3 -2
- package/lib/cli/installActions.js +171 -0
- package/lib/cli/program.js +48 -413
- package/lib/client/android.js +4 -4
- package/lib/client/api.js +3 -0
- package/lib/client/browser.js +11 -5
- package/lib/client/browserContext.js +20 -23
- package/lib/client/browserType.js +23 -54
- package/lib/client/cdpSession.js +6 -2
- package/lib/client/channelOwner.js +1 -1
- package/lib/client/clientHelper.js +2 -1
- package/lib/client/clock.js +0 -1
- package/lib/client/{webSocket.js → connect.js} +57 -7
- package/lib/client/connection.js +8 -0
- package/lib/client/consoleMessage.js +3 -0
- package/lib/client/debugger.js +57 -0
- package/lib/client/dialog.js +8 -1
- package/lib/client/disposable.js +76 -0
- package/lib/client/electron.js +1 -0
- package/lib/client/elementHandle.js +1 -1
- package/lib/client/events.js +3 -0
- package/lib/client/fetch.js +2 -4
- package/lib/client/frame.js +9 -13
- package/lib/client/harRouter.js +13 -1
- package/lib/client/jsHandle.js +4 -8
- package/lib/client/locator.js +13 -36
- package/lib/client/network.js +14 -11
- package/lib/client/page.js +44 -50
- package/lib/client/screencast.js +88 -0
- package/lib/client/selectors.js +3 -1
- package/lib/client/tracing.js +11 -5
- package/lib/client/video.js +13 -20
- package/lib/client/worker.js +6 -6
- package/lib/generated/bindingsControllerSource.js +1 -1
- package/lib/generated/clockSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/generated/storageScriptSource.js +1 -1
- package/lib/generated/utilityScriptSource.js +1 -1
- package/lib/mcpBundle.js +78 -0
- package/lib/mcpBundleImpl.js +91 -0
- package/lib/protocol/serializers.js +5 -0
- package/lib/protocol/validator.js +228 -58
- package/lib/protocol/validatorPrimitives.js +1 -1
- package/lib/remote/playwrightConnection.js +10 -8
- package/lib/remote/playwrightPipeServer.js +100 -0
- package/lib/remote/playwrightServer.js +14 -10
- package/lib/remote/playwrightWebSocketServer.js +73 -0
- package/lib/remote/serverTransport.js +96 -0
- package/lib/server/android/android.js +2 -2
- package/lib/server/artifact.js +1 -1
- package/lib/server/bidi/bidiBrowser.js +80 -14
- package/lib/server/bidi/bidiChromium.js +23 -14
- package/lib/server/bidi/bidiConnection.js +1 -0
- package/lib/server/bidi/bidiDeserializer.js +116 -0
- package/lib/server/bidi/bidiExecutionContext.js +75 -29
- package/lib/server/bidi/bidiFirefox.js +6 -8
- package/lib/server/bidi/bidiNetworkManager.js +40 -12
- package/lib/server/bidi/bidiPage.js +67 -40
- package/lib/server/bidi/third_party/bidiProtocolCore.js +1 -0
- package/lib/server/bidi/third_party/firefoxPrefs.js +3 -1
- package/lib/server/browser.js +84 -21
- package/lib/server/browserContext.js +137 -77
- package/lib/server/browserType.js +26 -16
- package/lib/server/chromium/chromium.js +28 -31
- package/lib/server/chromium/chromiumSwitches.js +16 -4
- package/lib/server/chromium/crBrowser.js +40 -27
- package/lib/server/chromium/crConnection.js +0 -5
- package/lib/server/chromium/crDevTools.js +1 -2
- package/lib/server/chromium/crNetworkManager.js +54 -229
- package/lib/server/chromium/crPage.js +74 -260
- package/lib/server/chromium/crServiceWorker.js +7 -14
- package/lib/server/clock.js +33 -41
- package/lib/server/codegen/javascript.js +6 -29
- package/lib/server/console.js +5 -1
- package/lib/server/debugController.js +12 -6
- package/lib/server/debugger.js +40 -47
- package/lib/server/deviceDescriptorsSource.json +137 -137
- package/lib/server/dispatchers/browserContextDispatcher.js +30 -30
- package/lib/server/dispatchers/browserDispatcher.js +11 -5
- package/lib/server/dispatchers/browserTypeDispatcher.js +7 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -1
- package/lib/server/dispatchers/debuggerDispatcher.js +84 -0
- package/lib/server/dispatchers/dispatcher.js +7 -14
- package/lib/server/dispatchers/disposableDispatcher.js +39 -0
- package/lib/server/dispatchers/electronDispatcher.js +2 -1
- package/lib/server/dispatchers/frameDispatcher.js +7 -7
- package/lib/server/dispatchers/localUtilsDispatcher.js +37 -1
- package/lib/server/dispatchers/networkDispatchers.js +6 -5
- package/lib/server/dispatchers/pageDispatcher.js +101 -34
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +4 -5
- package/lib/server/disposable.js +41 -0
- package/lib/server/dom.js +56 -29
- package/lib/server/download.js +3 -2
- package/lib/server/electron/electron.js +17 -9
- package/lib/server/firefox/ffBrowser.js +9 -29
- package/lib/server/firefox/ffConnection.js +0 -5
- package/lib/server/firefox/ffInput.js +21 -5
- package/lib/server/firefox/ffNetworkManager.js +4 -4
- package/lib/server/firefox/ffPage.js +27 -33
- package/lib/server/firefox/firefox.js +6 -8
- package/lib/server/frameSelectors.js +14 -169
- package/lib/server/frames.js +263 -551
- package/lib/server/har/harRecorder.js +2 -2
- package/lib/server/har/harTracer.js +5 -4
- package/lib/server/input.js +49 -4
- package/lib/server/instrumentation.js +8 -0
- package/lib/server/javascript.js +6 -22
- package/lib/server/launchApp.js +0 -1
- package/lib/server/localUtils.js +6 -6
- package/lib/server/network.js +59 -20
- package/lib/server/overlay.js +138 -0
- package/lib/server/page.js +179 -157
- package/lib/server/progress.js +32 -6
- package/lib/server/recorder/recorderApp.js +84 -104
- package/lib/server/recorder.js +76 -40
- package/lib/server/registry/browserFetcher.js +6 -4
- package/lib/server/registry/index.js +222 -226
- package/lib/server/registry/nativeDeps.js +1 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +3 -0
- package/lib/server/screencast.js +137 -0
- package/lib/server/trace/recorder/snapshotter.js +2 -2
- package/lib/server/trace/recorder/snapshotterInjected.js +21 -1
- package/lib/server/trace/recorder/tracing.js +98 -47
- package/lib/server/trace/viewer/traceViewer.js +24 -21
- package/lib/server/usKeyboardLayout.js +7 -0
- package/lib/server/utils/comparators.js +1 -1
- package/lib/server/utils/disposable.js +32 -0
- package/lib/server/utils/eventsHelper.js +3 -1
- package/lib/server/utils/expectUtils.js +87 -2
- package/lib/server/utils/fileUtils.js +16 -2
- package/lib/server/utils/happyEyeballs.js +15 -12
- package/lib/server/utils/httpServer.js +10 -23
- package/lib/server/utils/network.js +39 -29
- package/lib/server/utils/processLauncher.js +8 -6
- package/lib/server/utils/zipFile.js +2 -2
- package/lib/server/videoRecorder.js +194 -0
- package/lib/server/webkit/webkit.js +4 -6
- package/lib/server/webkit/wkBrowser.js +1 -10
- package/lib/server/webkit/wkConnection.js +1 -6
- package/lib/server/webkit/wkInterceptableRequest.js +29 -1
- package/lib/server/webkit/wkPage.js +88 -57
- package/lib/server/webkit/wkWorkers.js +2 -1
- package/lib/serverRegistry.js +156 -0
- package/lib/tools/backend/browserBackend.js +79 -0
- package/lib/tools/backend/common.js +63 -0
- package/lib/tools/backend/config.js +41 -0
- package/lib/tools/backend/console.js +66 -0
- package/lib/tools/backend/context.js +296 -0
- package/lib/tools/backend/cookies.js +152 -0
- package/lib/tools/backend/devtools.js +69 -0
- package/lib/tools/backend/dialogs.js +59 -0
- package/lib/tools/backend/evaluate.js +64 -0
- package/lib/tools/backend/files.js +60 -0
- package/lib/tools/backend/form.js +64 -0
- package/lib/tools/backend/keyboard.js +155 -0
- package/lib/tools/backend/logFile.js +95 -0
- package/lib/tools/backend/mouse.js +168 -0
- package/lib/tools/backend/navigate.js +106 -0
- package/lib/tools/backend/network.js +135 -0
- package/lib/tools/backend/pdf.js +48 -0
- package/lib/tools/backend/response.js +305 -0
- package/lib/tools/backend/route.js +140 -0
- package/lib/tools/backend/runCode.js +77 -0
- package/lib/tools/backend/screenshot.js +88 -0
- package/lib/tools/backend/sessionLog.js +74 -0
- package/lib/tools/backend/snapshot.js +208 -0
- package/lib/tools/backend/storage.js +68 -0
- package/lib/tools/backend/tab.js +445 -0
- package/lib/tools/backend/tabs.js +67 -0
- package/lib/tools/backend/tool.js +47 -0
- package/lib/tools/backend/tools.js +102 -0
- package/lib/tools/backend/tracing.js +78 -0
- package/lib/tools/backend/utils.js +83 -0
- package/lib/tools/backend/verify.js +151 -0
- package/lib/tools/backend/video.js +98 -0
- package/lib/tools/backend/wait.js +63 -0
- package/lib/tools/backend/webstorage.js +223 -0
- package/lib/tools/cli-client/cli.js +6 -0
- package/lib/tools/cli-client/help.json +399 -0
- package/lib/tools/cli-client/minimist.js +128 -0
- package/lib/tools/cli-client/program.js +350 -0
- package/lib/tools/cli-client/registry.js +176 -0
- package/lib/tools/cli-client/session.js +289 -0
- package/lib/tools/cli-client/skill/SKILL.md +328 -0
- package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
- package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
- package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
- package/lib/tools/cli-client/skill/references/running-code.md +231 -0
- package/lib/tools/cli-client/skill/references/session-management.md +169 -0
- package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
- package/lib/tools/cli-client/skill/references/test-generation.md +88 -0
- package/lib/tools/cli-client/skill/references/tracing.md +139 -0
- package/lib/tools/cli-client/skill/references/video-recording.md +143 -0
- package/lib/tools/cli-daemon/command.js +73 -0
- package/lib/tools/cli-daemon/commands.js +956 -0
- package/lib/tools/cli-daemon/daemon.js +157 -0
- package/lib/tools/cli-daemon/helpGenerator.js +177 -0
- package/lib/tools/cli-daemon/program.js +129 -0
- package/lib/tools/dashboard/appIcon.png +0 -0
- package/lib/tools/dashboard/dashboardApp.js +284 -0
- package/lib/tools/dashboard/dashboardController.js +296 -0
- package/lib/tools/exports.js +60 -0
- package/lib/tools/mcp/browserFactory.js +233 -0
- package/lib/tools/mcp/cdpRelay.js +352 -0
- package/lib/tools/mcp/cli-stub.js +7 -0
- package/lib/tools/mcp/config.d.js +16 -0
- package/lib/tools/mcp/config.js +446 -0
- package/lib/tools/mcp/configIni.js +189 -0
- package/lib/tools/mcp/extensionContextFactory.js +55 -0
- package/lib/tools/mcp/index.js +62 -0
- package/lib/tools/mcp/log.js +35 -0
- package/lib/tools/mcp/program.js +107 -0
- package/lib/tools/mcp/protocol.js +28 -0
- package/lib/tools/mcp/watchdog.js +44 -0
- package/lib/tools/trace/SKILL.md +171 -0
- package/lib/tools/trace/installSkill.js +48 -0
- package/lib/tools/trace/traceActions.js +142 -0
- package/lib/tools/trace/traceAttachments.js +69 -0
- package/lib/tools/trace/traceCli.js +87 -0
- package/lib/tools/trace/traceConsole.js +97 -0
- package/lib/tools/trace/traceErrors.js +55 -0
- package/lib/tools/trace/traceOpen.js +69 -0
- package/lib/tools/trace/traceParser.js +96 -0
- package/lib/tools/trace/traceRequests.js +182 -0
- package/lib/tools/trace/traceScreenshot.js +68 -0
- package/lib/tools/trace/traceSnapshot.js +149 -0
- package/lib/tools/trace/traceUtils.js +153 -0
- package/lib/tools/utils/connect.js +32 -0
- package/lib/tools/utils/mcp/http.js +152 -0
- package/lib/tools/utils/mcp/server.js +230 -0
- package/lib/tools/utils/mcp/tool.js +47 -0
- package/lib/tools/utils/socketConnection.js +108 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +60 -2
- package/lib/utils/isomorphic/formatUtils.js +64 -0
- package/lib/utils/isomorphic/jsonSchema.js +89 -0
- package/lib/utils/isomorphic/lruCache.js +51 -0
- package/lib/utils/isomorphic/mimeType.js +7 -2
- package/lib/utils/isomorphic/protocolFormatter.js +2 -2
- package/lib/utils/isomorphic/protocolMetainfo.js +127 -98
- package/lib/utils/isomorphic/stringUtils.js +49 -0
- package/lib/utils/isomorphic/timeoutRunner.js +3 -3
- package/lib/utils/isomorphic/trace/entries.js +16 -0
- package/lib/utils/isomorphic/trace/snapshotRenderer.js +492 -0
- package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
- package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
- package/lib/utils/isomorphic/trace/traceLoader.js +132 -0
- package/lib/utils/isomorphic/trace/traceModel.js +366 -0
- package/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
- package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +54 -1
- package/lib/utils/isomorphic/utilityScriptSerializers.js +11 -0
- package/lib/utils/isomorphic/yaml.js +84 -0
- package/lib/utils.js +8 -2
- package/lib/utilsBundle.js +5 -26
- package/lib/utilsBundleImpl/index.js +172 -173
- package/lib/vite/dashboard/assets/index-BAOybkp8.js +50 -0
- package/lib/vite/dashboard/assets/index-CZAYOG76.css +1 -0
- package/lib/vite/dashboard/index.html +28 -0
- package/lib/vite/htmlReport/index.html +2 -70
- package/lib/vite/htmlReport/report.css +1 -0
- package/lib/vite/htmlReport/report.js +72 -0
- package/lib/vite/recorder/assets/codeMirrorModule-C8KMvO9L.js +32 -0
- package/lib/vite/recorder/assets/{codeMirrorModule-C3UTv-Ge.css → codeMirrorModule-DYBRYzYX.css} +1 -1
- package/lib/vite/recorder/assets/{index-Ri0uHF7I.css → index-BSjZa4pk.css} +1 -1
- package/lib/vite/recorder/assets/index-CqAYX1I3.js +193 -0
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DS0FLvoc.js +32 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-GTWI-W_B.js +262 -0
- package/lib/vite/traceViewer/{codeMirrorModule.C3UTv-Ge.css → codeMirrorModule.DYBRYzYX.css} +1 -1
- package/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
- package/lib/vite/traceViewer/index.CzXZzn5A.css +1 -0
- package/lib/vite/traceViewer/index.Dtstcb7U.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -4
- package/lib/vite/traceViewer/sw.bundle.js +5 -3
- package/lib/vite/traceViewer/uiMode.Vipi55dB.js +6 -0
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/lib/zipBundleImpl.js +2 -2
- package/lib/zodBundle.js +39 -0
- package/lib/zodBundleImpl.js +40 -0
- package/package.json +7 -1
- package/types/protocol.d.ts +1696 -221
- package/types/types.d.ts +879 -112
- package/lib/server/bidi/third_party/bidiDeserializer.js +0 -98
- package/lib/server/chromium/videoRecorder.js +0 -115
- package/lib/server/pageBinding.js +0 -87
- package/lib/server/trace/test/inMemorySnapshotter.js +0 -87
- package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +0 -248
- package/lib/vite/recorder/assets/codeMirrorModule-CBbSe-ZI.js +0 -25
- package/lib/vite/recorder/assets/index-CpZVd2nA.js +0 -193
- package/lib/vite/traceViewer/assets/codeMirrorModule-DHz0wP2C.js +0 -25
- package/lib/vite/traceViewer/assets/defaultSettingsView-WsZP88O6.js +0 -266
- package/lib/vite/traceViewer/defaultSettingsView.ConWv5KN.css +0 -1
- package/lib/vite/traceViewer/index.C4Y3Aw8n.css +0 -1
- package/lib/vite/traceViewer/index.C8xAeo93.js +0 -2
- package/lib/vite/traceViewer/uiMode.BltraIJB.js +0 -5
- /package/lib/{server/utils → utils/isomorphic}/imageUtils.js +0 -0
- /package/lib/utils/isomorphic/{traceUtils.js → trace/traceUtils.js} +0 -0
|
@@ -38,6 +38,7 @@ var import_bidiBrowser = require("./bidiBrowser");
|
|
|
38
38
|
var import_bidiConnection = require("./bidiConnection");
|
|
39
39
|
var import_chromiumSwitches = require("../chromium/chromiumSwitches");
|
|
40
40
|
var import_chromium = require("../chromium/chromium");
|
|
41
|
+
var import_crBrowser = require("../chromium/crBrowser");
|
|
41
42
|
class BidiChromium extends import_browserType.BrowserType {
|
|
42
43
|
constructor(parent) {
|
|
43
44
|
super(parent, "chromium");
|
|
@@ -56,14 +57,12 @@ class BidiChromium extends import_browserType.BrowserType {
|
|
|
56
57
|
throw e;
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
|
-
doRewriteStartupLog(
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return error;
|
|
66
|
-
error.logs = [
|
|
60
|
+
doRewriteStartupLog(logs) {
|
|
61
|
+
if (logs.includes("Missing X server"))
|
|
62
|
+
logs = "\n" + (0, import_ascii.wrapInASCIIBox)(import_browserType.kNoXServerRunningError, 1);
|
|
63
|
+
if (!logs.includes("crbug.com/357670") && !logs.includes("No usable sandbox!") && !logs.includes("crbug.com/638180"))
|
|
64
|
+
return logs;
|
|
65
|
+
return [
|
|
67
66
|
`Chromium sandboxing failed!`,
|
|
68
67
|
`================================`,
|
|
69
68
|
`To avoid the sandboxing issue, do either of the following:`,
|
|
@@ -72,7 +71,6 @@ class BidiChromium extends import_browserType.BrowserType {
|
|
|
72
71
|
`================================`,
|
|
73
72
|
``
|
|
74
73
|
].join("\n");
|
|
75
|
-
return error;
|
|
76
74
|
}
|
|
77
75
|
amendEnvironment(env) {
|
|
78
76
|
return env;
|
|
@@ -112,8 +110,6 @@ class BidiChromium extends import_browserType.BrowserType {
|
|
|
112
110
|
if (import_os.default.platform() === "darwin") {
|
|
113
111
|
chromeArguments.push("--enable-unsafe-swiftshader");
|
|
114
112
|
}
|
|
115
|
-
if (options.devtools)
|
|
116
|
-
chromeArguments.push("--auto-open-devtools-for-tabs");
|
|
117
113
|
if (options.headless) {
|
|
118
114
|
chromeArguments.push("--headless");
|
|
119
115
|
chromeArguments.push(
|
|
@@ -133,11 +129,9 @@ class BidiChromium extends import_browserType.BrowserType {
|
|
|
133
129
|
}
|
|
134
130
|
chromeArguments.push(`--proxy-server=${proxy.server}`);
|
|
135
131
|
const proxyBypassRules = [];
|
|
136
|
-
if (options.socksProxyPort)
|
|
137
|
-
proxyBypassRules.push("<-loopback>");
|
|
138
132
|
if (proxy.bypass)
|
|
139
133
|
proxyBypassRules.push(...proxy.bypass.split(",").map((t) => t.trim()).map((t) => t.startsWith(".") ? "*" + t : t));
|
|
140
|
-
if (
|
|
134
|
+
if (options.socksProxyPort || (0, import_crBrowser.shouldProxyLoopback)(proxy.bypass))
|
|
141
135
|
proxyBypassRules.push("<-loopback>");
|
|
142
136
|
if (proxyBypassRules.length > 0)
|
|
143
137
|
chromeArguments.push(`--proxy-bypass-list=${proxyBypassRules.join(";")}`);
|
|
@@ -145,6 +139,21 @@ class BidiChromium extends import_browserType.BrowserType {
|
|
|
145
139
|
chromeArguments.push(...args);
|
|
146
140
|
return chromeArguments;
|
|
147
141
|
}
|
|
142
|
+
getExecutableName(options) {
|
|
143
|
+
switch (options.channel) {
|
|
144
|
+
case "bidi-chromium":
|
|
145
|
+
return "chromium";
|
|
146
|
+
case "bidi-chrome":
|
|
147
|
+
return "chrome";
|
|
148
|
+
case "bidi-chrome-beta":
|
|
149
|
+
return "chrome-beta";
|
|
150
|
+
case "bidi-chrome-dev":
|
|
151
|
+
return "chrome-dev";
|
|
152
|
+
case "bidi-chrome-canary":
|
|
153
|
+
return "chrome-canary";
|
|
154
|
+
}
|
|
155
|
+
throw new Error(`Unsupported Bidi Chromium channel: ${options.channel}`);
|
|
156
|
+
}
|
|
148
157
|
}
|
|
149
158
|
const kBidiOverCdpWrapper = Symbol("kBidiConnectionWrapper");
|
|
150
159
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -173,6 +173,7 @@ class BidiSession extends import_events.EventEmitter {
|
|
|
173
173
|
this._browsingContexts.clear();
|
|
174
174
|
for (const callback of this._callbacks.values()) {
|
|
175
175
|
callback.error.type = this._crashed ? "crashed" : "closed";
|
|
176
|
+
callback.error.setMessage(`Internal server error, session ${callback.error.type}.`);
|
|
176
177
|
callback.error.logs = this.connection._browserDisconnectedLogs;
|
|
177
178
|
callback.reject(callback.error);
|
|
178
179
|
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var bidiDeserializer_exports = {};
|
|
20
|
+
__export(bidiDeserializer_exports, {
|
|
21
|
+
deserializeBidiValue: () => deserializeBidiValue
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(bidiDeserializer_exports);
|
|
24
|
+
var import_javascript = require("../javascript");
|
|
25
|
+
function deserializeBidiValue(result, internalIdMap = /* @__PURE__ */ new Map()) {
|
|
26
|
+
switch (result.type) {
|
|
27
|
+
case "undefined":
|
|
28
|
+
return void 0;
|
|
29
|
+
case "null":
|
|
30
|
+
return null;
|
|
31
|
+
case "number":
|
|
32
|
+
return typeof result.value === "number" ? result.value : (0, import_javascript.parseUnserializableValue)(result.value);
|
|
33
|
+
case "boolean":
|
|
34
|
+
return Boolean(result.value);
|
|
35
|
+
case "string":
|
|
36
|
+
return result.value;
|
|
37
|
+
case "bigint":
|
|
38
|
+
return BigInt(result.value);
|
|
39
|
+
case "array":
|
|
40
|
+
return deserializeBidiList(result, internalIdMap);
|
|
41
|
+
case "arraybuffer":
|
|
42
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
43
|
+
case "date":
|
|
44
|
+
return getValue(result, internalIdMap, () => new Date(result.value));
|
|
45
|
+
case "error":
|
|
46
|
+
return getValue(result, internalIdMap, () => {
|
|
47
|
+
const error = new Error();
|
|
48
|
+
error.stack = "";
|
|
49
|
+
return error;
|
|
50
|
+
});
|
|
51
|
+
case "function":
|
|
52
|
+
return void 0;
|
|
53
|
+
case "generator":
|
|
54
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
55
|
+
case "htmlcollection":
|
|
56
|
+
return { ...deserializeBidiList(result, internalIdMap) };
|
|
57
|
+
case "map":
|
|
58
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
59
|
+
case "node":
|
|
60
|
+
return "ref: <Node>";
|
|
61
|
+
case "nodelist":
|
|
62
|
+
return { ...deserializeBidiList(result, internalIdMap) };
|
|
63
|
+
case "object":
|
|
64
|
+
return deserializeBidiMapping(result, internalIdMap);
|
|
65
|
+
case "promise":
|
|
66
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
67
|
+
case "proxy":
|
|
68
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
69
|
+
case "regexp":
|
|
70
|
+
return getValue(result, internalIdMap, () => new RegExp(result.value.pattern, result.value.flags));
|
|
71
|
+
case "set":
|
|
72
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
73
|
+
case "symbol":
|
|
74
|
+
return void 0;
|
|
75
|
+
case "typedarray":
|
|
76
|
+
return void 0;
|
|
77
|
+
case "weakmap":
|
|
78
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
79
|
+
case "weakset":
|
|
80
|
+
return getValue(result, internalIdMap, () => ({}));
|
|
81
|
+
case "window":
|
|
82
|
+
return "ref: <Window>";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function getValue(bidiValue, internalIdMap, defaultValue) {
|
|
86
|
+
if ("internalId" in bidiValue && bidiValue.internalId) {
|
|
87
|
+
if (internalIdMap.has(bidiValue.internalId)) {
|
|
88
|
+
return internalIdMap.get(bidiValue.internalId);
|
|
89
|
+
} else {
|
|
90
|
+
const value = defaultValue();
|
|
91
|
+
internalIdMap.set(bidiValue.internalId, value);
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
94
|
+
} else {
|
|
95
|
+
return defaultValue();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function deserializeBidiList(bidiValue, internalIdMap) {
|
|
99
|
+
const result = getValue(bidiValue, internalIdMap, () => []);
|
|
100
|
+
for (const val of bidiValue.value || [])
|
|
101
|
+
result.push(deserializeBidiValue(val, internalIdMap));
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
function deserializeBidiMapping(bidiValue, internalIdMap) {
|
|
105
|
+
const result = getValue(bidiValue, internalIdMap, () => ({}));
|
|
106
|
+
for (const [serializedKey, serializedValue] of bidiValue.value || []) {
|
|
107
|
+
const key = typeof serializedKey === "string" ? serializedKey : deserializeBidiValue(serializedKey, internalIdMap);
|
|
108
|
+
const value = deserializeBidiValue(serializedValue, internalIdMap);
|
|
109
|
+
result[key] = value;
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
114
|
+
0 && (module.exports = {
|
|
115
|
+
deserializeBidiValue
|
|
116
|
+
});
|
|
@@ -36,9 +36,9 @@ var import_utils = require("../../utils");
|
|
|
36
36
|
var import_utilityScriptSerializers = require("../../utils/isomorphic/utilityScriptSerializers");
|
|
37
37
|
var js = __toESM(require("../javascript"));
|
|
38
38
|
var dom = __toESM(require("../dom"));
|
|
39
|
-
var import_bidiDeserializer = require("./third_party/bidiDeserializer");
|
|
40
39
|
var bidi = __toESM(require("./third_party/bidiProtocol"));
|
|
41
40
|
var import_bidiSerializer = require("./third_party/bidiSerializer");
|
|
41
|
+
var import_bidiDeserializer = require("./bidiDeserializer");
|
|
42
42
|
class BidiExecutionContext {
|
|
43
43
|
constructor(session, realmInfo) {
|
|
44
44
|
this._session = session;
|
|
@@ -65,7 +65,7 @@ class BidiExecutionContext {
|
|
|
65
65
|
userActivation: true
|
|
66
66
|
});
|
|
67
67
|
if (response.type === "success")
|
|
68
|
-
return import_bidiDeserializer.
|
|
68
|
+
return (0, import_bidiDeserializer.deserializeBidiValue)(response.result);
|
|
69
69
|
if (response.type === "exception")
|
|
70
70
|
throw new js.JavaScriptErrorInEvaluate(response.exceptionDetails.text);
|
|
71
71
|
throw new js.JavaScriptErrorInEvaluate("Unexpected response type: " + JSON.stringify(response));
|
|
@@ -108,7 +108,7 @@ class BidiExecutionContext {
|
|
|
108
108
|
throw new js.JavaScriptErrorInEvaluate(response.exceptionDetails.text);
|
|
109
109
|
if (response.type === "success") {
|
|
110
110
|
if (returnByValue)
|
|
111
|
-
return (0, import_utilityScriptSerializers.parseEvaluationResultValue)(import_bidiDeserializer.
|
|
111
|
+
return (0, import_utilityScriptSerializers.parseEvaluationResultValue)((0, import_bidiDeserializer.deserializeBidiValue)(response.result));
|
|
112
112
|
return createHandle(utilityScript._context, response.result);
|
|
113
113
|
}
|
|
114
114
|
throw new js.JavaScriptErrorInEvaluate("Unexpected response type: " + JSON.stringify(response));
|
|
@@ -123,7 +123,10 @@ class BidiExecutionContext {
|
|
|
123
123
|
}
|
|
124
124
|
return names2;
|
|
125
125
|
});
|
|
126
|
-
const values = await Promise.all(names.map((name) =>
|
|
126
|
+
const values = await Promise.all(names.map(async (name) => {
|
|
127
|
+
const value = await this._rawCallFunction("(object, name) => object[name]", [{ handle: handle._objectId }, { type: "string", value: name }], true, false);
|
|
128
|
+
return createHandle(handle._context, value);
|
|
129
|
+
}));
|
|
127
130
|
const map = /* @__PURE__ */ new Map();
|
|
128
131
|
for (let i = 0; i < names.length; i++)
|
|
129
132
|
map.set(names[i], values[i]);
|
|
@@ -152,7 +155,7 @@ class BidiExecutionContext {
|
|
|
152
155
|
return createHandle(context, result);
|
|
153
156
|
}
|
|
154
157
|
async contentFrameIdForFrame(handle) {
|
|
155
|
-
const contentWindow = await this._rawCallFunction("e => e.contentWindow", { handle: handle._objectId });
|
|
158
|
+
const contentWindow = await this._rawCallFunction("e => e.contentWindow", [{ handle: handle._objectId }]);
|
|
156
159
|
if (contentWindow?.type === "window")
|
|
157
160
|
return contentWindow.value.context;
|
|
158
161
|
return null;
|
|
@@ -166,17 +169,17 @@ class BidiExecutionContext {
|
|
|
166
169
|
return null;
|
|
167
170
|
}
|
|
168
171
|
async _remoteValueForReference(reference, createHandle2) {
|
|
169
|
-
return await this._rawCallFunction("e => e", reference, createHandle2);
|
|
172
|
+
return await this._rawCallFunction("e => e", [reference], createHandle2);
|
|
170
173
|
}
|
|
171
|
-
async _rawCallFunction(functionDeclaration,
|
|
174
|
+
async _rawCallFunction(functionDeclaration, args, createHandle2, awaitPromise = true) {
|
|
172
175
|
const response = await this._session.send("script.callFunction", {
|
|
173
176
|
functionDeclaration,
|
|
174
177
|
target: this._target,
|
|
175
|
-
arguments:
|
|
178
|
+
arguments: args,
|
|
176
179
|
// "Root" is necessary for the handle to be returned.
|
|
177
180
|
resultOwnership: createHandle2 ? bidi.Script.ResultOwnership.Root : bidi.Script.ResultOwnership.None,
|
|
178
181
|
serializationOptions: { maxObjectDepth: 0, maxDomDepth: 0 },
|
|
179
|
-
awaitPromise
|
|
182
|
+
awaitPromise,
|
|
180
183
|
userActivation: true
|
|
181
184
|
});
|
|
182
185
|
if (response.type === "exception")
|
|
@@ -186,25 +189,65 @@ class BidiExecutionContext {
|
|
|
186
189
|
throw new js.JavaScriptErrorInEvaluate("Unexpected response type: " + JSON.stringify(response));
|
|
187
190
|
}
|
|
188
191
|
}
|
|
189
|
-
function renderPreview(remoteObject) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
192
|
+
function renderPreview(remoteObject, nested = false) {
|
|
193
|
+
switch (remoteObject.type) {
|
|
194
|
+
case "undefined":
|
|
195
|
+
case "null":
|
|
196
|
+
return remoteObject.type;
|
|
197
|
+
case "number":
|
|
198
|
+
case "boolean":
|
|
199
|
+
case "string":
|
|
200
|
+
return String(remoteObject.value);
|
|
201
|
+
case "bigint":
|
|
202
|
+
return `${remoteObject.value}n`;
|
|
203
|
+
case "date":
|
|
204
|
+
return String(new Date(remoteObject.value));
|
|
205
|
+
case "regexp":
|
|
206
|
+
return String(new RegExp(remoteObject.value.pattern, remoteObject.value.flags));
|
|
207
|
+
case "node":
|
|
208
|
+
return remoteObject.value?.localName || "Node";
|
|
209
|
+
case "object":
|
|
210
|
+
if (nested)
|
|
211
|
+
return "Object";
|
|
212
|
+
const tokens = [];
|
|
213
|
+
for (const [name, value] of remoteObject.value || []) {
|
|
214
|
+
if (typeof name === "string")
|
|
215
|
+
tokens.push(`${name}: ${renderPreview(value, true)}`);
|
|
216
|
+
}
|
|
217
|
+
return `{${tokens.join(", ")}}`;
|
|
218
|
+
case "array":
|
|
219
|
+
case "htmlcollection":
|
|
220
|
+
case "nodelist":
|
|
221
|
+
if (nested || !remoteObject.value)
|
|
222
|
+
return remoteObject.value ? `Array(${remoteObject.value.length})` : "Array";
|
|
223
|
+
return `[${remoteObject.value.map((v) => renderPreview(v, true)).join(", ")}]`;
|
|
224
|
+
case "map":
|
|
225
|
+
return remoteObject.value ? `Map(${remoteObject.value.length})` : "Map";
|
|
226
|
+
case "set":
|
|
227
|
+
return remoteObject.value ? `Set(${remoteObject.value.length})` : "Set";
|
|
228
|
+
case "arraybuffer":
|
|
229
|
+
return "ArrayBuffer";
|
|
230
|
+
case "error":
|
|
231
|
+
return "Error";
|
|
232
|
+
case "function":
|
|
233
|
+
return "Function";
|
|
234
|
+
case "generator":
|
|
235
|
+
return "Generator";
|
|
236
|
+
case "promise":
|
|
237
|
+
return "Promise";
|
|
238
|
+
case "proxy":
|
|
239
|
+
return "Proxy";
|
|
240
|
+
case "symbol":
|
|
241
|
+
return "Symbol()";
|
|
242
|
+
case "typedarray":
|
|
243
|
+
return "TypedArray";
|
|
244
|
+
case "weakmap":
|
|
245
|
+
return "WeakMap";
|
|
246
|
+
case "weakset":
|
|
247
|
+
return "WeakSet";
|
|
248
|
+
case "window":
|
|
249
|
+
return "Window";
|
|
250
|
+
}
|
|
208
251
|
}
|
|
209
252
|
function createHandle(context, remoteObject) {
|
|
210
253
|
if (remoteObject.type === "node") {
|
|
@@ -212,7 +255,10 @@ function createHandle(context, remoteObject) {
|
|
|
212
255
|
return new dom.ElementHandle(context, remoteObject.handle);
|
|
213
256
|
}
|
|
214
257
|
const objectId = "handle" in remoteObject ? remoteObject.handle : void 0;
|
|
215
|
-
|
|
258
|
+
const preview = renderPreview(remoteObject);
|
|
259
|
+
const handle = new js.JSHandle(context, remoteObject.type, preview, objectId, (0, import_bidiDeserializer.deserializeBidiValue)(remoteObject));
|
|
260
|
+
handle._setPreview(preview);
|
|
261
|
+
return handle;
|
|
216
262
|
}
|
|
217
263
|
// Annotate the CommonJS export names for ESM import in node:
|
|
218
264
|
0 && (module.exports = {
|
|
@@ -49,15 +49,13 @@ class BidiFirefox extends import_browserType.BrowserType {
|
|
|
49
49
|
async connectToTransport(transport, options) {
|
|
50
50
|
return import_bidiBrowser.BidiBrowser.connect(this.attribution.playwright, transport, options);
|
|
51
51
|
}
|
|
52
|
-
doRewriteStartupLog(
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
if (error.logs.includes(`as root in a regular user's session is not supported.`))
|
|
56
|
-
error.logs = "\n" + (0, import_ascii.wrapInASCIIBox)(`Firefox is unable to launch if the $HOME folder isn't owned by the current user.
|
|
52
|
+
doRewriteStartupLog(logs) {
|
|
53
|
+
if (logs.includes(`as root in a regular user's session is not supported.`))
|
|
54
|
+
logs = "\n" + (0, import_ascii.wrapInASCIIBox)(`Firefox is unable to launch if the $HOME folder isn't owned by the current user.
|
|
57
55
|
Workaround: Set the HOME=/root environment variable${process.env.GITHUB_ACTION ? " in your GitHub Actions workflow file" : ""} when running Playwright.`, 1);
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
return
|
|
56
|
+
if (logs.includes("no DISPLAY environment variable specified"))
|
|
57
|
+
logs = "\n" + (0, import_ascii.wrapInASCIIBox)(import_browserType.kNoXServerRunningError, 1);
|
|
58
|
+
return logs;
|
|
61
59
|
}
|
|
62
60
|
amendEnvironment(env) {
|
|
63
61
|
if (!import_path.default.isAbsolute(import_os.default.homedir()))
|
|
@@ -36,6 +36,7 @@ var import_eventsHelper = require("../utils/eventsHelper");
|
|
|
36
36
|
var import_cookieStore = require("../cookieStore");
|
|
37
37
|
var network = __toESM(require("../network"));
|
|
38
38
|
var bidi = __toESM(require("./third_party/bidiProtocol"));
|
|
39
|
+
const REQUEST_BODY_HEADERS = /* @__PURE__ */ new Set(["content-encoding", "content-language", "content-location", "content-type"]);
|
|
39
40
|
class BidiNetworkManager {
|
|
40
41
|
constructor(bidiSession, page) {
|
|
41
42
|
this._userRequestInterceptionEnabled = false;
|
|
@@ -64,12 +65,38 @@ class BidiNetworkManager {
|
|
|
64
65
|
return;
|
|
65
66
|
if (redirectedFrom)
|
|
66
67
|
this._deleteRequest(redirectedFrom._id);
|
|
68
|
+
if (param.request.method === "OPTIONS") {
|
|
69
|
+
const requestHeaders = Object.fromEntries(param.request.headers.map((h) => [h.name.toLowerCase(), bidiBytesValueToString(h.value)]));
|
|
70
|
+
if (param.initiator?.type === "preflight" || requestHeaders["access-control-request-method"]) {
|
|
71
|
+
if (param.intercepts) {
|
|
72
|
+
const responseHeaders = [
|
|
73
|
+
{ name: "Access-Control-Allow-Origin", value: requestHeaders["origin"] || "*" },
|
|
74
|
+
{ name: "Access-Control-Allow-Methods", value: requestHeaders["access-control-request-method"] },
|
|
75
|
+
{ name: "Access-Control-Allow-Credentials", value: "true" }
|
|
76
|
+
];
|
|
77
|
+
if (requestHeaders["access-control-request-headers"])
|
|
78
|
+
responseHeaders.push({ name: "Access-Control-Allow-Headers", value: requestHeaders["access-control-request-headers"] });
|
|
79
|
+
this._session.sendMayFail("network.provideResponse", {
|
|
80
|
+
request: param.request.request,
|
|
81
|
+
statusCode: 204,
|
|
82
|
+
headers: toBidiHeaders(responseHeaders)
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
67
88
|
let route;
|
|
89
|
+
let headersOverride;
|
|
68
90
|
if (param.intercepts) {
|
|
69
91
|
if (redirectedFrom) {
|
|
70
92
|
let params = {};
|
|
71
|
-
if (redirectedFrom._originalRequestRoute?._alreadyContinuedHeaders)
|
|
72
|
-
|
|
93
|
+
if (redirectedFrom._originalRequestRoute?._alreadyContinuedHeaders) {
|
|
94
|
+
const originalHeaders = fromBidiHeaders(param.request.headers);
|
|
95
|
+
headersOverride = network.applyHeadersOverrides(originalHeaders, redirectedFrom._originalRequestRoute._alreadyContinuedHeaders);
|
|
96
|
+
if (redirectedFrom.request.method() === "POST" && param.request.method === "GET")
|
|
97
|
+
headersOverride = headersOverride.filter(({ name }) => !REQUEST_BODY_HEADERS.has(name.toLowerCase()));
|
|
98
|
+
params = toBidiRequestHeaders(headersOverride);
|
|
99
|
+
}
|
|
73
100
|
this._session.sendMayFail("network.continueRequest", {
|
|
74
101
|
request: param.request.request,
|
|
75
102
|
...params
|
|
@@ -78,7 +105,7 @@ class BidiNetworkManager {
|
|
|
78
105
|
route = new BidiRouteImpl(this._session, param.request.request);
|
|
79
106
|
}
|
|
80
107
|
}
|
|
81
|
-
const request = new BidiRequest(frame, redirectedFrom, param, route);
|
|
108
|
+
const request = new BidiRequest(frame, redirectedFrom, param, route, headersOverride);
|
|
82
109
|
this._requests.set(request._id, request);
|
|
83
110
|
this._page.frameManager.requestStarted(request.request, route);
|
|
84
111
|
}
|
|
@@ -111,6 +138,7 @@ class BidiNetworkManager {
|
|
|
111
138
|
const response = new network.Response(request.request, params.response.status, params.response.statusText, fromBidiHeaders(params.response.headers), timing, getResponseBody, false);
|
|
112
139
|
response._serverAddrFinished();
|
|
113
140
|
response._securityDetailsFinished();
|
|
141
|
+
response._setHttpVersion(params.response.protocol);
|
|
114
142
|
response.setRawResponseHeaders(null);
|
|
115
143
|
response.setResponseHeadersSize(params.response.headersSize);
|
|
116
144
|
this._page.frameManager.requestReceivedResponse(response);
|
|
@@ -130,7 +158,6 @@ class BidiNetworkManager {
|
|
|
130
158
|
this._deleteRequest(request._id);
|
|
131
159
|
response._requestFinished(responseEndTime);
|
|
132
160
|
}
|
|
133
|
-
response._setHttpVersion(params.response.protocol);
|
|
134
161
|
this._page.frameManager.reportRequestFinished(request.request, response);
|
|
135
162
|
}
|
|
136
163
|
_onFetchError(params) {
|
|
@@ -194,13 +221,13 @@ class BidiNetworkManager {
|
|
|
194
221
|
this._protocolRequestInterceptionEnabled = enabled;
|
|
195
222
|
if (initial && !enabled)
|
|
196
223
|
return;
|
|
197
|
-
const
|
|
224
|
+
const contexts = [this._page.delegate._session.sessionId];
|
|
225
|
+
const cachePromise = this._session.send("network.setCacheBehavior", { cacheBehavior: enabled ? "bypass" : "default", contexts });
|
|
198
226
|
let interceptPromise = Promise.resolve(void 0);
|
|
199
227
|
if (enabled) {
|
|
200
228
|
interceptPromise = this._session.send("network.addIntercept", {
|
|
201
|
-
phases: [bidi.Network.InterceptPhase.
|
|
202
|
-
|
|
203
|
-
// urlPatterns: [{ type: 'string', pattern: '*' }],
|
|
229
|
+
phases: [bidi.Network.InterceptPhase.BeforeRequestSent],
|
|
230
|
+
contexts
|
|
204
231
|
}).then((r) => {
|
|
205
232
|
this._intercepId = r.intercept;
|
|
206
233
|
});
|
|
@@ -212,7 +239,7 @@ class BidiNetworkManager {
|
|
|
212
239
|
}
|
|
213
240
|
}
|
|
214
241
|
class BidiRequest {
|
|
215
|
-
constructor(frame, redirectedFrom, payload, route) {
|
|
242
|
+
constructor(frame, redirectedFrom, payload, route, headersOverride) {
|
|
216
243
|
this._id = payload.request.request;
|
|
217
244
|
if (redirectedFrom)
|
|
218
245
|
redirectedFrom._redirectedTo = this;
|
|
@@ -227,7 +254,7 @@ class BidiRequest {
|
|
|
227
254
|
resourceTypeFromBidi(payload.request.destination, payload.request.initiatorType, payload.initiator?.type),
|
|
228
255
|
payload.request.method,
|
|
229
256
|
postDataBuffer,
|
|
230
|
-
fromBidiHeaders(payload.request.headers)
|
|
257
|
+
headersOverride || fromBidiHeaders(payload.request.headers)
|
|
231
258
|
);
|
|
232
259
|
this.request.setRawRequestHeaders(null);
|
|
233
260
|
this.request._setBodySize(payload.request.bodySize || 0);
|
|
@@ -269,11 +296,12 @@ class BidiRouteImpl {
|
|
|
269
296
|
}
|
|
270
297
|
async fulfill(response) {
|
|
271
298
|
const base64body = response.isBase64 ? response.body : Buffer.from(response.body).toString("base64");
|
|
299
|
+
const headers = response.headers.filter((h) => h.name.toLowerCase() !== "content-encoding");
|
|
272
300
|
await this._session.sendMayFail("network.provideResponse", {
|
|
273
301
|
request: this._requestId,
|
|
274
302
|
statusCode: response.status,
|
|
275
303
|
reasonPhrase: network.statusText(response.status),
|
|
276
|
-
...toBidiResponseHeaders(
|
|
304
|
+
...toBidiResponseHeaders(headers),
|
|
277
305
|
body: { type: "base64", value: base64body }
|
|
278
306
|
});
|
|
279
307
|
}
|
|
@@ -342,7 +370,7 @@ function resourceTypeFromBidi(requestDestination, requestInitiatorType, eventIni
|
|
|
342
370
|
case "image":
|
|
343
371
|
return "image";
|
|
344
372
|
case "object":
|
|
345
|
-
return "
|
|
373
|
+
return "other";
|
|
346
374
|
case "paintworklet":
|
|
347
375
|
return "script";
|
|
348
376
|
case "script":
|