rebrowser-playwright-core 1.49.1 → 1.52.0

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