patchright-core 1.50.0 → 1.51.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/browsers.json +22 -10
- package/index.js +0 -1
- package/lib/androidServerImpl.js +4 -4
- package/lib/browserServerImpl.js +18 -9
- package/lib/cli/driver.js +6 -6
- package/lib/cli/program.js +9 -9
- package/lib/cli/programWithTestStub.js +2 -1
- package/lib/client/android.js +37 -58
- package/lib/client/artifact.js +4 -7
- package/lib/client/browser.js +10 -15
- package/lib/client/browserContext.js +77 -73
- package/lib/client/browserType.js +30 -64
- package/lib/client/channelOwner.js +23 -20
- package/lib/client/clientHelper.js +5 -7
- package/lib/client/clientStackTrace.js +65 -0
- package/lib/client/connection.js +46 -39
- package/lib/client/consoleMessage.js +4 -7
- package/lib/client/electron.js +10 -10
- package/lib/client/elementHandle.js +32 -33
- package/lib/client/errors.js +2 -2
- package/lib/client/eventEmitter.js +5 -8
- package/lib/client/fetch.js +60 -61
- package/lib/client/fileUtils.js +31 -0
- package/lib/client/frame.js +30 -29
- package/lib/client/harRouter.js +7 -9
- package/lib/client/jsHandle.js +3 -4
- package/lib/client/localUtils.js +24 -0
- package/lib/client/locator.js +37 -18
- package/lib/client/network.js +40 -40
- package/lib/client/page.js +59 -55
- package/lib/client/platform.js +71 -0
- package/lib/client/playwright.js +21 -1
- package/lib/client/selectors.js +8 -2
- package/lib/client/stream.js +2 -21
- package/lib/client/timeoutSettings.js +65 -0
- package/lib/client/tracing.js +10 -7
- package/lib/client/video.js +2 -2
- package/lib/client/waiter.js +5 -6
- package/lib/client/webSocket.js +106 -0
- package/lib/client/worker.js +12 -10
- package/lib/client/writableStream.js +2 -21
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/inProcessFactory.js +6 -3
- package/lib/outofprocess.js +12 -8
- package/lib/protocol/validator.js +64 -13
- package/lib/protocol/validatorPrimitives.js +1 -2
- package/lib/remote/playwrightConnection.js +18 -10
- package/lib/remote/playwrightServer.js +20 -7
- package/lib/server/android/android.js +17 -14
- package/lib/server/android/backendAdb.js +14 -14
- package/lib/server/artifact.js +3 -3
- package/lib/server/bidi/bidiBrowser.js +2 -2
- package/lib/server/bidi/bidiChromium.js +4 -3
- package/lib/server/bidi/bidiConnection.js +1 -1
- package/lib/server/bidi/bidiExecutionContext.js +70 -40
- package/lib/server/bidi/bidiFirefox.js +4 -3
- package/lib/server/bidi/bidiInput.js +5 -8
- package/lib/server/bidi/bidiNetworkManager.js +3 -3
- package/lib/server/bidi/bidiOverCdp.js +2 -2
- package/lib/server/bidi/bidiPage.js +30 -46
- package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
- package/lib/server/browser.js +2 -2
- package/lib/server/browserContext.js +37 -40
- package/lib/server/browserType.js +18 -17
- package/lib/{utils/sequence.js → server/callLog.js} +18 -3
- package/lib/server/chromium/chromium.js +14 -14
- package/lib/server/chromium/chromiumSwitches.js +32 -1
- package/lib/server/chromium/crBrowser.js +15 -14
- package/lib/server/chromium/crConnection.js +2 -2
- package/lib/server/chromium/crCoverage.js +1 -1
- package/lib/server/chromium/crDevTools.js +1 -1
- package/lib/server/chromium/crDragDrop.js +1 -1
- package/lib/server/chromium/crExecutionContext.js +25 -17
- package/lib/server/chromium/crInput.js +2 -2
- package/lib/server/chromium/crNetworkManager.js +73 -26
- package/lib/server/chromium/crPage.js +22 -23
- package/lib/server/chromium/crPdf.js +1 -1
- package/lib/server/chromium/crProtocolHelper.js +3 -3
- package/lib/server/chromium/crServiceWorker.js +2 -2
- package/lib/server/chromium/videoRecorder.js +2 -2
- package/lib/server/clock.js +1 -1
- package/lib/server/codegen/javascript.js +1 -1
- package/lib/server/codegen/languages.js +2 -2
- package/lib/server/debugController.js +3 -3
- package/lib/server/deviceDescriptors.js +1 -1
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dispatchers/androidDispatcher.js +1 -1
- package/lib/server/dispatchers/artifactDispatcher.js +3 -3
- package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
- package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
- package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
- package/lib/server/dispatchers/dispatcher.js +27 -25
- package/lib/server/dispatchers/electronDispatcher.js +3 -3
- package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
- package/lib/server/dispatchers/frameDispatcher.js +4 -4
- package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
- package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
- package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
- package/lib/server/dispatchers/networkDispatchers.js +3 -3
- package/lib/server/dispatchers/pageDispatcher.js +11 -9
- package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
- package/lib/server/dispatchers/streamDispatcher.js +4 -3
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
- package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
- package/lib/server/dom.js +18 -12
- package/lib/server/download.js +1 -1
- package/lib/server/electron/electron.js +17 -16
- package/lib/server/errors.js +1 -1
- package/lib/server/fetch.js +50 -45
- package/lib/server/fileUploadUtils.js +7 -4
- package/lib/server/firefox/ffBrowser.js +11 -3
- package/lib/server/firefox/ffConnection.js +1 -1
- package/lib/server/firefox/ffExecutionContext.js +25 -17
- package/lib/server/firefox/ffNetworkManager.js +2 -2
- package/lib/server/firefox/ffPage.js +15 -21
- package/lib/server/firefox/firefox.js +7 -9
- package/lib/server/frameSelectors.js +1 -1
- package/lib/server/frames.js +366 -209
- package/lib/server/har/harRecorder.js +4 -4
- package/lib/server/har/harTracer.js +7 -8
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +2 -2
- package/lib/server/index.js +1 -8
- package/lib/server/input.js +1 -1
- package/lib/server/instrumentation.js +2 -2
- package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
- package/lib/server/javascript.js +46 -33
- package/lib/server/launchApp.js +2 -2
- package/lib/server/localUtils.js +203 -0
- package/lib/server/network.js +3 -3
- package/lib/server/page.js +41 -22
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +5 -5
- package/lib/server/progress.js +1 -1
- package/lib/server/protocolError.js +1 -1
- package/lib/server/recorder/contextRecorder.js +3 -3
- package/lib/server/recorder/recorderApp.js +18 -12
- package/lib/server/recorder/recorderCollection.js +4 -4
- package/lib/server/recorder/throttledFile.js +3 -4
- package/lib/server/recorder.js +7 -5
- package/lib/server/registry/browserFetcher.js +9 -7
- package/lib/server/registry/dependencies.js +15 -15
- package/lib/server/registry/index.js +38 -44
- package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
- package/lib/server/screenshotter.js +1 -1
- package/lib/server/selectors.js +3 -3
- package/lib/server/socksClientCertificatesInterceptor.js +9 -9
- package/lib/server/socksInterceptor.js +8 -5
- package/lib/server/storageScript.js +160 -0
- package/lib/{common → server}/timeoutSettings.js +6 -5
- package/lib/server/trace/recorder/snapshotter.js +9 -8
- package/lib/server/trace/recorder/tracing.js +40 -31
- package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
- package/lib/server/trace/viewer/traceViewer.js +13 -5
- package/lib/server/transport.js +2 -2
- package/lib/{utils → server/utils}/comparators.js +4 -4
- package/lib/{utils → server/utils}/crypto.js +4 -4
- package/lib/{utils → server/utils}/debug.js +4 -12
- package/lib/{utils → server/utils}/debugLogger.js +2 -2
- package/lib/{utils → server/utils}/env.js +4 -0
- package/lib/{utils → server/utils}/expectUtils.js +1 -1
- package/lib/{utils → server/utils}/fileUtils.js +4 -5
- package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
- package/lib/{utils → server/utils}/hostPlatform.js +1 -1
- package/lib/{utils → server/utils}/httpServer.js +8 -12
- package/lib/{utils → server/utils}/linuxUtils.js +3 -23
- package/lib/{utils → server/utils}/network.js +5 -5
- package/lib/server/utils/nodePlatform.js +140 -0
- package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
- package/lib/{utils → server/utils}/processLauncher.js +5 -5
- package/lib/{utils → server/utils}/profiler.js +5 -6
- package/lib/{common → server/utils}/socksProxy.js +10 -9
- package/lib/{utils → server/utils}/userAgent.js +2 -16
- package/lib/{utils → server/utils}/wsServer.js +3 -3
- package/lib/{utils → server/utils}/zipFile.js +1 -1
- package/lib/{utils → server/utils}/zones.js +9 -24
- package/lib/server/webkit/webkit.js +4 -4
- package/lib/server/webkit/wkBrowser.js +4 -4
- package/lib/server/webkit/wkConnection.js +1 -1
- package/lib/server/webkit/wkExecutionContext.js +25 -17
- package/lib/server/webkit/wkInput.js +2 -2
- package/lib/server/webkit/wkInterceptableRequest.js +2 -2
- package/lib/server/webkit/wkPage.js +41 -40
- package/lib/server/webkit/wkProvisionalPage.js +1 -1
- package/lib/server/webkit/wkWorkers.js +2 -2
- package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
- package/lib/utils/isomorphic/assert.js +25 -0
- package/lib/utils/isomorphic/colors.js +65 -0
- package/lib/utils/isomorphic/cssParser.js +1 -1
- package/lib/utils/isomorphic/locatorGenerators.js +13 -1
- package/lib/utils/isomorphic/locatorParser.js +2 -2
- package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
- package/lib/utils/isomorphic/mimeType.js +11 -3
- package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
- package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
- package/lib/utils/isomorphic/stackTrace.js +169 -0
- package/lib/utils/isomorphic/stringUtils.js +1 -1
- package/lib/utils/{time.js → isomorphic/time.js} +1 -13
- package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
- package/lib/utils/isomorphic/traceUtils.js +23 -0
- package/lib/{utils/index.js → utils.js} +200 -121
- package/lib/utilsBundle.js +1 -25
- package/lib/utilsBundleImpl/index.js +119 -121
- package/lib/vite/htmlReport/index.html +20 -20
- package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
- package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -4
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -4
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +123 -99
- package/types/types.d.ts +110 -38
- package/lib/utils/stackTrace.js +0 -134
- package/lib/utils/traceUtils.js +0 -44
- package/lib/vite/recorder/assets/codeMirrorModule-3Qn3tPnZ.js +0 -24
- package/lib/vite/recorder/assets/index-Bek6JFv8.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-aLkSUGpW.js +0 -24
- package/lib/vite/traceViewer/assets/defaultSettingsView-CxUo6zd3.js +0 -243
- package/lib/vite/traceViewer/defaultSettingsView.DtIkrKWn.css +0 -1
- package/lib/vite/traceViewer/index.Bhu5cv5R.js +0 -2
- package/lib/vite/traceViewer/uiMode.BBy7FOVd.js +0 -5
- /package/lib/{utils → server/utils}/ascii.js +0 -0
- /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
- /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
- /package/lib/{utils → server/utils}/task.js +0 -0
- /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
- /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
- /package/lib/{common → utils/isomorphic}/types.js +0 -0
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/recorder/assets/{index-CAQewHss.css → index-eHBmevrY.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/{uiMode.Be_ME-Go.css → uiMode.BatfzHMG.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -5,20 +5,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CRBrowserContext = exports.CRBrowser = void 0;
|
|
7
7
|
var _path = _interopRequireDefault(require("path"));
|
|
8
|
+
var _assert = require("../../utils/isomorphic/assert");
|
|
9
|
+
var _crypto = require("../utils/crypto");
|
|
10
|
+
var _artifact = require("../artifact");
|
|
8
11
|
var _browser = require("../browser");
|
|
9
12
|
var _browserContext = require("../browserContext");
|
|
10
|
-
var
|
|
13
|
+
var _frames = require("../frames");
|
|
11
14
|
var network = _interopRequireWildcard(require("../network"));
|
|
12
15
|
var _page = require("../page");
|
|
13
|
-
var _frames = require("../frames");
|
|
14
16
|
var _crConnection = require("./crConnection");
|
|
15
17
|
var _crPage = require("./crPage");
|
|
16
18
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
17
19
|
var _crServiceWorker = require("./crServiceWorker");
|
|
18
|
-
var _artifact = require("../artifact");
|
|
19
20
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
21
|
-
function _interopRequireDefault(
|
|
21
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
22
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
23
|
/**
|
|
23
24
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
24
25
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -143,7 +144,7 @@ class CRBrowser extends _browser.Browser {
|
|
|
143
144
|
}) {
|
|
144
145
|
if (targetInfo.type === 'browser') return;
|
|
145
146
|
const session = this._session.createChildSession(sessionId);
|
|
146
|
-
(0,
|
|
147
|
+
(0, _assert.assert)(targetInfo.browserContextId, 'targetInfo: ' + JSON.stringify(targetInfo, null, 2));
|
|
147
148
|
let context = this._contexts.get(targetInfo.browserContextId) || null;
|
|
148
149
|
if (!context) {
|
|
149
150
|
// TODO: auto attach only to pages from our contexts.
|
|
@@ -159,9 +160,9 @@ class CRBrowser extends _browser.Browser {
|
|
|
159
160
|
session.detach().catch(() => {});
|
|
160
161
|
return;
|
|
161
162
|
}
|
|
162
|
-
(0,
|
|
163
|
-
(0,
|
|
164
|
-
(0,
|
|
163
|
+
(0, _assert.assert)(!this._crPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
|
|
164
|
+
(0, _assert.assert)(!this._backgroundPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
|
|
165
|
+
(0, _assert.assert)(!this._serviceWorkers.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
|
|
165
166
|
if (targetInfo.type === 'background_page') {
|
|
166
167
|
const backgroundPage = new _crPage.CRPage(session, targetInfo.targetId, context, null, {
|
|
167
168
|
hasUIWindow: false,
|
|
@@ -258,7 +259,7 @@ class CRBrowser extends _browser.Browser {
|
|
|
258
259
|
return await this._connection.createBrowserSession();
|
|
259
260
|
}
|
|
260
261
|
async startTracing(page, options = {}) {
|
|
261
|
-
(0,
|
|
262
|
+
(0, _assert.assert)(!this._tracingRecording, 'Cannot start recording trace while already recording trace.');
|
|
262
263
|
this._tracingClient = page ? page._delegate._mainFrameSession._client : this._session;
|
|
263
264
|
const defaultCategories = ['-*', 'devtools.timeline', 'v8.execute', 'disabled-by-default-devtools.timeline', 'disabled-by-default-devtools.timeline.frame', 'toplevel', 'blink.console', 'blink.user_timing', 'latencyInfo', 'disabled-by-default-devtools.timeline.stack', 'disabled-by-default-v8.cpu_profiler', 'disabled-by-default-v8.cpu_profiler.hires'];
|
|
264
265
|
const {
|
|
@@ -273,9 +274,9 @@ class CRBrowser extends _browser.Browser {
|
|
|
273
274
|
});
|
|
274
275
|
}
|
|
275
276
|
async stopTracing() {
|
|
276
|
-
(0,
|
|
277
|
+
(0, _assert.assert)(this._tracingClient, 'Tracing was not started.');
|
|
277
278
|
const [event] = await Promise.all([new Promise(f => this._tracingClient.once('Tracing.tracingComplete', f)), this._tracingClient.send('Tracing.end')]);
|
|
278
|
-
const tracingPath = _path.default.join(this.options.artifactsDir, (0,
|
|
279
|
+
const tracingPath = _path.default.join(this.options.artifactsDir, (0, _crypto.createGuid)() + '.crtrace');
|
|
279
280
|
await (0, _crProtocolHelper.saveProtocolStream)(this._tracingClient, event.stream, tracingPath);
|
|
280
281
|
this._tracingRecording = false;
|
|
281
282
|
const artifact = new _artifact.Artifact(this, tracingPath);
|
|
@@ -297,7 +298,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
297
298
|
this._authenticateProxyViaCredentials();
|
|
298
299
|
}
|
|
299
300
|
async _initialize() {
|
|
300
|
-
(0,
|
|
301
|
+
(0, _assert.assert)(!Array.from(this._browser._crPages.values()).some(page => page._browserContext === this));
|
|
301
302
|
const promises = [super._initialize()];
|
|
302
303
|
if (this._browser.options.name !== 'clank' && this._options.acceptDownloads !== 'internal-browser-default') {
|
|
303
304
|
promises.push(this._browser._session.send('Browser.setDownloadBehavior', {
|
|
@@ -335,7 +336,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
335
336
|
const page = this._browser._crPages.get(key);
|
|
336
337
|
if (page._opener) newKeys.delete(key);
|
|
337
338
|
}
|
|
338
|
-
(0,
|
|
339
|
+
(0, _assert.assert)(newKeys.size === 1);
|
|
339
340
|
[targetId] = [...newKeys];
|
|
340
341
|
}
|
|
341
342
|
return this._browser._crPages.get(targetId)._page;
|
|
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.kBrowserCloseMessageId = exports.ConnectionEvents = exports.CRSession = exports.CRConnection = exports.CDPSession = void 0;
|
|
7
|
-
var _utils = require("../../utils");
|
|
8
7
|
var _events = require("events");
|
|
9
|
-
var
|
|
8
|
+
var _utils = require("../../utils");
|
|
9
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
10
10
|
var _helper = require("../helper");
|
|
11
11
|
var _protocolError = require("../protocolError");
|
|
12
12
|
/**
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CRCoverage = void 0;
|
|
7
|
-
var _eventsHelper = require("../../utils/eventsHelper");
|
|
8
7
|
var _utils = require("../../utils");
|
|
8
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
9
9
|
/**
|
|
10
10
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
11
11
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CRDevTools = void 0;
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
|
-
function _interopRequireDefault(
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
/**
|
|
10
10
|
* Copyright (c) Microsoft Corporation.
|
|
11
11
|
*
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.DragManager = void 0;
|
|
7
|
-
var _utils = require("../../utils");
|
|
8
7
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
8
|
+
var _utils = require("../../utils");
|
|
9
9
|
/**
|
|
10
10
|
* Copyright (c) Microsoft Corporation.
|
|
11
11
|
*
|
|
@@ -4,13 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CRExecutionContext = void 0;
|
|
7
|
+
exports.createHandle = createHandle;
|
|
8
|
+
var _assert = require("../../utils/isomorphic/assert");
|
|
7
9
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
8
|
-
var
|
|
9
|
-
var _stackTrace = require("../../utils/stackTrace");
|
|
10
|
+
var _stackTrace = require("../../utils/isomorphic/stackTrace");
|
|
10
11
|
var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
|
|
12
|
+
var js = _interopRequireWildcard(require("../javascript"));
|
|
13
|
+
var dom = _interopRequireWildcard(require("../dom"));
|
|
11
14
|
var _protocolError = require("../protocolError");
|
|
12
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
17
|
/**
|
|
15
18
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
16
19
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -47,7 +50,7 @@ class CRExecutionContext {
|
|
|
47
50
|
if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
|
|
48
51
|
return remoteObject.value;
|
|
49
52
|
}
|
|
50
|
-
async rawEvaluateHandle(expression) {
|
|
53
|
+
async rawEvaluateHandle(context, expression) {
|
|
51
54
|
const {
|
|
52
55
|
exceptionDetails,
|
|
53
56
|
result: remoteObject
|
|
@@ -56,9 +59,9 @@ class CRExecutionContext {
|
|
|
56
59
|
contextId: this._contextId
|
|
57
60
|
}).catch(rewriteError);
|
|
58
61
|
if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
|
|
59
|
-
return remoteObject
|
|
62
|
+
return createHandle(context, remoteObject);
|
|
60
63
|
}
|
|
61
|
-
async evaluateWithArguments(expression, returnByValue, utilityScript, values,
|
|
64
|
+
async evaluateWithArguments(expression, returnByValue, utilityScript, values, handles) {
|
|
62
65
|
const {
|
|
63
66
|
exceptionDetails,
|
|
64
67
|
result: remoteObject
|
|
@@ -69,33 +72,31 @@ class CRExecutionContext {
|
|
|
69
72
|
objectId: utilityScript._objectId
|
|
70
73
|
}, ...values.map(value => ({
|
|
71
74
|
value
|
|
72
|
-
})), ...
|
|
73
|
-
objectId
|
|
75
|
+
})), ...handles.map(handle => ({
|
|
76
|
+
objectId: handle._objectId
|
|
74
77
|
}))],
|
|
75
78
|
returnByValue,
|
|
76
79
|
awaitPromise: true,
|
|
77
80
|
userGesture: true
|
|
78
81
|
}).catch(rewriteError);
|
|
79
82
|
if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
|
|
80
|
-
return returnByValue ? (0, _utilityScriptSerializers.parseEvaluationResultValue)(remoteObject.value) : utilityScript._context
|
|
83
|
+
return returnByValue ? (0, _utilityScriptSerializers.parseEvaluationResultValue)(remoteObject.value) : createHandle(utilityScript._context, remoteObject);
|
|
81
84
|
}
|
|
82
|
-
async getProperties(
|
|
85
|
+
async getProperties(object) {
|
|
83
86
|
const response = await this._client.send('Runtime.getProperties', {
|
|
84
|
-
objectId,
|
|
87
|
+
objectId: object._objectId,
|
|
85
88
|
ownProperties: true
|
|
86
89
|
});
|
|
87
90
|
const result = new Map();
|
|
88
91
|
for (const property of response.result) {
|
|
89
92
|
if (!property.enumerable || !property.value) continue;
|
|
90
|
-
result.set(property.name,
|
|
93
|
+
result.set(property.name, createHandle(object._context, property.value));
|
|
91
94
|
}
|
|
92
95
|
return result;
|
|
93
96
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
async releaseHandle(objectId) {
|
|
98
|
-
await (0, _crProtocolHelper.releaseObject)(this._client, objectId);
|
|
97
|
+
async releaseHandle(handle) {
|
|
98
|
+
if (!handle._objectId) return;
|
|
99
|
+
await (0, _crProtocolHelper.releaseObject)(this._client, handle._objectId);
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
exports.CRExecutionContext = CRExecutionContext;
|
|
@@ -129,4 +130,11 @@ function renderPreview(object) {
|
|
|
129
130
|
}
|
|
130
131
|
if (object.subtype === 'array' && object.preview) return js.sparseArrayToString(object.preview.properties);
|
|
131
132
|
return object.description;
|
|
133
|
+
}
|
|
134
|
+
function createHandle(context, remoteObject) {
|
|
135
|
+
if (remoteObject.subtype === 'node') {
|
|
136
|
+
(0, _assert.assert)(context instanceof dom.FrameExecutionContext);
|
|
137
|
+
return new dom.ElementHandle(context, remoteObject.objectId);
|
|
138
|
+
}
|
|
139
|
+
return new js.JSHandle(context, remoteObject.subtype || remoteObject.type, renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
|
|
132
140
|
}
|
|
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.RawTouchscreenImpl = exports.RawMouseImpl = exports.RawKeyboardImpl = void 0;
|
|
7
|
+
var _utils = require("../../utils");
|
|
7
8
|
var input = _interopRequireWildcard(require("../input"));
|
|
8
9
|
var _macEditingCommands = require("../macEditingCommands");
|
|
9
|
-
var _utils = require("../../utils");
|
|
10
10
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
11
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
13
|
/**
|
|
14
14
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
15
15
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CRNetworkManager = void 0;
|
|
7
7
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
8
|
+
var _utils = require("../../utils");
|
|
9
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
8
10
|
var _helper = require("../helper");
|
|
9
|
-
var _eventsHelper = require("../../utils/eventsHelper");
|
|
10
11
|
var network = _interopRequireWildcard(require("../network"));
|
|
11
|
-
var _utils = require("../../utils");
|
|
12
12
|
var _protocolError = require("../protocolError");
|
|
13
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
15
|
-
function _interopRequireDefault(
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
16
|
// undetected-undetected_playwright-patch - custom imports
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -47,6 +47,7 @@ class CRNetworkManager {
|
|
|
47
47
|
this._requestIdToRequestPausedEvent = new Map();
|
|
48
48
|
this._responseExtraInfoTracker = new ResponseExtraInfoTracker();
|
|
49
49
|
this._sessions = new Map();
|
|
50
|
+
this._alreadyTrackedNetworkIds = new Set();
|
|
50
51
|
this._page = page;
|
|
51
52
|
this._serviceWorker = serviceWorker;
|
|
52
53
|
}
|
|
@@ -205,6 +206,7 @@ class CRNetworkManager {
|
|
|
205
206
|
return !this._credentials.origin || new URL(url).origin.toLowerCase() === this._credentials.origin.toLowerCase();
|
|
206
207
|
}
|
|
207
208
|
_onRequestPaused(sessionInfo, event) {
|
|
209
|
+
if (this._alreadyTrackedNetworkIds.has(event.networkId)) return;
|
|
208
210
|
if (!event.networkId) {
|
|
209
211
|
// Fetch without networkId means that request was not recognized by inspector, and
|
|
210
212
|
// it will never receive Network.requestWillBeSent. Continue the request to not affect it.
|
|
@@ -247,6 +249,7 @@ class CRNetworkManager {
|
|
|
247
249
|
}
|
|
248
250
|
_onRequest(requestWillBeSentSessionInfo, requestWillBeSentEvent, requestPausedSessionInfo, requestPausedEvent) {
|
|
249
251
|
var _this$_page, _this$_page2, _this$_page3;
|
|
252
|
+
if (this._alreadyTrackedNetworkIds.has(requestWillBeSentEvent.initiator.requestId)) return;
|
|
250
253
|
if (requestWillBeSentEvent.request.url.startsWith('data:')) return;
|
|
251
254
|
let redirectedFrom = null;
|
|
252
255
|
if (requestWillBeSentEvent.redirectResponse) {
|
|
@@ -322,7 +325,7 @@ class CRNetworkManager {
|
|
|
322
325
|
headers: headersOverride
|
|
323
326
|
});
|
|
324
327
|
} else {
|
|
325
|
-
route = new RouteImpl(requestPausedSessionInfo.session, requestPausedEvent.requestId, this._page);
|
|
328
|
+
route = new RouteImpl(requestPausedSessionInfo.session, requestPausedEvent.requestId, this._page, requestPausedEvent.networkId, this);
|
|
326
329
|
}
|
|
327
330
|
}
|
|
328
331
|
const isNavigationRequest = requestWillBeSentEvent.requestId === requestWillBeSentEvent.loaderId && requestWillBeSentEvent.type === 'Document';
|
|
@@ -436,20 +439,13 @@ class CRNetworkManager {
|
|
|
436
439
|
if (request._interceptionId) this._attemptedAuthentications.delete(request._interceptionId);
|
|
437
440
|
}
|
|
438
441
|
_handleRequestRedirect(request, responsePayload, timestamp, hasExtraInfo) {
|
|
439
|
-
|
|
440
|
-
const response = this._createResponse(request, responsePayload, hasExtraInfo);
|
|
441
|
-
response.setTransferSize(null);
|
|
442
|
-
response.setEncodedBodySize(null);
|
|
443
|
-
response._requestFinished((timestamp - request._timestamp) * 1000);
|
|
444
|
-
this._deleteRequest(request);
|
|
445
|
-
(((_this$_page4 = this._page) === null || _this$_page4 === void 0 ? void 0 : _this$_page4._frameManager) || this._serviceWorker).requestReceivedResponse(response);
|
|
446
|
-
(((_this$_page5 = this._page) === null || _this$_page5 === void 0 ? void 0 : _this$_page5._frameManager) || this._serviceWorker).reportRequestFinished(request.request, response);
|
|
442
|
+
return;
|
|
447
443
|
}
|
|
448
444
|
_onResponseReceivedExtraInfo(event) {
|
|
449
445
|
this._responseExtraInfoTracker.responseReceivedExtraInfo(event);
|
|
450
446
|
}
|
|
451
447
|
_onResponseReceived(sessionInfo, event) {
|
|
452
|
-
var _this$
|
|
448
|
+
var _this$_page4;
|
|
453
449
|
let request = this._requestIdToRequest.get(event.requestId);
|
|
454
450
|
// For frame-level Requests that are handled by a Service Worker's fetch handler, we'll never get a requestPaused event, so we need to
|
|
455
451
|
// manually create the request. In an ideal world, crNetworkManager would be able to know this on Network.requestWillBeSent, but there
|
|
@@ -465,10 +461,10 @@ class CRNetworkManager {
|
|
|
465
461
|
// FileUpload sends a response without a matching request.
|
|
466
462
|
if (!request) return;
|
|
467
463
|
const response = this._createResponse(request, event.response, event.hasExtraInfo);
|
|
468
|
-
(((_this$
|
|
464
|
+
(((_this$_page4 = this._page) === null || _this$_page4 === void 0 ? void 0 : _this$_page4._frameManager) || this._serviceWorker).requestReceivedResponse(response);
|
|
469
465
|
}
|
|
470
466
|
_onLoadingFinished(sessionInfo, event) {
|
|
471
|
-
var _this$
|
|
467
|
+
var _this$_page5;
|
|
472
468
|
this._responseExtraInfoTracker.loadingFinished(event);
|
|
473
469
|
const request = this._requestIdToRequest.get(event.requestId);
|
|
474
470
|
// For certain requestIds we never receive requestWillBeSent event.
|
|
@@ -485,10 +481,10 @@ class CRNetworkManager {
|
|
|
485
481
|
response._requestFinished(_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
|
|
486
482
|
}
|
|
487
483
|
this._deleteRequest(request);
|
|
488
|
-
(((_this$
|
|
484
|
+
(((_this$_page5 = this._page) === null || _this$_page5 === void 0 ? void 0 : _this$_page5._frameManager) || this._serviceWorker).reportRequestFinished(request.request, response);
|
|
489
485
|
}
|
|
490
486
|
_onLoadingFailed(sessionInfo, event) {
|
|
491
|
-
var _this$
|
|
487
|
+
var _this$_page6;
|
|
492
488
|
this._responseExtraInfoTracker.loadingFailed(event);
|
|
493
489
|
let request = this._requestIdToRequest.get(event.requestId);
|
|
494
490
|
if (!request) {
|
|
@@ -518,7 +514,7 @@ class CRNetworkManager {
|
|
|
518
514
|
}
|
|
519
515
|
this._deleteRequest(request);
|
|
520
516
|
request.request._setFailureText(event.errorText || event.blockedReason || '');
|
|
521
|
-
(((_this$
|
|
517
|
+
(((_this$_page6 = this._page) === null || _this$_page6 === void 0 ? void 0 : _this$_page6._frameManager) || this._serviceWorker).requestFailed(request.request, !!event.canceled);
|
|
522
518
|
}
|
|
523
519
|
_maybeUpdateOOPIFMainRequest(sessionInfo, request) {
|
|
524
520
|
// OOPIF has a main request that starts in the parent session but finishes in the child session.
|
|
@@ -575,15 +571,20 @@ class InterceptableRequest {
|
|
|
575
571
|
}
|
|
576
572
|
}
|
|
577
573
|
class RouteImpl {
|
|
578
|
-
constructor(session, interceptionId, page) {
|
|
574
|
+
constructor(session, interceptionId, page, networkId, sessionManager) {
|
|
579
575
|
this._session = void 0;
|
|
580
576
|
this._interceptionId = void 0;
|
|
581
577
|
this._alreadyContinuedParams = void 0;
|
|
582
578
|
this._fulfilled = false;
|
|
579
|
+
this._sessionManager = void 0;
|
|
580
|
+
this._networkId = void 0;
|
|
583
581
|
this._page = void 0;
|
|
584
582
|
this._session = session;
|
|
585
583
|
this._interceptionId = interceptionId;
|
|
586
584
|
this._page = page;
|
|
585
|
+
this._networkId = networkId;
|
|
586
|
+
this._sessionManager = sessionManager;
|
|
587
|
+
_eventsHelper.eventsHelper.addEventListener(this._session, 'Fetch.requestPaused', async e => await this._networkRequestIntercepted(e));
|
|
587
588
|
}
|
|
588
589
|
async continue(overrides) {
|
|
589
590
|
this._alreadyContinuedParams = {
|
|
@@ -593,12 +594,22 @@ class RouteImpl {
|
|
|
593
594
|
method: overrides.method,
|
|
594
595
|
postData: overrides.postData ? overrides.postData.toString('base64') : undefined
|
|
595
596
|
};
|
|
596
|
-
|
|
597
|
-
await
|
|
598
|
-
|
|
597
|
+
if (overrides.url && (overrides.url === 'http://patchright-init-script-inject.internal/' || overrides.url === 'https://patchright-init-script-inject.internal/')) {
|
|
598
|
+
await catchDisallowedErrors(async () => {
|
|
599
|
+
this._sessionManager._alreadyTrackedNetworkIds.add(this._networkId);
|
|
600
|
+
this._session.send('Fetch.continueRequest', {
|
|
601
|
+
requestId: this._interceptionId,
|
|
602
|
+
interceptResponse: true
|
|
603
|
+
});
|
|
604
|
+
});
|
|
605
|
+
} else {
|
|
606
|
+
await catchDisallowedErrors(async () => {
|
|
607
|
+
await this._session.send('Fetch.continueRequest', this._alreadyContinuedParams);
|
|
608
|
+
});
|
|
609
|
+
}
|
|
599
610
|
}
|
|
600
611
|
async fulfill(response) {
|
|
601
|
-
const isTextHtml = response.headers.some(header => header.name === 'content-type' && header.value.includes('text/html'));
|
|
612
|
+
const isTextHtml = response.resourceType === 'Document' || response.headers.some(header => header.name === 'content-type' && header.value.includes('text/html'));
|
|
602
613
|
var allInjections = [...this._page._delegate._mainFrameSession._evaluateOnNewDocumentScripts];
|
|
603
614
|
for (const binding of this._page._delegate._browserContext._pageBindings.values()) {
|
|
604
615
|
if (!allInjections.includes(binding)) allInjections.push(binding);
|
|
@@ -625,7 +636,8 @@ class RouteImpl {
|
|
|
625
636
|
}
|
|
626
637
|
let injectionHTML = "";
|
|
627
638
|
allInjections.forEach(script => {
|
|
628
|
-
|
|
639
|
+
let scriptId = _crypto.default.randomBytes(22).toString('hex');
|
|
640
|
+
injectionHTML += `<script class="${this._page._delegate.initScriptTag}" nonce="${scriptNonce}" type="text/javascript">document.getElementById("${scriptId}")?.remove();${script.source}</script>`;
|
|
629
641
|
});
|
|
630
642
|
if (response.isBase64) {
|
|
631
643
|
response.isBase64 = false;
|
|
@@ -639,7 +651,7 @@ class RouteImpl {
|
|
|
639
651
|
const responseHeaders = splitSetCookieHeader(response.headers);
|
|
640
652
|
await catchDisallowedErrors(async () => {
|
|
641
653
|
await this._session.send('Fetch.fulfillRequest', {
|
|
642
|
-
requestId: this._interceptionId,
|
|
654
|
+
requestId: response.interceptionId ? response.interceptionId : this._interceptionId,
|
|
643
655
|
responseCode: response.status,
|
|
644
656
|
responsePhrase: network.statusText(response.status),
|
|
645
657
|
responseHeaders,
|
|
@@ -657,6 +669,41 @@ class RouteImpl {
|
|
|
657
669
|
});
|
|
658
670
|
});
|
|
659
671
|
}
|
|
672
|
+
async _networkRequestIntercepted(event) {
|
|
673
|
+
if (event.resourceType !== 'Document') {
|
|
674
|
+
await catchDisallowedErrors(async () => {
|
|
675
|
+
await this._session.send('Fetch.continueRequest', {
|
|
676
|
+
requestId: event.requestId
|
|
677
|
+
});
|
|
678
|
+
});
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
if (this._networkId != event.networkId || !this._sessionManager._alreadyTrackedNetworkIds.has(event.networkId)) return;
|
|
682
|
+
try {
|
|
683
|
+
if (event.responseStatusCode >= 301 && event.responseStatusCode <= 308 || event.redirectedRequestId && !event.responseStatusCode) {
|
|
684
|
+
await this._session.send('Fetch.continueRequest', {
|
|
685
|
+
requestId: event.requestId,
|
|
686
|
+
interceptResponse: true
|
|
687
|
+
});
|
|
688
|
+
} else {
|
|
689
|
+
const responseBody = await this._session.send('Fetch.getResponseBody', {
|
|
690
|
+
requestId: event.requestId
|
|
691
|
+
});
|
|
692
|
+
await this.fulfill({
|
|
693
|
+
headers: event.responseHeaders,
|
|
694
|
+
isBase64: true,
|
|
695
|
+
body: responseBody.body,
|
|
696
|
+
status: event.responseStatusCode,
|
|
697
|
+
interceptionId: event.requestId,
|
|
698
|
+
resourceType: event.resourceType
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
} catch (error) {
|
|
702
|
+
await this._session._sendMayFail('Fetch.continueRequest', {
|
|
703
|
+
requestId: event.requestId
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
}
|
|
660
707
|
}
|
|
661
708
|
|
|
662
709
|
// In certain cases, protocol will return error if the request was already canceled
|
|
@@ -6,16 +6,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.CRPage = void 0;
|
|
7
7
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
9
|
+
var _assert = require("../../utils/isomorphic/assert");
|
|
10
|
+
var _crypto2 = require("../utils/crypto");
|
|
11
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
12
|
+
var _stackTrace = require("../../utils/isomorphic/stackTrace");
|
|
13
13
|
var dialog = _interopRequireWildcard(require("../dialog"));
|
|
14
14
|
var dom = _interopRequireWildcard(require("../dom"));
|
|
15
15
|
var frames = _interopRequireWildcard(require("../frames"));
|
|
16
16
|
var _helper = require("../helper");
|
|
17
17
|
var network = _interopRequireWildcard(require("../network"));
|
|
18
18
|
var _page = require("../page");
|
|
19
|
+
var _registry = require("../registry");
|
|
19
20
|
var _crAccessibility = require("./crAccessibility");
|
|
20
21
|
var _crBrowser = require("./crBrowser");
|
|
21
22
|
var _crCoverage = require("./crCoverage");
|
|
@@ -31,8 +32,8 @@ var _browserContext = require("../browserContext");
|
|
|
31
32
|
var _errors = require("../errors");
|
|
32
33
|
var _protocolError = require("../protocolError");
|
|
33
34
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
34
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
35
|
-
function _interopRequireDefault(
|
|
35
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
36
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
36
37
|
// undetected-undetected_playwright-patch - custom imports
|
|
37
38
|
|
|
38
39
|
/**
|
|
@@ -96,7 +97,7 @@ class CRPage {
|
|
|
96
97
|
this.updateExtraHTTPHeaders();
|
|
97
98
|
this.updateHttpCredentials();
|
|
98
99
|
this._networkManager.setRequestInterception(true);
|
|
99
|
-
this.initScriptTag =
|
|
100
|
+
this.initScriptTag = _crypto.default.randomBytes(20).toString('hex');
|
|
100
101
|
this._mainFrameSession = new FrameSession(this, client, targetId, null);
|
|
101
102
|
this._sessions.set(targetId, this._mainFrameSession);
|
|
102
103
|
if (opener && !browserContext._options.noDefaultViewport) {
|
|
@@ -256,9 +257,6 @@ class CRPage {
|
|
|
256
257
|
async getOwnerFrame(handle) {
|
|
257
258
|
return this._sessionForHandle(handle)._getOwnerFrame(handle);
|
|
258
259
|
}
|
|
259
|
-
isElementHandle(remoteObject) {
|
|
260
|
-
return remoteObject.subtype === 'node';
|
|
261
|
-
}
|
|
262
260
|
async getBoundingBox(handle) {
|
|
263
261
|
return this._sessionForHandle(handle)._getBoundingBox(handle);
|
|
264
262
|
}
|
|
@@ -283,9 +281,6 @@ class CRPage {
|
|
|
283
281
|
async getContentQuads(handle) {
|
|
284
282
|
return this._sessionForHandle(handle)._getContentQuads(handle);
|
|
285
283
|
}
|
|
286
|
-
async setInputFiles(handle, files) {
|
|
287
|
-
await handle.evaluateInUtility(([injected, node, files]) => injected.setInputFiles(node, files), files);
|
|
288
|
-
}
|
|
289
284
|
async setInputFilePaths(handle, files) {
|
|
290
285
|
const frame = await handle.ownerFrame();
|
|
291
286
|
if (!frame) throw new Error('Cannot set input files to detached input element');
|
|
@@ -402,7 +397,7 @@ class FrameSession {
|
|
|
402
397
|
}
|
|
403
398
|
let screencastOptions;
|
|
404
399
|
if (!isSettingStorageState && this._isMainFrame() && this._crPage._browserContext._options.recordVideo && hasUIWindow) {
|
|
405
|
-
const screencastId = (0,
|
|
400
|
+
const screencastId = (0, _crypto2.createGuid)();
|
|
406
401
|
const outputFile = _path.default.join(this._crPage._browserContext._options.recordVideo.dir, screencastId + '.webm');
|
|
407
402
|
screencastOptions = {
|
|
408
403
|
// validateBrowserContextOptions ensures correct video size.
|
|
@@ -515,6 +510,7 @@ class FrameSession {
|
|
|
515
510
|
async _onLifecycleEvent(event) {
|
|
516
511
|
if (this._eventBelongsToStaleFrame(event.frameId)) return;
|
|
517
512
|
if (event.name === 'load') this._page._frameManager.frameLifecycleEvent(event.frameId, 'load');else if (event.name === 'DOMContentLoaded') this._page._frameManager.frameLifecycleEvent(event.frameId, 'domcontentloaded');
|
|
513
|
+
await this._client._sendMayFail('Runtime.runIfWaitingForDebugger');
|
|
518
514
|
var document = await this._client._sendMayFail("DOM.getDocument");
|
|
519
515
|
if (!document) return;
|
|
520
516
|
var query = await this._client._sendMayFail("DOM.querySelectorAll", {
|
|
@@ -572,6 +568,7 @@ class FrameSession {
|
|
|
572
568
|
if (this._eventBelongsToStaleFrame(framePayload.id)) return;
|
|
573
569
|
this._page._frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url + (framePayload.urlFragment || ''), framePayload.name || '', framePayload.loaderId, initial);
|
|
574
570
|
if (!initial) this._firstNonInitialNavigationCommittedFulfill();
|
|
571
|
+
await this._client._sendMayFail('Runtime.runIfWaitingForDebugger');
|
|
575
572
|
var document = await this._client._sendMayFail("DOM.getDocument");
|
|
576
573
|
if (!document) return;
|
|
577
574
|
var query = await this._client._sendMayFail("DOM.querySelectorAll", {
|
|
@@ -626,7 +623,6 @@ class FrameSession {
|
|
|
626
623
|
const delegate = new _crExecutionContext.CRExecutionContext(this._client, contextPayload);
|
|
627
624
|
let worldName = contextPayload.name;
|
|
628
625
|
const context = new dom.FrameExecutionContext(delegate, frame, worldName);
|
|
629
|
-
context[contextDelegateSymbol] = delegate;
|
|
630
626
|
if (worldName) frame._contextCreated(worldName, context);
|
|
631
627
|
this._contextIdToContext.set(contextPayload.id, context);
|
|
632
628
|
for (const source of this._exposedBindingScripts) {
|
|
@@ -699,7 +695,7 @@ class FrameSession {
|
|
|
699
695
|
session.on('Target.attachedToTarget', event => this._onAttachedToTarget(event));
|
|
700
696
|
session.on('Target.detachedFromTarget', event => this._onDetachedFromTarget(event));
|
|
701
697
|
session.on('Runtime.consoleAPICalled', event => {
|
|
702
|
-
const args = event.args.map(o => worker._existingExecutionContext
|
|
698
|
+
const args = event.args.map(o => (0, _crExecutionContext.createHandle)(worker._existingExecutionContext, o));
|
|
703
699
|
this._page._addConsoleMessage(event.type, args, (0, _crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
|
|
704
700
|
});
|
|
705
701
|
session.on('Runtime.exceptionThrown', exception => this._page.emitOnContextOnceInitialized(_browserContext.BrowserContext.Events.PageError, (0, _crProtocolHelper.exceptionToError)(exception.exceptionDetails), this._page));
|
|
@@ -756,7 +752,7 @@ class FrameSession {
|
|
|
756
752
|
}
|
|
757
753
|
const context = this._contextIdToContext.get(event.executionContextId);
|
|
758
754
|
if (!context) return;
|
|
759
|
-
const values = event.args.map(arg =>
|
|
755
|
+
const values = event.args.map(arg => (0, _crExecutionContext.createHandle)(context, arg));
|
|
760
756
|
this._page._addConsoleMessage(event.type, values, (0, _crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
|
|
761
757
|
}
|
|
762
758
|
async _onBindingCalled(event) {
|
|
@@ -839,14 +835,14 @@ class FrameSession {
|
|
|
839
835
|
});
|
|
840
836
|
}
|
|
841
837
|
async _createVideoRecorder(screencastId, options) {
|
|
842
|
-
(0,
|
|
838
|
+
(0, _assert.assert)(!this._screencastId);
|
|
843
839
|
const ffmpegPath = _registry.registry.findExecutable('ffmpeg').executablePathOrDie(this._page.attribution.playwright.options.sdkLanguage);
|
|
844
840
|
this._videoRecorder = await _videoRecorder.VideoRecorder.launch(this._crPage._page, ffmpegPath, options);
|
|
845
841
|
this._screencastId = screencastId;
|
|
846
842
|
}
|
|
847
843
|
async _startVideoRecording(options) {
|
|
848
844
|
const screencastId = this._screencastId;
|
|
849
|
-
(0,
|
|
845
|
+
(0, _assert.assert)(screencastId);
|
|
850
846
|
this._page.once(_page.Page.Events.Close, () => this._stopVideoRecording().catch(() => {}));
|
|
851
847
|
const gotFirstFrame = new Promise(f => this._client.once('Page.screencastFrame', f));
|
|
852
848
|
await this._startScreencast(this._videoRecorder, {
|
|
@@ -887,7 +883,7 @@ class FrameSession {
|
|
|
887
883
|
}
|
|
888
884
|
async _updateViewport(preserveWindowBoundaries) {
|
|
889
885
|
if (this._crPage._browserContext._browser.isClank()) return;
|
|
890
|
-
(0,
|
|
886
|
+
(0, _assert.assert)(this._isMainFrame());
|
|
891
887
|
const options = this._crPage._browserContext._options;
|
|
892
888
|
const emulatedSize = this._page.emulatedSize();
|
|
893
889
|
if (emulatedSize === null) return;
|
|
@@ -972,6 +968,7 @@ class FrameSession {
|
|
|
972
968
|
const colorScheme = emulatedMedia.colorScheme === 'no-override' ? '' : emulatedMedia.colorScheme;
|
|
973
969
|
const reducedMotion = emulatedMedia.reducedMotion === 'no-override' ? '' : emulatedMedia.reducedMotion;
|
|
974
970
|
const forcedColors = emulatedMedia.forcedColors === 'no-override' ? '' : emulatedMedia.forcedColors;
|
|
971
|
+
const contrast = emulatedMedia.contrast === 'no-override' ? '' : emulatedMedia.contrast;
|
|
975
972
|
const features = [{
|
|
976
973
|
name: 'prefers-color-scheme',
|
|
977
974
|
value: colorScheme
|
|
@@ -981,6 +978,9 @@ class FrameSession {
|
|
|
981
978
|
}, {
|
|
982
979
|
name: 'forced-colors',
|
|
983
980
|
value: forcedColors
|
|
981
|
+
}, {
|
|
982
|
+
name: 'prefers-contrast',
|
|
983
|
+
value: contrast
|
|
984
984
|
}];
|
|
985
985
|
await this._client.send('Emulation.setEmulatedMedia', {
|
|
986
986
|
media,
|
|
@@ -1105,10 +1105,10 @@ class FrameSession {
|
|
|
1105
1105
|
async _adoptBackendNodeId(backendNodeId, to) {
|
|
1106
1106
|
const result = await this._client._sendMayFail('DOM.resolveNode', {
|
|
1107
1107
|
backendNodeId,
|
|
1108
|
-
executionContextId: to.
|
|
1108
|
+
executionContextId: to.delegate._contextId
|
|
1109
1109
|
});
|
|
1110
1110
|
if (!result || result.object.subtype === 'null') throw new Error(dom.kUnableToAdoptErrorMessage);
|
|
1111
|
-
return
|
|
1111
|
+
return (0, _crExecutionContext.createHandle)(to, result.object).asElement();
|
|
1112
1112
|
}
|
|
1113
1113
|
async _initBinding(binding = _page.PageBinding) {
|
|
1114
1114
|
var result = await this._client._sendMayFail('Page.createIsolatedWorld', {
|
|
@@ -1177,7 +1177,6 @@ async function emulateTimezone(session, timezoneId) {
|
|
|
1177
1177
|
throw exception;
|
|
1178
1178
|
}
|
|
1179
1179
|
}
|
|
1180
|
-
const contextDelegateSymbol = Symbol('delegate');
|
|
1181
1180
|
|
|
1182
1181
|
// Chromium reference: https://source.chromium.org/chromium/chromium/src/+/main:components/embedder_support/user_agent_utils.cc;l=434;drc=70a6711e08e9f9e0d8e4c48e9ba5cab62eb010c2
|
|
1183
1182
|
function calculateUserAgentMetadata(options) {
|