patchright-core 1.51.3 → 1.52.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.
Files changed (303) hide show
  1. package/browsers.json +15 -13
  2. package/lib/androidServerImpl.js +42 -48
  3. package/lib/browserServerImpl.js +54 -67
  4. package/lib/cli/driver.js +71 -69
  5. package/lib/cli/program.js +312 -328
  6. package/lib/cli/programWithTestStub.js +51 -45
  7. package/lib/client/accessibility.js +31 -32
  8. package/lib/client/android.js +141 -228
  9. package/lib/client/api.js +135 -283
  10. package/lib/client/artifact.js +39 -36
  11. package/lib/client/browser.js +57 -61
  12. package/lib/client/browserContext.js +297 -326
  13. package/lib/client/browserType.js +92 -106
  14. package/lib/client/cdpSession.js +29 -31
  15. package/lib/client/channelOwner.js +82 -95
  16. package/lib/client/clientHelper.js +46 -38
  17. package/lib/client/clientInstrumentation.js +40 -37
  18. package/lib/client/clientStackTrace.js +41 -37
  19. package/lib/client/clock.js +36 -36
  20. package/lib/client/connection.js +190 -212
  21. package/lib/client/consoleMessage.js +31 -28
  22. package/lib/client/coverage.js +25 -22
  23. package/lib/client/dialog.js +30 -31
  24. package/lib/client/download.js +25 -25
  25. package/lib/client/electron.js +73 -75
  26. package/lib/client/elementHandle.js +111 -147
  27. package/lib/client/errors.js +53 -53
  28. package/lib/client/eventEmitter.js +124 -121
  29. package/lib/client/events.js +72 -68
  30. package/lib/client/fetch.js +135 -158
  31. package/lib/client/fileChooser.js +25 -24
  32. package/lib/client/fileUtils.js +31 -28
  33. package/lib/client/frame.js +187 -306
  34. package/lib/client/harRouter.js +42 -52
  35. package/lib/client/input.js +40 -69
  36. package/lib/client/jsHandle.js +56 -71
  37. package/lib/client/jsonPipe.js +27 -23
  38. package/lib/client/localUtils.js +29 -28
  39. package/lib/client/locator.js +161 -245
  40. package/lib/client/network.js +277 -295
  41. package/lib/client/page.js +270 -318
  42. package/lib/client/platform.js +46 -43
  43. package/lib/client/playwright.js +51 -66
  44. package/lib/client/selectors.js +48 -46
  45. package/lib/client/stream.js +29 -25
  46. package/lib/client/timeoutSettings.js +49 -39
  47. package/lib/client/tracing.js +48 -84
  48. package/lib/client/types.js +26 -22
  49. package/lib/client/video.js +35 -27
  50. package/lib/client/waiter.js +69 -88
  51. package/lib/client/webError.js +25 -23
  52. package/lib/client/webSocket.js +61 -56
  53. package/lib/client/worker.js +48 -58
  54. package/lib/client/writableStream.js +27 -23
  55. package/lib/generated/clockSource.js +26 -5
  56. package/lib/generated/consoleApiSource.js +26 -5
  57. package/lib/generated/injectedScriptSource.js +26 -5
  58. package/lib/generated/pollingRecorderSource.js +26 -5
  59. package/lib/generated/utilityScriptSource.js +26 -5
  60. package/lib/generated/webSocketMockSource.js +371 -4
  61. package/lib/inProcessFactory.js +53 -53
  62. package/lib/inprocess.js +2 -19
  63. package/lib/outofprocess.js +53 -46
  64. package/lib/protocol/debug.js +209 -25
  65. package/lib/protocol/serializers.js +153 -134
  66. package/lib/protocol/validator.js +2714 -2714
  67. package/lib/protocol/validatorPrimitives.js +114 -73
  68. package/lib/remote/playwrightConnection.js +140 -157
  69. package/lib/remote/playwrightServer.js +99 -84
  70. package/lib/server/accessibility.js +44 -37
  71. package/lib/server/android/android.js +216 -209
  72. package/lib/server/android/backendAdb.js +89 -82
  73. package/lib/server/artifact.js +78 -55
  74. package/lib/server/bidi/bidiBrowser.js +221 -155
  75. package/lib/server/bidi/bidiChromium.js +106 -79
  76. package/lib/server/bidi/bidiConnection.js +66 -83
  77. package/lib/server/bidi/bidiExecutionContext.js +128 -113
  78. package/lib/server/bidi/bidiFirefox.js +76 -69
  79. package/lib/server/bidi/bidiInput.js +86 -97
  80. package/lib/server/bidi/bidiNetworkManager.js +137 -154
  81. package/lib/server/bidi/bidiOverCdp.js +57 -58
  82. package/lib/server/bidi/bidiPage.js +247 -219
  83. package/lib/server/bidi/bidiPdf.js +52 -86
  84. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  85. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  86. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  87. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  88. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  89. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  90. package/lib/server/browser.js +76 -84
  91. package/lib/server/browserContext.js +321 -346
  92. package/lib/server/browserType.js +169 -182
  93. package/lib/server/callLog.js +47 -44
  94. package/lib/server/chromium/chromium.js +212 -190
  95. package/lib/server/chromium/chromiumSwitches.js +86 -64
  96. package/lib/server/chromium/crAccessibility.js +157 -131
  97. package/lib/server/chromium/crBrowser.js +253 -273
  98. package/lib/server/chromium/crConnection.js +91 -116
  99. package/lib/server/chromium/crCoverage.js +113 -127
  100. package/lib/server/chromium/crDevTools.js +59 -51
  101. package/lib/server/chromium/crDragDrop.js +62 -79
  102. package/lib/server/chromium/crExecutionContext.js +88 -83
  103. package/lib/server/chromium/crInput.js +97 -95
  104. package/lib/server/chromium/crNetworkManager.js +284 -404
  105. package/lib/server/chromium/crPage.js +522 -608
  106. package/lib/server/chromium/crPdf.js +54 -86
  107. package/lib/server/chromium/crProtocolHelper.js +92 -80
  108. package/lib/server/chromium/crServiceWorker.js +82 -67
  109. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  110. package/lib/server/chromium/protocol.d.js +16 -0
  111. package/lib/server/chromium/videoRecorder.js +65 -99
  112. package/lib/server/clock.js +62 -50
  113. package/lib/server/codegen/csharp.js +185 -160
  114. package/lib/server/codegen/java.js +155 -128
  115. package/lib/server/codegen/javascript.js +163 -148
  116. package/lib/server/codegen/jsonl.js +32 -28
  117. package/lib/server/codegen/language.js +75 -52
  118. package/lib/server/codegen/languages.js +65 -27
  119. package/lib/server/codegen/python.js +140 -125
  120. package/lib/server/codegen/types.js +15 -4
  121. package/lib/server/console.js +28 -32
  122. package/lib/server/cookieStore.js +105 -86
  123. package/lib/server/debugController.js +97 -124
  124. package/lib/server/debugger.js +82 -78
  125. package/lib/server/deviceDescriptors.js +37 -24
  126. package/lib/server/deviceDescriptorsSource.json +50 -50
  127. package/lib/server/dialog.js +36 -35
  128. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  129. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  130. package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
  131. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  132. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  133. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  134. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
  135. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  136. package/lib/server/dispatchers/dispatcher.js +169 -220
  137. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  138. package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
  139. package/lib/server/dispatchers/frameDispatcher.js +99 -163
  140. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  141. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  142. package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
  143. package/lib/server/dispatchers/networkDispatchers.js +90 -107
  144. package/lib/server/dispatchers/pageDispatcher.js +128 -169
  145. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  146. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  147. package/lib/server/dispatchers/streamDispatcher.js +42 -45
  148. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  149. package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
  150. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
  151. package/lib/server/dom.js +413 -443
  152. package/lib/server/download.js +45 -35
  153. package/lib/server/electron/electron.js +156 -176
  154. package/lib/server/electron/loader.js +8 -36
  155. package/lib/server/errors.js +47 -46
  156. package/lib/server/fetch.js +289 -323
  157. package/lib/server/fileChooser.js +25 -24
  158. package/lib/server/fileUploadUtils.js +65 -59
  159. package/lib/server/firefox/ffAccessibility.js +153 -131
  160. package/lib/server/firefox/ffBrowser.js +213 -277
  161. package/lib/server/firefox/ffConnection.js +63 -84
  162. package/lib/server/firefox/ffExecutionContext.js +91 -73
  163. package/lib/server/firefox/ffInput.js +67 -69
  164. package/lib/server/firefox/ffNetworkManager.js +131 -110
  165. package/lib/server/firefox/ffPage.js +236 -273
  166. package/lib/server/firefox/firefox.js +76 -67
  167. package/lib/server/firefox/protocol.d.js +16 -0
  168. package/lib/server/formData.js +107 -35
  169. package/lib/server/frameSelectors.js +221 -112
  170. package/lib/server/frames.js +731 -894
  171. package/lib/server/har/harRecorder.js +85 -77
  172. package/lib/server/har/harTracer.js +287 -222
  173. package/lib/server/harBackend.js +80 -80
  174. package/lib/server/helper.js +56 -59
  175. package/lib/server/index.js +59 -99
  176. package/lib/server/input.js +134 -163
  177. package/lib/server/instrumentation.js +49 -44
  178. package/lib/server/javascript.js +143 -134
  179. package/lib/server/launchApp.js +92 -73
  180. package/lib/server/localUtils.js +130 -122
  181. package/lib/server/macEditingCommands.js +141 -137
  182. package/lib/server/network.js +262 -296
  183. package/lib/server/page.js +326 -423
  184. package/lib/server/pageBinding.js +88 -0
  185. package/lib/server/pipeTransport.js +49 -45
  186. package/lib/server/playwright.js +60 -67
  187. package/lib/server/progress.js +56 -51
  188. package/lib/server/protocolError.js +34 -31
  189. package/lib/server/recorder/chat.js +70 -86
  190. package/lib/server/recorder/contextRecorder.js +134 -138
  191. package/lib/server/recorder/recorderApp.js +127 -136
  192. package/lib/server/recorder/recorderCollection.js +56 -44
  193. package/lib/server/recorder/recorderFrontend.js +15 -4
  194. package/lib/server/recorder/recorderRunner.js +79 -103
  195. package/lib/server/recorder/recorderUtils.js +56 -45
  196. package/lib/server/recorder/throttledFile.js +42 -30
  197. package/lib/server/recorder.js +177 -186
  198. package/lib/server/registry/browserFetcher.js +106 -101
  199. package/lib/server/registry/dependencies.js +245 -196
  200. package/lib/server/registry/index.js +904 -792
  201. package/lib/server/registry/nativeDeps.js +1073 -464
  202. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  203. package/lib/server/screenshotter.js +166 -182
  204. package/lib/server/selectors.js +85 -46
  205. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  206. package/lib/server/socksInterceptor.js +62 -70
  207. package/lib/server/storageScript.js +94 -100
  208. package/lib/server/timeoutSettings.js +58 -43
  209. package/lib/server/trace/recorder/snapshotter.js +70 -89
  210. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  211. package/lib/server/trace/recorder/tracing.js +321 -333
  212. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  213. package/lib/server/trace/viewer/traceViewer.js +168 -146
  214. package/lib/server/transport.js +124 -133
  215. package/lib/server/types.js +26 -22
  216. package/lib/server/usKeyboardLayout.js +135 -545
  217. package/lib/server/utils/ascii.js +39 -26
  218. package/lib/server/utils/comparators.js +105 -103
  219. package/lib/server/utils/crypto.js +157 -112
  220. package/lib/server/utils/debug.js +37 -28
  221. package/lib/server/utils/debugLogger.js +69 -48
  222. package/lib/server/utils/env.js +52 -37
  223. package/lib/server/utils/eventsHelper.js +29 -28
  224. package/lib/server/utils/expectUtils.js +31 -26
  225. package/lib/server/utils/fileUtils.js +123 -136
  226. package/lib/server/utils/happyEyeballs.js +138 -123
  227. package/lib/server/utils/hostPlatform.js +84 -120
  228. package/lib/server/utils/httpServer.js +106 -121
  229. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  230. package/lib/server/utils/image_tools/compare.js +44 -43
  231. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  232. package/lib/server/utils/image_tools/stats.js +40 -40
  233. package/lib/server/utils/linuxUtils.js +50 -37
  234. package/lib/server/utils/network.js +143 -86
  235. package/lib/server/utils/nodePlatform.js +87 -79
  236. package/lib/server/utils/pipeTransport.js +44 -42
  237. package/lib/server/utils/processLauncher.js +111 -121
  238. package/lib/server/utils/profiler.js +52 -39
  239. package/lib/server/utils/socksProxy.js +280 -339
  240. package/lib/server/utils/spawnAsync.js +37 -41
  241. package/lib/server/utils/task.js +31 -38
  242. package/lib/server/utils/userAgent.js +73 -66
  243. package/lib/server/utils/wsServer.js +73 -69
  244. package/lib/server/utils/zipFile.js +36 -37
  245. package/lib/server/utils/zones.js +37 -34
  246. package/lib/server/webkit/protocol.d.js +16 -0
  247. package/lib/server/webkit/webkit.js +76 -63
  248. package/lib/server/webkit/wkAccessibility.js +161 -118
  249. package/lib/server/webkit/wkBrowser.js +159 -176
  250. package/lib/server/webkit/wkConnection.js +59 -83
  251. package/lib/server/webkit/wkExecutionContext.js +84 -70
  252. package/lib/server/webkit/wkInput.js +82 -80
  253. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  254. package/lib/server/webkit/wkPage.js +525 -619
  255. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  256. package/lib/server/webkit/wkWorkers.js +77 -77
  257. package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
  258. package/lib/utils/isomorphic/assert.js +28 -22
  259. package/lib/utils/isomorphic/builtins.js +86 -0
  260. package/lib/utils/isomorphic/colors.js +66 -59
  261. package/lib/utils/isomorphic/cssParser.js +121 -125
  262. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  263. package/lib/utils/isomorphic/headers.js +38 -37
  264. package/lib/utils/isomorphic/locatorGenerators.js +340 -357
  265. package/lib/utils/isomorphic/locatorParser.js +96 -105
  266. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  267. package/lib/utils/isomorphic/manualPromise.js +47 -39
  268. package/lib/utils/isomorphic/mimeType.js +448 -25
  269. package/lib/utils/isomorphic/multimap.js +35 -27
  270. package/lib/utils/isomorphic/rtti.js +35 -33
  271. package/lib/utils/isomorphic/selectorParser.js +183 -193
  272. package/lib/utils/isomorphic/semaphore.js +27 -24
  273. package/lib/utils/isomorphic/stackTrace.js +87 -98
  274. package/lib/utils/isomorphic/stringUtils.js +113 -106
  275. package/lib/utils/isomorphic/time.js +41 -22
  276. package/lib/utils/isomorphic/timeoutRunner.js +55 -54
  277. package/lib/utils/isomorphic/traceUtils.js +38 -41
  278. package/lib/utils/isomorphic/types.js +15 -4
  279. package/lib/utils/isomorphic/urlMatch.js +112 -67
  280. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  281. package/lib/utils.js +97 -443
  282. package/lib/utilsBundle.js +101 -52
  283. package/lib/vite/htmlReport/index.html +21 -15
  284. package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-CXVeovup.js} +1 -1
  285. package/lib/vite/recorder/assets/index-BsWQsSGl.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-_GLjJL-7.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.cFZzK9RN.js +2 -0
  291. package/lib/vite/traceViewer/index.html +3 -3
  292. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  293. package/lib/vite/traceViewer/uiMode.XVPIqBeS.js +5 -0
  294. package/lib/vite/traceViewer/uiMode.html +3 -3
  295. package/lib/zipBundle.js +32 -23
  296. package/package.json +1 -1
  297. package/types/protocol.d.ts +436 -17
  298. package/types/types.d.ts +35 -16
  299. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  300. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  301. package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
  302. package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
@@ -1,71 +1,83 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var android_exports = {};
30
+ __export(android_exports, {
31
+ Android: () => Android,
32
+ AndroidDevice: () => AndroidDevice
5
33
  });
6
- exports.AndroidDevice = exports.Android = void 0;
7
- var _events = require("events");
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _os = _interopRequireDefault(require("os"));
10
- var _path = _interopRequireDefault(require("path"));
11
- var _timeoutSettings = require("../timeoutSettings");
12
- var _pipeTransport = require("../utils/pipeTransport");
13
- var _crypto = require("../utils/crypto");
14
- var _debug = require("../utils/debug");
15
- var _env = require("../utils/env");
16
- var _task = require("../utils/task");
17
- var _debugLogger = require("../utils/debugLogger");
18
- var _utilsBundle = require("../../utilsBundle");
19
- var _browserContext = require("../browserContext");
20
- var _chromiumSwitches = require("../chromium/chromiumSwitches");
21
- var _crBrowser = require("../chromium/crBrowser");
22
- var _fileUtils = require("../utils/fileUtils");
23
- var _helper = require("../helper");
24
- var _instrumentation = require("../instrumentation");
25
- var _processLauncher = require("../utils/processLauncher");
26
- var _progress = require("../progress");
27
- var _registry = require("../registry");
28
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
- /**
30
- * Copyright Microsoft Corporation. All rights reserved.
31
- *
32
- * Licensed under the Apache License, Version 2.0 (the "License");
33
- * you may not use this file except in compliance with the License.
34
- * You may obtain a copy of the License at
35
- *
36
- * http://www.apache.org/licenses/LICENSE-2.0
37
- *
38
- * Unless required by applicable law or agreed to in writing, software
39
- * distributed under the License is distributed on an "AS IS" BASIS,
40
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
41
- * See the License for the specific language governing permissions and
42
- * limitations under the License.
43
- */
44
-
45
- const ARTIFACTS_FOLDER = _path.default.join(_os.default.tmpdir(), 'playwright-artifacts-');
46
- class Android extends _instrumentation.SdkObject {
34
+ module.exports = __toCommonJS(android_exports);
35
+ var import_events = require("events");
36
+ var import_fs = __toESM(require("fs"));
37
+ var import_os = __toESM(require("os"));
38
+ var import_path = __toESM(require("path"));
39
+ var import_timeoutSettings = require("../timeoutSettings");
40
+ var import_pipeTransport = require("../utils/pipeTransport");
41
+ var import_crypto = require("../utils/crypto");
42
+ var import_debug = require("../utils/debug");
43
+ var import_env = require("../utils/env");
44
+ var import_task = require("../utils/task");
45
+ var import_debugLogger = require("../utils/debugLogger");
46
+ var import_utilsBundle = require("../../utilsBundle");
47
+ var import_utilsBundle2 = require("../../utilsBundle");
48
+ var import_browserContext = require("../browserContext");
49
+ var import_chromiumSwitches = require("../chromium/chromiumSwitches");
50
+ var import_crBrowser = require("../chromium/crBrowser");
51
+ var import_fileUtils = require("../utils/fileUtils");
52
+ var import_helper = require("../helper");
53
+ var import_instrumentation = require("../instrumentation");
54
+ var import_processLauncher = require("../utils/processLauncher");
55
+ var import_progress = require("../progress");
56
+ var import_registry = require("../registry");
57
+ const ARTIFACTS_FOLDER = import_path.default.join(import_os.default.tmpdir(), "playwright-artifacts-");
58
+ class Android extends import_instrumentation.SdkObject {
47
59
  constructor(parent, backend) {
48
- super(parent, 'android');
49
- this._backend = void 0;
50
- this._devices = new Map();
51
- this._timeoutSettings = void 0;
60
+ super(parent, "android");
61
+ this._devices = /* @__PURE__ */ new Map();
52
62
  this._backend = backend;
53
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings();
63
+ this._timeoutSettings = new import_timeoutSettings.TimeoutSettings();
54
64
  }
55
65
  setDefaultTimeout(timeout) {
56
66
  this._timeoutSettings.setDefaultTimeout(timeout);
57
67
  }
58
68
  async devices(options) {
59
- const devices = (await this._backend.devices(options)).filter(d => d.status === 'device');
60
- const newSerials = new Set();
69
+ const devices = (await this._backend.devices(options)).filter((d) => d.status === "device");
70
+ const newSerials = /* @__PURE__ */ new Set();
61
71
  for (const d of devices) {
62
72
  newSerials.add(d.serial);
63
- if (this._devices.has(d.serial)) continue;
73
+ if (this._devices.has(d.serial))
74
+ continue;
64
75
  const device = await AndroidDevice.create(this, d, options);
65
76
  this._devices.set(d.serial, device);
66
77
  }
67
78
  for (const d of this._devices.keys()) {
68
- if (!newSerials.has(d)) this._devices.delete(d);
79
+ if (!newSerials.has(d))
80
+ this._devices.delete(d);
69
81
  }
70
82
  return [...this._devices.values()];
71
83
  }
@@ -73,33 +85,31 @@ class Android extends _instrumentation.SdkObject {
73
85
  this._devices.delete(device.serial);
74
86
  }
75
87
  }
76
- exports.Android = Android;
77
- class AndroidDevice extends _instrumentation.SdkObject {
88
+ class AndroidDevice extends import_instrumentation.SdkObject {
78
89
  constructor(android, backend, model, options) {
79
- super(android, 'android-device');
80
- this._backend = void 0;
81
- this.model = void 0;
82
- this.serial = void 0;
83
- this._options = void 0;
84
- this._driverPromise = void 0;
90
+ super(android, "android-device");
85
91
  this._lastId = 0;
86
- this._callbacks = new Map();
87
- this._pollingWebViews = void 0;
88
- this._timeoutSettings = void 0;
89
- this._webViews = new Map();
90
- this._browserConnections = new Set();
91
- this._android = void 0;
92
+ this._callbacks = /* @__PURE__ */ new Map();
93
+ this._webViews = /* @__PURE__ */ new Map();
94
+ this._browserConnections = /* @__PURE__ */ new Set();
92
95
  this._isClosed = false;
93
96
  this._android = android;
94
97
  this._backend = backend;
95
98
  this.model = model;
96
99
  this.serial = backend.serial;
97
100
  this._options = options;
98
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings(android._timeoutSettings);
101
+ this._timeoutSettings = new import_timeoutSettings.TimeoutSettings(android._timeoutSettings);
102
+ }
103
+ static {
104
+ this.Events = {
105
+ WebViewAdded: "webViewAdded",
106
+ WebViewRemoved: "webViewRemoved",
107
+ Close: "close"
108
+ };
99
109
  }
100
110
  static async create(android, backend, options) {
101
111
  await backend.init();
102
- const model = await backend.runCommand('shell:getprop ro.product.model');
112
+ const model = await backend.runCommand("shell:getprop ro.product.model");
103
113
  const device = new AndroidDevice(android, backend, model.toString().trim(), options);
104
114
  await device._init();
105
115
  return device;
@@ -108,7 +118,8 @@ class AndroidDevice extends _instrumentation.SdkObject {
108
118
  await this._refreshWebViews();
109
119
  const poll = () => {
110
120
  this._pollingWebViews = setTimeout(() => this._refreshWebViews().then(poll).catch(() => {
111
- this.close().catch(() => {});
121
+ this.close().catch(() => {
122
+ });
112
123
  }), 500);
113
124
  };
114
125
  poll();
@@ -128,127 +139,131 @@ class AndroidDevice extends _instrumentation.SdkObject {
128
139
  return await this._backend.runCommand(`shell:screencap -p`);
129
140
  }
130
141
  async _driver() {
131
- if (this._isClosed) return;
132
- if (!this._driverPromise) this._driverPromise = this._installDriver();
142
+ if (this._isClosed)
143
+ return;
144
+ if (!this._driverPromise)
145
+ this._driverPromise = this._installDriver();
133
146
  return this._driverPromise;
134
147
  }
135
148
  async _installDriver() {
136
- (0, _utilsBundle.debug)('pw:android')('Stopping the old driver');
149
+ (0, import_utilsBundle.debug)("pw:android")("Stopping the old driver");
137
150
  await this.shell(`am force-stop com.microsoft.playwright.androiddriver`);
138
-
139
- // uninstall and install driver on every execution
140
151
  if (!this._options.omitDriverInstall) {
141
- (0, _utilsBundle.debug)('pw:android')('Uninstalling the old driver');
152
+ (0, import_utilsBundle.debug)("pw:android")("Uninstalling the old driver");
142
153
  await this.shell(`cmd package uninstall com.microsoft.playwright.androiddriver`);
143
154
  await this.shell(`cmd package uninstall com.microsoft.playwright.androiddriver.test`);
144
- (0, _utilsBundle.debug)('pw:android')('Installing the new driver');
145
- const executable = _registry.registry.findExecutable('android');
146
- const packageManagerCommand = (0, _env.getPackageManagerExecCommand)();
147
- for (const file of ['android-driver.apk', 'android-driver-target.apk']) {
148
- const fullName = _path.default.join(executable.directory, file);
149
- if (!_fs.default.existsSync(fullName)) throw new Error(`Please install Android driver apk using '${packageManagerCommand} playwright install android'`);
150
- await this.installApk(await _fs.default.promises.readFile(fullName));
155
+ (0, import_utilsBundle.debug)("pw:android")("Installing the new driver");
156
+ const executable = import_registry.registry.findExecutable("android");
157
+ const packageManagerCommand = (0, import_env.getPackageManagerExecCommand)();
158
+ for (const file of ["android-driver.apk", "android-driver-target.apk"]) {
159
+ const fullName = import_path.default.join(executable.directory, file);
160
+ if (!import_fs.default.existsSync(fullName))
161
+ throw new Error(`Please install Android driver apk using '${packageManagerCommand} playwright install android'`);
162
+ await this.installApk(await import_fs.default.promises.readFile(fullName));
151
163
  }
152
164
  } else {
153
- (0, _utilsBundle.debug)('pw:android')('Skipping the driver installation');
165
+ (0, import_utilsBundle.debug)("pw:android")("Skipping the driver installation");
154
166
  }
155
- (0, _utilsBundle.debug)('pw:android')('Starting the new driver');
156
- this.shell('am instrument -w com.microsoft.playwright.androiddriver.test/androidx.test.runner.AndroidJUnitRunner').catch(e => (0, _utilsBundle.debug)('pw:android')(e));
157
- const socket = await this._waitForLocalAbstract('playwright_android_driver_socket');
158
- const transport = new _pipeTransport.PipeTransport(socket, socket, socket, 'be');
159
- transport.onmessage = message => {
167
+ (0, import_utilsBundle.debug)("pw:android")("Starting the new driver");
168
+ this.shell("am instrument -w com.microsoft.playwright.androiddriver.test/androidx.test.runner.AndroidJUnitRunner").catch((e) => (0, import_utilsBundle.debug)("pw:android")(e));
169
+ const socket = await this._waitForLocalAbstract("playwright_android_driver_socket");
170
+ const transport = new import_pipeTransport.PipeTransport(socket, socket, socket, "be");
171
+ transport.onmessage = (message) => {
160
172
  const response = JSON.parse(message);
161
- const {
162
- id,
163
- result,
164
- error
165
- } = response;
173
+ const { id, result, error } = response;
166
174
  const callback = this._callbacks.get(id);
167
- if (!callback) return;
168
- if (error) callback.reject(new Error(error));else callback.fulfill(result);
175
+ if (!callback)
176
+ return;
177
+ if (error)
178
+ callback.reject(new Error(error));
179
+ else
180
+ callback.fulfill(result);
169
181
  this._callbacks.delete(id);
170
182
  };
171
183
  return transport;
172
184
  }
173
185
  async _waitForLocalAbstract(socketName) {
174
186
  let socket;
175
- (0, _utilsBundle.debug)('pw:android')(`Polling the socket localabstract:${socketName}`);
187
+ (0, import_utilsBundle.debug)("pw:android")(`Polling the socket localabstract:${socketName}`);
176
188
  while (!socket) {
177
189
  try {
178
190
  socket = await this._backend.open(`localabstract:${socketName}`);
179
191
  } catch (e) {
180
- await new Promise(f => setTimeout(f, 250));
192
+ await new Promise((f) => setTimeout(f, 250));
181
193
  }
182
194
  }
183
- (0, _utilsBundle.debug)('pw:android')(`Connected to localabstract:${socketName}`);
195
+ (0, import_utilsBundle.debug)("pw:android")(`Connected to localabstract:${socketName}`);
184
196
  return socket;
185
197
  }
186
198
  async send(method, params = {}) {
187
- // Patch the timeout in!
188
199
  params.timeout = this._timeoutSettings.timeout(params);
189
200
  const driver = await this._driver();
190
- if (!driver) throw new Error('Device is closed');
201
+ if (!driver)
202
+ throw new Error("Device is closed");
191
203
  const id = ++this._lastId;
192
- const result = new Promise((fulfill, reject) => this._callbacks.set(id, {
193
- fulfill,
194
- reject
195
- }));
196
- driver.send(JSON.stringify({
197
- id,
198
- method,
199
- params
200
- }));
204
+ const result = new Promise((fulfill, reject) => this._callbacks.set(id, { fulfill, reject }));
205
+ driver.send(JSON.stringify({ id, method, params }));
201
206
  return result;
202
207
  }
203
208
  async close() {
204
- if (this._isClosed) return;
209
+ if (this._isClosed)
210
+ return;
205
211
  this._isClosed = true;
206
- if (this._pollingWebViews) clearTimeout(this._pollingWebViews);
207
- for (const connection of this._browserConnections) await connection.close();
212
+ if (this._pollingWebViews)
213
+ clearTimeout(this._pollingWebViews);
214
+ for (const connection of this._browserConnections)
215
+ await connection.close();
208
216
  if (this._driverPromise) {
209
217
  const driver = await this._driver();
210
- driver === null || driver === void 0 || driver.close();
218
+ driver?.close();
211
219
  }
212
220
  await this._backend.close();
213
221
  this._android._deviceClosed(this);
214
222
  this.emit(AndroidDevice.Events.Close);
215
223
  }
216
- async launchBrowser(pkg = 'com.android.chrome', options) {
217
- (0, _utilsBundle.debug)('pw:android')('Force-stopping', pkg);
224
+ async launchBrowser(pkg = "com.android.chrome", options) {
225
+ (0, import_utilsBundle.debug)("pw:android")("Force-stopping", pkg);
218
226
  await this._backend.runCommand(`shell:am force-stop ${pkg}`);
219
- const socketName = (0, _debug.isUnderTest)() ? 'webview_devtools_remote_playwright_test' : 'playwright_' + (0, _crypto.createGuid)() + '_devtools_remote';
220
- const commandLine = this._defaultArgs(options, socketName).join(' ');
221
- (0, _utilsBundle.debug)('pw:android')('Starting', pkg, commandLine);
222
- // encode commandLine to base64 to avoid issues (bash encoding) with special characters
223
- await this._backend.runCommand(`shell:echo "${Buffer.from(commandLine).toString('base64')}" | base64 -d > /data/local/tmp/chrome-command-line`);
227
+ const socketName = (0, import_debug.isUnderTest)() ? "webview_devtools_remote_playwright_test" : "playwright_" + (0, import_crypto.createGuid)() + "_devtools_remote";
228
+ const commandLine = this._defaultArgs(options, socketName).join(" ");
229
+ (0, import_utilsBundle.debug)("pw:android")("Starting", pkg, commandLine);
230
+ await this._backend.runCommand(`shell:echo "${Buffer.from(commandLine).toString("base64")}" | base64 -d > /data/local/tmp/chrome-command-line`);
224
231
  await this._backend.runCommand(`shell:am start -a android.intent.action.VIEW -d about:blank ${pkg}`);
225
232
  const browserContext = await this._connectToBrowser(socketName, options);
226
233
  await this._backend.runCommand(`shell:rm /data/local/tmp/chrome-command-line`);
227
234
  return browserContext;
228
235
  }
229
236
  _defaultArgs(options, socketName) {
230
- const chromeArguments = ['_', '--disable-fre', '--no-default-browser-check', `--remote-debugging-socket-name=${socketName}`, ..._chromiumSwitches.chromiumSwitches, ...this._innerDefaultArgs(options)];
237
+ const chromeArguments = [
238
+ "_",
239
+ "--disable-fre",
240
+ "--no-default-browser-check",
241
+ `--remote-debugging-socket-name=${socketName}`,
242
+ ...import_chromiumSwitches.chromiumSwitches,
243
+ ...this._innerDefaultArgs(options)
244
+ ];
231
245
  return chromeArguments;
232
246
  }
233
247
  _innerDefaultArgs(options) {
234
- const {
235
- args = [],
236
- proxy
237
- } = options;
248
+ const { args = [], proxy } = options;
238
249
  const chromeArguments = [];
239
250
  if (proxy) {
240
251
  chromeArguments.push(`--proxy-server=${proxy.server}`);
241
252
  const proxyBypassRules = [];
242
- if (proxy.bypass) proxyBypassRules.push(...proxy.bypass.split(',').map(t => t.trim()).map(t => t.startsWith('.') ? '*' + t : t));
243
- if (!process.env.PLAYWRIGHT_DISABLE_FORCED_CHROMIUM_PROXIED_LOOPBACK && !proxyBypassRules.includes('<-loopback>')) proxyBypassRules.push('<-loopback>');
244
- if (proxyBypassRules.length > 0) chromeArguments.push(`--proxy-bypass-list=${proxyBypassRules.join(';')}`);
253
+ if (proxy.bypass)
254
+ proxyBypassRules.push(...proxy.bypass.split(",").map((t) => t.trim()).map((t) => t.startsWith(".") ? "*" + t : t));
255
+ if (!process.env.PLAYWRIGHT_DISABLE_FORCED_CHROMIUM_PROXIED_LOOPBACK && !proxyBypassRules.includes("<-loopback>"))
256
+ proxyBypassRules.push("<-loopback>");
257
+ if (proxyBypassRules.length > 0)
258
+ chromeArguments.push(`--proxy-bypass-list=${proxyBypassRules.join(";")}`);
245
259
  }
246
260
  chromeArguments.push(...args);
247
261
  return chromeArguments;
248
262
  }
249
263
  async connectToWebView(socketName) {
250
264
  const webView = this._webViews.get(socketName);
251
- if (!webView) throw new Error('WebView has been closed');
265
+ if (!webView)
266
+ throw new Error("WebView has been closed");
252
267
  return await this._connectToBrowser(socketName);
253
268
  }
254
269
  async _connectToBrowser(socketName, options = {}) {
@@ -256,38 +271,36 @@ class AndroidDevice extends _instrumentation.SdkObject {
256
271
  const androidBrowser = new AndroidBrowser(this, socket);
257
272
  await androidBrowser._init();
258
273
  this._browserConnections.add(androidBrowser);
259
- const artifactsDir = await _fs.default.promises.mkdtemp(ARTIFACTS_FOLDER);
274
+ const artifactsDir = await import_fs.default.promises.mkdtemp(ARTIFACTS_FOLDER);
260
275
  const cleanupArtifactsDir = async () => {
261
- const errors = await (0, _fileUtils.removeFolders)([artifactsDir]);
262
- for (let i = 0; i < (errors || []).length; ++i) (0, _utilsBundle.debug)('pw:android')(`exception while removing ${artifactsDir}: ${errors[i]}`);
276
+ const errors = (await (0, import_fileUtils.removeFolders)([artifactsDir])).filter(Boolean);
277
+ for (let i = 0; i < (errors || []).length; ++i)
278
+ (0, import_utilsBundle.debug)("pw:android")(`exception while removing ${artifactsDir}: ${errors[i]}`);
263
279
  };
264
- _processLauncher.gracefullyCloseSet.add(cleanupArtifactsDir);
265
- socket.on('close', async () => {
266
- _processLauncher.gracefullyCloseSet.delete(cleanupArtifactsDir);
267
- cleanupArtifactsDir().catch(e => (0, _utilsBundle.debug)('pw:android')(`could not cleanup artifacts dir: ${e}`));
280
+ import_processLauncher.gracefullyCloseSet.add(cleanupArtifactsDir);
281
+ socket.on("close", async () => {
282
+ import_processLauncher.gracefullyCloseSet.delete(cleanupArtifactsDir);
283
+ cleanupArtifactsDir().catch((e) => (0, import_utilsBundle.debug)("pw:android")(`could not cleanup artifacts dir: ${e}`));
268
284
  });
269
285
  const browserOptions = {
270
- name: 'clank',
286
+ name: "clank",
271
287
  isChromium: true,
272
288
  slowMo: 0,
273
- persistent: {
274
- ...options,
275
- noDefaultViewport: true
276
- },
289
+ persistent: { ...options, noDefaultViewport: true },
277
290
  artifactsDir,
278
291
  downloadsPath: artifactsDir,
279
292
  tracesDir: artifactsDir,
280
293
  browserProcess: new ClankBrowserProcess(androidBrowser),
281
294
  proxy: options.proxy,
282
- protocolLogger: _helper.helper.debugProtocolLogger(),
283
- browserLogsCollector: new _debugLogger.RecentLogsCollector(),
295
+ protocolLogger: import_helper.helper.debugProtocolLogger(),
296
+ browserLogsCollector: new import_debugLogger.RecentLogsCollector(),
284
297
  originalLaunchOptions: {}
285
298
  };
286
- (0, _browserContext.validateBrowserContextOptions)(options, browserOptions);
287
- const browser = await _crBrowser.CRBrowser.connect(this.attribution.playwright, androidBrowser, browserOptions);
288
- const controller = new _progress.ProgressController((0, _instrumentation.serverSideCallMetadata)(), this);
299
+ (0, import_browserContext.validateBrowserContextOptions)(options, browserOptions);
300
+ const browser = await import_crBrowser.CRBrowser.connect(this.attribution.playwright, androidBrowser, browserOptions);
301
+ const controller = new import_progress.ProgressController((0, import_instrumentation.serverSideCallMetadata)(), this);
289
302
  const defaultContext = browser._defaultContext;
290
- await controller.run(async progress => {
303
+ await controller.run(async (progress) => {
291
304
  await defaultContext._loadDefaultContextAsIs(progress);
292
305
  });
293
306
  return defaultContext;
@@ -296,16 +309,16 @@ class AndroidDevice extends _instrumentation.SdkObject {
296
309
  return [...this._webViews.values()];
297
310
  }
298
311
  async installApk(content, options) {
299
- const args = options && options.args ? options.args : ['-r', '-t', '-S'];
300
- (0, _utilsBundle.debug)('pw:android')('Opening install socket');
301
- const installSocket = await this._backend.open(`shell:cmd package install ${args.join(' ')} ${content.length}`);
302
- (0, _utilsBundle.debug)('pw:android')('Writing driver bytes: ' + content.length);
312
+ const args = options && options.args ? options.args : ["-r", "-t", "-S"];
313
+ (0, import_utilsBundle.debug)("pw:android")("Opening install socket");
314
+ const installSocket = await this._backend.open(`shell:cmd package install ${args.join(" ")} ${content.length}`);
315
+ (0, import_utilsBundle.debug)("pw:android")("Writing driver bytes: " + content.length);
303
316
  await installSocket.write(content);
304
- const success = await new Promise(f => installSocket.on('data', f));
305
- (0, _utilsBundle.debug)('pw:android')('Written driver bytes: ' + success);
317
+ const success = await new Promise((f) => installSocket.on("data", f));
318
+ (0, import_utilsBundle.debug)("pw:android")("Written driver bytes: " + success);
306
319
  installSocket.close();
307
320
  }
308
- async push(content, path, mode = 0o644) {
321
+ async push(content, path2, mode = 420) {
309
322
  const socket = await this._backend.open(`sync:`);
310
323
  const sendHeader = async (command, length) => {
311
324
  const buffer = Buffer.alloc(command.length + 4);
@@ -317,39 +330,38 @@ class AndroidDevice extends _instrumentation.SdkObject {
317
330
  await sendHeader(command, data.length);
318
331
  await socket.write(data);
319
332
  };
320
- await send('SEND', Buffer.from(`${path},${mode}`));
333
+ await send("SEND", Buffer.from(`${path2},${mode}`));
321
334
  const maxChunk = 65535;
322
- for (let i = 0; i < content.length; i += maxChunk) await send('DATA', content.slice(i, i + maxChunk));
323
- await sendHeader('DONE', Date.now() / 1000 | 0);
324
- const result = await new Promise(f => socket.once('data', f));
335
+ for (let i = 0; i < content.length; i += maxChunk)
336
+ await send("DATA", content.slice(i, i + maxChunk));
337
+ await sendHeader("DONE", Date.now() / 1e3 | 0);
338
+ const result = await new Promise((f) => socket.once("data", f));
325
339
  const code = result.slice(0, 4).toString();
326
- if (code !== 'OKAY') throw new Error('Could not push: ' + code);
340
+ if (code !== "OKAY")
341
+ throw new Error("Could not push: " + code);
327
342
  socket.close();
328
343
  }
329
344
  async _refreshWebViews() {
330
- // possible socketName, eg: webview_devtools_remote_32327, webview_devtools_remote_32327_zeus, webview_devtools_remote_zeus
331
- const sockets = (await this._backend.runCommand(`shell:cat /proc/net/unix | grep webview_devtools_remote`)).toString().split('\n');
332
- if (this._isClosed) return;
333
- const socketNames = new Set();
345
+ const sockets = (await this._backend.runCommand(`shell:cat /proc/net/unix | grep webview_devtools_remote`)).toString().split("\n");
346
+ if (this._isClosed)
347
+ return;
348
+ const socketNames = /* @__PURE__ */ new Set();
334
349
  for (const line of sockets) {
335
350
  const matchSocketName = line.match(/[^@]+@(.*?webview_devtools_remote_?.*)/);
336
- if (!matchSocketName) continue;
351
+ if (!matchSocketName)
352
+ continue;
337
353
  const socketName = matchSocketName[1];
338
354
  socketNames.add(socketName);
339
- if (this._webViews.has(socketName)) continue;
340
-
341
- // possible line: 0000000000000000: 00000002 00000000 00010000 0001 01 5841881 @webview_devtools_remote_zeus
342
- // the result: match[1] = ''
355
+ if (this._webViews.has(socketName))
356
+ continue;
343
357
  const match = line.match(/[^@]+@.*?webview_devtools_remote_?(\d*)/);
344
358
  let pid = -1;
345
- if (match && match[1]) pid = +match[1];
359
+ if (match && match[1])
360
+ pid = +match[1];
346
361
  const pkg = await this._extractPkg(pid);
347
- if (this._isClosed) return;
348
- const webView = {
349
- pid,
350
- pkg,
351
- socketName
352
- };
362
+ if (this._isClosed)
363
+ return;
364
+ const webView = { pid, pkg, socketName };
353
365
  this._webViews.set(socketName, webView);
354
366
  this.emit(AndroidDevice.Events.WebViewAdded, webView);
355
367
  }
@@ -361,44 +373,37 @@ class AndroidDevice extends _instrumentation.SdkObject {
361
373
  }
362
374
  }
363
375
  async _extractPkg(pid) {
364
- let pkg = '';
365
- if (pid === -1) return pkg;
366
- const procs = (await this._backend.runCommand(`shell:ps -A | grep ${pid}`)).toString().split('\n');
376
+ let pkg = "";
377
+ if (pid === -1)
378
+ return pkg;
379
+ const procs = (await this._backend.runCommand(`shell:ps -A | grep ${pid}`)).toString().split("\n");
367
380
  for (const proc of procs) {
368
381
  const match = proc.match(/[^\s]+\s+(\d+).*$/);
369
- if (!match) continue;
370
- pkg = proc.substring(proc.lastIndexOf(' ') + 1);
382
+ if (!match)
383
+ continue;
384
+ pkg = proc.substring(proc.lastIndexOf(" ") + 1);
371
385
  }
372
386
  return pkg;
373
387
  }
374
388
  }
375
- exports.AndroidDevice = AndroidDevice;
376
- AndroidDevice.Events = {
377
- WebViewAdded: 'webViewAdded',
378
- WebViewRemoved: 'webViewRemoved',
379
- Close: 'close'
380
- };
381
- class AndroidBrowser extends _events.EventEmitter {
389
+ class AndroidBrowser extends import_events.EventEmitter {
382
390
  constructor(device, socket) {
383
391
  super();
384
- this.device = void 0;
385
- this._socket = void 0;
386
- this._receiver = void 0;
387
- this._waitForNextTask = (0, _task.makeWaitForNextTask)();
388
- this.onmessage = void 0;
389
- this.onclose = void 0;
392
+ this._waitForNextTask = (0, import_task.makeWaitForNextTask)();
390
393
  this.setMaxListeners(0);
391
394
  this.device = device;
392
395
  this._socket = socket;
393
- this._socket.on('close', () => {
396
+ this._socket.on("close", () => {
394
397
  this._waitForNextTask(() => {
395
- if (this.onclose) this.onclose();
398
+ if (this.onclose)
399
+ this.onclose();
396
400
  });
397
401
  });
398
- this._receiver = new _utilsBundle.wsReceiver();
399
- this._receiver.on('message', message => {
402
+ this._receiver = new import_utilsBundle2.wsReceiver();
403
+ this._receiver.on("message", (message) => {
400
404
  this._waitForNextTask(() => {
401
- if (this.onmessage) this.onmessage(JSON.parse(message));
405
+ if (this.onmessage)
406
+ this.onmessage(JSON.parse(message));
402
407
  });
403
408
  });
404
409
  }
@@ -410,11 +415,9 @@ Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r
410
415
  Sec-WebSocket-Version: 13\r
411
416
  \r
412
417
  `));
413
- // HTTP Upgrade response.
414
- await new Promise(f => this._socket.once('data', f));
415
-
416
- // Start sending web frame to receiver.
417
- this._socket.on('data', data => this._receiver._write(data, 'binary', () => {}));
418
+ await new Promise((f) => this._socket.once("data", f));
419
+ this._socket.on("data", (data) => this._receiver._write(data, "binary", () => {
420
+ }));
418
421
  }
419
422
  async send(s) {
420
423
  await this._socket.write(encodeWebFrame(JSON.stringify(s)));
@@ -424,7 +427,7 @@ Sec-WebSocket-Version: 13\r
424
427
  }
425
428
  }
426
429
  function encodeWebFrame(data) {
427
- return _utilsBundle.wsSender.frame(Buffer.from(data), {
430
+ return import_utilsBundle2.wsSender.frame(Buffer.from(data), {
428
431
  opcode: 1,
429
432
  mask: true,
430
433
  fin: true,
@@ -433,12 +436,16 @@ function encodeWebFrame(data) {
433
436
  }
434
437
  class ClankBrowserProcess {
435
438
  constructor(browser) {
436
- this._browser = void 0;
437
- this.onclose = void 0;
438
439
  this._browser = browser;
439
440
  }
440
- async kill() {}
441
+ async kill() {
442
+ }
441
443
  async close() {
442
444
  await this._browser.close();
443
445
  }
444
- }
446
+ }
447
+ // Annotate the CommonJS export names for ESM import in node:
448
+ 0 && (module.exports = {
449
+ Android,
450
+ AndroidDevice
451
+ });