brave-real-puppeteer-core 24.26.1 → 24.33.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 (436) hide show
  1. package/README.md +5 -5
  2. package/advanced-stealth.js +1 -1
  3. package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  4. package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  5. package/lib/cjs/puppeteer/api/BluetoothEmulation.js +8 -0
  6. package/lib/cjs/puppeteer/api/BluetoothEmulation.js.map +1 -0
  7. package/lib/cjs/puppeteer/api/Browser.d.ts +111 -2
  8. package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  9. package/lib/cjs/puppeteer/api/Browser.js +4 -2
  10. package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  11. package/lib/cjs/puppeteer/api/BrowserContext.d.ts +5 -3
  12. package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
  13. package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
  14. package/lib/cjs/puppeteer/api/CDPSession.d.ts.map +1 -1
  15. package/lib/cjs/puppeteer/api/CDPSession.js.map +1 -1
  16. package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts +62 -0
  17. package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -0
  18. package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js +38 -0
  19. package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js.map +1 -0
  20. package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
  21. package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
  22. package/lib/cjs/puppeteer/api/Frame.d.ts +1 -1
  23. package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
  24. package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
  25. package/lib/cjs/puppeteer/api/Page.d.ts +39 -5
  26. package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  27. package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  28. package/lib/cjs/puppeteer/api/api.d.ts +2 -0
  29. package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
  30. package/lib/cjs/puppeteer/api/api.js +1 -0
  31. package/lib/cjs/puppeteer/api/api.js.map +1 -1
  32. package/lib/cjs/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  33. package/lib/cjs/puppeteer/bidi/BidiOverCdp.js +1 -1
  34. package/lib/cjs/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  35. package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  36. package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  37. package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js +42 -0
  38. package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  39. package/lib/cjs/puppeteer/bidi/Browser.d.ts +6 -1
  40. package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  41. package/lib/cjs/puppeteer/bidi/Browser.js +16 -0
  42. package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  43. package/lib/cjs/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  44. package/lib/cjs/puppeteer/bidi/BrowserConnector.js +4 -3
  45. package/lib/cjs/puppeteer/bidi/BrowserConnector.js.map +1 -1
  46. package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +3 -3
  47. package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  48. package/lib/cjs/puppeteer/bidi/BrowserContext.js +6 -3
  49. package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
  50. package/lib/cjs/puppeteer/bidi/Connection.d.ts +2 -1
  51. package/lib/cjs/puppeteer/bidi/Connection.d.ts.map +1 -1
  52. package/lib/cjs/puppeteer/bidi/Connection.js +3 -2
  53. package/lib/cjs/puppeteer/bidi/Connection.js.map +1 -1
  54. package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  55. package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  56. package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js +90 -0
  57. package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  58. package/lib/cjs/puppeteer/bidi/Frame.d.ts +3 -1
  59. package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  60. package/lib/cjs/puppeteer/bidi/Frame.js +3 -2
  61. package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  62. package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts +0 -1
  63. package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  64. package/lib/cjs/puppeteer/bidi/HTTPRequest.js +0 -25
  65. package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
  66. package/lib/cjs/puppeteer/bidi/Page.d.ts +10 -8
  67. package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  68. package/lib/cjs/puppeteer/bidi/Page.js +63 -47
  69. package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  70. package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +8 -0
  71. package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  72. package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +55 -2
  73. package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  74. package/lib/cjs/puppeteer/bidi/core/Connection.d.ts.map +1 -1
  75. package/lib/cjs/puppeteer/bidi/core/Realm.d.ts +1 -12
  76. package/lib/cjs/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  77. package/lib/cjs/puppeteer/bidi/util.d.ts.map +1 -1
  78. package/lib/cjs/puppeteer/bidi/util.js +7 -0
  79. package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
  80. package/lib/cjs/puppeteer/cdp/Accessibility.d.ts +6 -0
  81. package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  82. package/lib/cjs/puppeteer/cdp/Accessibility.js +11 -3
  83. package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  84. package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  85. package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  86. package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js +30 -0
  87. package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  88. package/lib/cjs/puppeteer/cdp/Browser.d.ts +10 -5
  89. package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  90. package/lib/cjs/puppeteer/cdp/Browser.js +61 -8
  91. package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  92. package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  93. package/lib/cjs/puppeteer/cdp/BrowserConnector.js +4 -2
  94. package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
  95. package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +3 -2
  96. package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  97. package/lib/cjs/puppeteer/cdp/BrowserContext.js +4 -4
  98. package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  99. package/lib/cjs/puppeteer/cdp/CdpSession.d.ts +1 -1
  100. package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  101. package/lib/cjs/puppeteer/cdp/CdpSession.js +2 -1
  102. package/lib/cjs/puppeteer/cdp/CdpSession.js.map +1 -1
  103. package/lib/cjs/puppeteer/cdp/Connection.d.ts +6 -1
  104. package/lib/cjs/puppeteer/cdp/Connection.d.ts.map +1 -1
  105. package/lib/cjs/puppeteer/cdp/Connection.js +11 -2
  106. package/lib/cjs/puppeteer/cdp/Connection.js.map +1 -1
  107. package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts +5 -64
  108. package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  109. package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +10 -76
  110. package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  111. package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts +1 -0
  112. package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
  113. package/lib/cjs/puppeteer/cdp/EmulationManager.js +22 -0
  114. package/lib/cjs/puppeteer/cdp/EmulationManager.js.map +1 -1
  115. package/lib/cjs/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
  116. package/lib/cjs/puppeteer/cdp/ExtensionTransport.js +5 -1
  117. package/lib/cjs/puppeteer/cdp/ExtensionTransport.js.map +1 -1
  118. package/lib/cjs/puppeteer/cdp/Frame.d.ts +1 -1
  119. package/lib/cjs/puppeteer/cdp/Frame.d.ts.map +1 -1
  120. package/lib/cjs/puppeteer/cdp/Frame.js.map +1 -1
  121. package/lib/cjs/puppeteer/cdp/FrameManager.d.ts +2 -2
  122. package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  123. package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
  124. package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
  125. package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  126. package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  127. package/lib/cjs/puppeteer/cdp/HTTPRequest.js +4 -1
  128. package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
  129. package/lib/cjs/puppeteer/cdp/NetworkEventManager.d.ts +1 -0
  130. package/lib/cjs/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
  131. package/lib/cjs/puppeteer/cdp/NetworkEventManager.js +8 -0
  132. package/lib/cjs/puppeteer/cdp/NetworkEventManager.js.map +1 -1
  133. package/lib/cjs/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  134. package/lib/cjs/puppeteer/cdp/NetworkManager.js +25 -1
  135. package/lib/cjs/puppeteer/cdp/NetworkManager.js.map +1 -1
  136. package/lib/cjs/puppeteer/cdp/Page.d.ts +9 -4
  137. package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  138. package/lib/cjs/puppeteer/cdp/Page.js +29 -6
  139. package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  140. package/lib/cjs/puppeteer/cdp/TargetManager.d.ts +1 -1
  141. package/lib/cjs/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  142. package/lib/cjs/puppeteer/cdp/TargetManager.js +29 -27
  143. package/lib/cjs/puppeteer/cdp/TargetManager.js.map +1 -1
  144. package/lib/cjs/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  145. package/lib/cjs/puppeteer/cdp/WebWorker.js +8 -3
  146. package/lib/cjs/puppeteer/cdp/WebWorker.js.map +1 -1
  147. package/lib/cjs/puppeteer/cdp/cdp.d.ts +1 -0
  148. package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
  149. package/lib/cjs/puppeteer/cdp/cdp.js +1 -0
  150. package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
  151. package/lib/cjs/puppeteer/common/BrowserConnector.js +47 -3
  152. package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  153. package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +2 -0
  154. package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  155. package/lib/cjs/puppeteer/common/CallbackRegistry.js +4 -3
  156. package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
  157. package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +22 -0
  158. package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  159. package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +8 -1
  160. package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
  161. package/lib/cjs/puppeteer/common/ConsoleMessage.js +11 -1
  162. package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
  163. package/lib/cjs/puppeteer/common/EventEmitter.d.ts.map +1 -1
  164. package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  165. package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts +4 -0
  166. package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  167. package/lib/cjs/puppeteer/node/BrowserLauncher.js +10 -4
  168. package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  169. package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts +1 -1
  170. package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  171. package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -13
  172. package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  173. package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +5 -3
  174. package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  175. package/lib/cjs/puppeteer/node/LaunchOptions.js +17 -0
  176. package/lib/cjs/puppeteer/node/LaunchOptions.js.map +1 -1
  177. package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  178. package/lib/cjs/puppeteer/revisions.js +3 -3
  179. package/lib/cjs/puppeteer/revisions.js.map +1 -1
  180. package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  181. package/lib/cjs/puppeteer/util/disposable.d.ts +2 -2
  182. package/lib/cjs/puppeteer/util/disposable.d.ts.map +1 -1
  183. package/lib/cjs/puppeteer/util/disposable.js +3 -1
  184. package/lib/cjs/puppeteer/util/disposable.js.map +1 -1
  185. package/lib/cjs/puppeteer/util/util.d.ts +1 -0
  186. package/lib/cjs/puppeteer/util/util.d.ts.map +1 -1
  187. package/lib/cjs/puppeteer/util/util.js +1 -0
  188. package/lib/cjs/puppeteer/util/util.js.map +1 -1
  189. package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  190. package/lib/cjs/puppeteer/util/version.js +1 -1
  191. package/lib/es5-iife/puppeteer-core-browser.d.ts +297 -19
  192. package/lib/es5-iife/puppeteer-core-browser.js +456 -215
  193. package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts +96 -0
  194. package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
  195. package/lib/esm/puppeteer/api/BluetoothEmulation.js +7 -0
  196. package/lib/esm/puppeteer/api/BluetoothEmulation.js.map +1 -0
  197. package/lib/esm/puppeteer/api/Browser.d.ts +111 -2
  198. package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  199. package/lib/esm/puppeteer/api/Browser.js +4 -2
  200. package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  201. package/lib/esm/puppeteer/api/BrowserContext.d.ts +5 -3
  202. package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
  203. package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
  204. package/lib/esm/puppeteer/api/CDPSession.d.ts.map +1 -1
  205. package/lib/esm/puppeteer/api/CDPSession.js.map +1 -1
  206. package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts +62 -0
  207. package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -0
  208. package/lib/esm/puppeteer/api/DeviceRequestPrompt.js +34 -0
  209. package/lib/esm/puppeteer/api/DeviceRequestPrompt.js.map +1 -0
  210. package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
  211. package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
  212. package/lib/esm/puppeteer/api/Frame.d.ts +1 -1
  213. package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
  214. package/lib/esm/puppeteer/api/Frame.js.map +1 -1
  215. package/lib/esm/puppeteer/api/Input.d.ts +1 -1
  216. package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
  217. package/lib/esm/puppeteer/api/Page.d.ts +39 -5
  218. package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  219. package/lib/esm/puppeteer/api/Page.js.map +1 -1
  220. package/lib/esm/puppeteer/api/api.d.ts +2 -0
  221. package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
  222. package/lib/esm/puppeteer/api/api.js +1 -0
  223. package/lib/esm/puppeteer/api/api.js.map +1 -1
  224. package/lib/esm/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  225. package/lib/esm/puppeteer/bidi/BidiOverCdp.js +1 -1
  226. package/lib/esm/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  227. package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
  228. package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
  229. package/lib/esm/puppeteer/bidi/BluetoothEmulation.js +38 -0
  230. package/lib/esm/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
  231. package/lib/esm/puppeteer/bidi/Browser.d.ts +6 -1
  232. package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  233. package/lib/esm/puppeteer/bidi/Browser.js +16 -0
  234. package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  235. package/lib/esm/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  236. package/lib/esm/puppeteer/bidi/BrowserConnector.js +4 -3
  237. package/lib/esm/puppeteer/bidi/BrowserConnector.js.map +1 -1
  238. package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +3 -3
  239. package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  240. package/lib/esm/puppeteer/bidi/BrowserContext.js +6 -3
  241. package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
  242. package/lib/esm/puppeteer/bidi/Connection.d.ts +2 -1
  243. package/lib/esm/puppeteer/bidi/Connection.d.ts.map +1 -1
  244. package/lib/esm/puppeteer/bidi/Connection.js +3 -2
  245. package/lib/esm/puppeteer/bidi/Connection.js.map +1 -1
  246. package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
  247. package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
  248. package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js +85 -0
  249. package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
  250. package/lib/esm/puppeteer/bidi/Frame.d.ts +3 -1
  251. package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  252. package/lib/esm/puppeteer/bidi/Frame.js +3 -2
  253. package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  254. package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts +0 -1
  255. package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  256. package/lib/esm/puppeteer/bidi/HTTPRequest.js +0 -25
  257. package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
  258. package/lib/esm/puppeteer/bidi/Page.d.ts +10 -8
  259. package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  260. package/lib/esm/puppeteer/bidi/Page.js +64 -48
  261. package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  262. package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +8 -0
  263. package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  264. package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +55 -2
  265. package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  266. package/lib/esm/puppeteer/bidi/core/Connection.d.ts.map +1 -1
  267. package/lib/esm/puppeteer/bidi/core/Realm.d.ts +1 -12
  268. package/lib/esm/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  269. package/lib/esm/puppeteer/bidi/util.d.ts.map +1 -1
  270. package/lib/esm/puppeteer/bidi/util.js +7 -0
  271. package/lib/esm/puppeteer/bidi/util.js.map +1 -1
  272. package/lib/esm/puppeteer/cdp/Accessibility.d.ts +6 -0
  273. package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  274. package/lib/esm/puppeteer/cdp/Accessibility.js +11 -3
  275. package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  276. package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
  277. package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
  278. package/lib/esm/puppeteer/cdp/BluetoothEmulation.js +26 -0
  279. package/lib/esm/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
  280. package/lib/esm/puppeteer/cdp/Browser.d.ts +10 -5
  281. package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  282. package/lib/esm/puppeteer/cdp/Browser.js +61 -8
  283. package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  284. package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  285. package/lib/esm/puppeteer/cdp/BrowserConnector.js +4 -2
  286. package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
  287. package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +3 -2
  288. package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  289. package/lib/esm/puppeteer/cdp/BrowserContext.js +4 -4
  290. package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  291. package/lib/esm/puppeteer/cdp/CdpSession.d.ts +1 -1
  292. package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  293. package/lib/esm/puppeteer/cdp/CdpSession.js +2 -1
  294. package/lib/esm/puppeteer/cdp/CdpSession.js.map +1 -1
  295. package/lib/esm/puppeteer/cdp/Connection.d.ts +6 -1
  296. package/lib/esm/puppeteer/cdp/Connection.d.ts.map +1 -1
  297. package/lib/esm/puppeteer/cdp/Connection.js +11 -2
  298. package/lib/esm/puppeteer/cdp/Connection.js.map +1 -1
  299. package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts +5 -64
  300. package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
  301. package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +7 -72
  302. package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
  303. package/lib/esm/puppeteer/cdp/EmulationManager.d.ts +1 -0
  304. package/lib/esm/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
  305. package/lib/esm/puppeteer/cdp/EmulationManager.js +22 -0
  306. package/lib/esm/puppeteer/cdp/EmulationManager.js.map +1 -1
  307. package/lib/esm/puppeteer/cdp/ExtensionTransport.d.ts.map +1 -1
  308. package/lib/esm/puppeteer/cdp/ExtensionTransport.js +5 -1
  309. package/lib/esm/puppeteer/cdp/ExtensionTransport.js.map +1 -1
  310. package/lib/esm/puppeteer/cdp/Frame.d.ts +1 -1
  311. package/lib/esm/puppeteer/cdp/Frame.d.ts.map +1 -1
  312. package/lib/esm/puppeteer/cdp/Frame.js.map +1 -1
  313. package/lib/esm/puppeteer/cdp/FrameManager.d.ts +2 -2
  314. package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  315. package/lib/esm/puppeteer/cdp/FrameManager.js +2 -2
  316. package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
  317. package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  318. package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  319. package/lib/esm/puppeteer/cdp/HTTPRequest.js +4 -1
  320. package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
  321. package/lib/esm/puppeteer/cdp/NetworkEventManager.d.ts +1 -0
  322. package/lib/esm/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
  323. package/lib/esm/puppeteer/cdp/NetworkEventManager.js +8 -0
  324. package/lib/esm/puppeteer/cdp/NetworkEventManager.js.map +1 -1
  325. package/lib/esm/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  326. package/lib/esm/puppeteer/cdp/NetworkManager.js +25 -1
  327. package/lib/esm/puppeteer/cdp/NetworkManager.js.map +1 -1
  328. package/lib/esm/puppeteer/cdp/Page.d.ts +9 -4
  329. package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  330. package/lib/esm/puppeteer/cdp/Page.js +29 -6
  331. package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  332. package/lib/esm/puppeteer/cdp/TargetManager.d.ts +1 -1
  333. package/lib/esm/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  334. package/lib/esm/puppeteer/cdp/TargetManager.js +30 -28
  335. package/lib/esm/puppeteer/cdp/TargetManager.js.map +1 -1
  336. package/lib/esm/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  337. package/lib/esm/puppeteer/cdp/WebWorker.js +8 -3
  338. package/lib/esm/puppeteer/cdp/WebWorker.js.map +1 -1
  339. package/lib/esm/puppeteer/cdp/cdp.d.ts +1 -0
  340. package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
  341. package/lib/esm/puppeteer/cdp/cdp.js +1 -0
  342. package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
  343. package/lib/esm/puppeteer/common/BrowserConnector.js +48 -4
  344. package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
  345. package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +2 -0
  346. package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  347. package/lib/esm/puppeteer/common/CallbackRegistry.js +4 -3
  348. package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
  349. package/lib/esm/puppeteer/common/ConnectOptions.d.ts +22 -0
  350. package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  351. package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +8 -1
  352. package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
  353. package/lib/esm/puppeteer/common/ConsoleMessage.js +11 -1
  354. package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
  355. package/lib/esm/puppeteer/common/EventEmitter.d.ts.map +1 -1
  356. package/lib/esm/puppeteer/node/BrowserLauncher.d.ts +4 -0
  357. package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  358. package/lib/esm/puppeteer/node/BrowserLauncher.js +10 -4
  359. package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  360. package/lib/esm/puppeteer/node/ChromeLauncher.d.ts +1 -1
  361. package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  362. package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -13
  363. package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  364. package/lib/esm/puppeteer/node/LaunchOptions.d.ts +5 -3
  365. package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  366. package/lib/esm/puppeteer/node/LaunchOptions.js +16 -1
  367. package/lib/esm/puppeteer/node/LaunchOptions.js.map +1 -1
  368. package/lib/esm/puppeteer/revisions.d.ts +3 -3
  369. package/lib/esm/puppeteer/revisions.js +3 -3
  370. package/lib/esm/puppeteer/revisions.js.map +1 -1
  371. package/lib/esm/puppeteer/util/disposable.d.ts +2 -2
  372. package/lib/esm/puppeteer/util/disposable.d.ts.map +1 -1
  373. package/lib/esm/puppeteer/util/disposable.js +2 -2
  374. package/lib/esm/puppeteer/util/disposable.js.map +1 -1
  375. package/lib/esm/puppeteer/util/util.d.ts +1 -0
  376. package/lib/esm/puppeteer/util/util.d.ts.map +1 -1
  377. package/lib/esm/puppeteer/util/util.js +1 -0
  378. package/lib/esm/puppeteer/util/util.js.map +1 -1
  379. package/lib/esm/puppeteer/util/version.d.ts +1 -1
  380. package/lib/esm/puppeteer/util/version.js +1 -1
  381. package/lib/types.d.ts +297 -19
  382. package/package.json +15 -15
  383. package/src/api/BluetoothEmulation.ts +103 -0
  384. package/src/api/Browser.ts +130 -3
  385. package/src/api/BrowserContext.ts +10 -3
  386. package/src/api/CDPSession.ts +1 -2
  387. package/src/api/DeviceRequestPrompt.ts +71 -0
  388. package/src/api/ElementHandle.ts +2 -4
  389. package/src/api/Frame.ts +3 -5
  390. package/src/api/Page.ts +46 -9
  391. package/src/api/api.ts +2 -0
  392. package/src/bidi/BidiOverCdp.ts +1 -0
  393. package/src/bidi/BluetoothEmulation.ts +52 -0
  394. package/src/bidi/Browser.ts +28 -0
  395. package/src/bidi/BrowserConnector.ts +8 -1
  396. package/src/bidi/BrowserContext.ts +9 -6
  397. package/src/bidi/Connection.ts +4 -1
  398. package/src/bidi/DeviceRequestPrompt.ts +138 -0
  399. package/src/bidi/Frame.ts +7 -3
  400. package/src/bidi/HTTPRequest.ts +0 -41
  401. package/src/bidi/Page.ts +86 -71
  402. package/src/bidi/core/BrowsingContext.ts +80 -2
  403. package/src/bidi/core/Connection.ts +3 -2
  404. package/src/bidi/util.ts +8 -0
  405. package/src/cdp/Accessibility.ts +17 -3
  406. package/src/cdp/BluetoothEmulation.ts +47 -0
  407. package/src/cdp/Browser.ts +95 -10
  408. package/src/cdp/BrowserConnector.ts +4 -0
  409. package/src/cdp/BrowserContext.ts +5 -4
  410. package/src/cdp/CdpSession.ts +3 -2
  411. package/src/cdp/Connection.ts +15 -1
  412. package/src/cdp/DeviceRequestPrompt.ts +8 -79
  413. package/src/cdp/EmulationManager.ts +30 -0
  414. package/src/cdp/ExtensionTransport.ts +5 -1
  415. package/src/cdp/Frame.ts +3 -5
  416. package/src/cdp/FrameManager.ts +9 -4
  417. package/src/cdp/HTTPRequest.ts +5 -1
  418. package/src/cdp/NetworkEventManager.ts +16 -1
  419. package/src/cdp/NetworkManager.ts +31 -1
  420. package/src/cdp/Page.ts +48 -13
  421. package/src/cdp/TargetManager.ts +36 -43
  422. package/src/cdp/WebWorker.ts +8 -3
  423. package/src/cdp/cdp.ts +1 -0
  424. package/src/common/BrowserConnector.ts +67 -4
  425. package/src/common/CallbackRegistry.ts +7 -5
  426. package/src/common/ConnectOptions.ts +28 -0
  427. package/src/common/ConsoleMessage.ts +14 -0
  428. package/src/common/EventEmitter.ts +3 -3
  429. package/src/node/BrowserLauncher.ts +22 -1
  430. package/src/node/ChromeLauncher.ts +5 -17
  431. package/src/node/LaunchOptions.ts +23 -7
  432. package/src/revisions.ts +3 -3
  433. package/src/util/disposable.ts +2 -2
  434. package/src/util/util.ts +1 -0
  435. package/src/util/version.ts +1 -1
  436. package/src/templates/version.ts.tmpl +0 -4
@@ -10,6 +10,7 @@ import type {ConnectionTransport} from '../common/ConnectionTransport.js';
10
10
  import type {ConnectOptions} from '../common/ConnectOptions.js';
11
11
  import {ProtocolError, UnsupportedOperation} from '../common/Errors.js';
12
12
  import {debugError, DEFAULT_VIEWPORT} from '../common/util.js';
13
+ import {createIncrementalIdGenerator} from '../util/incremental-id-generator.js';
13
14
 
14
15
  import type {BidiBrowser} from './Browser.js';
15
16
  import type {BidiConnection} from './Connection.js';
@@ -66,12 +67,17 @@ async function getBiDiConnection(
66
67
  closeCallback: BrowserCloseCallback;
67
68
  }> {
68
69
  const BiDi = await import(/* webpackIgnore: true */ './bidi.js');
69
- const {slowMo = 0, protocolTimeout} = options;
70
+ const {
71
+ slowMo = 0,
72
+ protocolTimeout,
73
+ idGenerator = createIncrementalIdGenerator(),
74
+ } = options;
70
75
 
71
76
  // Try pure BiDi first.
72
77
  const pureBidiConnection = new BiDi.BidiConnection(
73
78
  url,
74
79
  connectionTransport,
80
+ idGenerator,
75
81
  slowMo,
76
82
  protocolTimeout,
77
83
  );
@@ -102,6 +108,7 @@ async function getBiDiConnection(
102
108
  slowMo,
103
109
  protocolTimeout,
104
110
  /* rawErrors= */ true,
111
+ idGenerator,
105
112
  );
106
113
 
107
114
  const version = await cdpConnection.send('Browser.getVersion');
@@ -6,7 +6,7 @@
6
6
 
7
7
  import * as Bidi from 'webdriver-bidi-protocol';
8
8
 
9
- import type {Permission} from '../api/Browser.js';
9
+ import type {CreatePageOptions, Permission} from '../api/Browser.js';
10
10
  import {WEB_PERMISSION_TO_PROTOCOL_PERMISSION} from '../api/Browser.js';
11
11
  import type {BrowserContextEvents} from '../api/BrowserContext.js';
12
12
  import {BrowserContext, BrowserContextEvent} from '../api/BrowserContext.js';
@@ -181,12 +181,15 @@ export class BidiBrowserContext extends BrowserContext {
181
181
  });
182
182
  }
183
183
 
184
- override async newPage(): Promise<Page> {
184
+ override async newPage(options?: CreatePageOptions): Promise<Page> {
185
185
  using _guard = await this.waitForScreenshotOperations();
186
186
 
187
- const context = await this.userContext.createBrowsingContext(
188
- Bidi.BrowsingContext.CreateType.Tab,
189
- );
187
+ const type =
188
+ options?.type === 'window'
189
+ ? Bidi.BrowsingContext.CreateType.Window
190
+ : Bidi.BrowsingContext.CreateType.Tab;
191
+
192
+ const context = await this.userContext.createBrowsingContext(type);
190
193
  const page = this.#pages.get(context)!;
191
194
  if (!page) {
192
195
  throw new Error('Page is not found');
@@ -221,7 +224,7 @@ export class BidiBrowserContext extends BrowserContext {
221
224
  return this.#browser;
222
225
  }
223
226
 
224
- override async pages(): Promise<BidiPage[]> {
227
+ override async pages(_includeAll = false): Promise<BidiPage[]> {
225
228
  return [...this.userContext.browsingContexts].map(context => {
226
229
  return this.#pages.get(context)!;
227
230
  });
@@ -14,6 +14,7 @@ import {ConnectionClosedError} from '../common/Errors.js';
14
14
  import type {EventsWithWildcard} from '../common/EventEmitter.js';
15
15
  import {EventEmitter} from '../common/EventEmitter.js';
16
16
  import {debugError} from '../common/util.js';
17
+ import type {GetIdFn} from '../util/incremental-id-generator.js';
17
18
 
18
19
  import {BidiCdpSession} from './CDPSession.js';
19
20
  import type {
@@ -57,12 +58,13 @@ export class BidiConnection
57
58
  #delay: number;
58
59
  #timeout = 0;
59
60
  #closed = false;
60
- #callbacks = new CallbackRegistry();
61
+ #callbacks: CallbackRegistry;
61
62
  #emitters: Array<EventEmitter<any>> = [];
62
63
 
63
64
  constructor(
64
65
  url: string,
65
66
  transport: ConnectionTransport,
67
+ idGenerator: GetIdFn,
66
68
  delay = 0,
67
69
  timeout?: number,
68
70
  ) {
@@ -70,6 +72,7 @@ export class BidiConnection
70
72
  this.#url = url;
71
73
  this.#delay = delay;
72
74
  this.#timeout = timeout ?? 180_000;
75
+ this.#callbacks = new CallbackRegistry(idGenerator);
73
76
 
74
77
  this.#transport = transport;
75
78
  this.#transport.onmessage = this.onMessage.bind(this);
@@ -0,0 +1,138 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import type * as Bidi from 'webdriver-bidi-protocol';
8
+
9
+ import {
10
+ DeviceRequestPrompt,
11
+ type DeviceRequestPromptDevice,
12
+ } from '../api/DeviceRequestPrompt.js';
13
+ import {UnsupportedOperation} from '../common/Errors.js';
14
+ import {Deferred} from '../util/Deferred.js';
15
+
16
+ import type {Session} from './core/Session.js';
17
+
18
+ /**
19
+ * @internal
20
+ */
21
+ export class BidiDeviceRequestPromptManager {
22
+ readonly #session: Session;
23
+ readonly #contextId: string;
24
+ #enabled = false;
25
+
26
+ constructor(contextId: string, session: Session) {
27
+ this.#session = session;
28
+ this.#contextId = contextId;
29
+ }
30
+
31
+ async #enableIfNeeded(): Promise<void> {
32
+ if (!this.#enabled) {
33
+ this.#enabled = true;
34
+ await this.#session.subscribe(
35
+ ['bluetooth.requestDevicePromptUpdated'],
36
+ [this.#contextId],
37
+ );
38
+ }
39
+ }
40
+
41
+ async waitForDevicePrompt(
42
+ timeout: number,
43
+ signal: AbortSignal | undefined,
44
+ ): Promise<DeviceRequestPrompt> {
45
+ const deferred = Deferred.create<DeviceRequestPrompt>({
46
+ message: `Waiting for \`DeviceRequestPrompt\` failed: ${timeout}ms exceeded`,
47
+ timeout,
48
+ });
49
+
50
+ const onRequestDevicePromptUpdated = (
51
+ params: Bidi.Bluetooth.RequestDevicePromptUpdatedParameters,
52
+ ) => {
53
+ if (params.context === this.#contextId) {
54
+ deferred.resolve(
55
+ new BidiDeviceRequestPrompt(
56
+ this.#contextId,
57
+ params.prompt,
58
+ this.#session,
59
+ params.devices,
60
+ ),
61
+ );
62
+ this.#session.off(
63
+ 'bluetooth.requestDevicePromptUpdated',
64
+ onRequestDevicePromptUpdated,
65
+ );
66
+ }
67
+ };
68
+ this.#session.on(
69
+ 'bluetooth.requestDevicePromptUpdated',
70
+ onRequestDevicePromptUpdated,
71
+ );
72
+
73
+ if (signal) {
74
+ signal.addEventListener(
75
+ 'abort',
76
+ () => {
77
+ deferred.reject(signal.reason);
78
+ },
79
+ {once: true},
80
+ );
81
+ }
82
+
83
+ await this.#enableIfNeeded();
84
+
85
+ return await deferred.valueOrThrow();
86
+ }
87
+ }
88
+
89
+ /**
90
+ * @internal
91
+ */
92
+ export class BidiDeviceRequestPrompt extends DeviceRequestPrompt {
93
+ readonly #session: Session;
94
+ #promptId: string;
95
+ #contextId: string;
96
+
97
+ constructor(
98
+ contextId: string,
99
+ promptId: string,
100
+ session: Session,
101
+ devices: Bidi.Bluetooth.RequestDeviceInfo[],
102
+ ) {
103
+ super();
104
+ this.#session = session;
105
+ this.#promptId = promptId;
106
+ this.#contextId = contextId;
107
+
108
+ this.devices.push(
109
+ ...devices.map(d => {
110
+ return {
111
+ id: d.id,
112
+ name: d.name ?? 'UNKNOWN',
113
+ };
114
+ }),
115
+ );
116
+ }
117
+
118
+ async cancel(): Promise<void> {
119
+ await this.#session.send('bluetooth.handleRequestDevicePrompt', {
120
+ context: this.#contextId,
121
+ prompt: this.#promptId,
122
+ accept: false,
123
+ });
124
+ }
125
+
126
+ async select(device: DeviceRequestPromptDevice): Promise<void> {
127
+ await this.#session.send('bluetooth.handleRequestDevicePrompt', {
128
+ context: this.#contextId,
129
+ prompt: this.#promptId,
130
+ accept: true,
131
+ device: device.id,
132
+ });
133
+ }
134
+
135
+ waitForDevice(): never {
136
+ throw new UnsupportedOperation();
137
+ }
138
+ }
package/src/bidi/Frame.ts CHANGED
@@ -21,13 +21,14 @@ import {
21
21
  switchMap,
22
22
  } from '../../third_party/rxjs/rxjs.js';
23
23
  import type {CDPSession} from '../api/CDPSession.js';
24
+ import type {DeviceRequestPrompt} from '../api/DeviceRequestPrompt.js';
24
25
  import {
25
26
  Frame,
26
27
  throwIfDetached,
27
28
  type GoToOptions,
28
29
  type WaitForOptions,
29
30
  } from '../api/Frame.js';
30
- import {PageEvent} from '../api/Page.js';
31
+ import {PageEvent, type WaitTimeoutOptions} from '../api/Page.js';
31
32
  import {Accessibility} from '../cdp/Accessibility.js';
32
33
  import type {ConsoleMessageType} from '../common/ConsoleMessage.js';
33
34
  import {
@@ -474,8 +475,11 @@ export class BidiFrame extends Frame {
474
475
  );
475
476
  }
476
477
 
477
- override waitForDevicePrompt(): never {
478
- throw new UnsupportedOperation();
478
+ override waitForDevicePrompt(
479
+ options: WaitTimeoutOptions = {},
480
+ ): Promise<DeviceRequestPrompt> {
481
+ const {timeout = this.timeoutSettings.timeout(), signal} = options;
482
+ return this.browsingContext.waitForDevicePrompt(timeout, signal);
479
483
  }
480
484
 
481
485
  override get detached(): boolean {
@@ -109,17 +109,6 @@ export class BidiHTTPRequest extends HTTPRequest {
109
109
  this.#request.on('authenticate', this.#handleAuthentication);
110
110
 
111
111
  this.#frame.page().trustedEmitter.emit(PageEvent.Request, this);
112
-
113
- if (this.#hasInternalHeaderOverwrite) {
114
- this.interception.handlers.push(async () => {
115
- await this.continue(
116
- {
117
- headers: this.headers(),
118
- },
119
- 0,
120
- );
121
- });
122
- }
123
112
  }
124
113
 
125
114
  protected canBeIntercepted(): boolean {
@@ -165,21 +154,6 @@ export class BidiHTTPRequest extends HTTPRequest {
165
154
  return await this.#request.fetchPostData();
166
155
  }
167
156
 
168
- get #hasInternalHeaderOverwrite(): boolean {
169
- return Boolean(
170
- Object.keys(this.#extraHTTPHeaders).length ||
171
- Object.keys(this.#userAgentHeaders).length,
172
- );
173
- }
174
-
175
- get #extraHTTPHeaders(): Record<string, string> {
176
- return this.#frame?.page()._extraHTTPHeaders ?? {};
177
- }
178
-
179
- get #userAgentHeaders(): Record<string, string> {
180
- return this.#frame?.page()._userAgentHeaders ?? {};
181
- }
182
-
183
157
  override headers(): Record<string, string> {
184
158
  // Callers should not be allowed to mutate internal structure.
185
159
  const headers: Record<string, string> = {};
@@ -188,8 +162,6 @@ export class BidiHTTPRequest extends HTTPRequest {
188
162
  }
189
163
  return {
190
164
  ...headers,
191
- ...this.#extraHTTPHeaders,
192
- ...this.#userAgentHeaders,
193
165
  };
194
166
  }
195
167
 
@@ -223,19 +195,6 @@ export class BidiHTTPRequest extends HTTPRequest {
223
195
  return this.#frame;
224
196
  }
225
197
 
226
- override async continue(
227
- overrides?: ContinueRequestOverrides,
228
- priority?: number | undefined,
229
- ): Promise<void> {
230
- return await super.continue(
231
- {
232
- headers: this.#hasInternalHeaderOverwrite ? this.headers() : undefined,
233
- ...overrides,
234
- },
235
- priority,
236
- );
237
- }
238
-
239
198
  override async _continue(
240
199
  overrides: ContinueRequestOverrides = {},
241
200
  ): Promise<void> {
package/src/bidi/Page.ts CHANGED
@@ -8,7 +8,10 @@ import type Protocol from 'devtools-protocol';
8
8
  import * as Bidi from 'webdriver-bidi-protocol';
9
9
 
10
10
  import {firstValueFrom, from, raceWith} from '../../third_party/rxjs/rxjs.js';
11
+ import type {BluetoothEmulation} from '../api/BluetoothEmulation.js';
12
+ import type {WindowId} from '../api/Browser.js';
11
13
  import type {CDPSession} from '../api/CDPSession.js';
14
+ import type {DeviceRequestPrompt} from '../api/DeviceRequestPrompt.js';
12
15
  import type {BoundingBox} from '../api/ElementHandle.js';
13
16
  import type {WaitForOptions} from '../api/Frame.js';
14
17
  import type {HTTPResponse} from '../api/HTTPResponse.js';
@@ -17,6 +20,7 @@ import type {
17
20
  GeolocationOptions,
18
21
  MediaFeature,
19
22
  PageEvents,
23
+ ReloadOptions,
20
24
  WaitTimeoutOptions,
21
25
  } from '../api/Page.js';
22
26
  import {
@@ -44,12 +48,7 @@ import {EventEmitter} from '../common/EventEmitter.js';
44
48
  import {FileChooser} from '../common/FileChooser.js';
45
49
  import type {PDFOptions} from '../common/PDFOptions.js';
46
50
  import type {Awaitable} from '../common/types.js';
47
- import {
48
- evaluationString,
49
- isString,
50
- parsePDFOptions,
51
- timeout,
52
- } from '../common/util.js';
51
+ import {evaluationString, parsePDFOptions, timeout} from '../common/util.js';
53
52
  import type {Viewport} from '../common/Viewport.js';
54
53
  import {assert} from '../util/assert.js';
55
54
  import {bubble} from '../util/decorators.js';
@@ -137,9 +136,7 @@ export class BidiPage extends Page {
137
136
  /**
138
137
  * @internal
139
138
  */
140
- _userAgentHeaders: Record<string, string> = {};
141
- #userAgentInterception?: string;
142
- #userAgentPreloadScript?: string;
139
+ #overrideNavigatorPropertiesPreloadScript?: string;
143
140
  override async setUserAgent(
144
141
  userAgentOrOptions:
145
142
  | string
@@ -185,26 +182,9 @@ export class BidiPage extends Page {
185
182
  const enable = userAgent !== '';
186
183
  userAgent = userAgent ?? (await this.#browserContext.browser().userAgent());
187
184
 
188
- this._userAgentHeaders = enable
189
- ? {
190
- 'User-Agent': userAgent,
191
- }
192
- : {};
193
-
194
- this.#userAgentInterception = await this.#toggleInterception(
195
- [Bidi.Network.InterceptPhase.BeforeRequestSent],
196
- this.#userAgentInterception,
197
- enable,
198
- );
185
+ await this.#frame.browsingContext.setUserAgent(enable ? userAgent : null);
199
186
 
200
- const overrideNavigatorProperties = (
201
- userAgent: string,
202
- platform: string | undefined,
203
- ) => {
204
- Object.defineProperty(navigator, 'userAgent', {
205
- value: userAgent,
206
- configurable: true,
207
- });
187
+ const overrideNavigatorProperties = (platform: string | undefined) => {
208
188
  if (platform) {
209
189
  Object.defineProperty(navigator, 'platform', {
210
190
  value: platform,
@@ -218,16 +198,15 @@ export class BidiPage extends Page {
218
198
  frames.push(...frame.childFrames());
219
199
  }
220
200
 
221
- if (this.#userAgentPreloadScript) {
201
+ if (this.#overrideNavigatorPropertiesPreloadScript) {
222
202
  await this.removeScriptToEvaluateOnNewDocument(
223
- this.#userAgentPreloadScript,
203
+ this.#overrideNavigatorPropertiesPreloadScript,
224
204
  );
225
205
  }
226
206
  const [evaluateToken] = await Promise.all([
227
207
  enable
228
208
  ? this.evaluateOnNewDocument(
229
209
  overrideNavigatorProperties,
230
- userAgent,
231
210
  platform || undefined,
232
211
  )
233
212
  : undefined,
@@ -236,12 +215,11 @@ export class BidiPage extends Page {
236
215
  ...frames.map(frame => {
237
216
  return frame.evaluate(
238
217
  overrideNavigatorProperties,
239
- userAgent,
240
218
  platform || undefined,
241
219
  );
242
220
  }),
243
221
  ]);
244
- this.#userAgentPreloadScript = evaluateToken?.identifier;
222
+ this.#overrideNavigatorPropertiesPreloadScript = evaluateToken?.identifier;
245
223
  }
246
224
 
247
225
  override async setBypassCSP(enabled: boolean): Promise<void> {
@@ -278,11 +256,23 @@ export class BidiPage extends Page {
278
256
  return this.#frame;
279
257
  }
280
258
 
259
+ override async emulateFocusedPage(enabled: boolean): Promise<void> {
260
+ return await this.#cdpEmulationManager.emulateFocus(enabled);
261
+ }
262
+
281
263
  override resize(_params: {
282
264
  contentWidth: number;
283
265
  contentHeight: number;
284
266
  }): Promise<void> {
285
- throw new Error('Method not implemented for WebDriver BiDi yet.');
267
+ throw new UnsupportedOperation();
268
+ }
269
+
270
+ override windowId(): Promise<WindowId> {
271
+ throw new UnsupportedOperation();
272
+ }
273
+
274
+ override openDevTools(): Promise<Page> {
275
+ throw new UnsupportedOperation();
286
276
  }
287
277
 
288
278
  async focusedFrame(): Promise<BidiFrame> {
@@ -332,11 +322,13 @@ export class BidiPage extends Page {
332
322
  }
333
323
 
334
324
  override async reload(
335
- options: WaitForOptions = {},
325
+ options: ReloadOptions = {},
336
326
  ): Promise<BidiHTTPResponse | null> {
337
327
  const [response] = await Promise.all([
338
328
  this.#frame.waitForNavigation(options),
339
- this.#frame.browsingContext.reload(),
329
+ this.#frame.browsingContext.reload({
330
+ ignoreCache: options.ignoreCache ? true : undefined,
331
+ }),
340
332
  ]).catch(
341
333
  rewriteNavigationError(
342
334
  this.url(),
@@ -429,18 +421,42 @@ export class BidiPage extends Page {
429
421
 
430
422
  override async setViewport(viewport: Viewport | null): Promise<void> {
431
423
  if (!this.browser().cdpSupported) {
432
- await this.#frame.browsingContext.setViewport({
433
- viewport:
434
- viewport?.width && viewport?.height
424
+ const viewportSize =
425
+ viewport?.width && viewport?.height
426
+ ? {
427
+ width: viewport.width,
428
+ height: viewport.height,
429
+ }
430
+ : null;
431
+
432
+ const devicePixelRatio = viewport?.deviceScaleFactor
433
+ ? viewport.deviceScaleFactor
434
+ : null;
435
+
436
+ // If `viewport` is not set, remove screen orientation override.
437
+ const screenOrientation: Bidi.Emulation.ScreenOrientation | null =
438
+ viewport
439
+ ? viewport.isLandscape
435
440
  ? {
436
- width: viewport.width,
437
- height: viewport.height,
441
+ natural: Bidi.Emulation.ScreenOrientationNatural.Landscape,
442
+ type: 'landscape-primary',
438
443
  }
439
- : null,
440
- devicePixelRatio: viewport?.deviceScaleFactor
441
- ? viewport.deviceScaleFactor
442
- : null,
443
- });
444
+ : {
445
+ natural: Bidi.Emulation.ScreenOrientationNatural.Portrait,
446
+ type: 'portrait-primary',
447
+ }
448
+ : null;
449
+
450
+ await Promise.all([
451
+ this.#frame.browsingContext.setViewport({
452
+ viewport: viewportSize,
453
+ devicePixelRatio,
454
+ }),
455
+ this.#frame.browsingContext.setScreenOrientationOverride(
456
+ screenOrientation,
457
+ ),
458
+ ]);
459
+
444
460
  this.#viewport = viewport;
445
461
  return;
446
462
  }
@@ -713,10 +729,7 @@ export class BidiPage extends Page {
713
729
 
714
730
  get isNetworkInterceptionEnabled(): boolean {
715
731
  return (
716
- Boolean(this.#requestInterception) ||
717
- Boolean(this.#extraHeadersInterception) ||
718
- Boolean(this.#authInterception) ||
719
- Boolean(this.#userAgentInterception)
732
+ Boolean(this.#requestInterception) || Boolean(this.#authInterception)
720
733
  );
721
734
  }
722
735
 
@@ -732,26 +745,10 @@ export class BidiPage extends Page {
732
745
  /**
733
746
  * @internal
734
747
  */
735
- _extraHTTPHeaders: Record<string, string> = {};
736
- #extraHeadersInterception?: string;
737
748
  override async setExtraHTTPHeaders(
738
749
  headers: Record<string, string>,
739
750
  ): Promise<void> {
740
- const extraHTTPHeaders: Record<string, string> = {};
741
- for (const [key, value] of Object.entries(headers)) {
742
- assert(
743
- isString(value),
744
- `Expected value of header "${key}" to be String, but "${typeof value}" is found.`,
745
- );
746
- extraHTTPHeaders[key.toLowerCase()] = value;
747
- }
748
- this._extraHTTPHeaders = extraHTTPHeaders;
749
-
750
- this.#extraHeadersInterception = await this.#toggleInterception(
751
- [Bidi.Network.InterceptPhase.BeforeRequestSent],
752
- this.#extraHeadersInterception,
753
- Boolean(Object.keys(this._extraHTTPHeaders).length),
754
- );
751
+ await this.#frame.browsingContext.setExtraHTTPHeaders(headers);
755
752
  }
756
753
 
757
754
  /**
@@ -797,7 +794,7 @@ export class BidiPage extends Page {
797
794
 
798
795
  override async setOfflineMode(enabled: boolean): Promise<void> {
799
796
  if (!this.#browserContext.browser().cdpSupported) {
800
- throw new UnsupportedOperation();
797
+ return await this.#frame.browsingContext.setOfflineMode(enabled);
801
798
  }
802
799
 
803
800
  if (!this.#emulatedNetworkConditions) {
@@ -816,8 +813,20 @@ export class BidiPage extends Page {
816
813
  networkConditions: NetworkConditions | null,
817
814
  ): Promise<void> {
818
815
  if (!this.#browserContext.browser().cdpSupported) {
819
- throw new UnsupportedOperation();
816
+ if (
817
+ !networkConditions?.offline &&
818
+ ((networkConditions?.upload ?? -1) >= 0 ||
819
+ (networkConditions?.download ?? -1) >= 0 ||
820
+ (networkConditions?.latency ?? 0) > 0)
821
+ ) {
822
+ // WebDriver BiDi supports only offline mode.
823
+ throw new UnsupportedOperation();
824
+ }
825
+ return await this.#frame.browsingContext.setOfflineMode(
826
+ networkConditions?.offline ?? false,
827
+ );
820
828
  }
829
+
821
830
  if (!this.#emulatedNetworkConditions) {
822
831
  this.#emulatedNetworkConditions = {
823
832
  offline: networkConditions?.offline ?? false,
@@ -989,8 +998,14 @@ export class BidiPage extends Page {
989
998
  }
990
999
  }
991
1000
 
992
- override waitForDevicePrompt(): never {
993
- throw new UnsupportedOperation();
1001
+ override async waitForDevicePrompt(
1002
+ options: WaitTimeoutOptions = {},
1003
+ ): Promise<DeviceRequestPrompt> {
1004
+ return await this.mainFrame().waitForDevicePrompt(options);
1005
+ }
1006
+
1007
+ override get bluetooth(): BluetoothEmulation {
1008
+ return this.mainFrame().browsingContext.bluetooth;
994
1009
  }
995
1010
  }
996
1011