patchright-core 1.50.0 → 1.51.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 (249) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  2. package/browsers.json +22 -10
  3. package/index.js +0 -1
  4. package/lib/androidServerImpl.js +4 -4
  5. package/lib/browserServerImpl.js +18 -9
  6. package/lib/cli/driver.js +6 -6
  7. package/lib/cli/program.js +9 -9
  8. package/lib/cli/programWithTestStub.js +2 -1
  9. package/lib/client/android.js +37 -58
  10. package/lib/client/artifact.js +4 -7
  11. package/lib/client/browser.js +10 -15
  12. package/lib/client/browserContext.js +77 -73
  13. package/lib/client/browserType.js +30 -64
  14. package/lib/client/channelOwner.js +23 -20
  15. package/lib/client/clientHelper.js +5 -7
  16. package/lib/client/clientStackTrace.js +65 -0
  17. package/lib/client/connection.js +46 -39
  18. package/lib/client/consoleMessage.js +4 -7
  19. package/lib/client/electron.js +10 -10
  20. package/lib/client/elementHandle.js +32 -33
  21. package/lib/client/errors.js +2 -2
  22. package/lib/client/eventEmitter.js +5 -8
  23. package/lib/client/fetch.js +60 -61
  24. package/lib/client/fileUtils.js +31 -0
  25. package/lib/client/frame.js +30 -29
  26. package/lib/client/harRouter.js +7 -9
  27. package/lib/client/jsHandle.js +3 -4
  28. package/lib/client/localUtils.js +24 -0
  29. package/lib/client/locator.js +37 -18
  30. package/lib/client/network.js +40 -40
  31. package/lib/client/page.js +59 -55
  32. package/lib/client/platform.js +71 -0
  33. package/lib/client/playwright.js +21 -1
  34. package/lib/client/selectors.js +8 -2
  35. package/lib/client/stream.js +2 -21
  36. package/lib/client/timeoutSettings.js +65 -0
  37. package/lib/client/tracing.js +10 -7
  38. package/lib/client/video.js +2 -2
  39. package/lib/client/waiter.js +5 -6
  40. package/lib/client/webSocket.js +106 -0
  41. package/lib/client/worker.js +12 -10
  42. package/lib/client/writableStream.js +2 -21
  43. package/lib/generated/consoleApiSource.js +1 -1
  44. package/lib/generated/injectedScriptSource.js +1 -1
  45. package/lib/generated/pollingRecorderSource.js +1 -1
  46. package/lib/inProcessFactory.js +6 -3
  47. package/lib/outofprocess.js +12 -8
  48. package/lib/protocol/validator.js +64 -13
  49. package/lib/protocol/validatorPrimitives.js +1 -2
  50. package/lib/remote/playwrightConnection.js +18 -10
  51. package/lib/remote/playwrightServer.js +20 -7
  52. package/lib/server/android/android.js +17 -14
  53. package/lib/server/android/backendAdb.js +14 -14
  54. package/lib/server/artifact.js +3 -3
  55. package/lib/server/bidi/bidiBrowser.js +2 -2
  56. package/lib/server/bidi/bidiChromium.js +4 -3
  57. package/lib/server/bidi/bidiConnection.js +1 -1
  58. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  59. package/lib/server/bidi/bidiFirefox.js +4 -3
  60. package/lib/server/bidi/bidiInput.js +5 -8
  61. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  62. package/lib/server/bidi/bidiOverCdp.js +2 -2
  63. package/lib/server/bidi/bidiPage.js +30 -46
  64. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  65. package/lib/server/browser.js +2 -2
  66. package/lib/server/browserContext.js +37 -40
  67. package/lib/server/browserType.js +18 -17
  68. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  69. package/lib/server/chromium/chromium.js +14 -14
  70. package/lib/server/chromium/chromiumSwitches.js +32 -1
  71. package/lib/server/chromium/crBrowser.js +15 -14
  72. package/lib/server/chromium/crConnection.js +2 -2
  73. package/lib/server/chromium/crCoverage.js +1 -1
  74. package/lib/server/chromium/crDevTools.js +1 -1
  75. package/lib/server/chromium/crDragDrop.js +1 -1
  76. package/lib/server/chromium/crExecutionContext.js +25 -17
  77. package/lib/server/chromium/crInput.js +2 -2
  78. package/lib/server/chromium/crNetworkManager.js +73 -26
  79. package/lib/server/chromium/crPage.js +22 -23
  80. package/lib/server/chromium/crPdf.js +1 -1
  81. package/lib/server/chromium/crProtocolHelper.js +3 -3
  82. package/lib/server/chromium/crServiceWorker.js +2 -2
  83. package/lib/server/chromium/videoRecorder.js +2 -2
  84. package/lib/server/clock.js +1 -1
  85. package/lib/server/codegen/javascript.js +1 -1
  86. package/lib/server/codegen/languages.js +2 -2
  87. package/lib/server/debugController.js +3 -3
  88. package/lib/server/deviceDescriptors.js +1 -1
  89. package/lib/server/deviceDescriptorsSource.json +131 -131
  90. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  91. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  92. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  93. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  94. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  95. package/lib/server/dispatchers/dispatcher.js +27 -25
  96. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  97. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  98. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  99. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  100. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  101. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  102. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  103. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  104. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  105. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  106. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  107. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  108. package/lib/server/dom.js +18 -12
  109. package/lib/server/download.js +1 -1
  110. package/lib/server/electron/electron.js +17 -16
  111. package/lib/server/errors.js +1 -1
  112. package/lib/server/fetch.js +50 -45
  113. package/lib/server/fileUploadUtils.js +7 -4
  114. package/lib/server/firefox/ffBrowser.js +11 -3
  115. package/lib/server/firefox/ffConnection.js +1 -1
  116. package/lib/server/firefox/ffExecutionContext.js +25 -17
  117. package/lib/server/firefox/ffNetworkManager.js +2 -2
  118. package/lib/server/firefox/ffPage.js +15 -21
  119. package/lib/server/firefox/firefox.js +7 -9
  120. package/lib/server/frameSelectors.js +1 -1
  121. package/lib/server/frames.js +366 -209
  122. package/lib/server/har/harRecorder.js +4 -4
  123. package/lib/server/har/harTracer.js +7 -8
  124. package/lib/server/harBackend.js +157 -0
  125. package/lib/server/helper.js +2 -2
  126. package/lib/server/index.js +1 -8
  127. package/lib/server/input.js +1 -1
  128. package/lib/server/instrumentation.js +2 -2
  129. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  130. package/lib/server/javascript.js +46 -33
  131. package/lib/server/launchApp.js +2 -2
  132. package/lib/server/localUtils.js +203 -0
  133. package/lib/server/network.js +3 -3
  134. package/lib/server/page.js +41 -22
  135. package/lib/server/pipeTransport.js +1 -1
  136. package/lib/server/playwright.js +5 -5
  137. package/lib/server/progress.js +1 -1
  138. package/lib/server/protocolError.js +1 -1
  139. package/lib/server/recorder/contextRecorder.js +3 -3
  140. package/lib/server/recorder/recorderApp.js +18 -12
  141. package/lib/server/recorder/recorderCollection.js +4 -4
  142. package/lib/server/recorder/throttledFile.js +3 -4
  143. package/lib/server/recorder.js +7 -5
  144. package/lib/server/registry/browserFetcher.js +9 -7
  145. package/lib/server/registry/dependencies.js +15 -15
  146. package/lib/server/registry/index.js +38 -44
  147. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  148. package/lib/server/screenshotter.js +1 -1
  149. package/lib/server/selectors.js +3 -3
  150. package/lib/server/socksClientCertificatesInterceptor.js +9 -9
  151. package/lib/server/socksInterceptor.js +8 -5
  152. package/lib/server/storageScript.js +160 -0
  153. package/lib/{common → server}/timeoutSettings.js +6 -5
  154. package/lib/server/trace/recorder/snapshotter.js +9 -8
  155. package/lib/server/trace/recorder/tracing.js +40 -31
  156. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  157. package/lib/server/trace/viewer/traceViewer.js +13 -5
  158. package/lib/server/transport.js +2 -2
  159. package/lib/{utils → server/utils}/comparators.js +4 -4
  160. package/lib/{utils → server/utils}/crypto.js +4 -4
  161. package/lib/{utils → server/utils}/debug.js +4 -12
  162. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  163. package/lib/{utils → server/utils}/env.js +4 -0
  164. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  165. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  166. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  167. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  168. package/lib/{utils → server/utils}/httpServer.js +8 -12
  169. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  170. package/lib/{utils → server/utils}/network.js +5 -5
  171. package/lib/server/utils/nodePlatform.js +140 -0
  172. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  173. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  174. package/lib/{utils → server/utils}/profiler.js +5 -6
  175. package/lib/{common → server/utils}/socksProxy.js +10 -9
  176. package/lib/{utils → server/utils}/userAgent.js +2 -16
  177. package/lib/{utils → server/utils}/wsServer.js +3 -3
  178. package/lib/{utils → server/utils}/zipFile.js +1 -1
  179. package/lib/{utils → server/utils}/zones.js +9 -24
  180. package/lib/server/webkit/webkit.js +4 -4
  181. package/lib/server/webkit/wkBrowser.js +4 -4
  182. package/lib/server/webkit/wkConnection.js +1 -1
  183. package/lib/server/webkit/wkExecutionContext.js +25 -17
  184. package/lib/server/webkit/wkInput.js +2 -2
  185. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  186. package/lib/server/webkit/wkPage.js +41 -40
  187. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  188. package/lib/server/webkit/wkWorkers.js +2 -2
  189. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  190. package/lib/utils/isomorphic/assert.js +25 -0
  191. package/lib/utils/isomorphic/colors.js +65 -0
  192. package/lib/utils/isomorphic/cssParser.js +1 -1
  193. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  194. package/lib/utils/isomorphic/locatorParser.js +2 -2
  195. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  196. package/lib/utils/isomorphic/mimeType.js +11 -3
  197. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  198. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  199. package/lib/utils/isomorphic/stackTrace.js +169 -0
  200. package/lib/utils/isomorphic/stringUtils.js +1 -1
  201. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  202. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  203. package/lib/utils/isomorphic/traceUtils.js +23 -0
  204. package/lib/{utils/index.js → utils.js} +200 -121
  205. package/lib/utilsBundle.js +1 -25
  206. package/lib/utilsBundleImpl/index.js +119 -121
  207. package/lib/vite/htmlReport/index.html +20 -20
  208. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  209. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  210. package/lib/vite/recorder/index.html +2 -2
  211. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  212. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  213. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  214. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  215. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  216. package/lib/vite/traceViewer/index.html +4 -4
  217. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  218. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  219. package/lib/vite/traceViewer/uiMode.html +4 -4
  220. package/lib/zipBundleImpl.js +4 -4
  221. package/package.json +7 -7
  222. package/types/protocol.d.ts +123 -99
  223. package/types/types.d.ts +110 -38
  224. package/lib/utils/stackTrace.js +0 -134
  225. package/lib/utils/traceUtils.js +0 -44
  226. package/lib/vite/recorder/assets/codeMirrorModule-3Qn3tPnZ.js +0 -24
  227. package/lib/vite/recorder/assets/index-Bek6JFv8.js +0 -184
  228. package/lib/vite/traceViewer/assets/codeMirrorModule-aLkSUGpW.js +0 -24
  229. package/lib/vite/traceViewer/assets/defaultSettingsView-CxUo6zd3.js +0 -243
  230. package/lib/vite/traceViewer/defaultSettingsView.DtIkrKWn.css +0 -1
  231. package/lib/vite/traceViewer/index.Bhu5cv5R.js +0 -2
  232. package/lib/vite/traceViewer/uiMode.BBy7FOVd.js +0 -5
  233. /package/lib/{utils → server/utils}/ascii.js +0 -0
  234. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  238. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  239. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  240. /package/lib/{utils → server/utils}/task.js +0 -0
  241. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  242. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  243. /package/lib/{common → utils/isomorphic}/types.js +0 -0
  244. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  245. /package/lib/vite/recorder/assets/{index-CAQewHss.css → index-eHBmevrY.css} +0 -0
  246. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  247. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  248. /package/lib/vite/traceViewer/{uiMode.Be_ME-Go.css → uiMode.BatfzHMG.css} +0 -0
  249. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
package/lib/server/dom.js CHANGED
@@ -10,15 +10,15 @@ exports.kUnableToAdoptErrorMessage = void 0;
10
10
  exports.throwElementIsNotAttached = throwElementIsNotAttached;
11
11
  exports.throwRetargetableDOMError = throwRetargetableDOMError;
12
12
  var _fs = _interopRequireDefault(require("fs"));
13
- var injectedScriptSource = _interopRequireWildcard(require("../generated/injectedScriptSource"));
14
- var _protocolError = require("./protocolError");
15
13
  var js = _interopRequireWildcard(require("./javascript"));
16
14
  var _progress = require("./progress");
17
15
  var _utils = require("../utils");
18
16
  var _fileUploadUtils = require("./fileUploadUtils");
17
+ var _protocolError = require("./protocolError");
18
+ var injectedScriptSource = _interopRequireWildcard(require("../generated/injectedScriptSource"));
19
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
22
  /**
23
23
  * Copyright (c) Microsoft Corporation.
24
24
  *
@@ -71,10 +71,6 @@ class FrameExecutionContext extends js.ExecutionContext {
71
71
  returnByValue: false
72
72
  }, arg);
73
73
  }
74
- createHandle(remoteObject) {
75
- if (this.frame._page._delegate.isElementHandle(remoteObject)) return new ElementHandle(this, remoteObject.objectId);
76
- return super.createHandle(remoteObject);
77
- }
78
74
  injectedScript() {
79
75
  if (!this._injectedScriptPromise) {
80
76
  const custom = [];
@@ -98,7 +94,10 @@ class FrameExecutionContext extends js.ExecutionContext {
98
94
  );
99
95
  })();
100
96
  `;
101
- this._injectedScriptPromise = this.rawEvaluateHandle(source).then(objectId => new js.JSHandle(this, 'object', 'InjectedScript', objectId));
97
+ this._injectedScriptPromise = this.rawEvaluateHandle(source).then(handle => {
98
+ handle._setPreview('InjectedScript');
99
+ return handle;
100
+ });
102
101
  }
103
102
  return this._injectedScriptPromise;
104
103
  }
@@ -158,6 +157,13 @@ class ElementHandle extends js.JSHandle {
158
157
  if (!isFrameElement) return null;
159
158
  return this._page._delegate.getContentFrame(this);
160
159
  }
160
+ async generateLocatorString() {
161
+ const selector = await this.evaluateInUtility(async ([injected, node]) => {
162
+ return injected.generateSelectorSimple(node);
163
+ }, {});
164
+ if (selector === 'error:notconnected') return;
165
+ return (0, _utils.asLocator)('javascript', selector);
166
+ }
161
167
  async getAttribute(metadata, name) {
162
168
  return this._frame.getAttribute(metadata, ':scope', name, {}, this);
163
169
  }
@@ -639,7 +645,7 @@ class ElementHandle extends js.JSHandle {
639
645
  await this._page._delegate.setInputFilePaths(retargeted, localPathsOrDirectory);
640
646
  await waitForInputEvent;
641
647
  } else {
642
- await this._page._delegate.setInputFiles(retargeted, filePayloads);
648
+ await retargeted.evaluateInUtility(([injected, node, files]) => injected.setInputFiles(node, files), filePayloads);
643
649
  }
644
650
  return 'done';
645
651
  }
@@ -729,8 +735,8 @@ class ElementHandle extends js.JSHandle {
729
735
  async boundingBox() {
730
736
  return this._page._delegate.getBoundingBox(this);
731
737
  }
732
- async ariaSnapshot() {
733
- return await this.evaluateInUtility(([injected, element]) => injected.ariaSnapshot(element), {});
738
+ async ariaSnapshot(options) {
739
+ return await this.evaluateInUtility(([injected, element, options]) => injected.ariaSnapshot(element, options), options);
734
740
  }
735
741
  async screenshot(metadata, options = {}) {
736
742
  const controller = new _progress.ProgressController(metadata, this);
@@ -8,7 +8,7 @@ var _path = _interopRequireDefault(require("path"));
8
8
  var _page = require("./page");
9
9
  var _utils = require("../utils");
10
10
  var _artifact = require("./artifact");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  /**
13
13
  * Copyright (c) Microsoft Corporation.
14
14
  *
@@ -7,26 +7,27 @@ exports.ElectronApplication = exports.Electron = void 0;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
8
  var _os = _interopRequireDefault(require("os"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
+ var readline = _interopRequireWildcard(require("readline"));
11
+ var _timeoutSettings = require("../timeoutSettings");
12
+ var _utils = require("../../utils");
13
+ var _ascii = require("../utils/ascii");
14
+ var _debugLogger = require("../utils/debugLogger");
15
+ var _eventsHelper = require("../utils/eventsHelper");
16
+ var _browserContext = require("../browserContext");
10
17
  var _crBrowser = require("../chromium/crBrowser");
11
18
  var _crConnection = require("../chromium/crConnection");
12
19
  var _crExecutionContext = require("../chromium/crExecutionContext");
13
- var js = _interopRequireWildcard(require("../javascript"));
14
- var _timeoutSettings = require("../../common/timeoutSettings");
15
- var _utils = require("../../utils");
16
- var _transport = require("../transport");
17
- var _processLauncher = require("../../utils/processLauncher");
18
- var _browserContext = require("../browserContext");
19
- var _progress = require("../progress");
20
- var _helper = require("../helper");
21
- var _eventsHelper = require("../../utils/eventsHelper");
22
- var readline = _interopRequireWildcard(require("readline"));
23
- var _debugLogger = require("../../utils/debugLogger");
24
- var _instrumentation = require("../instrumentation");
25
20
  var _crProtocolHelper = require("../chromium/crProtocolHelper");
26
21
  var _console = require("../console");
22
+ var _helper = require("../helper");
23
+ var _instrumentation = require("../instrumentation");
24
+ var js = _interopRequireWildcard(require("../javascript"));
25
+ var _processLauncher = require("../utils/processLauncher");
26
+ var _progress = require("../progress");
27
+ var _transport = require("../transport");
27
28
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
28
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
30
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
30
31
  /**
31
32
  * Copyright (c) Microsoft Corporation.
32
33
  *
@@ -102,7 +103,7 @@ class ElectronApplication extends _instrumentation.SdkObject {
102
103
  return;
103
104
  }
104
105
  if (!this._nodeExecutionContext) return;
105
- const args = event.args.map(arg => this._nodeExecutionContext.createHandle(arg));
106
+ const args = event.args.map(arg => (0, _crExecutionContext.createHandle)(this._nodeExecutionContext, arg));
106
107
  const message = new _console.ConsoleMessage(null, event.type, undefined, args, (0, _crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
107
108
  this.emit(ElectronApplication.Events.Console, message);
108
109
  }
@@ -174,7 +175,7 @@ class Electron extends _instrumentation.SdkObject {
174
175
  command = require('electron/index.js');
175
176
  } catch (error) {
176
177
  if ((error === null || error === void 0 ? void 0 : error.code) === 'MODULE_NOT_FOUND') {
177
- throw new Error('\n' + (0, _utils.wrapInASCIIBox)(['Electron executablePath not found!', 'Please install it using `npm install -D electron` or set the executablePath to your Electron executable.'].join('\n'), 1));
178
+ throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(['Electron executablePath not found!', 'Please install it using `npm install -D electron` or set the executablePath to your Electron executable.'].join('\n'), 1));
178
179
  }
179
180
  throw error;
180
181
  }
@@ -7,8 +7,8 @@ exports.TimeoutError = exports.TargetClosedError = void 0;
7
7
  exports.isTargetClosedError = isTargetClosedError;
8
8
  exports.parseError = parseError;
9
9
  exports.serializeError = serializeError;
10
- var _utils = require("../utils");
11
10
  var _serializers = require("../protocol/serializers");
11
+ var _utils = require("../utils");
12
12
  /**
13
13
  * Copyright (c) Microsoft Corporation.
14
14
  *
@@ -8,21 +8,25 @@ exports.createProxyAgent = createProxyAgent;
8
8
  var _http = _interopRequireDefault(require("http"));
9
9
  var _https = _interopRequireDefault(require("https"));
10
10
  var _stream = require("stream");
11
- var _zlib = _interopRequireDefault(require("zlib"));
12
- var _timeoutSettings = require("../common/timeoutSettings");
13
- var _userAgent = require("../utils/userAgent");
11
+ var _tls = require("tls");
12
+ var _url = _interopRequireDefault(require("url"));
13
+ var zlib = _interopRequireWildcard(require("zlib"));
14
+ var _timeoutSettings = require("./timeoutSettings");
14
15
  var _utils = require("../utils");
16
+ var _crypto = require("./utils/crypto");
17
+ var _userAgent = require("./utils/userAgent");
15
18
  var _utilsBundle = require("../utilsBundle");
16
19
  var _browserContext = require("./browserContext");
17
20
  var _cookieStore = require("./cookieStore");
18
21
  var _formData = require("./formData");
19
- var _happyEyeballs = require("../utils/happy-eyeballs");
20
22
  var _instrumentation = require("./instrumentation");
21
23
  var _progress = require("./progress");
22
- var _tracing = require("./trace/recorder/tracing");
23
24
  var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
24
- var _tls = require("tls");
25
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+ var _happyEyeballs = require("./utils/happyEyeballs");
26
+ var _tracing = require("./trace/recorder/tracing");
27
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
28
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
29
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
30
  /**
27
31
  * Copyright (c) Microsoft Corporation.
28
32
  *
@@ -66,7 +70,7 @@ class APIRequestContext extends _instrumentation.SdkObject {
66
70
  this.fetchLog.delete(fetchUid);
67
71
  }
68
72
  _storeResponseBody(body) {
69
- const uid = (0, _utils.createGuid)();
73
+ const uid = (0, _crypto.createGuid)();
70
74
  this.fetchResponses.set(uid, body);
71
75
  return uid;
72
76
  }
@@ -129,7 +133,8 @@ class APIRequestContext extends _instrumentation.SdkObject {
129
133
  });
130
134
  const fetchUid = this._storeResponseBody(fetchResponse.body);
131
135
  this.fetchLog.set(fetchUid, controller.metadata.log);
132
- if (params.failOnStatusCode && (fetchResponse.status < 200 || fetchResponse.status >= 400)) {
136
+ const failOnStatusCode = params.failOnStatusCode !== undefined ? params.failOnStatusCode : !!defaults.failOnStatusCode;
137
+ if (failOnStatusCode && (fetchResponse.status < 200 || fetchResponse.status >= 400)) {
133
138
  let responseText = '';
134
139
  if (fetchResponse.body.byteLength) {
135
140
  let text = fetchResponse.body.toString('utf8');
@@ -171,8 +176,7 @@ class APIRequestContext extends _instrumentation.SdkObject {
171
176
  }
172
177
  }
173
178
  async _sendRequestWithRetries(progress, url, options, postData, maxRetries) {
174
- var _maxRetries;
175
- (_maxRetries = maxRetries) !== null && _maxRetries !== void 0 ? _maxRetries : maxRetries = 0;
179
+ maxRetries !== null && maxRetries !== void 0 ? maxRetries : maxRetries = 0;
176
180
  let backoff = 250;
177
181
  for (let i = 0; i <= maxRetries; i++) {
178
182
  try {
@@ -229,10 +233,9 @@ class APIRequestContext extends _instrumentation.SdkObject {
229
233
  const request = requestConstructor(url, requestOptions, async response => {
230
234
  const responseAt = (0, _utils.monotonicTime)();
231
235
  const notifyRequestFinished = body => {
232
- var _tlsHandshakeAt;
233
236
  const endAt = (0, _utils.monotonicTime)();
234
237
  // spec: http://www.softwareishard.com/blog/har-12-spec/#timings
235
- const connectEnd = (_tlsHandshakeAt = tlsHandshakeAt) !== null && _tlsHandshakeAt !== void 0 ? _tlsHandshakeAt : tcpConnectionAt;
238
+ const connectEnd = tlsHandshakeAt !== null && tlsHandshakeAt !== void 0 ? tlsHandshakeAt : tcpConnectionAt;
236
239
  const timings = {
237
240
  send: requestFinishAt - startAt,
238
241
  wait: responseAt - requestFinishAt,
@@ -356,17 +359,17 @@ class APIRequestContext extends _instrumentation.SdkObject {
356
359
  let transform;
357
360
  const encoding = response.headers['content-encoding'];
358
361
  if (encoding === 'gzip' || encoding === 'x-gzip') {
359
- transform = _zlib.default.createGunzip({
360
- flush: _zlib.default.constants.Z_SYNC_FLUSH,
361
- finishFlush: _zlib.default.constants.Z_SYNC_FLUSH
362
+ transform = zlib.createGunzip({
363
+ flush: zlib.constants.Z_SYNC_FLUSH,
364
+ finishFlush: zlib.constants.Z_SYNC_FLUSH
362
365
  });
363
366
  } else if (encoding === 'br') {
364
- transform = _zlib.default.createBrotliDecompress({
365
- flush: _zlib.default.constants.BROTLI_OPERATION_FLUSH,
366
- finishFlush: _zlib.default.constants.BROTLI_OPERATION_FLUSH
367
+ transform = zlib.createBrotliDecompress({
368
+ flush: zlib.constants.BROTLI_OPERATION_FLUSH,
369
+ finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH
367
370
  });
368
371
  } else if (encoding === 'deflate') {
369
- transform = _zlib.default.createInflate();
372
+ transform = zlib.createInflate();
370
373
  }
371
374
  if (transform) {
372
375
  // Brotli and deflate decompressors throw if the input stream is empty.
@@ -388,7 +391,6 @@ class APIRequestContext extends _instrumentation.SdkObject {
388
391
  }));
389
392
  request.on('close', () => _utils.eventsHelper.removeEventListeners(listeners));
390
393
  request.on('socket', socket => {
391
- var _tcpConnectionAt, _tcpConnectionAt3;
392
394
  if (request.reusedSocket) {
393
395
  reusedSocketAt = (0, _utils.monotonicTime)();
394
396
  return;
@@ -397,14 +399,13 @@ class APIRequestContext extends _instrumentation.SdkObject {
397
399
  // happy eyeballs don't emit lookup and connect events, so we use our custom ones
398
400
  const happyEyeBallsTimings = (0, _happyEyeballs.timingForSocket)(socket);
399
401
  dnsLookupAt = happyEyeBallsTimings.dnsLookupAt;
400
- (_tcpConnectionAt = tcpConnectionAt) !== null && _tcpConnectionAt !== void 0 ? _tcpConnectionAt : tcpConnectionAt = happyEyeBallsTimings.tcpConnectionAt;
402
+ tcpConnectionAt = happyEyeBallsTimings.tcpConnectionAt;
401
403
 
402
404
  // non-happy-eyeballs sockets
403
405
  listeners.push(_utils.eventsHelper.addEventListener(socket, 'lookup', () => {
404
406
  dnsLookupAt = (0, _utils.monotonicTime)();
405
407
  }), _utils.eventsHelper.addEventListener(socket, 'connect', () => {
406
- var _tcpConnectionAt2;
407
- (_tcpConnectionAt2 = tcpConnectionAt) !== null && _tcpConnectionAt2 !== void 0 ? _tcpConnectionAt2 : tcpConnectionAt = (0, _utils.monotonicTime)();
408
+ tcpConnectionAt = (0, _utils.monotonicTime)();
408
409
  }), _utils.eventsHelper.addEventListener(socket, 'secureConnect', () => {
409
410
  tlsHandshakeAt = (0, _utils.monotonicTime)();
410
411
  if (socket instanceof _tls.TLSSocket) {
@@ -419,21 +420,12 @@ class APIRequestContext extends _instrumentation.SdkObject {
419
420
  };
420
421
  }
421
422
  }));
422
-
423
- // when using socks proxy, having the socket means the connection got established
424
- if (agent instanceof _utilsBundle.SocksProxyAgent) (_tcpConnectionAt3 = tcpConnectionAt) !== null && _tcpConnectionAt3 !== void 0 ? _tcpConnectionAt3 : tcpConnectionAt = (0, _utils.monotonicTime)();
425
423
  serverIPAddress = socket.remoteAddress;
426
424
  serverPort = socket.remotePort;
427
425
  });
428
426
  request.on('finish', () => {
429
427
  requestFinishAt = (0, _utils.monotonicTime)();
430
428
  });
431
-
432
- // http proxy
433
- request.on('proxyConnect', () => {
434
- var _tcpConnectionAt4;
435
- (_tcpConnectionAt4 = tcpConnectionAt) !== null && _tcpConnectionAt4 !== void 0 ? _tcpConnectionAt4 : tcpConnectionAt = (0, _utils.monotonicTime)();
436
- });
437
429
  progress.log(`→ ${options.method} ${url.toString()}`);
438
430
  if (options.headers) {
439
431
  for (const [name, value] of Object.entries(options.headers)) progress.log(` ${name}: ${value}`);
@@ -500,6 +492,7 @@ class BrowserContextAPIRequestContext extends APIRequestContext {
500
492
  return {
501
493
  userAgent: this._context._options.userAgent || this._context._browser.userAgent(),
502
494
  extraHTTPHeaders: this._context._options.extraHTTPHeaders,
495
+ failOnStatusCode: undefined,
503
496
  httpCredentials: this._context._options.httpCredentials,
504
497
  proxy: this._context._options.proxy || this._context._browser.options.proxy,
505
498
  timeoutSettings: this._context._timeoutSettings,
@@ -514,8 +507,8 @@ class BrowserContextAPIRequestContext extends APIRequestContext {
514
507
  async _cookies(url) {
515
508
  return await this._context.cookies(url.toString());
516
509
  }
517
- async storageState() {
518
- return this._context.storageState();
510
+ async storageState(indexedDB) {
511
+ return this._context.storageState(indexedDB);
519
512
  }
520
513
  }
521
514
  exports.BrowserContextAPIRequestContext = BrowserContextAPIRequestContext;
@@ -536,7 +529,11 @@ class GlobalAPIRequestContext extends APIRequestContext {
536
529
  proxy.server = url;
537
530
  }
538
531
  if (options.storageState) {
539
- this._origins = options.storageState.origins;
532
+ var _options$storageState;
533
+ this._origins = (_options$storageState = options.storageState.origins) === null || _options$storageState === void 0 ? void 0 : _options$storageState.map(origin => ({
534
+ indexedDB: [],
535
+ ...origin
536
+ }));
540
537
  this._cookieStore.addCookies(options.storageState.cookies || []);
541
538
  }
542
539
  (0, _browserContext.verifyClientCertificates)(options.clientCertificates);
@@ -544,6 +541,7 @@ class GlobalAPIRequestContext extends APIRequestContext {
544
541
  baseURL: options.baseURL,
545
542
  userAgent: options.userAgent || (0, _userAgent.getUserAgent)(),
546
543
  extraHTTPHeaders: options.extraHTTPHeaders,
544
+ failOnStatusCode: !!options.failOnStatusCode,
547
545
  ignoreHTTPSErrors: !!options.ignoreHTTPSErrors,
548
546
  httpCredentials: options.httpCredentials,
549
547
  clientCertificates: options.clientCertificates,
@@ -570,22 +568,29 @@ class GlobalAPIRequestContext extends APIRequestContext {
570
568
  async _cookies(url) {
571
569
  return this._cookieStore.cookies(url);
572
570
  }
573
- async storageState() {
571
+ async storageState(indexedDB = false) {
574
572
  return {
575
573
  cookies: this._cookieStore.allCookies(),
576
- origins: this._origins || []
574
+ origins: (this._origins || []).map(origin => ({
575
+ ...origin,
576
+ indexedDB: indexedDB ? origin.indexedDB : []
577
+ }))
577
578
  };
578
579
  }
579
580
  }
580
581
  exports.GlobalAPIRequestContext = GlobalAPIRequestContext;
581
582
  function createProxyAgent(proxy) {
582
- var _proxyURL$protocol;
583
- const proxyURL = new URL(proxy.server);
584
- if ((_proxyURL$protocol = proxyURL.protocol) !== null && _proxyURL$protocol !== void 0 && _proxyURL$protocol.startsWith('socks')) return new _utilsBundle.SocksProxyAgent(proxyURL);
585
- if (proxy.username) proxyURL.username = proxy.username;
586
- if (proxy.password) proxyURL.password = proxy.password;
587
- // TODO: We should use HttpProxyAgent conditional on proxyURL.protocol instead of always using CONNECT method.
588
- return new _utilsBundle.HttpsProxyAgent(proxyURL);
583
+ var _proxyOpts$protocol;
584
+ const proxyOpts = _url.default.parse(proxy.server);
585
+ if ((_proxyOpts$protocol = proxyOpts.protocol) !== null && _proxyOpts$protocol !== void 0 && _proxyOpts$protocol.startsWith('socks')) {
586
+ return new _utilsBundle.SocksProxyAgent({
587
+ host: proxyOpts.hostname,
588
+ port: proxyOpts.port || undefined
589
+ });
590
+ }
591
+ if (proxy.username) proxyOpts.auth = `${proxy.username}:${proxy.password || ''}`;
592
+ // TODO: We should use HttpProxyAgent conditional on proxyOpts.protocol instead of always using CONNECT method.
593
+ return new _utilsBundle.HttpsProxyAgent(proxyOpts);
589
594
  }
590
595
  function toHeadersArray(rawHeaders) {
591
596
  const result = [];
@@ -3,12 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.fileUploadSizeLimit = void 0;
6
7
  exports.prepareFilesForUpload = prepareFilesForUpload;
7
8
  var _fs = _interopRequireDefault(require("fs"));
8
9
  var _path = _interopRequireDefault(require("path"));
9
- var _utils = require("../utils");
10
+ var _assert = require("../utils/isomorphic/assert");
10
11
  var _utilsBundle = require("../utilsBundle");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
13
  /**
13
14
  * Copyright (c) Microsoft Corporation.
14
15
  *
@@ -25,9 +26,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
26
  * limitations under the License.
26
27
  */
27
28
 
29
+ // Keep in sync with the client.
30
+ const fileUploadSizeLimit = exports.fileUploadSizeLimit = 50 * 1024 * 1024;
28
31
  async function filesExceedUploadLimit(files) {
29
32
  const sizes = await Promise.all(files.map(async file => (await _fs.default.promises.stat(file)).size));
30
- return sizes.reduce((total, size) => total + size, 0) >= _utils.fileUploadSizeLimit;
33
+ return sizes.reduce((total, size) => total + size, 0) >= fileUploadSizeLimit;
31
34
  }
32
35
  async function prepareFilesForUpload(frame, params) {
33
36
  var _fileBuffers;
@@ -44,7 +47,7 @@ async function prepareFilesForUpload(frame, params) {
44
47
  if (streams) localPaths = streams.map(c => c.path());
45
48
  if (directoryStream) localDirectory = directoryStream.path();
46
49
  if (localPaths) {
47
- for (const p of localPaths) (0, _utils.assert)(_path.default.isAbsolute(p) && _path.default.resolve(p) === p, 'Paths provided to localPaths must be absolute and fully resolved.');
50
+ for (const p of localPaths) (0, _assert.assert)(_path.default.isAbsolute(p) && _path.default.resolve(p) === p, 'Paths provided to localPaths must be absolute and fully resolved.');
48
51
  }
49
52
  let fileBuffers = payloads;
50
53
  if (!frame._page._browserContext._browser._isCollocatedWithServer) {
@@ -4,16 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FFBrowserContext = exports.FFBrowser = void 0;
7
- var _errors = require("../errors");
8
7
  var _utils = require("../../utils");
9
8
  var _browser = require("../browser");
10
9
  var _browserContext = require("../browserContext");
10
+ var _errors = require("../errors");
11
11
  var network = _interopRequireWildcard(require("../network"));
12
12
  var _page = require("../page");
13
13
  var _ffConnection = require("./ffConnection");
14
14
  var _ffPage = require("./ffPage");
15
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
17
  /**
18
18
  * Copyright 2018 Google Inc. All rights reserved.
19
19
  * Modifications copyright (c) Microsoft Corporation.
@@ -244,6 +244,12 @@ class FFBrowserContext extends _browserContext.BrowserContext {
244
244
  forcedColors: this._options.forcedColors !== undefined ? this._options.forcedColors : 'none'
245
245
  }));
246
246
  }
247
+ if (this._options.contrast !== 'no-override') {
248
+ promises.push(this._browser.session.send('Browser.setContrast', {
249
+ browserContextId,
250
+ contrast: this._options.contrast !== undefined ? this._options.contrast : 'no-preference'
251
+ }));
252
+ }
247
253
  if (this._options.recordVideo) {
248
254
  promises.push(this._ensureVideosPath().then(() => {
249
255
  return this._browser.session.send('Browser.setVideoRecordingOptions', {
@@ -457,4 +463,6 @@ function toJugglerProxyOptions(proxy) {
457
463
 
458
464
  // Prefs for quick fixes that didn't make it to the build.
459
465
  // Should all be moved to `playwright.cfg`.
460
- const kBandaidFirefoxUserPrefs = {};
466
+ const kBandaidFirefoxUserPrefs = {
467
+ 'dom.fetchKeepalive.enabled': false
468
+ };
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.kBrowserCloseMessageId = exports.FFSession = exports.FFConnection = exports.ConnectionEvents = void 0;
7
7
  var _events = require("events");
8
- var _debugLogger = require("../../utils/debugLogger");
8
+ var _debugLogger = require("../utils/debugLogger");
9
9
  var _helper = require("../helper");
10
10
  var _protocolError = require("../protocolError");
11
11
  /**
@@ -4,12 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FFExecutionContext = void 0;
7
- var js = _interopRequireWildcard(require("../javascript"));
8
- var _stackTrace = require("../../utils/stackTrace");
7
+ exports.createHandle = createHandle;
8
+ var _assert = require("../../utils/isomorphic/assert");
9
+ var _stackTrace = require("../../utils/isomorphic/stackTrace");
9
10
  var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
11
+ var js = _interopRequireWildcard(require("../javascript"));
12
+ var dom = _interopRequireWildcard(require("../dom"));
10
13
  var _protocolError = require("../protocolError");
11
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
16
  /**
14
17
  * Copyright 2019 Google Inc. All rights reserved.
15
18
  * Modifications copyright (c) Microsoft Corporation.
@@ -43,16 +46,16 @@ class FFExecutionContext {
43
46
  checkException(payload.exceptionDetails);
44
47
  return payload.result.value;
45
48
  }
46
- async rawEvaluateHandle(expression) {
49
+ async rawEvaluateHandle(context, expression) {
47
50
  const payload = await this._session.send('Runtime.evaluate', {
48
51
  expression,
49
52
  returnByValue: false,
50
53
  executionContextId: this._executionContextId
51
54
  }).catch(rewriteError);
52
55
  checkException(payload.exceptionDetails);
53
- return payload.result.objectId;
56
+ return createHandle(context, payload.result);
54
57
  }
55
- async evaluateWithArguments(expression, returnByValue, utilityScript, values, objectIds) {
58
+ async evaluateWithArguments(expression, returnByValue, utilityScript, values, handles) {
56
59
  const payload = await this._session.send('Runtime.callFunction', {
57
60
  functionDeclaration: expression,
58
61
  args: [{
@@ -60,8 +63,8 @@ class FFExecutionContext {
60
63
  value: undefined
61
64
  }, ...values.map(value => ({
62
65
  value
63
- })), ...objectIds.map(objectId => ({
64
- objectId,
66
+ })), ...handles.map(handle => ({
67
+ objectId: handle._objectId,
65
68
  value: undefined
66
69
  }))],
67
70
  returnByValue,
@@ -69,24 +72,22 @@ class FFExecutionContext {
69
72
  }).catch(rewriteError);
70
73
  checkException(payload.exceptionDetails);
71
74
  if (returnByValue) return (0, _utilityScriptSerializers.parseEvaluationResultValue)(payload.result.value);
72
- return utilityScript._context.createHandle(payload.result);
75
+ return createHandle(utilityScript._context, payload.result);
73
76
  }
74
- async getProperties(context, objectId) {
77
+ async getProperties(object) {
75
78
  const response = await this._session.send('Runtime.getObjectProperties', {
76
79
  executionContextId: this._executionContextId,
77
- objectId
80
+ objectId: object._objectId
78
81
  });
79
82
  const result = new Map();
80
- for (const property of response.properties) result.set(property.name, context.createHandle(property.value));
83
+ for (const property of response.properties) result.set(property.name, createHandle(object._context, property.value));
81
84
  return result;
82
85
  }
83
- createHandle(context, remoteObject) {
84
- return new js.JSHandle(context, remoteObject.subtype || remoteObject.type || '', renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
85
- }
86
- async releaseHandle(objectId) {
86
+ async releaseHandle(handle) {
87
+ if (!handle._objectId) return;
87
88
  await this._session.send('Runtime.disposeObject', {
88
89
  executionContextId: this._executionContextId,
89
- objectId
90
+ objectId: handle._objectId
90
91
  });
91
92
  }
92
93
  }
@@ -120,4 +121,11 @@ function renderPreview(object) {
120
121
  if (object.subtype === 'weakset') return 'WeakSet';
121
122
  if (object.subtype) return object.subtype[0].toUpperCase() + object.subtype.slice(1);
122
123
  if ('value' in object) return String(object.value);
124
+ }
125
+ function createHandle(context, remoteObject) {
126
+ if (remoteObject.subtype === 'node') {
127
+ (0, _assert.assert)(context instanceof dom.FrameExecutionContext);
128
+ return new dom.ElementHandle(context, remoteObject.objectId);
129
+ }
130
+ return new js.JSHandle(context, remoteObject.subtype || remoteObject.type || '', renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
123
131
  }
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FFNetworkManager = void 0;
7
- var _eventsHelper = require("../../utils/eventsHelper");
7
+ var _eventsHelper = require("../utils/eventsHelper");
8
8
  var network = _interopRequireWildcard(require("../network"));
9
9
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
11
  /**
12
12
  * Copyright 2019 Google Inc. All rights reserved.
13
13
  * Modifications copyright (c) Microsoft Corporation.