patchright-core 1.52.5 → 1.55.1
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 +65 -123
- package/bin/reinstall_chrome_beta_mac.sh +1 -1
- package/bin/reinstall_chrome_stable_mac.sh +1 -1
- package/bin/reinstall_msedge_beta_mac.sh +1 -1
- package/bin/reinstall_msedge_dev_mac.sh +1 -1
- package/bin/reinstall_msedge_stable_mac.sh +1 -1
- package/browsers.json +14 -14
- package/index.js +1 -1
- package/lib/androidServerImpl.js +4 -2
- package/lib/browserServerImpl.js +47 -12
- package/lib/cli/program.js +116 -50
- package/lib/cli/programWithTestStub.js +1 -1
- package/lib/client/android.js +30 -34
- package/lib/client/browser.js +54 -17
- package/lib/client/browserContext.js +67 -71
- package/lib/client/browserType.js +25 -34
- package/lib/client/channelOwner.js +20 -24
- package/lib/client/connection.js +6 -10
- package/lib/client/electron.js +8 -3
- package/lib/client/elementHandle.js +18 -21
- package/lib/client/fetch.js +5 -3
- package/lib/client/frame.js +54 -32
- package/lib/client/input.js +3 -1
- package/lib/client/jsHandle.js +4 -0
- package/lib/client/localUtils.js +0 -1
- package/lib/client/locator.js +30 -26
- package/lib/client/network.js +5 -12
- package/lib/client/page.js +32 -32
- package/lib/client/playwright.js +6 -16
- package/lib/client/selectors.js +18 -38
- package/lib/client/timeoutSettings.js +12 -8
- package/lib/client/tracing.js +24 -20
- package/lib/client/waiter.js +2 -2
- package/lib/client/webSocket.js +4 -22
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +1 -1
- package/lib/generated/webSocketMockSource.js +12 -50
- package/lib/inProcessFactory.js +9 -6
- package/lib/outofprocess.js +0 -2
- package/lib/protocol/validator.js +421 -345
- package/lib/protocol/validatorPrimitives.js +18 -4
- package/lib/remote/playwrightConnection.js +29 -166
- package/lib/remote/playwrightServer.js +233 -35
- package/lib/server/android/android.js +97 -83
- package/lib/server/android/backendAdb.js +0 -2
- package/lib/server/bidi/bidiBrowser.js +139 -73
- package/lib/server/bidi/bidiChromium.js +23 -22
- package/lib/server/bidi/bidiExecutionContext.js +2 -1
- package/lib/server/bidi/bidiFirefox.js +17 -14
- package/lib/server/bidi/bidiInput.js +22 -22
- package/lib/server/bidi/bidiNetworkManager.js +8 -11
- package/lib/server/bidi/bidiPage.js +42 -86
- package/lib/server/bidi/third_party/bidiProtocol.js +5 -133
- package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
- package/lib/server/{dispatchers/selectorsDispatcher.js → bidi/third_party/bidiProtocolPermissions.js} +20 -18
- package/lib/server/browser.js +30 -21
- package/lib/server/browserContext.js +203 -165
- package/lib/server/browserType.js +109 -107
- package/lib/server/chromium/chromium.js +84 -69
- package/lib/server/chromium/chromiumSwitches.js +13 -20
- package/lib/server/chromium/crBrowser.js +74 -40
- package/lib/server/chromium/crConnection.js +8 -9
- package/lib/server/chromium/crCoverage.js +11 -8
- package/lib/server/chromium/crDragDrop.js +25 -20
- package/lib/server/chromium/crExecutionContext.js +2 -1
- package/lib/server/chromium/crInput.js +32 -29
- package/lib/server/chromium/crNetworkManager.js +43 -31
- package/lib/server/chromium/crPage.js +98 -72
- package/lib/server/chromium/crServiceWorker.js +13 -18
- package/lib/server/chromium/videoRecorder.js +10 -18
- package/lib/server/clock.js +51 -39
- package/lib/server/codegen/csharp.js +10 -5
- package/lib/server/codegen/java.js +1 -1
- package/lib/server/codegen/javascript.js +1 -1
- package/lib/server/codegen/jsonl.js +2 -1
- package/lib/server/codegen/language.js +22 -1
- package/lib/server/codegen/languages.js +4 -4
- package/lib/server/codegen/python.js +1 -1
- package/lib/server/cookieStore.js +3 -1
- package/lib/server/debugController.js +105 -71
- package/lib/server/debugger.js +6 -23
- package/lib/server/deviceDescriptorsSource.json +237 -127
- package/lib/server/dialog.js +50 -6
- package/lib/server/dispatchers/androidDispatcher.js +77 -62
- package/lib/server/dispatchers/artifactDispatcher.js +18 -18
- package/lib/server/dispatchers/browserContextDispatcher.js +141 -91
- package/lib/server/dispatchers/browserDispatcher.js +55 -88
- package/lib/server/dispatchers/browserTypeDispatcher.js +18 -9
- package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -4
- package/lib/server/dispatchers/debugControllerDispatcher.js +12 -21
- package/lib/server/dispatchers/dialogDispatcher.js +4 -4
- package/lib/server/dispatchers/dispatcher.js +78 -53
- package/lib/server/dispatchers/electronDispatcher.js +19 -20
- package/lib/server/dispatchers/elementHandlerDispatcher.js +83 -93
- package/lib/server/dispatchers/frameDispatcher.js +98 -101
- package/lib/server/dispatchers/jsHandleDispatcher.js +21 -16
- package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -4
- package/lib/server/dispatchers/localUtilsDispatcher.js +53 -59
- package/lib/server/dispatchers/networkDispatchers.js +41 -35
- package/lib/server/dispatchers/pageDispatcher.js +156 -107
- package/lib/server/dispatchers/playwrightDispatcher.js +37 -25
- package/lib/server/dispatchers/streamDispatcher.js +15 -8
- package/lib/server/dispatchers/tracingDispatcher.js +22 -13
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +46 -35
- package/lib/server/dispatchers/writableStreamDispatcher.js +16 -10
- package/lib/server/dom.js +198 -266
- package/lib/server/download.js +3 -3
- package/lib/server/electron/electron.js +96 -103
- package/lib/server/electron/loader.js +1 -1
- package/lib/server/fetch.js +22 -41
- package/lib/server/fileUploadUtils.js +1 -1
- package/lib/server/firefox/ffBrowser.js +79 -55
- package/lib/server/firefox/ffExecutionContext.js +2 -1
- package/lib/server/firefox/ffInput.js +23 -23
- package/lib/server/firefox/ffNetworkManager.js +8 -6
- package/lib/server/firefox/ffPage.js +39 -36
- package/lib/server/firefox/firefox.js +9 -10
- package/lib/server/frameSelectors.js +63 -20
- package/lib/server/frames.js +495 -555
- package/lib/server/har/harRecorder.js +1 -1
- package/lib/server/har/harTracer.js +4 -2
- package/lib/server/helper.js +3 -7
- package/lib/server/index.js +0 -3
- package/lib/server/input.js +47 -54
- package/lib/server/instrumentation.js +8 -14
- package/lib/server/javascript.js +8 -16
- package/lib/server/launchApp.js +48 -30
- package/lib/server/localUtils.js +45 -38
- package/lib/server/network.js +44 -10
- package/lib/server/page.js +232 -177
- package/lib/server/pageBinding.js +6 -7
- package/lib/server/playwright.js +4 -14
- package/lib/server/progress.js +57 -49
- package/lib/server/recorder/recorderApp.js +298 -95
- package/lib/server/recorder/recorderRunner.js +23 -24
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +67 -10
- package/lib/server/recorder.js +284 -146
- package/lib/server/registry/index.js +83 -48
- package/lib/server/registry/nativeDeps.js +175 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +1 -1
- package/lib/server/screenshotter.js +84 -83
- package/lib/server/selectors.js +12 -12
- package/lib/server/socksClientCertificatesInterceptor.js +198 -136
- package/lib/server/trace/recorder/snapshotter.js +12 -19
- package/lib/server/trace/recorder/tracing.js +36 -27
- package/lib/server/trace/viewer/traceViewer.js +11 -20
- package/lib/server/transport.js +20 -22
- package/lib/server/utils/comparators.js +2 -2
- package/lib/server/utils/debug.js +3 -8
- package/lib/server/utils/debugLogger.js +8 -0
- package/lib/server/utils/hostPlatform.js +3 -1
- package/lib/server/utils/network.js +35 -25
- package/lib/server/utils/nodePlatform.js +1 -1
- package/lib/server/utils/processLauncher.js +4 -1
- package/lib/server/utils/wsServer.js +11 -17
- package/lib/server/webkit/webkit.js +5 -2
- package/lib/server/webkit/wkBrowser.js +51 -28
- package/lib/server/webkit/wkExecutionContext.js +2 -1
- package/lib/server/webkit/wkInput.js +25 -25
- package/lib/server/webkit/wkInterceptableRequest.js +1 -1
- package/lib/server/webkit/wkPage.js +80 -59
- package/lib/server/webkit/wkProvisionalPage.js +1 -1
- package/lib/server/webkit/wkWorkers.js +7 -7
- package/lib/utils/isomorphic/ariaSnapshot.js +13 -7
- package/lib/utils/isomorphic/cssParser.js +1 -2
- package/lib/utils/isomorphic/locatorGenerators.js +18 -0
- package/lib/utils/isomorphic/manualPromise.js +1 -2
- package/lib/utils/isomorphic/mimeType.js +1 -2
- package/lib/utils/isomorphic/multimap.js +1 -2
- package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +248 -0
- package/lib/utils/isomorphic/protocolFormatter.js +78 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +318 -0
- package/lib/utils/isomorphic/selectorParser.js +3 -4
- package/lib/utils/isomorphic/stringUtils.js +3 -24
- package/lib/utils/isomorphic/time.js +9 -4
- package/lib/utils/isomorphic/timeoutRunner.js +3 -4
- package/lib/utils/isomorphic/traceUtils.js +2 -3
- package/lib/utils/isomorphic/urlMatch.js +21 -7
- package/lib/utils/isomorphic/utilityScriptSerializers.js +208 -205
- package/lib/utils.js +8 -2
- package/lib/utilsBundleImpl/index.js +160 -150
- package/lib/vite/htmlReport/index.html +17 -17
- package/lib/vite/recorder/assets/{codeMirrorModule-CXVeovup.js → codeMirrorModule-DzQ0k89p.js} +1 -1
- package/lib/vite/recorder/assets/{index-eHBmevrY.css → index-CI4HQ-Zb.css} +1 -1
- package/lib/vite/recorder/assets/index-D7C7daHH.js +184 -0
- package/lib/vite/recorder/index.html +3 -3
- package/lib/vite/traceViewer/assets/{codeMirrorModule-_GLjJL-7.js → codeMirrorModule-Di48jgWx.js} +1 -1
- package/lib/vite/traceViewer/assets/defaultSettingsView-szBn8781.js +256 -0
- package/lib/vite/traceViewer/defaultSettingsView.DVJHpiGt.css +1 -0
- package/lib/vite/traceViewer/index.BFsek2M6.css +1 -0
- package/lib/vite/traceViewer/index.DQvXoPLL.js +2 -0
- package/lib/vite/traceViewer/index.html +6 -6
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.dBV3oN9h.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -4
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +1 -1
- package/types/protocol.d.ts +712 -107
- package/types/types.d.ts +128 -17
- package/lib/generated/consoleApiSource.js +0 -28
- package/lib/protocol/debug.js +0 -211
- package/lib/server/recorder/contextRecorder.js +0 -286
- package/lib/server/recorder/recorderCollection.js +0 -116
- package/lib/server/recorder/recorderFrontend.js +0 -16
- package/lib/server/storageScript.js +0 -154
- package/lib/server/timeoutSettings.js +0 -89
- package/lib/utils/isomorphic/builtins.js +0 -86
- package/lib/vite/recorder/assets/index-BsWQsSGl.js +0 -184
- package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +0 -265
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +0 -1
- package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
- package/lib/vite/traceViewer/index.cFZzK9RN.js +0 -2
- package/lib/vite/traceViewer/uiMode.XVPIqBeS.js +0 -5
package/lib/server/dialog.js
CHANGED
|
@@ -18,7 +18,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var dialog_exports = {};
|
|
20
20
|
__export(dialog_exports, {
|
|
21
|
-
Dialog: () => Dialog
|
|
21
|
+
Dialog: () => Dialog,
|
|
22
|
+
DialogManager: () => DialogManager
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(dialog_exports);
|
|
24
25
|
var import_utils = require("../utils");
|
|
@@ -32,8 +33,6 @@ class Dialog extends import_instrumentation.SdkObject {
|
|
|
32
33
|
this._message = message;
|
|
33
34
|
this._onHandle = onHandle;
|
|
34
35
|
this._defaultValue = defaultValue || "";
|
|
35
|
-
this._page._frameManager.dialogDidOpen(this);
|
|
36
|
-
this.instrumentation.onDialog(this);
|
|
37
36
|
}
|
|
38
37
|
page() {
|
|
39
38
|
return this._page;
|
|
@@ -50,13 +49,13 @@ class Dialog extends import_instrumentation.SdkObject {
|
|
|
50
49
|
async accept(promptText) {
|
|
51
50
|
(0, import_utils.assert)(!this._handled, "Cannot accept dialog which is already handled!");
|
|
52
51
|
this._handled = true;
|
|
53
|
-
this._page.
|
|
52
|
+
this._page.browserContext.dialogManager.dialogWillClose(this);
|
|
54
53
|
await this._onHandle(true, promptText);
|
|
55
54
|
}
|
|
56
55
|
async dismiss() {
|
|
57
56
|
(0, import_utils.assert)(!this._handled, "Cannot dismiss dialog which is already handled!");
|
|
58
57
|
this._handled = true;
|
|
59
|
-
this._page.
|
|
58
|
+
this._page.browserContext.dialogManager.dialogWillClose(this);
|
|
60
59
|
await this._onHandle(false);
|
|
61
60
|
}
|
|
62
61
|
async close() {
|
|
@@ -66,7 +65,52 @@ class Dialog extends import_instrumentation.SdkObject {
|
|
|
66
65
|
await this.dismiss();
|
|
67
66
|
}
|
|
68
67
|
}
|
|
68
|
+
class DialogManager {
|
|
69
|
+
constructor(instrumentation) {
|
|
70
|
+
this._dialogHandlers = /* @__PURE__ */ new Set();
|
|
71
|
+
this._openedDialogs = /* @__PURE__ */ new Set();
|
|
72
|
+
this._instrumentation = instrumentation;
|
|
73
|
+
}
|
|
74
|
+
dialogDidOpen(dialog) {
|
|
75
|
+
for (const frame of dialog.page().frameManager.frames())
|
|
76
|
+
frame._invalidateNonStallingEvaluations("JavaScript dialog interrupted evaluation");
|
|
77
|
+
this._openedDialogs.add(dialog);
|
|
78
|
+
this._instrumentation.onDialog(dialog);
|
|
79
|
+
let hasHandlers = false;
|
|
80
|
+
for (const handler of this._dialogHandlers) {
|
|
81
|
+
if (handler(dialog))
|
|
82
|
+
hasHandlers = true;
|
|
83
|
+
}
|
|
84
|
+
if (!hasHandlers)
|
|
85
|
+
dialog.close().then(() => {
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
dialogWillClose(dialog) {
|
|
89
|
+
this._openedDialogs.delete(dialog);
|
|
90
|
+
}
|
|
91
|
+
addDialogHandler(handler) {
|
|
92
|
+
this._dialogHandlers.add(handler);
|
|
93
|
+
}
|
|
94
|
+
removeDialogHandler(handler) {
|
|
95
|
+
this._dialogHandlers.delete(handler);
|
|
96
|
+
if (!this._dialogHandlers.size) {
|
|
97
|
+
for (const dialog of this._openedDialogs)
|
|
98
|
+
dialog.close().catch(() => {
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
hasOpenDialogsForPage(page) {
|
|
103
|
+
return [...this._openedDialogs].some((dialog) => dialog.page() === page);
|
|
104
|
+
}
|
|
105
|
+
async closeBeforeUnloadDialogs() {
|
|
106
|
+
await Promise.all([...this._openedDialogs].map(async (dialog) => {
|
|
107
|
+
if (dialog.type() === "beforeunload")
|
|
108
|
+
await dialog.dismiss();
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
69
112
|
// Annotate the CommonJS export names for ESM import in node:
|
|
70
113
|
0 && (module.exports = {
|
|
71
|
-
Dialog
|
|
114
|
+
Dialog,
|
|
115
|
+
DialogManager
|
|
72
116
|
});
|
|
@@ -26,20 +26,19 @@ module.exports = __toCommonJS(androidDispatcher_exports);
|
|
|
26
26
|
var import_browserContextDispatcher = require("./browserContextDispatcher");
|
|
27
27
|
var import_dispatcher = require("./dispatcher");
|
|
28
28
|
var import_android = require("../android/android");
|
|
29
|
+
var import_eventsHelper = require("../utils/eventsHelper");
|
|
30
|
+
var import_instrumentation = require("../instrumentation");
|
|
29
31
|
class AndroidDispatcher extends import_dispatcher.Dispatcher {
|
|
30
32
|
constructor(scope, android) {
|
|
31
33
|
super(scope, android, "Android", {});
|
|
32
34
|
this._type_Android = true;
|
|
33
35
|
}
|
|
34
|
-
async devices(params) {
|
|
35
|
-
const devices = await this._object.devices(params);
|
|
36
|
+
async devices(params, progress) {
|
|
37
|
+
const devices = await this._object.devices(progress, params);
|
|
36
38
|
return {
|
|
37
39
|
devices: devices.map((d) => AndroidDeviceDispatcher.from(this, d))
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
|
-
async setDefaultTimeoutNoReply(params) {
|
|
41
|
-
this._object.setDefaultTimeout(params.timeout);
|
|
42
|
-
}
|
|
43
42
|
}
|
|
44
43
|
class AndroidDeviceDispatcher extends import_dispatcher.Dispatcher {
|
|
45
44
|
constructor(scope, device) {
|
|
@@ -53,49 +52,49 @@ class AndroidDeviceDispatcher extends import_dispatcher.Dispatcher {
|
|
|
53
52
|
this._dispatchEvent("webViewAdded", { webView });
|
|
54
53
|
this.addObjectListener(import_android.AndroidDevice.Events.WebViewAdded, (webView) => this._dispatchEvent("webViewAdded", { webView }));
|
|
55
54
|
this.addObjectListener(import_android.AndroidDevice.Events.WebViewRemoved, (socketName) => this._dispatchEvent("webViewRemoved", { socketName }));
|
|
56
|
-
this.addObjectListener(import_android.AndroidDevice.Events.Close, (
|
|
55
|
+
this.addObjectListener(import_android.AndroidDevice.Events.Close, () => this._dispatchEvent("close"));
|
|
57
56
|
}
|
|
58
57
|
static from(scope, device) {
|
|
59
|
-
const result =
|
|
58
|
+
const result = scope.connection.existingDispatcher(device);
|
|
60
59
|
return result || new AndroidDeviceDispatcher(scope, device);
|
|
61
60
|
}
|
|
62
|
-
async wait(params) {
|
|
63
|
-
await this._object.send("wait", params);
|
|
61
|
+
async wait(params, progress) {
|
|
62
|
+
await progress.race(this._object.send("wait", params));
|
|
64
63
|
}
|
|
65
|
-
async fill(params) {
|
|
66
|
-
await this._object.send("click", { selector: params.
|
|
67
|
-
await this._object.send("fill", params);
|
|
64
|
+
async fill(params, progress) {
|
|
65
|
+
await progress.race(this._object.send("click", { selector: params.androidSelector }));
|
|
66
|
+
await progress.race(this._object.send("fill", params));
|
|
68
67
|
}
|
|
69
|
-
async tap(params) {
|
|
70
|
-
await this._object.send("click", params);
|
|
68
|
+
async tap(params, progress) {
|
|
69
|
+
await progress.race(this._object.send("click", params));
|
|
71
70
|
}
|
|
72
|
-
async drag(params) {
|
|
73
|
-
await this._object.send("drag", params);
|
|
71
|
+
async drag(params, progress) {
|
|
72
|
+
await progress.race(this._object.send("drag", params));
|
|
74
73
|
}
|
|
75
|
-
async fling(params) {
|
|
76
|
-
await this._object.send("fling", params);
|
|
74
|
+
async fling(params, progress) {
|
|
75
|
+
await progress.race(this._object.send("fling", params));
|
|
77
76
|
}
|
|
78
|
-
async longTap(params) {
|
|
79
|
-
await this._object.send("longClick", params);
|
|
77
|
+
async longTap(params, progress) {
|
|
78
|
+
await progress.race(this._object.send("longClick", params));
|
|
80
79
|
}
|
|
81
|
-
async pinchClose(params) {
|
|
82
|
-
await this._object.send("pinchClose", params);
|
|
80
|
+
async pinchClose(params, progress) {
|
|
81
|
+
await progress.race(this._object.send("pinchClose", params));
|
|
83
82
|
}
|
|
84
|
-
async pinchOpen(params) {
|
|
85
|
-
await this._object.send("pinchOpen", params);
|
|
83
|
+
async pinchOpen(params, progress) {
|
|
84
|
+
await progress.race(this._object.send("pinchOpen", params));
|
|
86
85
|
}
|
|
87
|
-
async scroll(params) {
|
|
88
|
-
await this._object.send("scroll", params);
|
|
86
|
+
async scroll(params, progress) {
|
|
87
|
+
await progress.race(this._object.send("scroll", params));
|
|
89
88
|
}
|
|
90
|
-
async swipe(params) {
|
|
91
|
-
await this._object.send("swipe", params);
|
|
89
|
+
async swipe(params, progress) {
|
|
90
|
+
await progress.race(this._object.send("swipe", params));
|
|
92
91
|
}
|
|
93
|
-
async info(params) {
|
|
94
|
-
const info = await this._object.send("info", params);
|
|
92
|
+
async info(params, progress) {
|
|
93
|
+
const info = await progress.race(this._object.send("info", params));
|
|
95
94
|
fixupAndroidElementInfo(info);
|
|
96
95
|
return { info };
|
|
97
96
|
}
|
|
98
|
-
async inputType(params) {
|
|
97
|
+
async inputType(params, progress) {
|
|
99
98
|
const text = params.text;
|
|
100
99
|
const keyCodes = [];
|
|
101
100
|
for (let i = 0; i < text.length; ++i) {
|
|
@@ -104,50 +103,66 @@ class AndroidDeviceDispatcher extends import_dispatcher.Dispatcher {
|
|
|
104
103
|
throw new Error("No mapping for " + text[i] + " found");
|
|
105
104
|
keyCodes.push(code);
|
|
106
105
|
}
|
|
107
|
-
await Promise.all(keyCodes.map((keyCode) => this._object.send("inputPress", { keyCode })));
|
|
106
|
+
await progress.race(Promise.all(keyCodes.map((keyCode) => this._object.send("inputPress", { keyCode }))));
|
|
108
107
|
}
|
|
109
|
-
async inputPress(params) {
|
|
108
|
+
async inputPress(params, progress) {
|
|
110
109
|
if (!keyMap.has(params.key))
|
|
111
110
|
throw new Error("Unknown key: " + params.key);
|
|
112
|
-
await this._object.send("inputPress", { keyCode: keyMap.get(params.key) });
|
|
111
|
+
await progress.race(this._object.send("inputPress", { keyCode: keyMap.get(params.key) }));
|
|
113
112
|
}
|
|
114
|
-
async inputTap(params) {
|
|
115
|
-
await this._object.send("inputClick", params);
|
|
113
|
+
async inputTap(params, progress) {
|
|
114
|
+
await progress.race(this._object.send("inputClick", params));
|
|
116
115
|
}
|
|
117
|
-
async inputSwipe(params) {
|
|
118
|
-
await this._object.send("inputSwipe", params);
|
|
116
|
+
async inputSwipe(params, progress) {
|
|
117
|
+
await progress.race(this._object.send("inputSwipe", params));
|
|
119
118
|
}
|
|
120
|
-
async inputDrag(params) {
|
|
121
|
-
await this._object.send("inputDrag", params);
|
|
119
|
+
async inputDrag(params, progress) {
|
|
120
|
+
await progress.race(this._object.send("inputDrag", params));
|
|
122
121
|
}
|
|
123
|
-
async screenshot(params) {
|
|
124
|
-
return { binary: await this._object.screenshot() };
|
|
122
|
+
async screenshot(params, progress) {
|
|
123
|
+
return { binary: await progress.race(this._object.screenshot()) };
|
|
125
124
|
}
|
|
126
|
-
async shell(params) {
|
|
127
|
-
return { result: await this._object.shell(params.command) };
|
|
125
|
+
async shell(params, progress) {
|
|
126
|
+
return { result: await progress.race(this._object.shell(params.command)) };
|
|
128
127
|
}
|
|
129
|
-
async open(params,
|
|
130
|
-
const socket = await this._object.open(params.command);
|
|
131
|
-
return { socket: new AndroidSocketDispatcher(this, socket) };
|
|
128
|
+
async open(params, progress) {
|
|
129
|
+
const socket = await this._object.open(progress, params.command);
|
|
130
|
+
return { socket: new AndroidSocketDispatcher(this, new SocketSdkObject(this._object, socket)) };
|
|
132
131
|
}
|
|
133
|
-
async installApk(params) {
|
|
134
|
-
await this._object.installApk(params.file, { args: params.args });
|
|
132
|
+
async installApk(params, progress) {
|
|
133
|
+
await this._object.installApk(progress, params.file, { args: params.args });
|
|
135
134
|
}
|
|
136
|
-
async push(params) {
|
|
137
|
-
await this._object.push(params.file, params.path, params.mode);
|
|
135
|
+
async push(params, progress) {
|
|
136
|
+
await progress.race(this._object.push(progress, params.file, params.path, params.mode));
|
|
138
137
|
}
|
|
139
|
-
async launchBrowser(params) {
|
|
140
|
-
const context = await this._object.launchBrowser(params.pkg, params);
|
|
141
|
-
return { context:
|
|
138
|
+
async launchBrowser(params, progress) {
|
|
139
|
+
const context = await this._object.launchBrowser(progress, params.pkg, params);
|
|
140
|
+
return { context: import_browserContextDispatcher.BrowserContextDispatcher.from(this, context) };
|
|
142
141
|
}
|
|
143
|
-
async close(params) {
|
|
142
|
+
async close(params, progress) {
|
|
144
143
|
await this._object.close();
|
|
145
144
|
}
|
|
146
|
-
async
|
|
147
|
-
this._object.
|
|
145
|
+
async connectToWebView(params, progress) {
|
|
146
|
+
return { context: import_browserContextDispatcher.BrowserContextDispatcher.from(this, await this._object.connectToWebView(progress, params.socketName)) };
|
|
148
147
|
}
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
}
|
|
149
|
+
class SocketSdkObject extends import_instrumentation.SdkObject {
|
|
150
|
+
constructor(parent, socket) {
|
|
151
|
+
super(parent, "socket");
|
|
152
|
+
this._socket = socket;
|
|
153
|
+
this._eventListeners = [
|
|
154
|
+
import_eventsHelper.eventsHelper.addEventListener(socket, "data", (data) => this.emit("data", data)),
|
|
155
|
+
import_eventsHelper.eventsHelper.addEventListener(socket, "close", () => {
|
|
156
|
+
import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
|
|
157
|
+
this.emit("close");
|
|
158
|
+
})
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
async write(data) {
|
|
162
|
+
await this._socket.write(data);
|
|
163
|
+
}
|
|
164
|
+
close() {
|
|
165
|
+
this._socket.close();
|
|
151
166
|
}
|
|
152
167
|
}
|
|
153
168
|
class AndroidSocketDispatcher extends import_dispatcher.Dispatcher {
|
|
@@ -160,10 +175,10 @@ class AndroidSocketDispatcher extends import_dispatcher.Dispatcher {
|
|
|
160
175
|
this._dispose();
|
|
161
176
|
});
|
|
162
177
|
}
|
|
163
|
-
async write(params,
|
|
164
|
-
await this._object.write(params.data);
|
|
178
|
+
async write(params, progress) {
|
|
179
|
+
await progress.race(this._object.write(params.data));
|
|
165
180
|
}
|
|
166
|
-
async close(params,
|
|
181
|
+
async close(params, progress) {
|
|
167
182
|
this._object.close();
|
|
168
183
|
}
|
|
169
184
|
}
|
|
@@ -48,15 +48,15 @@ class ArtifactDispatcher extends import_dispatcher.Dispatcher {
|
|
|
48
48
|
static fromNullable(parentScope, artifact) {
|
|
49
49
|
if (!artifact)
|
|
50
50
|
return void 0;
|
|
51
|
-
const result =
|
|
51
|
+
const result = parentScope.connection.existingDispatcher(artifact);
|
|
52
52
|
return result || new ArtifactDispatcher(parentScope, artifact);
|
|
53
53
|
}
|
|
54
|
-
async pathAfterFinished() {
|
|
55
|
-
const path = await this._object.localPathAfterFinished();
|
|
54
|
+
async pathAfterFinished(params, progress) {
|
|
55
|
+
const path = await progress.race(this._object.localPathAfterFinished());
|
|
56
56
|
return { value: path };
|
|
57
57
|
}
|
|
58
|
-
async saveAs(params) {
|
|
59
|
-
return await new Promise((resolve, reject) => {
|
|
58
|
+
async saveAs(params, progress) {
|
|
59
|
+
return await progress.race(new Promise((resolve, reject) => {
|
|
60
60
|
this._object.saveAs(async (localPath, error) => {
|
|
61
61
|
if (error) {
|
|
62
62
|
reject(error);
|
|
@@ -70,10 +70,10 @@ class ArtifactDispatcher extends import_dispatcher.Dispatcher {
|
|
|
70
70
|
reject(e);
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
|
-
});
|
|
73
|
+
}));
|
|
74
74
|
}
|
|
75
|
-
async saveAsStream() {
|
|
76
|
-
return await new Promise((resolve, reject) => {
|
|
75
|
+
async saveAsStream(params, progress) {
|
|
76
|
+
return await progress.race(new Promise((resolve, reject) => {
|
|
77
77
|
this._object.saveAs(async (localPath, error) => {
|
|
78
78
|
if (error) {
|
|
79
79
|
reject(error);
|
|
@@ -92,23 +92,23 @@ class ArtifactDispatcher extends import_dispatcher.Dispatcher {
|
|
|
92
92
|
reject(e);
|
|
93
93
|
}
|
|
94
94
|
});
|
|
95
|
-
});
|
|
95
|
+
}));
|
|
96
96
|
}
|
|
97
|
-
async stream() {
|
|
98
|
-
const fileName = await this._object.localPathAfterFinished();
|
|
97
|
+
async stream(params, progress) {
|
|
98
|
+
const fileName = await progress.race(this._object.localPathAfterFinished());
|
|
99
99
|
const readable = import_fs.default.createReadStream(fileName, { highWaterMark: 1024 * 1024 });
|
|
100
100
|
return { stream: new import_streamDispatcher.StreamDispatcher(this, readable) };
|
|
101
101
|
}
|
|
102
|
-
async failure() {
|
|
103
|
-
const error = await this._object.failureError();
|
|
102
|
+
async failure(params, progress) {
|
|
103
|
+
const error = await progress.race(this._object.failureError());
|
|
104
104
|
return { error: error || void 0 };
|
|
105
105
|
}
|
|
106
|
-
async cancel() {
|
|
107
|
-
await this._object.cancel();
|
|
106
|
+
async cancel(params, progress) {
|
|
107
|
+
await progress.race(this._object.cancel());
|
|
108
108
|
}
|
|
109
|
-
async delete(
|
|
110
|
-
metadata.potentiallyClosesScope = true;
|
|
111
|
-
await this._object.delete();
|
|
109
|
+
async delete(params, progress) {
|
|
110
|
+
progress.metadata.potentiallyClosesScope = true;
|
|
111
|
+
await progress.race(this._object.delete());
|
|
112
112
|
this._dispose();
|
|
113
113
|
}
|
|
114
114
|
}
|