rebrowser-playwright-core 1.49.1 → 1.52.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 +381 -55
- package/bin/reinstall_msedge_beta_linux.sh +6 -0
- package/bin/reinstall_msedge_dev_linux.sh +6 -0
- package/bin/reinstall_msedge_stable_linux.sh +6 -0
- package/browsers.json +28 -13
- package/index.js +0 -1
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +60 -64
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +314 -354
- package/lib/cli/programWithTestStub.js +51 -44
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +146 -254
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -39
- package/lib/client/browser.js +59 -68
- package/lib/client/browserContext.js +302 -322
- package/lib/client/browserType.js +95 -143
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +109 -139
- package/lib/client/clientHelper.js +49 -42
- package/lib/client/clientInstrumentation.js +40 -35
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +203 -218
- package/lib/client/consoleMessage.js +33 -33
- package/lib/client/coverage.js +25 -22
- package/lib/client/dialog.js +30 -31
- package/lib/client/download.js +25 -25
- package/lib/client/electron.js +74 -76
- package/lib/client/elementHandle.js +126 -163
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +127 -127
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +154 -178
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +189 -307
- package/lib/client/harRouter.js +44 -56
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +55 -71
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +53 -28
- package/lib/client/locator.js +144 -230
- package/lib/client/network.js +285 -301
- package/lib/client/page.js +273 -312
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +62 -57
- package/lib/client/selectors.js +51 -43
- package/lib/client/stream.js +30 -45
- package/lib/client/timeoutSettings.js +75 -0
- package/lib/client/tracing.js +49 -82
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +71 -91
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +111 -0
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +28 -43
- package/lib/generated/clockSource.js +26 -5
- package/lib/generated/consoleApiSource.js +26 -5
- package/lib/generated/injectedScriptSource.js +26 -5
- package/lib/generated/pollingRecorderSource.js +26 -5
- package/lib/generated/utilityScriptSource.js +26 -5
- package/lib/generated/webSocketMockSource.js +375 -4
- package/lib/inProcessFactory.js +53 -48
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -42
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2712 -2667
- package/lib/protocol/validatorPrimitives.js +115 -75
- package/lib/remote/playwrightConnection.js +144 -152
- package/lib/remote/playwrightServer.js +106 -77
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -206
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +227 -158
- package/lib/server/bidi/bidiChromium.js +106 -78
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +161 -97
- package/lib/server/bidi/bidiFirefox.js +76 -68
- package/lib/server/bidi/bidiInput.js +90 -102
- package/lib/server/bidi/bidiNetworkManager.js +141 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +262 -261
- package/lib/server/bidi/bidiPdf.js +52 -86
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
- package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +343 -360
- package/lib/server/browserType.js +169 -181
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +99 -44
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +262 -280
- package/lib/server/chromium/crConnection.js +121 -178
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +64 -55
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +100 -91
- package/lib/server/chromium/crInput.js +101 -88
- package/lib/server/chromium/crNetworkManager.js +269 -370
- package/lib/server/chromium/crPage.js +509 -597
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +85 -69
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +65 -99
- package/lib/server/clock.js +58 -46
- package/lib/server/codegen/csharp.js +191 -156
- package/lib/server/codegen/java.js +163 -125
- package/lib/server/codegen/javascript.js +166 -143
- package/lib/server/codegen/jsonl.js +33 -29
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -125
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +105 -86
- package/lib/server/debugController.js +102 -154
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dialog.js +36 -35
- package/lib/server/dispatchers/androidDispatcher.js +196 -107
- package/lib/server/dispatchers/artifactDispatcher.js +62 -62
- package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
- package/lib/server/dispatchers/browserDispatcher.js +78 -97
- package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
- package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
- package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +180 -229
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
- package/lib/server/dispatchers/frameDispatcher.js +93 -162
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
- package/lib/server/dispatchers/networkDispatchers.js +92 -109
- package/lib/server/dispatchers/pageDispatcher.js +130 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -44
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
- package/lib/server/dom.js +424 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -175
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +302 -331
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -57
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +218 -274
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +103 -77
- package/lib/server/firefox/ffInput.js +72 -63
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +244 -302
- package/lib/server/firefox/firefox.js +76 -69
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +77 -111
- package/lib/server/frames.js +719 -855
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +288 -224
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -106
- package/lib/server/input.js +136 -166
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +157 -151
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +211 -0
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +263 -297
- package/lib/server/page.js +351 -434
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +60 -67
- package/lib/server/progress.js +56 -51
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/contextRecorder.js +135 -148
- package/lib/server/recorder/recorderApp.js +129 -132
- package/lib/server/recorder/recorderCollection.js +57 -57
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +80 -100
- package/lib/server/recorder/recorderUtils.js +59 -72
- package/lib/server/recorder/throttledFile.js +42 -31
- package/lib/server/recorder.js +186 -190
- package/lib/server/registry/browserFetcher.js +107 -100
- package/lib/server/registry/dependencies.js +247 -198
- package/lib/server/registry/index.js +928 -709
- package/lib/server/registry/nativeDeps.js +1073 -461
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +166 -182
- package/lib/server/selectors.js +85 -46
- package/lib/server/socksClientCertificatesInterceptor.js +166 -185
- package/lib/server/socksInterceptor.js +62 -67
- package/lib/server/storageScript.js +154 -0
- package/lib/server/timeoutSettings.js +89 -0
- package/lib/server/trace/recorder/snapshotter.js +70 -88
- package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
- package/lib/server/trace/recorder/tracing.js +324 -327
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +172 -137
- package/lib/server/transport.js +125 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +161 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +47 -0
- package/lib/server/utils/debugLogger.js +114 -0
- package/lib/server/utils/env.js +68 -0
- package/lib/server/utils/eventsHelper.js +39 -0
- package/lib/server/utils/expectUtils.js +38 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +109 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +217 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +238 -0
- package/lib/server/utils/profiler.js +65 -0
- package/lib/server/utils/socksProxy.js +511 -0
- package/lib/server/utils/spawnAsync.js +41 -0
- package/lib/server/utils/task.js +51 -0
- package/lib/server/utils/userAgent.js +98 -0
- package/lib/server/utils/wsServer.js +132 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +163 -180
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +96 -73
- package/lib/server/webkit/wkInput.js +87 -75
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +536 -647
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +123 -127
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +344 -349
- package/lib/utils/isomorphic/locatorParser.js +103 -106
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +115 -0
- package/lib/utils/isomorphic/mimeType.js +453 -22
- package/lib/utils/isomorphic/multimap.js +81 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +44 -0
- package/lib/utils/isomorphic/timeoutRunner.js +67 -0
- package/lib/utils/isomorphic/traceUtils.js +52 -32
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +114 -71
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +101 -0
- package/lib/utilsBundle.js +101 -76
- package/lib/utilsBundleImpl/index.js +114 -116
- package/lib/vite/htmlReport/index.html +26 -20
- package/lib/vite/recorder/assets/{codeMirrorModule-C5j27SYZ.js → codeMirrorModule-DVQi6prl.js} +13 -13
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
- package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -7
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -7
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +819 -127
- package/types/types.d.ts +181 -69
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- package/lib/common/socksProxy.js +0 -569
- package/lib/common/timeoutSettings.js +0 -73
- package/lib/common/types.js +0 -5
- package/lib/image_tools/colorUtils.js +0 -98
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/protocol/transport.js +0 -82
- package/lib/server/ariaSnapshot.js +0 -33
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
- package/lib/server/recorder/recorderInTraceViewer.js +0 -144
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -153
- package/lib/utils/crypto.js +0 -171
- package/lib/utils/debug.js +0 -46
- package/lib/utils/debugLogger.js +0 -91
- package/lib/utils/env.js +0 -49
- package/lib/utils/eventsHelper.js +0 -38
- package/lib/utils/expectUtils.js +0 -33
- package/lib/utils/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -194
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -139
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- package/lib/utils/isomorphic/recorderUtils.js +0 -227
- package/lib/utils/linuxUtils.js +0 -78
- package/lib/utils/manualPromise.js +0 -109
- package/lib/utils/multimap.js +0 -75
- package/lib/utils/network.js +0 -160
- package/lib/utils/processLauncher.js +0 -248
- package/lib/utils/profiler.js +0 -53
- package/lib/utils/rtti.js +0 -44
- package/lib/utils/semaphore.js +0 -51
- package/lib/utils/sequence.js +0 -64
- package/lib/utils/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -134
- package/lib/utils/task.js +0 -58
- package/lib/utils/time.js +0 -37
- package/lib/utils/timeoutRunner.js +0 -66
- package/lib/utils/traceUtils.js +0 -44
- package/lib/utils/userAgent.js +0 -105
- package/lib/utils/wsServer.js +0 -127
- package/lib/utils/zipFile.js +0 -75
- package/lib/utils/zones.js +0 -71
- package/lib/vite/recorder/assets/index-m0XdVJHe.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-BBCX0spr.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-B4Iw34Ow.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-DFlGYqou.js +0 -9
- package/lib/vite/traceViewer/embedded.CmarehFk.js +0 -2
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
- package/lib/vite/traceViewer/index.FBucu_gE.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
- package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.CW_rzcEp.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.CDUVjusr.js +0 -5
- package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -1,97 +1,98 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty
|
|
4
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var ffBrowser_exports = {};
|
|
30
|
+
__export(ffBrowser_exports, {
|
|
31
|
+
FFBrowser: () => FFBrowser,
|
|
32
|
+
FFBrowserContext: () => FFBrowserContext
|
|
5
33
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var network =
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
* limitations under the License.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
class FFBrowser extends _browser.Browser {
|
|
34
|
+
module.exports = __toCommonJS(ffBrowser_exports);
|
|
35
|
+
var import_utils = require("../../utils");
|
|
36
|
+
var import_browser = require("../browser");
|
|
37
|
+
var import_browserContext = require("../browserContext");
|
|
38
|
+
var import_errors = require("../errors");
|
|
39
|
+
var network = __toESM(require("../network"));
|
|
40
|
+
var import_page = require("../page");
|
|
41
|
+
var import_ffConnection = require("./ffConnection");
|
|
42
|
+
var import_ffPage = require("./ffPage");
|
|
43
|
+
class FFBrowser extends import_browser.Browser {
|
|
44
|
+
constructor(parent, connection, options) {
|
|
45
|
+
super(parent, options);
|
|
46
|
+
this._version = "";
|
|
47
|
+
this._userAgent = "";
|
|
48
|
+
this._connection = connection;
|
|
49
|
+
this.session = connection.rootSession;
|
|
50
|
+
this._ffPages = /* @__PURE__ */ new Map();
|
|
51
|
+
this._contexts = /* @__PURE__ */ new Map();
|
|
52
|
+
this._connection.on(import_ffConnection.ConnectionEvents.Disconnected, () => this._onDisconnect());
|
|
53
|
+
this.session.on("Browser.attachedToTarget", this._onAttachedToTarget.bind(this));
|
|
54
|
+
this.session.on("Browser.detachedFromTarget", this._onDetachedFromTarget.bind(this));
|
|
55
|
+
this.session.on("Browser.downloadCreated", this._onDownloadCreated.bind(this));
|
|
56
|
+
this.session.on("Browser.downloadFinished", this._onDownloadFinished.bind(this));
|
|
57
|
+
this.session.on("Browser.videoRecordingFinished", this._onVideoRecordingFinished.bind(this));
|
|
58
|
+
}
|
|
35
59
|
static async connect(parent, transport, options) {
|
|
36
|
-
|
|
37
|
-
const connection = new _ffConnection.FFConnection(transport, options.protocolLogger, options.browserLogsCollector);
|
|
60
|
+
const connection = new import_ffConnection.FFConnection(transport, options.protocolLogger, options.browserLogsCollector);
|
|
38
61
|
const browser = new FFBrowser(parent, connection, options);
|
|
39
|
-
if (options.__testHookOnConnectToBrowser)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
...firefoxUserPrefs
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}), browser._initVersion()];
|
|
62
|
+
if (options.__testHookOnConnectToBrowser)
|
|
63
|
+
await options.__testHookOnConnectToBrowser();
|
|
64
|
+
let firefoxUserPrefs = options.originalLaunchOptions.firefoxUserPrefs ?? {};
|
|
65
|
+
if (Object.keys(kBandaidFirefoxUserPrefs).length)
|
|
66
|
+
firefoxUserPrefs = { ...kBandaidFirefoxUserPrefs, ...firefoxUserPrefs };
|
|
67
|
+
const promises = [
|
|
68
|
+
browser.session.send("Browser.enable", {
|
|
69
|
+
attachToDefaultContext: !!options.persistent,
|
|
70
|
+
userPrefs: Object.entries(firefoxUserPrefs).map(([name, value]) => ({ name, value }))
|
|
71
|
+
}),
|
|
72
|
+
browser._initVersion()
|
|
73
|
+
];
|
|
52
74
|
if (options.persistent) {
|
|
53
|
-
browser._defaultContext = new FFBrowserContext(browser,
|
|
75
|
+
browser._defaultContext = new FFBrowserContext(browser, void 0, options.persistent);
|
|
54
76
|
promises.push(browser._defaultContext._initialize());
|
|
55
77
|
}
|
|
56
78
|
const proxy = options.originalLaunchOptions.proxyOverride || options.proxy;
|
|
57
|
-
if (proxy)
|
|
79
|
+
if (proxy)
|
|
80
|
+
promises.push(browser.session.send("Browser.setBrowserProxy", toJugglerProxyOptions(proxy)));
|
|
58
81
|
await Promise.all(promises);
|
|
59
82
|
return browser;
|
|
60
83
|
}
|
|
61
|
-
constructor(parent, connection, options) {
|
|
62
|
-
super(parent, options);
|
|
63
|
-
this._connection = void 0;
|
|
64
|
-
this.session = void 0;
|
|
65
|
-
this._ffPages = void 0;
|
|
66
|
-
this._contexts = void 0;
|
|
67
|
-
this._version = '';
|
|
68
|
-
this._userAgent = '';
|
|
69
|
-
this._connection = connection;
|
|
70
|
-
this.session = connection.rootSession;
|
|
71
|
-
this._ffPages = new Map();
|
|
72
|
-
this._contexts = new Map();
|
|
73
|
-
this._connection.on(_ffConnection.ConnectionEvents.Disconnected, () => this._onDisconnect());
|
|
74
|
-
this.session.on('Browser.attachedToTarget', this._onAttachedToTarget.bind(this));
|
|
75
|
-
this.session.on('Browser.detachedFromTarget', this._onDetachedFromTarget.bind(this));
|
|
76
|
-
this.session.on('Browser.downloadCreated', this._onDownloadCreated.bind(this));
|
|
77
|
-
this.session.on('Browser.downloadFinished', this._onDownloadFinished.bind(this));
|
|
78
|
-
this.session.on('Browser.videoRecordingFinished', this._onVideoRecordingFinished.bind(this));
|
|
79
|
-
}
|
|
80
84
|
async _initVersion() {
|
|
81
|
-
const result = await this.session.send(
|
|
82
|
-
this._version = result.version.substring(result.version.indexOf(
|
|
85
|
+
const result = await this.session.send("Browser.getInfo");
|
|
86
|
+
this._version = result.version.substring(result.version.indexOf("/") + 1);
|
|
83
87
|
this._userAgent = result.userAgent;
|
|
84
88
|
}
|
|
85
89
|
isConnected() {
|
|
86
90
|
return !this._connection._closed;
|
|
87
91
|
}
|
|
88
92
|
async doCreateNewContext(options) {
|
|
89
|
-
if (options.isMobile)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
} = await this.session.send('Browser.createBrowserContext', {
|
|
93
|
-
removeOnDetach: true
|
|
94
|
-
});
|
|
93
|
+
if (options.isMobile)
|
|
94
|
+
throw new Error("options.isMobile is not supported in Firefox");
|
|
95
|
+
const { browserContextId } = await this.session.send("Browser.createBrowserContext", { removeOnDetach: true });
|
|
95
96
|
const context = new FFBrowserContext(this, browserContextId, options);
|
|
96
97
|
await context._initialize();
|
|
97
98
|
this._contexts.set(browserContextId, context);
|
|
@@ -112,141 +113,124 @@ class FFBrowser extends _browser.Browser {
|
|
|
112
113
|
ffPage.didClose();
|
|
113
114
|
}
|
|
114
115
|
_onAttachedToTarget(payload) {
|
|
115
|
-
const {
|
|
116
|
-
|
|
117
|
-
browserContextId,
|
|
118
|
-
openerId,
|
|
119
|
-
type
|
|
120
|
-
} = payload.targetInfo;
|
|
121
|
-
(0, _utils.assert)(type === 'page');
|
|
116
|
+
const { targetId, browserContextId, openerId, type } = payload.targetInfo;
|
|
117
|
+
(0, import_utils.assert)(type === "page");
|
|
122
118
|
const context = browserContextId ? this._contexts.get(browserContextId) : this._defaultContext;
|
|
123
|
-
(0,
|
|
119
|
+
(0, import_utils.assert)(context, `Unknown context id:${browserContextId}, _defaultContext: ${this._defaultContext}`);
|
|
124
120
|
const session = this._connection.createSession(payload.sessionId);
|
|
125
121
|
const opener = openerId ? this._ffPages.get(openerId) : null;
|
|
126
|
-
const ffPage = new
|
|
122
|
+
const ffPage = new import_ffPage.FFPage(session, context, opener);
|
|
127
123
|
this._ffPages.set(targetId, ffPage);
|
|
128
124
|
}
|
|
129
125
|
_onDownloadCreated(payload) {
|
|
130
126
|
const ffPage = this._ffPages.get(payload.pageTargetId);
|
|
131
|
-
if (!ffPage)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
ffPage._page.
|
|
135
|
-
let originPage = ffPage._initializedPage;
|
|
136
|
-
// If it's a new window download, report it on the opener page.
|
|
127
|
+
if (!ffPage)
|
|
128
|
+
return;
|
|
129
|
+
ffPage._page._frameManager.frameAbortedNavigation(payload.frameId, "Download is starting");
|
|
130
|
+
let originPage = ffPage._page.initializedOrUndefined();
|
|
137
131
|
if (!originPage) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (ffPage._opener) originPage = ffPage._opener._initializedPage;
|
|
132
|
+
ffPage._markAsError(new Error("Starting new page download"));
|
|
133
|
+
if (ffPage._opener)
|
|
134
|
+
originPage = ffPage._opener._page.initializedOrUndefined();
|
|
142
135
|
}
|
|
143
|
-
if (!originPage)
|
|
136
|
+
if (!originPage)
|
|
137
|
+
return;
|
|
144
138
|
this._downloadCreated(originPage, payload.uuid, payload.url, payload.suggestedFileName);
|
|
145
139
|
}
|
|
146
140
|
_onDownloadFinished(payload) {
|
|
147
|
-
const error = payload.canceled ?
|
|
141
|
+
const error = payload.canceled ? "canceled" : payload.error;
|
|
148
142
|
this._downloadFinished(payload.uuid, error);
|
|
149
143
|
}
|
|
150
144
|
_onVideoRecordingFinished(payload) {
|
|
151
|
-
|
|
152
|
-
(_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 || _this$_takeVideo.reportFinished();
|
|
145
|
+
this._takeVideo(payload.screencastId)?.reportFinished();
|
|
153
146
|
}
|
|
154
147
|
_onDisconnect() {
|
|
155
|
-
for (const video of this._idToVideo.values())
|
|
148
|
+
for (const video of this._idToVideo.values())
|
|
149
|
+
video.artifact.reportFinished(new import_errors.TargetClosedError());
|
|
156
150
|
this._idToVideo.clear();
|
|
157
|
-
for (const ffPage of this._ffPages.values())
|
|
151
|
+
for (const ffPage of this._ffPages.values())
|
|
152
|
+
ffPage.didClose();
|
|
158
153
|
this._ffPages.clear();
|
|
159
154
|
this._didClose();
|
|
160
155
|
}
|
|
161
156
|
}
|
|
162
|
-
|
|
163
|
-
class FFBrowserContext extends _browserContext.BrowserContext {
|
|
157
|
+
class FFBrowserContext extends import_browserContext.BrowserContext {
|
|
164
158
|
constructor(browser, browserContextId, options) {
|
|
165
159
|
super(browser, options, browserContextId);
|
|
166
160
|
}
|
|
167
161
|
async _initialize() {
|
|
168
|
-
(0,
|
|
162
|
+
(0, import_utils.assert)(!this._ffPages().length);
|
|
169
163
|
const browserContextId = this._browserContextId;
|
|
170
|
-
const promises = [
|
|
171
|
-
|
|
172
|
-
name:
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
if (this._options.acceptDownloads !==
|
|
176
|
-
promises.push(this._browser.session.send(
|
|
164
|
+
const promises = [
|
|
165
|
+
super._initialize(),
|
|
166
|
+
this._browser.session.send("Browser.addBinding", { browserContextId: this._browserContextId, name: import_page.PageBinding.kPlaywrightBinding, script: "" }),
|
|
167
|
+
this._updateInitScripts()
|
|
168
|
+
];
|
|
169
|
+
if (this._options.acceptDownloads !== "internal-browser-default") {
|
|
170
|
+
promises.push(this._browser.session.send("Browser.setDownloadOptions", {
|
|
177
171
|
browserContextId,
|
|
178
172
|
downloadOptions: {
|
|
179
|
-
behavior: this._options.acceptDownloads ===
|
|
173
|
+
behavior: this._options.acceptDownloads === "accept" ? "saveToDisk" : "cancel",
|
|
180
174
|
downloadsDir: this._browser.options.downloadsPath
|
|
181
175
|
}
|
|
182
176
|
}));
|
|
183
177
|
}
|
|
184
178
|
if (this._options.viewport) {
|
|
185
179
|
const viewport = {
|
|
186
|
-
viewportSize: {
|
|
187
|
-
width: this._options.viewport.width,
|
|
188
|
-
height: this._options.viewport.height
|
|
189
|
-
},
|
|
180
|
+
viewportSize: { width: this._options.viewport.width, height: this._options.viewport.height },
|
|
190
181
|
deviceScaleFactor: this._options.deviceScaleFactor || 1
|
|
191
182
|
};
|
|
192
|
-
promises.push(this._browser.session.send(
|
|
183
|
+
promises.push(this._browser.session.send("Browser.setDefaultViewport", { browserContextId, viewport }));
|
|
184
|
+
}
|
|
185
|
+
if (this._options.hasTouch)
|
|
186
|
+
promises.push(this._browser.session.send("Browser.setTouchOverride", { browserContextId, hasTouch: true }));
|
|
187
|
+
if (this._options.userAgent)
|
|
188
|
+
promises.push(this._browser.session.send("Browser.setUserAgentOverride", { browserContextId, userAgent: this._options.userAgent }));
|
|
189
|
+
if (this._options.bypassCSP)
|
|
190
|
+
promises.push(this._browser.session.send("Browser.setBypassCSP", { browserContextId, bypassCSP: true }));
|
|
191
|
+
if (this._options.ignoreHTTPSErrors || this._options.internalIgnoreHTTPSErrors)
|
|
192
|
+
promises.push(this._browser.session.send("Browser.setIgnoreHTTPSErrors", { browserContextId, ignoreHTTPSErrors: true }));
|
|
193
|
+
if (this._options.javaScriptEnabled === false)
|
|
194
|
+
promises.push(this._browser.session.send("Browser.setJavaScriptDisabled", { browserContextId, javaScriptDisabled: true }));
|
|
195
|
+
if (this._options.locale)
|
|
196
|
+
promises.push(this._browser.session.send("Browser.setLocaleOverride", { browserContextId, locale: this._options.locale }));
|
|
197
|
+
if (this._options.timezoneId)
|
|
198
|
+
promises.push(this._browser.session.send("Browser.setTimezoneOverride", { browserContextId, timezoneId: this._options.timezoneId }));
|
|
199
|
+
if (this._options.extraHTTPHeaders || this._options.locale)
|
|
200
|
+
promises.push(this.setExtraHTTPHeaders(this._options.extraHTTPHeaders || []));
|
|
201
|
+
if (this._options.httpCredentials)
|
|
202
|
+
promises.push(this.setHTTPCredentials(this._options.httpCredentials));
|
|
203
|
+
if (this._options.geolocation)
|
|
204
|
+
promises.push(this.setGeolocation(this._options.geolocation));
|
|
205
|
+
if (this._options.offline)
|
|
206
|
+
promises.push(this.setOffline(this._options.offline));
|
|
207
|
+
if (this._options.colorScheme !== "no-override") {
|
|
208
|
+
promises.push(this._browser.session.send("Browser.setColorScheme", {
|
|
193
209
|
browserContextId,
|
|
194
|
-
|
|
210
|
+
colorScheme: this._options.colorScheme !== void 0 ? this._options.colorScheme : "light"
|
|
195
211
|
}));
|
|
196
212
|
}
|
|
197
|
-
if (this._options.
|
|
198
|
-
|
|
199
|
-
hasTouch: true
|
|
200
|
-
}));
|
|
201
|
-
if (this._options.userAgent) promises.push(this._browser.session.send('Browser.setUserAgentOverride', {
|
|
202
|
-
browserContextId,
|
|
203
|
-
userAgent: this._options.userAgent
|
|
204
|
-
}));
|
|
205
|
-
if (this._options.bypassCSP) promises.push(this._browser.session.send('Browser.setBypassCSP', {
|
|
206
|
-
browserContextId,
|
|
207
|
-
bypassCSP: true
|
|
208
|
-
}));
|
|
209
|
-
if (this._options.ignoreHTTPSErrors || this._options.internalIgnoreHTTPSErrors) promises.push(this._browser.session.send('Browser.setIgnoreHTTPSErrors', {
|
|
210
|
-
browserContextId,
|
|
211
|
-
ignoreHTTPSErrors: true
|
|
212
|
-
}));
|
|
213
|
-
if (this._options.javaScriptEnabled === false) promises.push(this._browser.session.send('Browser.setJavaScriptDisabled', {
|
|
214
|
-
browserContextId,
|
|
215
|
-
javaScriptDisabled: true
|
|
216
|
-
}));
|
|
217
|
-
if (this._options.locale) promises.push(this._browser.session.send('Browser.setLocaleOverride', {
|
|
218
|
-
browserContextId,
|
|
219
|
-
locale: this._options.locale
|
|
220
|
-
}));
|
|
221
|
-
if (this._options.timezoneId) promises.push(this._browser.session.send('Browser.setTimezoneOverride', {
|
|
222
|
-
browserContextId,
|
|
223
|
-
timezoneId: this._options.timezoneId
|
|
224
|
-
}));
|
|
225
|
-
if (this._options.extraHTTPHeaders || this._options.locale) promises.push(this.setExtraHTTPHeaders(this._options.extraHTTPHeaders || []));
|
|
226
|
-
if (this._options.httpCredentials) promises.push(this.setHTTPCredentials(this._options.httpCredentials));
|
|
227
|
-
if (this._options.geolocation) promises.push(this.setGeolocation(this._options.geolocation));
|
|
228
|
-
if (this._options.offline) promises.push(this.setOffline(this._options.offline));
|
|
229
|
-
if (this._options.colorScheme !== 'no-override') {
|
|
230
|
-
promises.push(this._browser.session.send('Browser.setColorScheme', {
|
|
213
|
+
if (this._options.reducedMotion !== "no-override") {
|
|
214
|
+
promises.push(this._browser.session.send("Browser.setReducedMotion", {
|
|
231
215
|
browserContextId,
|
|
232
|
-
|
|
216
|
+
reducedMotion: this._options.reducedMotion !== void 0 ? this._options.reducedMotion : "no-preference"
|
|
233
217
|
}));
|
|
234
218
|
}
|
|
235
|
-
if (this._options.
|
|
236
|
-
promises.push(this._browser.session.send(
|
|
219
|
+
if (this._options.forcedColors !== "no-override") {
|
|
220
|
+
promises.push(this._browser.session.send("Browser.setForcedColors", {
|
|
237
221
|
browserContextId,
|
|
238
|
-
|
|
222
|
+
forcedColors: this._options.forcedColors !== void 0 ? this._options.forcedColors : "none"
|
|
239
223
|
}));
|
|
240
224
|
}
|
|
241
|
-
if (this._options.
|
|
242
|
-
promises.push(this._browser.session.send(
|
|
225
|
+
if (this._options.contrast !== "no-override") {
|
|
226
|
+
promises.push(this._browser.session.send("Browser.setContrast", {
|
|
243
227
|
browserContextId,
|
|
244
|
-
|
|
228
|
+
contrast: this._options.contrast !== void 0 ? this._options.contrast : "no-preference"
|
|
245
229
|
}));
|
|
246
230
|
}
|
|
247
231
|
if (this._options.recordVideo) {
|
|
248
232
|
promises.push(this._ensureVideosPath().then(() => {
|
|
249
|
-
return this._browser.session.send(
|
|
233
|
+
return this._browser.session.send("Browser.setVideoRecordingOptions", {
|
|
250
234
|
// validateBrowserContextOptions ensures correct video size.
|
|
251
235
|
options: {
|
|
252
236
|
...this._options.recordVideo.size,
|
|
@@ -258,7 +242,7 @@ class FFBrowserContext extends _browserContext.BrowserContext {
|
|
|
258
242
|
}
|
|
259
243
|
const proxy = this._options.proxyOverride || this._options.proxy;
|
|
260
244
|
if (proxy) {
|
|
261
|
-
promises.push(this._browser.session.send(
|
|
245
|
+
promises.push(this._browser.session.send("Browser.setContextProxy", {
|
|
262
246
|
browserContextId: this._browserContextId,
|
|
263
247
|
...toJugglerProxyOptions(proxy)
|
|
264
248
|
}));
|
|
@@ -266,120 +250,86 @@ class FFBrowserContext extends _browserContext.BrowserContext {
|
|
|
266
250
|
await Promise.all(promises);
|
|
267
251
|
}
|
|
268
252
|
_ffPages() {
|
|
269
|
-
return Array.from(this._browser._ffPages.values()).filter(ffPage => ffPage._browserContext === this);
|
|
253
|
+
return Array.from(this._browser._ffPages.values()).filter((ffPage) => ffPage._browserContext === this);
|
|
270
254
|
}
|
|
271
|
-
|
|
272
|
-
return this._ffPages().map(ffPage => ffPage.
|
|
255
|
+
possiblyUninitializedPages() {
|
|
256
|
+
return this._ffPages().map((ffPage) => ffPage._page);
|
|
273
257
|
}
|
|
274
|
-
async
|
|
275
|
-
(0,
|
|
276
|
-
const {
|
|
277
|
-
targetId
|
|
278
|
-
} = await this._browser.session.send('Browser.newPage', {
|
|
258
|
+
async doCreateNewPage() {
|
|
259
|
+
(0, import_browserContext.assertBrowserContextIsNotOwned)(this);
|
|
260
|
+
const { targetId } = await this._browser.session.send("Browser.newPage", {
|
|
279
261
|
browserContextId: this._browserContextId
|
|
280
|
-
}).catch(e => {
|
|
281
|
-
if (e.message.includes(
|
|
262
|
+
}).catch((e) => {
|
|
263
|
+
if (e.message.includes("Failed to override timezone"))
|
|
264
|
+
throw new Error(`Invalid timezone ID: ${this._options.timezoneId}`);
|
|
282
265
|
throw e;
|
|
283
266
|
});
|
|
284
|
-
return this._browser._ffPages.get(targetId);
|
|
267
|
+
return this._browser._ffPages.get(targetId)._page;
|
|
285
268
|
}
|
|
286
269
|
async doGetCookies(urls) {
|
|
287
|
-
const {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
browserContextId: this._browserContextId
|
|
291
|
-
});
|
|
292
|
-
return network.filterCookies(cookies.map(c => {
|
|
293
|
-
const copy = {
|
|
294
|
-
...c
|
|
295
|
-
};
|
|
270
|
+
const { cookies } = await this._browser.session.send("Browser.getCookies", { browserContextId: this._browserContextId });
|
|
271
|
+
return network.filterCookies(cookies.map((c) => {
|
|
272
|
+
const copy = { ...c };
|
|
296
273
|
delete copy.size;
|
|
297
274
|
delete copy.session;
|
|
298
275
|
return copy;
|
|
299
276
|
}), urls);
|
|
300
277
|
}
|
|
301
278
|
async addCookies(cookies) {
|
|
302
|
-
const cc = network.rewriteCookies(cookies).map(c => ({
|
|
279
|
+
const cc = network.rewriteCookies(cookies).map((c) => ({
|
|
303
280
|
...c,
|
|
304
|
-
expires: c.expires === -1 ?
|
|
281
|
+
expires: c.expires === -1 ? void 0 : c.expires
|
|
305
282
|
}));
|
|
306
|
-
await this._browser.session.send(
|
|
307
|
-
browserContextId: this._browserContextId,
|
|
308
|
-
cookies: cc
|
|
309
|
-
});
|
|
283
|
+
await this._browser.session.send("Browser.setCookies", { browserContextId: this._browserContextId, cookies: cc });
|
|
310
284
|
}
|
|
311
285
|
async doClearCookies() {
|
|
312
|
-
await this._browser.session.send(
|
|
313
|
-
browserContextId: this._browserContextId
|
|
314
|
-
});
|
|
286
|
+
await this._browser.session.send("Browser.clearCookies", { browserContextId: this._browserContextId });
|
|
315
287
|
}
|
|
316
288
|
async doGrantPermissions(origin, permissions) {
|
|
317
|
-
const webPermissionToProtocol = new Map([
|
|
318
|
-
|
|
289
|
+
const webPermissionToProtocol = /* @__PURE__ */ new Map([
|
|
290
|
+
["geolocation", "geo"],
|
|
291
|
+
["persistent-storage", "persistent-storage"],
|
|
292
|
+
["push", "push"],
|
|
293
|
+
["notifications", "desktop-notification"]
|
|
294
|
+
]);
|
|
295
|
+
const filtered = permissions.map((permission) => {
|
|
319
296
|
const protocolPermission = webPermissionToProtocol.get(permission);
|
|
320
|
-
if (!protocolPermission)
|
|
297
|
+
if (!protocolPermission)
|
|
298
|
+
throw new Error("Unknown permission: " + permission);
|
|
321
299
|
return protocolPermission;
|
|
322
300
|
});
|
|
323
|
-
await this._browser.session.send(
|
|
324
|
-
origin: origin,
|
|
325
|
-
browserContextId: this._browserContextId,
|
|
326
|
-
permissions: filtered
|
|
327
|
-
});
|
|
301
|
+
await this._browser.session.send("Browser.grantPermissions", { origin, browserContextId: this._browserContextId, permissions: filtered });
|
|
328
302
|
}
|
|
329
303
|
async doClearPermissions() {
|
|
330
|
-
await this._browser.session.send(
|
|
331
|
-
browserContextId: this._browserContextId
|
|
332
|
-
});
|
|
304
|
+
await this._browser.session.send("Browser.resetPermissions", { browserContextId: this._browserContextId });
|
|
333
305
|
}
|
|
334
306
|
async setGeolocation(geolocation) {
|
|
335
|
-
(0,
|
|
307
|
+
(0, import_browserContext.verifyGeolocation)(geolocation);
|
|
336
308
|
this._options.geolocation = geolocation;
|
|
337
|
-
await this._browser.session.send(
|
|
338
|
-
browserContextId: this._browserContextId,
|
|
339
|
-
geolocation: geolocation || null
|
|
340
|
-
});
|
|
309
|
+
await this._browser.session.send("Browser.setGeolocationOverride", { browserContextId: this._browserContextId, geolocation: geolocation || null });
|
|
341
310
|
}
|
|
342
311
|
async setExtraHTTPHeaders(headers) {
|
|
343
312
|
this._options.extraHTTPHeaders = headers;
|
|
344
313
|
let allHeaders = this._options.extraHTTPHeaders;
|
|
345
|
-
if (this._options.locale)
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
headers: allHeaders
|
|
349
|
-
});
|
|
314
|
+
if (this._options.locale)
|
|
315
|
+
allHeaders = network.mergeHeaders([allHeaders, network.singleHeader("Accept-Language", this._options.locale)]);
|
|
316
|
+
await this._browser.session.send("Browser.setExtraHTTPHeaders", { browserContextId: this._browserContextId, headers: allHeaders });
|
|
350
317
|
}
|
|
351
318
|
async setUserAgent(userAgent) {
|
|
352
|
-
await this._browser.session.send(
|
|
353
|
-
browserContextId: this._browserContextId,
|
|
354
|
-
userAgent: userAgent || null
|
|
355
|
-
});
|
|
319
|
+
await this._browser.session.send("Browser.setUserAgentOverride", { browserContextId: this._browserContextId, userAgent: userAgent || null });
|
|
356
320
|
}
|
|
357
321
|
async setOffline(offline) {
|
|
358
322
|
this._options.offline = offline;
|
|
359
|
-
await this._browser.session.send(
|
|
360
|
-
browserContextId: this._browserContextId,
|
|
361
|
-
override: offline ? 'offline' : 'online'
|
|
362
|
-
});
|
|
323
|
+
await this._browser.session.send("Browser.setOnlineOverride", { browserContextId: this._browserContextId, override: offline ? "offline" : "online" });
|
|
363
324
|
}
|
|
364
325
|
async doSetHTTPCredentials(httpCredentials) {
|
|
365
326
|
this._options.httpCredentials = httpCredentials;
|
|
366
327
|
let credentials = null;
|
|
367
328
|
if (httpCredentials) {
|
|
368
|
-
const {
|
|
369
|
-
|
|
370
|
-
password,
|
|
371
|
-
origin
|
|
372
|
-
} = httpCredentials;
|
|
373
|
-
credentials = {
|
|
374
|
-
username,
|
|
375
|
-
password,
|
|
376
|
-
origin
|
|
377
|
-
};
|
|
329
|
+
const { username, password, origin } = httpCredentials;
|
|
330
|
+
credentials = { username, password, origin };
|
|
378
331
|
}
|
|
379
|
-
await this._browser.session.send(
|
|
380
|
-
browserContextId: this._browserContextId,
|
|
381
|
-
credentials
|
|
382
|
-
});
|
|
332
|
+
await this._browser.session.send("Browser.setHTTPCredentials", { browserContextId: this._browserContextId, credentials });
|
|
383
333
|
}
|
|
384
334
|
async doAddInitScript(initScript) {
|
|
385
335
|
await this._updateInitScripts();
|
|
@@ -388,73 +338,67 @@ class FFBrowserContext extends _browserContext.BrowserContext {
|
|
|
388
338
|
await this._updateInitScripts();
|
|
389
339
|
}
|
|
390
340
|
async _updateInitScripts() {
|
|
391
|
-
const bindingScripts = [...this._pageBindings.values()].map(binding => binding.initScript.source);
|
|
392
|
-
const initScripts = this.initScripts.map(script => script.source);
|
|
393
|
-
await this._browser.session.send(
|
|
394
|
-
browserContextId: this._browserContextId,
|
|
395
|
-
scripts: [...bindingScripts, ...initScripts].map(script => ({
|
|
396
|
-
script
|
|
397
|
-
}))
|
|
398
|
-
});
|
|
341
|
+
const bindingScripts = [...this._pageBindings.values()].map((binding) => binding.initScript.source);
|
|
342
|
+
const initScripts = this.initScripts.map((script) => script.source);
|
|
343
|
+
await this._browser.session.send("Browser.setInitScripts", { browserContextId: this._browserContextId, scripts: [import_page.kBuiltinsScript.source, ...bindingScripts, ...initScripts].map((script) => ({ script })) });
|
|
399
344
|
}
|
|
400
345
|
async doUpdateRequestInterception() {
|
|
401
|
-
await Promise.all([
|
|
402
|
-
browserContextId: this._browserContextId,
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
}
|
|
409
|
-
onClosePersistent() {}
|
|
346
|
+
await Promise.all([
|
|
347
|
+
this._browser.session.send("Browser.setRequestInterception", { browserContextId: this._browserContextId, enabled: !!this._requestInterceptor }),
|
|
348
|
+
this._browser.session.send("Browser.setCacheDisabled", { browserContextId: this._browserContextId, cacheDisabled: !!this._requestInterceptor })
|
|
349
|
+
]);
|
|
350
|
+
}
|
|
351
|
+
onClosePersistent() {
|
|
352
|
+
}
|
|
410
353
|
async clearCache() {
|
|
411
|
-
|
|
412
|
-
await this._browser.session.send('Browser.clearCache');
|
|
354
|
+
await this._browser.session.send("Browser.clearCache");
|
|
413
355
|
}
|
|
414
356
|
async doClose(reason) {
|
|
415
357
|
if (!this._browserContextId) {
|
|
416
358
|
if (this._options.recordVideo) {
|
|
417
|
-
await this._browser.session.send(
|
|
418
|
-
options:
|
|
359
|
+
await this._browser.session.send("Browser.setVideoRecordingOptions", {
|
|
360
|
+
options: void 0,
|
|
419
361
|
browserContextId: this._browserContextId
|
|
420
362
|
});
|
|
421
363
|
}
|
|
422
|
-
|
|
423
|
-
await this._browser.close({
|
|
424
|
-
reason
|
|
425
|
-
});
|
|
364
|
+
await this._browser.close({ reason });
|
|
426
365
|
} else {
|
|
427
|
-
await this._browser.session.send(
|
|
428
|
-
browserContextId: this._browserContextId
|
|
429
|
-
});
|
|
366
|
+
await this._browser.session.send("Browser.removeBrowserContext", { browserContextId: this._browserContextId });
|
|
430
367
|
this._browser._contexts.delete(this._browserContextId);
|
|
431
368
|
}
|
|
432
369
|
}
|
|
433
370
|
async cancelDownload(uuid) {
|
|
434
|
-
await this._browser.session.send(
|
|
435
|
-
uuid
|
|
436
|
-
});
|
|
371
|
+
await this._browser.session.send("Browser.cancelDownload", { uuid });
|
|
437
372
|
}
|
|
438
373
|
}
|
|
439
|
-
exports.FFBrowserContext = FFBrowserContext;
|
|
440
374
|
function toJugglerProxyOptions(proxy) {
|
|
441
375
|
const proxyServer = new URL(proxy.server);
|
|
442
376
|
let port = parseInt(proxyServer.port, 10);
|
|
443
|
-
let type =
|
|
444
|
-
if (proxyServer.protocol ===
|
|
445
|
-
|
|
446
|
-
|
|
377
|
+
let type = "http";
|
|
378
|
+
if (proxyServer.protocol === "socks5:")
|
|
379
|
+
type = "socks";
|
|
380
|
+
else if (proxyServer.protocol === "socks4:")
|
|
381
|
+
type = "socks4";
|
|
382
|
+
else if (proxyServer.protocol === "https:")
|
|
383
|
+
type = "https";
|
|
384
|
+
if (proxyServer.port === "") {
|
|
385
|
+
if (proxyServer.protocol === "http:")
|
|
386
|
+
port = 80;
|
|
387
|
+
else if (proxyServer.protocol === "https:")
|
|
388
|
+
port = 443;
|
|
447
389
|
}
|
|
448
390
|
return {
|
|
449
391
|
type,
|
|
450
|
-
bypass: proxy.bypass ? proxy.bypass.split(
|
|
392
|
+
bypass: proxy.bypass ? proxy.bypass.split(",").map((domain) => domain.trim()) : [],
|
|
451
393
|
host: proxyServer.hostname,
|
|
452
394
|
port,
|
|
453
395
|
username: proxy.username,
|
|
454
396
|
password: proxy.password
|
|
455
397
|
};
|
|
456
398
|
}
|
|
457
|
-
|
|
458
|
-
//
|
|
459
|
-
|
|
460
|
-
|
|
399
|
+
const kBandaidFirefoxUserPrefs = {};
|
|
400
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
401
|
+
0 && (module.exports = {
|
|
402
|
+
FFBrowser,
|
|
403
|
+
FFBrowserContext
|
|
404
|
+
});
|