patchright-core 1.52.4 → 1.55.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.
Files changed (218) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/bin/reinstall_chrome_beta_mac.sh +1 -1
  3. package/bin/reinstall_chrome_stable_mac.sh +1 -1
  4. package/bin/reinstall_msedge_beta_mac.sh +1 -1
  5. package/bin/reinstall_msedge_dev_mac.sh +1 -1
  6. package/bin/reinstall_msedge_stable_mac.sh +1 -1
  7. package/browsers.json +14 -14
  8. package/index.js +1 -1
  9. package/lib/androidServerImpl.js +4 -2
  10. package/lib/browserServerImpl.js +47 -12
  11. package/lib/cli/program.js +116 -50
  12. package/lib/cli/programWithTestStub.js +1 -1
  13. package/lib/client/android.js +30 -34
  14. package/lib/client/browser.js +54 -17
  15. package/lib/client/browserContext.js +67 -71
  16. package/lib/client/browserType.js +25 -34
  17. package/lib/client/channelOwner.js +20 -24
  18. package/lib/client/connection.js +6 -10
  19. package/lib/client/electron.js +8 -3
  20. package/lib/client/elementHandle.js +18 -21
  21. package/lib/client/fetch.js +5 -3
  22. package/lib/client/frame.js +57 -35
  23. package/lib/client/input.js +3 -1
  24. package/lib/client/jsHandle.js +4 -0
  25. package/lib/client/localUtils.js +0 -1
  26. package/lib/client/locator.js +32 -28
  27. package/lib/client/network.js +5 -12
  28. package/lib/client/page.js +32 -32
  29. package/lib/client/playwright.js +6 -16
  30. package/lib/client/selectors.js +18 -38
  31. package/lib/client/timeoutSettings.js +12 -8
  32. package/lib/client/tracing.js +24 -20
  33. package/lib/client/waiter.js +2 -2
  34. package/lib/client/webSocket.js +4 -22
  35. package/lib/generated/bindingsControllerSource.js +28 -0
  36. package/lib/generated/clockSource.js +1 -1
  37. package/lib/generated/injectedScriptSource.js +1 -1
  38. package/lib/generated/pollingRecorderSource.js +1 -1
  39. package/lib/generated/storageScriptSource.js +28 -0
  40. package/lib/generated/utilityScriptSource.js +1 -1
  41. package/lib/generated/webSocketMockSource.js +12 -50
  42. package/lib/inProcessFactory.js +9 -6
  43. package/lib/outofprocess.js +0 -2
  44. package/lib/protocol/validator.js +423 -346
  45. package/lib/protocol/validatorPrimitives.js +18 -4
  46. package/lib/remote/playwrightConnection.js +29 -166
  47. package/lib/remote/playwrightServer.js +233 -35
  48. package/lib/server/android/android.js +97 -83
  49. package/lib/server/android/backendAdb.js +0 -2
  50. package/lib/server/bidi/bidiBrowser.js +139 -73
  51. package/lib/server/bidi/bidiChromium.js +23 -22
  52. package/lib/server/bidi/bidiExecutionContext.js +2 -1
  53. package/lib/server/bidi/bidiFirefox.js +17 -14
  54. package/lib/server/bidi/bidiInput.js +22 -22
  55. package/lib/server/bidi/bidiNetworkManager.js +8 -11
  56. package/lib/server/bidi/bidiPage.js +42 -86
  57. package/lib/server/bidi/third_party/bidiProtocol.js +5 -133
  58. package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  59. package/lib/server/{dispatchers/selectorsDispatcher.js → bidi/third_party/bidiProtocolPermissions.js} +20 -18
  60. package/lib/server/browser.js +30 -21
  61. package/lib/server/browserContext.js +203 -165
  62. package/lib/server/browserType.js +109 -107
  63. package/lib/server/chromium/chromium.js +84 -69
  64. package/lib/server/chromium/chromiumSwitches.js +13 -20
  65. package/lib/server/chromium/crBrowser.js +74 -40
  66. package/lib/server/chromium/crConnection.js +8 -9
  67. package/lib/server/chromium/crCoverage.js +11 -8
  68. package/lib/server/chromium/crDragDrop.js +25 -20
  69. package/lib/server/chromium/crExecutionContext.js +2 -1
  70. package/lib/server/chromium/crInput.js +32 -29
  71. package/lib/server/chromium/crNetworkManager.js +45 -33
  72. package/lib/server/chromium/crPage.js +98 -73
  73. package/lib/server/chromium/crServiceWorker.js +13 -18
  74. package/lib/server/chromium/videoRecorder.js +10 -18
  75. package/lib/server/clock.js +51 -39
  76. package/lib/server/codegen/csharp.js +10 -5
  77. package/lib/server/codegen/java.js +1 -1
  78. package/lib/server/codegen/javascript.js +1 -1
  79. package/lib/server/codegen/jsonl.js +2 -1
  80. package/lib/server/codegen/language.js +22 -1
  81. package/lib/server/codegen/languages.js +4 -4
  82. package/lib/server/codegen/python.js +1 -1
  83. package/lib/server/cookieStore.js +3 -1
  84. package/lib/server/debugController.js +105 -71
  85. package/lib/server/debugger.js +6 -23
  86. package/lib/server/deviceDescriptorsSource.json +237 -127
  87. package/lib/server/dialog.js +50 -6
  88. package/lib/server/dispatchers/androidDispatcher.js +77 -62
  89. package/lib/server/dispatchers/artifactDispatcher.js +18 -18
  90. package/lib/server/dispatchers/browserContextDispatcher.js +141 -91
  91. package/lib/server/dispatchers/browserDispatcher.js +55 -88
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +18 -9
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -4
  94. package/lib/server/dispatchers/debugControllerDispatcher.js +12 -21
  95. package/lib/server/dispatchers/dialogDispatcher.js +4 -4
  96. package/lib/server/dispatchers/dispatcher.js +78 -53
  97. package/lib/server/dispatchers/electronDispatcher.js +19 -20
  98. package/lib/server/dispatchers/elementHandlerDispatcher.js +83 -93
  99. package/lib/server/dispatchers/frameDispatcher.js +99 -102
  100. package/lib/server/dispatchers/jsHandleDispatcher.js +21 -16
  101. package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -4
  102. package/lib/server/dispatchers/localUtilsDispatcher.js +53 -59
  103. package/lib/server/dispatchers/networkDispatchers.js +41 -35
  104. package/lib/server/dispatchers/pageDispatcher.js +156 -107
  105. package/lib/server/dispatchers/playwrightDispatcher.js +37 -25
  106. package/lib/server/dispatchers/streamDispatcher.js +15 -8
  107. package/lib/server/dispatchers/tracingDispatcher.js +22 -13
  108. package/lib/server/dispatchers/webSocketRouteDispatcher.js +46 -35
  109. package/lib/server/dispatchers/writableStreamDispatcher.js +16 -10
  110. package/lib/server/dom.js +198 -266
  111. package/lib/server/download.js +3 -3
  112. package/lib/server/electron/electron.js +96 -103
  113. package/lib/server/electron/loader.js +1 -1
  114. package/lib/server/fetch.js +22 -41
  115. package/lib/server/fileUploadUtils.js +1 -1
  116. package/lib/server/firefox/ffBrowser.js +79 -55
  117. package/lib/server/firefox/ffExecutionContext.js +2 -1
  118. package/lib/server/firefox/ffInput.js +23 -23
  119. package/lib/server/firefox/ffNetworkManager.js +8 -6
  120. package/lib/server/firefox/ffPage.js +39 -36
  121. package/lib/server/firefox/firefox.js +9 -10
  122. package/lib/server/frameSelectors.js +65 -22
  123. package/lib/server/frames.js +516 -544
  124. package/lib/server/har/harRecorder.js +1 -1
  125. package/lib/server/har/harTracer.js +4 -2
  126. package/lib/server/helper.js +3 -7
  127. package/lib/server/index.js +0 -3
  128. package/lib/server/input.js +47 -54
  129. package/lib/server/instrumentation.js +8 -14
  130. package/lib/server/javascript.js +9 -17
  131. package/lib/server/launchApp.js +48 -30
  132. package/lib/server/localUtils.js +45 -38
  133. package/lib/server/network.js +44 -10
  134. package/lib/server/page.js +233 -178
  135. package/lib/server/pageBinding.js +6 -7
  136. package/lib/server/playwright.js +4 -14
  137. package/lib/server/progress.js +57 -49
  138. package/lib/server/recorder/recorderApp.js +298 -95
  139. package/lib/server/recorder/recorderRunner.js +23 -24
  140. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  141. package/lib/server/recorder/recorderUtils.js +67 -10
  142. package/lib/server/recorder.js +284 -146
  143. package/lib/server/registry/index.js +83 -48
  144. package/lib/server/registry/nativeDeps.js +175 -0
  145. package/lib/server/registry/oopDownloadBrowserMain.js +1 -1
  146. package/lib/server/screenshotter.js +84 -83
  147. package/lib/server/selectors.js +12 -12
  148. package/lib/server/socksClientCertificatesInterceptor.js +198 -136
  149. package/lib/server/trace/recorder/snapshotter.js +12 -19
  150. package/lib/server/trace/recorder/tracing.js +36 -27
  151. package/lib/server/trace/viewer/traceViewer.js +11 -20
  152. package/lib/server/transport.js +20 -22
  153. package/lib/server/utils/comparators.js +2 -2
  154. package/lib/server/utils/debug.js +3 -8
  155. package/lib/server/utils/debugLogger.js +8 -0
  156. package/lib/server/utils/hostPlatform.js +3 -1
  157. package/lib/server/utils/network.js +35 -25
  158. package/lib/server/utils/nodePlatform.js +1 -1
  159. package/lib/server/utils/processLauncher.js +4 -1
  160. package/lib/server/utils/wsServer.js +11 -17
  161. package/lib/server/webkit/webkit.js +5 -2
  162. package/lib/server/webkit/wkBrowser.js +51 -28
  163. package/lib/server/webkit/wkExecutionContext.js +2 -1
  164. package/lib/server/webkit/wkInput.js +25 -25
  165. package/lib/server/webkit/wkInterceptableRequest.js +1 -1
  166. package/lib/server/webkit/wkPage.js +80 -59
  167. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  168. package/lib/server/webkit/wkWorkers.js +7 -7
  169. package/lib/utils/isomorphic/ariaSnapshot.js +13 -7
  170. package/lib/utils/isomorphic/cssParser.js +1 -2
  171. package/lib/utils/isomorphic/locatorGenerators.js +18 -0
  172. package/lib/utils/isomorphic/manualPromise.js +1 -2
  173. package/lib/utils/isomorphic/mimeType.js +1 -2
  174. package/lib/utils/isomorphic/multimap.js +1 -2
  175. package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +248 -0
  176. package/lib/utils/isomorphic/protocolFormatter.js +78 -0
  177. package/lib/utils/isomorphic/protocolMetainfo.js +318 -0
  178. package/lib/utils/isomorphic/selectorParser.js +3 -4
  179. package/lib/utils/isomorphic/stringUtils.js +3 -24
  180. package/lib/utils/isomorphic/time.js +9 -4
  181. package/lib/utils/isomorphic/timeoutRunner.js +3 -4
  182. package/lib/utils/isomorphic/traceUtils.js +2 -3
  183. package/lib/utils/isomorphic/urlMatch.js +21 -7
  184. package/lib/utils/isomorphic/utilityScriptSerializers.js +208 -205
  185. package/lib/utils.js +8 -2
  186. package/lib/utilsBundleImpl/index.js +160 -150
  187. package/lib/vite/htmlReport/index.html +17 -17
  188. package/lib/vite/recorder/assets/{codeMirrorModule-CXVeovup.js → codeMirrorModule-DzQ0k89p.js} +1 -1
  189. package/lib/vite/recorder/assets/{index-eHBmevrY.css → index-CI4HQ-Zb.css} +1 -1
  190. package/lib/vite/recorder/assets/index-D7C7daHH.js +184 -0
  191. package/lib/vite/recorder/index.html +3 -3
  192. package/lib/vite/traceViewer/assets/{codeMirrorModule-_GLjJL-7.js → codeMirrorModule-Di48jgWx.js} +1 -1
  193. package/lib/vite/traceViewer/assets/defaultSettingsView-szBn8781.js +256 -0
  194. package/lib/vite/traceViewer/defaultSettingsView.DVJHpiGt.css +1 -0
  195. package/lib/vite/traceViewer/index.BFsek2M6.css +1 -0
  196. package/lib/vite/traceViewer/index.DQvXoPLL.js +2 -0
  197. package/lib/vite/traceViewer/index.html +6 -6
  198. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  199. package/lib/vite/traceViewer/uiMode.dBV3oN9h.js +5 -0
  200. package/lib/vite/traceViewer/uiMode.html +4 -4
  201. package/lib/zipBundleImpl.js +4 -4
  202. package/package.json +1 -1
  203. package/types/protocol.d.ts +712 -107
  204. package/types/types.d.ts +148 -37
  205. package/lib/generated/consoleApiSource.js +0 -28
  206. package/lib/protocol/debug.js +0 -211
  207. package/lib/server/recorder/contextRecorder.js +0 -286
  208. package/lib/server/recorder/recorderCollection.js +0 -116
  209. package/lib/server/recorder/recorderFrontend.js +0 -16
  210. package/lib/server/storageScript.js +0 -154
  211. package/lib/server/timeoutSettings.js +0 -89
  212. package/lib/utils/isomorphic/builtins.js +0 -86
  213. package/lib/vite/recorder/assets/index-BsWQsSGl.js +0 -184
  214. package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +0 -265
  215. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +0 -1
  216. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  217. package/lib/vite/traceViewer/index.cFZzK9RN.js +0 -2
  218. package/lib/vite/traceViewer/uiMode.XVPIqBeS.js +0 -5
@@ -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._frameManager.dialogWillClose(this);
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._frameManager.dialogWillClose(this);
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, (socketName) => this._dispatchEvent("close"));
55
+ this.addObjectListener(import_android.AndroidDevice.Events.Close, () => this._dispatchEvent("close"));
57
56
  }
58
57
  static from(scope, device) {
59
- const result = (0, import_dispatcher.existingDispatcher)(device);
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.selector });
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, metadata) {
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: new import_browserContextDispatcher.BrowserContextDispatcher(this, 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 setDefaultTimeoutNoReply(params) {
147
- this._object.setDefaultTimeout(params.timeout);
145
+ async connectToWebView(params, progress) {
146
+ return { context: import_browserContextDispatcher.BrowserContextDispatcher.from(this, await this._object.connectToWebView(progress, params.socketName)) };
148
147
  }
149
- async connectToWebView(params) {
150
- return { context: new import_browserContextDispatcher.BrowserContextDispatcher(this, await this._object.connectToWebView(params.socketName)) };
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, metadata) {
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, metadata) {
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 = (0, import_dispatcher.existingDispatcher)(artifact);
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(_, metadata) {
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
  }