patchright-core 1.50.1 → 1.51.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/ThirdPartyNotices.txt +1 -43
  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/inProcessFactory.js +6 -3
  46. package/lib/outofprocess.js +12 -8
  47. package/lib/protocol/validator.js +64 -13
  48. package/lib/protocol/validatorPrimitives.js +1 -2
  49. package/lib/remote/playwrightConnection.js +18 -10
  50. package/lib/remote/playwrightServer.js +20 -7
  51. package/lib/server/android/android.js +17 -14
  52. package/lib/server/android/backendAdb.js +14 -14
  53. package/lib/server/artifact.js +3 -3
  54. package/lib/server/bidi/bidiBrowser.js +2 -2
  55. package/lib/server/bidi/bidiChromium.js +4 -3
  56. package/lib/server/bidi/bidiConnection.js +1 -1
  57. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  58. package/lib/server/bidi/bidiFirefox.js +4 -3
  59. package/lib/server/bidi/bidiInput.js +5 -8
  60. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  61. package/lib/server/bidi/bidiOverCdp.js +2 -2
  62. package/lib/server/bidi/bidiPage.js +30 -46
  63. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  64. package/lib/server/browser.js +2 -2
  65. package/lib/server/browserContext.js +37 -40
  66. package/lib/server/browserType.js +18 -17
  67. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  68. package/lib/server/chromium/chromium.js +14 -14
  69. package/lib/server/chromium/chromiumSwitches.js +32 -1
  70. package/lib/server/chromium/crBrowser.js +15 -14
  71. package/lib/server/chromium/crConnection.js +2 -2
  72. package/lib/server/chromium/crCoverage.js +1 -1
  73. package/lib/server/chromium/crDevTools.js +1 -1
  74. package/lib/server/chromium/crDragDrop.js +1 -1
  75. package/lib/server/chromium/crExecutionContext.js +25 -17
  76. package/lib/server/chromium/crInput.js +2 -2
  77. package/lib/server/chromium/crNetworkManager.js +73 -26
  78. package/lib/server/chromium/crPage.js +22 -23
  79. package/lib/server/chromium/crPdf.js +1 -1
  80. package/lib/server/chromium/crProtocolHelper.js +3 -3
  81. package/lib/server/chromium/crServiceWorker.js +2 -2
  82. package/lib/server/chromium/videoRecorder.js +2 -2
  83. package/lib/server/clock.js +1 -1
  84. package/lib/server/codegen/javascript.js +1 -1
  85. package/lib/server/codegen/languages.js +2 -2
  86. package/lib/server/debugController.js +3 -3
  87. package/lib/server/deviceDescriptors.js +1 -1
  88. package/lib/server/deviceDescriptorsSource.json +131 -131
  89. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  90. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  91. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  94. package/lib/server/dispatchers/dispatcher.js +27 -25
  95. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  96. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  97. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  98. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  99. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  100. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  101. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  102. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  103. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  104. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  105. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  106. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  107. package/lib/server/dom.js +18 -12
  108. package/lib/server/download.js +1 -1
  109. package/lib/server/electron/electron.js +17 -16
  110. package/lib/server/errors.js +1 -1
  111. package/lib/server/fetch.js +36 -25
  112. package/lib/server/fileUploadUtils.js +7 -4
  113. package/lib/server/firefox/ffBrowser.js +8 -2
  114. package/lib/server/firefox/ffConnection.js +1 -1
  115. package/lib/server/firefox/ffExecutionContext.js +25 -17
  116. package/lib/server/firefox/ffNetworkManager.js +2 -2
  117. package/lib/server/firefox/ffPage.js +15 -21
  118. package/lib/server/firefox/firefox.js +7 -9
  119. package/lib/server/frameSelectors.js +1 -1
  120. package/lib/server/frames.js +366 -209
  121. package/lib/server/har/harRecorder.js +4 -4
  122. package/lib/server/har/harTracer.js +7 -8
  123. package/lib/server/harBackend.js +157 -0
  124. package/lib/server/helper.js +2 -2
  125. package/lib/server/index.js +1 -8
  126. package/lib/server/input.js +1 -1
  127. package/lib/server/instrumentation.js +2 -2
  128. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  129. package/lib/server/javascript.js +46 -33
  130. package/lib/server/launchApp.js +2 -2
  131. package/lib/server/localUtils.js +203 -0
  132. package/lib/server/network.js +3 -3
  133. package/lib/server/page.js +41 -22
  134. package/lib/server/pipeTransport.js +1 -1
  135. package/lib/server/playwright.js +5 -5
  136. package/lib/server/progress.js +1 -1
  137. package/lib/server/protocolError.js +1 -1
  138. package/lib/server/recorder/contextRecorder.js +3 -3
  139. package/lib/server/recorder/recorderApp.js +18 -12
  140. package/lib/server/recorder/recorderCollection.js +3 -3
  141. package/lib/server/recorder/throttledFile.js +3 -4
  142. package/lib/server/recorder.js +7 -5
  143. package/lib/server/registry/browserFetcher.js +9 -7
  144. package/lib/server/registry/dependencies.js +15 -15
  145. package/lib/server/registry/index.js +38 -44
  146. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  147. package/lib/server/screenshotter.js +1 -1
  148. package/lib/server/selectors.js +3 -3
  149. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  150. package/lib/server/socksInterceptor.js +8 -5
  151. package/lib/server/storageScript.js +160 -0
  152. package/lib/{common → server}/timeoutSettings.js +6 -5
  153. package/lib/server/trace/recorder/snapshotter.js +9 -8
  154. package/lib/server/trace/recorder/tracing.js +40 -31
  155. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  156. package/lib/server/trace/viewer/traceViewer.js +13 -5
  157. package/lib/server/transport.js +2 -2
  158. package/lib/{utils → server/utils}/comparators.js +4 -4
  159. package/lib/{utils → server/utils}/crypto.js +4 -4
  160. package/lib/{utils → server/utils}/debug.js +4 -12
  161. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  162. package/lib/{utils → server/utils}/env.js +4 -0
  163. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  164. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  165. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  166. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  167. package/lib/{utils → server/utils}/httpServer.js +8 -8
  168. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  169. package/lib/{utils → server/utils}/network.js +4 -4
  170. package/lib/server/utils/nodePlatform.js +140 -0
  171. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  172. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  173. package/lib/{utils → server/utils}/profiler.js +5 -6
  174. package/lib/{common → server/utils}/socksProxy.js +10 -9
  175. package/lib/{utils → server/utils}/userAgent.js +2 -16
  176. package/lib/{utils → server/utils}/wsServer.js +3 -3
  177. package/lib/{utils → server/utils}/zipFile.js +1 -1
  178. package/lib/{utils → server/utils}/zones.js +9 -24
  179. package/lib/server/webkit/webkit.js +4 -4
  180. package/lib/server/webkit/wkBrowser.js +4 -4
  181. package/lib/server/webkit/wkConnection.js +1 -1
  182. package/lib/server/webkit/wkExecutionContext.js +25 -17
  183. package/lib/server/webkit/wkInput.js +2 -2
  184. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  185. package/lib/server/webkit/wkPage.js +41 -40
  186. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  187. package/lib/server/webkit/wkWorkers.js +2 -2
  188. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  189. package/lib/utils/isomorphic/assert.js +25 -0
  190. package/lib/utils/isomorphic/colors.js +65 -0
  191. package/lib/utils/isomorphic/cssParser.js +1 -1
  192. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  193. package/lib/utils/isomorphic/locatorParser.js +2 -2
  194. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  195. package/lib/utils/isomorphic/mimeType.js +11 -3
  196. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  197. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  198. package/lib/utils/isomorphic/stackTrace.js +169 -0
  199. package/lib/utils/isomorphic/stringUtils.js +1 -1
  200. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  201. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  202. package/lib/utils/isomorphic/traceUtils.js +23 -0
  203. package/lib/{utils/index.js → utils.js} +200 -121
  204. package/lib/utilsBundle.js +1 -25
  205. package/lib/utilsBundleImpl/index.js +114 -116
  206. package/lib/vite/htmlReport/index.html +20 -20
  207. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  208. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  209. package/lib/vite/recorder/index.html +1 -1
  210. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  211. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  212. package/lib/vite/traceViewer/assets/{xtermModule-c-SNdYZy.js → xtermModule-BoAIEibi.js} +7 -7
  213. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  214. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  215. package/lib/vite/traceViewer/index.html +3 -3
  216. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  217. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  218. package/lib/vite/traceViewer/uiMode.html +3 -3
  219. package/lib/zipBundleImpl.js +4 -4
  220. package/package.json +7 -7
  221. package/types/protocol.d.ts +123 -99
  222. package/types/types.d.ts +91 -37
  223. package/lib/utils/stackTrace.js +0 -134
  224. package/lib/utils/traceUtils.js +0 -44
  225. package/lib/vite/recorder/assets/codeMirrorModule-CNAqJrkA.js +0 -24
  226. package/lib/vite/recorder/assets/index-DGS0JLxS.js +0 -184
  227. package/lib/vite/traceViewer/assets/codeMirrorModule-D55P_UuL.js +0 -24
  228. package/lib/vite/traceViewer/assets/defaultSettingsView-B-uNoFsX.js +0 -243
  229. package/lib/vite/traceViewer/defaultSettingsView.2xeEXCXv.css +0 -1
  230. package/lib/vite/traceViewer/index.BfvuujqP.js +0 -2
  231. package/lib/vite/traceViewer/uiMode.CStJu6jo.js +0 -5
  232. /package/lib/{utils → server/utils}/ascii.js +0 -0
  233. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  234. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  238. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  239. /package/lib/{utils → server/utils}/task.js +0 -0
  240. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  241. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  242. /package/lib/{common → utils/isomorphic}/types.js +0 -0
@@ -9,26 +9,29 @@ exports.normalizeProxySettings = normalizeProxySettings;
9
9
  exports.validateBrowserContextOptions = validateBrowserContextOptions;
10
10
  exports.verifyClientCertificates = verifyClientCertificates;
11
11
  exports.verifyGeolocation = verifyGeolocation;
12
- var _timeoutSettings = require("../common/timeoutSettings");
13
- var _utils = require("../utils");
14
- var _fileUtils = require("../utils/fileUtils");
15
- var _helper = require("./helper");
16
- var network = _interopRequireWildcard(require("./network"));
17
- var _page6 = require("./page");
18
- var _path = _interopRequireDefault(require("path"));
19
12
  var _fs = _interopRequireDefault(require("fs"));
20
- var _instrumentation = require("./instrumentation");
13
+ var _path = _interopRequireDefault(require("path"));
14
+ var _timeoutSettings = require("./timeoutSettings");
15
+ var _crypto = require("./utils/crypto");
16
+ var _debug = require("./utils/debug");
17
+ var _clock = require("./clock");
21
18
  var _debugger = require("./debugger");
22
- var _tracing = require("./trace/recorder/tracing");
19
+ var _fetch = require("./fetch");
20
+ var _fileUtils = require("./utils/fileUtils");
23
21
  var _harRecorder = require("./har/harRecorder");
22
+ var _helper = require("./helper");
23
+ var _instrumentation = require("./instrumentation");
24
+ var utilityScriptSerializers = _interopRequireWildcard(require("./isomorphic/utilityScriptSerializers"));
25
+ var network = _interopRequireWildcard(require("./network"));
26
+ var _page6 = require("./page");
24
27
  var _recorder = require("./recorder");
25
- var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
26
- var _fetch = require("./fetch");
27
- var _clock = require("./clock");
28
28
  var _recorderApp = require("./recorder/recorderApp");
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+ var storageScript = _interopRequireWildcard(require("./storageScript"));
30
+ var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
31
+ var _tracing = require("./trace/recorder/tracing");
30
32
  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); }
31
- 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; }
33
+ 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; }
34
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
32
35
  /**
33
36
  * Copyright 2017 Google Inc. All rights reserved.
34
37
  * Modifications copyright (c) Microsoft Corporation.
@@ -102,7 +105,7 @@ class BrowserContext extends _instrumentation.SdkObject {
102
105
  this._debugger = new _debugger.Debugger(this);
103
106
 
104
107
  // When PWDEBUG=1, show inspector for each context.
105
- if ((0, _utils.debugMode)() === 'inspector') await _recorder.Recorder.show(this, _recorderApp.RecorderApp.factory(this), {
108
+ if ((0, _debug.debugMode)() === 'inspector') await _recorder.Recorder.show(this, _recorderApp.RecorderApp.factory(this), {
106
109
  pauseOnNextStatement: true
107
110
  });
108
111
 
@@ -111,7 +114,7 @@ class BrowserContext extends _instrumentation.SdkObject {
111
114
  this._debugger.on(_debugger.Debugger.Events.PausedStateChanged, () => {
112
115
  if (this._debugger.isPaused()) _recorder.Recorder.showInspectorNoReply(this, _recorderApp.RecorderApp.factory(this));
113
116
  });
114
- if ((0, _utils.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);
117
+ if ((0, _debug.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);
115
118
  if (this._options.serviceWorkers === 'block') await this.addInitScript(`navigator.serviceWorker.register = async () => { };`);
116
119
  if (this._options.permissions) await this.grantPermissions(this._options.permissions);
117
120
  }
@@ -399,24 +402,25 @@ class BrowserContext extends _instrumentation.SdkObject {
399
402
  addVisitedOrigin(origin) {
400
403
  this._origins.add(origin);
401
404
  }
402
- async storageState() {
405
+ async storageState(indexedDB = false) {
403
406
  const result = {
404
407
  cookies: await this.cookies(),
405
408
  origins: []
406
409
  };
407
410
  const originsToSave = new Set(this._origins);
411
+ const collectScript = `(${storageScript.collect})((${utilityScriptSerializers.source})(), ${this._browser.options.name === 'firefox'}, ${indexedDB})`;
408
412
 
409
413
  // First try collecting storage stage from existing pages.
410
414
  for (const page of this.pages()) {
411
415
  const origin = page.mainFrame().origin();
412
416
  if (!origin || !originsToSave.has(origin)) continue;
413
417
  try {
414
- const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(`({
415
- localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),
416
- })`, 'utility');
417
- if (storage.localStorage.length) result.origins.push({
418
+ var _storage$indexedDB;
419
+ const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(collectScript, 'utility');
420
+ if (storage.localStorage.length || (_storage$indexedDB = storage.indexedDB) !== null && _storage$indexedDB !== void 0 && _storage$indexedDB.length) result.origins.push({
418
421
  origin,
419
- localStorage: storage.localStorage
422
+ localStorage: storage.localStorage,
423
+ indexedDB: storage.indexedDB
420
424
  });
421
425
  originsToSave.delete(origin);
422
426
  } catch {
@@ -435,19 +439,17 @@ class BrowserContext extends _instrumentation.SdkObject {
435
439
  return true;
436
440
  });
437
441
  for (const origin of originsToSave) {
438
- const originStorage = {
439
- origin,
440
- localStorage: []
441
- };
442
+ var _storage$indexedDB2;
442
443
  const frame = page.mainFrame();
443
444
  await frame.goto(internalMetadata, origin);
444
- const storage = await frame.evaluateExpression(`({
445
- localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),
446
- })`, {
445
+ const storage = await frame.evaluateExpression(collectScript, {
447
446
  world: 'utility'
448
447
  });
449
- originStorage.localStorage = storage.localStorage;
450
- if (storage.localStorage.length) result.origins.push(originStorage);
448
+ if (storage.localStorage.length || (_storage$indexedDB2 = storage.indexedDB) !== null && _storage$indexedDB2 !== void 0 && _storage$indexedDB2.length) result.origins.push({
449
+ origin,
450
+ localStorage: storage.localStorage,
451
+ indexedDB: storage.indexedDB
452
+ });
451
453
  }
452
454
  await page.close(internalMetadata);
453
455
  }
@@ -505,14 +507,9 @@ class BrowserContext extends _instrumentation.SdkObject {
505
507
  for (const originState of state.origins) {
506
508
  const frame = page.mainFrame();
507
509
  await frame.goto(metadata, originState.origin);
508
- await frame.evaluateExpression(`
509
- originState => {
510
- for (const { name, value } of (originState.localStorage || []))
511
- localStorage.setItem(name, value);
512
- }`, {
513
- isFunction: true,
510
+ await frame.evaluateExpression(`(${storageScript.restore})(${JSON.stringify(originState)}, (${utilityScriptSerializers.source})())`, {
514
511
  world: 'utility'
515
- }, originState);
512
+ });
516
513
  }
517
514
  await page.close(internalMetadata);
518
515
  }
@@ -533,7 +530,7 @@ class BrowserContext extends _instrumentation.SdkObject {
533
530
  await Promise.all(this.pages().map(page => page.safeNonStallingEvaluateInAllFrames(expression, world, options)));
534
531
  }
535
532
  async _harStart(page, options) {
536
- const harId = (0, _utils.createGuid)();
533
+ const harId = (0, _crypto.createGuid)();
537
534
  this._harRecorders.set(harId, new _harRecorder.HarRecorder(this, page, options));
538
535
  return harId;
539
536
  }
@@ -658,7 +655,7 @@ function normalizeProxySettings(proxy) {
658
655
  bypass
659
656
  };
660
657
  }
661
- const paramsThatAllowContextReuse = ['colorScheme', 'forcedColors', 'reducedMotion', 'screen', 'userAgent', 'viewport'];
658
+ const paramsThatAllowContextReuse = ['colorScheme', 'forcedColors', 'reducedMotion', 'contrast', 'screen', 'userAgent', 'viewport'];
662
659
  const defaultNewContextParamValues = {
663
660
  noDefaultViewport: false,
664
661
  ignoreHTTPSErrors: false,
@@ -5,25 +5,25 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.kNoXServerRunningError = exports.BrowserType = exports.BrowserReadyState = void 0;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
- var os = _interopRequireWildcard(require("os"));
8
+ var _os = _interopRequireDefault(require("os"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  var _browserContext = require("./browserContext");
11
- var _registry = require("./registry");
12
- var _transport = require("./transport");
13
- var _processLauncher = require("../utils/processLauncher");
14
- var _pipeTransport = require("./pipeTransport");
15
- var _progress = require("./progress");
16
- var _timeoutSettings = require("../common/timeoutSettings");
17
- var _utils = require("../utils");
18
- var _fileUtils = require("../utils/fileUtils");
11
+ var _timeoutSettings = require("./timeoutSettings");
12
+ var _debug = require("./utils/debug");
13
+ var _assert = require("../utils/isomorphic/assert");
14
+ var _manualPromise = require("../utils/isomorphic/manualPromise");
15
+ var _fileUtils = require("./utils/fileUtils");
19
16
  var _helper = require("./helper");
20
- var _debugLogger = require("../utils/debugLogger");
21
17
  var _instrumentation = require("./instrumentation");
18
+ var _pipeTransport = require("./pipeTransport");
19
+ var _processLauncher = require("./utils/processLauncher");
20
+ var _progress = require("./progress");
22
21
  var _protocolError = require("./protocolError");
22
+ var _registry = require("./registry");
23
23
  var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
24
- 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); }
25
- 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; }
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+ var _transport = require("./transport");
25
+ var _debugLogger = require("./utils/debugLogger");
26
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
27
  /**
28
28
  * Copyright (c) Microsoft Corporation.
29
29
  *
@@ -43,7 +43,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
43
43
  const kNoXServerRunningError = exports.kNoXServerRunningError = 'Looks like you launched a headed browser without having a XServer running.\n' + 'Set either \'headless: true\' or use \'xvfb-run <your-playwright-app>\' before running Playwright.\n\n<3 Playwright Team';
44
44
  class BrowserReadyState {
45
45
  constructor() {
46
- this._wsEndpoint = new _utils.ManualPromise();
46
+ this._wsEndpoint = new _manualPromise.ManualPromise();
47
47
  }
48
48
  onBrowserExit() {
49
49
  // Unblock launch when browser prematurely exits.
@@ -178,16 +178,17 @@ class BrowserType extends _instrumentation.SdkObject {
178
178
  const env = options.env ? (0, _processLauncher.envArrayToObject)(options.env) : process.env;
179
179
  await this._createArtifactDirs(options);
180
180
  const tempDirectories = [];
181
- const artifactsDir = await _fs.default.promises.mkdtemp(_path.default.join(os.tmpdir(), 'playwright-artifacts-'));
181
+ const artifactsDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), 'playwright-artifacts-'));
182
182
  tempDirectories.push(artifactsDir);
183
183
  if (userDataDir) {
184
+ (0, _assert.assert)(_path.default.isAbsolute(userDataDir), 'userDataDir must be an absolute path');
184
185
  // Firefox bails if the profile directory does not exist, Chrome creates it. We ensure consistent behavior here.
185
186
  if (!(await (0, _fileUtils.existsAsync)(userDataDir))) await _fs.default.promises.mkdir(userDataDir, {
186
187
  recursive: true,
187
188
  mode: 0o700
188
189
  });
189
190
  } else {
190
- userDataDir = await _fs.default.promises.mkdtemp(_path.default.join(os.tmpdir(), `playwright_${this._name}dev_profile-`));
191
+ userDataDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), `playwright_${this._name}dev_profile-`));
191
192
  tempDirectories.push(userDataDir);
192
193
  }
193
194
  await this.prepareUserDataDir(options, userDataDir);
@@ -293,7 +294,7 @@ class BrowserType extends _instrumentation.SdkObject {
293
294
  downloadsPath,
294
295
  proxy
295
296
  } = options;
296
- if ((0, _utils.debugMode)()) headless = false;
297
+ if ((0, _debug.debugMode)()) headless = false;
297
298
  if (downloadsPath && !_path.default.isAbsolute(downloadsPath)) downloadsPath = _path.default.join(process.cwd(), downloadsPath);
298
299
  if (this.attribution.playwright.options.socksProxyPort) proxy = {
299
300
  server: `socks5://127.0.0.1:${this.attribution.playwright.options.socksProxyPort}`
@@ -3,11 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.findRepeatedSubsequences = findRepeatedSubsequences;
6
+ exports.compressCallLog = compressCallLog;
7
+ exports.findRepeatedSubsequencesForTest = void 0;
7
8
  /**
8
9
  * Copyright (c) Microsoft Corporation.
9
10
  *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * Licensed under the Apache License, Version 2.0 (the 'License");
11
12
  * you may not use this file except in compliance with the License.
12
13
  * You may obtain a copy of the License at
13
14
  *
@@ -20,6 +21,19 @@ exports.findRepeatedSubsequences = findRepeatedSubsequences;
20
21
  * limitations under the License.
21
22
  */
22
23
 
24
+ function compressCallLog(log) {
25
+ const lines = [];
26
+ for (const block of findRepeatedSubsequences(log)) {
27
+ for (let i = 0; i < block.sequence.length; i++) {
28
+ const line = block.sequence[i];
29
+ const leadingWhitespace = line.match(/^\s*/);
30
+ const whitespacePrefix = ' ' + (leadingWhitespace === null || leadingWhitespace === void 0 ? void 0 : leadingWhitespace[0]) || '';
31
+ const countPrefix = `${block.count} × `;
32
+ if (block.count > 1 && i === 0) lines.push(whitespacePrefix + countPrefix + line.trim());else if (block.count > 1) lines.push(whitespacePrefix + ' '.repeat(countPrefix.length - 2) + '- ' + line.trim());else lines.push(whitespacePrefix + '- ' + line.trim());
33
+ }
34
+ }
35
+ return lines;
36
+ }
23
37
  function findRepeatedSubsequences(s) {
24
38
  const n = s.length;
25
39
  const result = [];
@@ -61,4 +75,5 @@ function findRepeatedSubsequences(s) {
61
75
  i += maxRepeatLength * maxRepeatCount; // Move index forward
62
76
  }
63
77
  return result;
64
- }
78
+ }
79
+ const findRepeatedSubsequencesForTest = exports.findRepeatedSubsequencesForTest = findRepeatedSubsequences;
@@ -7,27 +7,27 @@ exports.Chromium = 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 _chromiumSwitches = require("./chromiumSwitches");
10
11
  var _crBrowser = require("./crBrowser");
11
- var _processLauncher = require("../../utils/processLauncher");
12
12
  var _crConnection = require("./crConnection");
13
+ var _timeoutSettings = require("../timeoutSettings");
14
+ var _utils = require("../../utils");
15
+ var _ascii = require("../utils/ascii");
16
+ var _debugLogger = require("../utils/debugLogger");
17
+ var _manualPromise = require("../../utils/isomorphic/manualPromise");
18
+ var _network = require("../utils/network");
19
+ var _userAgent = require("../utils/userAgent");
20
+ var _browserContext = require("../browserContext");
13
21
  var _browserType = require("../browserType");
22
+ var _helper = require("../helper");
23
+ var _registry = require("../registry");
14
24
  var _transport = require("../transport");
15
25
  var _crDevTools = require("./crDevTools");
16
26
  var _browser = require("../browser");
17
- var _network = require("../../utils/network");
18
- var _userAgent = require("../../utils/userAgent");
19
- var _ascii = require("../../utils/ascii");
20
- var _utils = require("../../utils");
21
- var _fileUtils = require("../../utils/fileUtils");
22
- var _debugLogger = require("../../utils/debugLogger");
27
+ var _fileUtils = require("../utils/fileUtils");
28
+ var _processLauncher = require("../utils/processLauncher");
23
29
  var _progress = require("../progress");
24
- var _timeoutSettings = require("../../common/timeoutSettings");
25
- var _helper = require("../helper");
26
- var _registry = require("../registry");
27
- var _manualPromise = require("../../utils/manualPromise");
28
- var _browserContext = require("../browserContext");
29
- var _chromiumSwitches = require("./chromiumSwitches");
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
31
31
  /**
32
32
  * Copyright 2017 Google Inc. All rights reserved.
33
33
  * Modifications copyright (c) Microsoft Corporation.
@@ -23,13 +23,44 @@ exports.chromiumSwitches = void 0;
23
23
 
24
24
  // No dependencies as it is used from the Electron loader.
25
25
 
26
+ const disabledFeatures = [
27
+ // See https://github.com/microsoft/playwright/pull/10380
28
+ 'AcceptCHFrame',
29
+ // See https://github.com/microsoft/playwright/pull/10679
30
+ 'AutoExpandDetailsElement',
31
+ // See https://github.com/microsoft/playwright/issues/14047
32
+ 'AvoidUnnecessaryBeforeUnloadCheckSync',
33
+ // See https://github.com/microsoft/playwright/pull/12992
34
+ 'CertificateTransparencyComponentUpdater',
35
+ // This makes Page.frameScheduledNavigation arrive much later after a click,
36
+ // making our navigation auto-wait after click not working.
37
+ // Can be removed once we deperecate noWaitAfter.
38
+ // See https://github.com/microsoft/playwright/pull/34372.
39
+ 'DeferRendererTasksAfterInput', 'DestroyProfileOnBrowserClose',
40
+ // See https://github.com/microsoft/playwright/pull/13854
41
+ 'DialMediaRouteProvider',
42
+ // Chromium is disabling manifest version 2. Allow testing it as long as Chromium can actually run it.
43
+ // Disabled in https://chromium-review.googlesource.com/c/chromium/src/+/6265903.
44
+ 'ExtensionManifestV2Disabled', 'GlobalMediaControls',
45
+ // See https://github.com/microsoft/playwright/pull/27605
46
+ 'HttpsUpgrades', 'ImprovedCookieControls', 'LazyFrameLoading',
47
+ // Hides the Lens feature in the URL address bar. Its not working in unofficial builds.
48
+ 'LensOverlay',
49
+ // See https://github.com/microsoft/playwright/pull/8162
50
+ 'MediaRouter',
51
+ // See https://github.com/microsoft/playwright/issues/28023
52
+ 'PaintHolding',
53
+ // See https://github.com/microsoft/playwright/issues/32230
54
+ 'ThirdPartyStoragePartitioning',
55
+ // See https://github.com/microsoft/playwright/issues/16126
56
+ 'Translate'];
26
57
  const chromiumSwitches = exports.chromiumSwitches = ['--disable-field-trial-config',
27
58
  // https://source.chromium.org/chromium/chromium/src/+/main:testing/variations/README.md
28
59
  '--disable-background-networking', '--disable-background-timer-throttling', '--disable-backgrounding-occluded-windows',
29
60
  // Avoids surprises like main request not being intercepted during page.goBack().
30
61
  '--disable-breakpad',
31
62
  // Avoids unneeded network activity after startup.
32
- '--no-default-browser-check', '--disable-dev-shm-usage', '--disable-hang-monitor', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--no-first-run', '--password-store=basic', '--use-mock-keychain',
63
+ '--no-default-browser-check', '--disable-dev-shm-usage', '--disable-features=' + disabledFeatures.join(','), '--disable-hang-monitor', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--no-first-run', '--password-store=basic', '--use-mock-keychain',
33
64
  // See https://chromium-review.googlesource.com/c/chromium/src/+/2436773
34
65
  '--no-service-autorun', '--export-tagged-pdf',
35
66
  // https://chromium-review.googlesource.com/c/chromium/src/+/4853540
@@ -5,20 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.CRBrowserContext = exports.CRBrowser = void 0;
7
7
  var _path = _interopRequireDefault(require("path"));
8
+ var _assert = require("../../utils/isomorphic/assert");
9
+ var _crypto = require("../utils/crypto");
10
+ var _artifact = require("../artifact");
8
11
  var _browser = require("../browser");
9
12
  var _browserContext = require("../browserContext");
10
- var _utils = require("../../utils");
13
+ var _frames = require("../frames");
11
14
  var network = _interopRequireWildcard(require("../network"));
12
15
  var _page = require("../page");
13
- var _frames = require("../frames");
14
16
  var _crConnection = require("./crConnection");
15
17
  var _crPage = require("./crPage");
16
18
  var _crProtocolHelper = require("./crProtocolHelper");
17
19
  var _crServiceWorker = require("./crServiceWorker");
18
- var _artifact = require("../artifact");
19
20
  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 }; }
21
+ 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; }
22
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
23
  /**
23
24
  * Copyright 2017 Google Inc. All rights reserved.
24
25
  * Modifications copyright (c) Microsoft Corporation.
@@ -143,7 +144,7 @@ class CRBrowser extends _browser.Browser {
143
144
  }) {
144
145
  if (targetInfo.type === 'browser') return;
145
146
  const session = this._session.createChildSession(sessionId);
146
- (0, _utils.assert)(targetInfo.browserContextId, 'targetInfo: ' + JSON.stringify(targetInfo, null, 2));
147
+ (0, _assert.assert)(targetInfo.browserContextId, 'targetInfo: ' + JSON.stringify(targetInfo, null, 2));
147
148
  let context = this._contexts.get(targetInfo.browserContextId) || null;
148
149
  if (!context) {
149
150
  // TODO: auto attach only to pages from our contexts.
@@ -159,9 +160,9 @@ class CRBrowser extends _browser.Browser {
159
160
  session.detach().catch(() => {});
160
161
  return;
161
162
  }
162
- (0, _utils.assert)(!this._crPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
163
- (0, _utils.assert)(!this._backgroundPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
164
- (0, _utils.assert)(!this._serviceWorkers.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
163
+ (0, _assert.assert)(!this._crPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
164
+ (0, _assert.assert)(!this._backgroundPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
165
+ (0, _assert.assert)(!this._serviceWorkers.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
165
166
  if (targetInfo.type === 'background_page') {
166
167
  const backgroundPage = new _crPage.CRPage(session, targetInfo.targetId, context, null, {
167
168
  hasUIWindow: false,
@@ -258,7 +259,7 @@ class CRBrowser extends _browser.Browser {
258
259
  return await this._connection.createBrowserSession();
259
260
  }
260
261
  async startTracing(page, options = {}) {
261
- (0, _utils.assert)(!this._tracingRecording, 'Cannot start recording trace while already recording trace.');
262
+ (0, _assert.assert)(!this._tracingRecording, 'Cannot start recording trace while already recording trace.');
262
263
  this._tracingClient = page ? page._delegate._mainFrameSession._client : this._session;
263
264
  const defaultCategories = ['-*', 'devtools.timeline', 'v8.execute', 'disabled-by-default-devtools.timeline', 'disabled-by-default-devtools.timeline.frame', 'toplevel', 'blink.console', 'blink.user_timing', 'latencyInfo', 'disabled-by-default-devtools.timeline.stack', 'disabled-by-default-v8.cpu_profiler', 'disabled-by-default-v8.cpu_profiler.hires'];
264
265
  const {
@@ -273,9 +274,9 @@ class CRBrowser extends _browser.Browser {
273
274
  });
274
275
  }
275
276
  async stopTracing() {
276
- (0, _utils.assert)(this._tracingClient, 'Tracing was not started.');
277
+ (0, _assert.assert)(this._tracingClient, 'Tracing was not started.');
277
278
  const [event] = await Promise.all([new Promise(f => this._tracingClient.once('Tracing.tracingComplete', f)), this._tracingClient.send('Tracing.end')]);
278
- const tracingPath = _path.default.join(this.options.artifactsDir, (0, _utils.createGuid)() + '.crtrace');
279
+ const tracingPath = _path.default.join(this.options.artifactsDir, (0, _crypto.createGuid)() + '.crtrace');
279
280
  await (0, _crProtocolHelper.saveProtocolStream)(this._tracingClient, event.stream, tracingPath);
280
281
  this._tracingRecording = false;
281
282
  const artifact = new _artifact.Artifact(this, tracingPath);
@@ -297,7 +298,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
297
298
  this._authenticateProxyViaCredentials();
298
299
  }
299
300
  async _initialize() {
300
- (0, _utils.assert)(!Array.from(this._browser._crPages.values()).some(page => page._browserContext === this));
301
+ (0, _assert.assert)(!Array.from(this._browser._crPages.values()).some(page => page._browserContext === this));
301
302
  const promises = [super._initialize()];
302
303
  if (this._browser.options.name !== 'clank' && this._options.acceptDownloads !== 'internal-browser-default') {
303
304
  promises.push(this._browser._session.send('Browser.setDownloadBehavior', {
@@ -335,7 +336,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
335
336
  const page = this._browser._crPages.get(key);
336
337
  if (page._opener) newKeys.delete(key);
337
338
  }
338
- (0, _utils.assert)(newKeys.size === 1);
339
+ (0, _assert.assert)(newKeys.size === 1);
339
340
  [targetId] = [...newKeys];
340
341
  }
341
342
  return this._browser._crPages.get(targetId)._page;
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.kBrowserCloseMessageId = exports.ConnectionEvents = exports.CRSession = exports.CRConnection = exports.CDPSession = void 0;
7
- var _utils = require("../../utils");
8
7
  var _events = require("events");
9
- var _debugLogger = require("../../utils/debugLogger");
8
+ var _utils = require("../../utils");
9
+ var _debugLogger = require("../utils/debugLogger");
10
10
  var _helper = require("../helper");
11
11
  var _protocolError = require("../protocolError");
12
12
  /**
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CRCoverage = void 0;
7
- var _eventsHelper = require("../../utils/eventsHelper");
8
7
  var _utils = require("../../utils");
8
+ var _eventsHelper = require("../utils/eventsHelper");
9
9
  /**
10
10
  * Copyright 2017 Google Inc. All rights reserved.
11
11
  * Modifications copyright (c) Microsoft Corporation.
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.CRDevTools = void 0;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  /**
10
10
  * Copyright (c) Microsoft Corporation.
11
11
  *
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.DragManager = void 0;
7
- var _utils = require("../../utils");
8
7
  var _crProtocolHelper = require("./crProtocolHelper");
8
+ var _utils = require("../../utils");
9
9
  /**
10
10
  * Copyright (c) Microsoft Corporation.
11
11
  *
@@ -4,13 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CRExecutionContext = void 0;
7
+ exports.createHandle = createHandle;
8
+ var _assert = require("../../utils/isomorphic/assert");
7
9
  var _crProtocolHelper = require("./crProtocolHelper");
8
- var js = _interopRequireWildcard(require("../javascript"));
9
- var _stackTrace = require("../../utils/stackTrace");
10
+ var _stackTrace = require("../../utils/isomorphic/stackTrace");
10
11
  var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
12
+ var js = _interopRequireWildcard(require("../javascript"));
13
+ var dom = _interopRequireWildcard(require("../dom"));
11
14
  var _protocolError = require("../protocolError");
12
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); }
13
- 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; }
14
17
  /**
15
18
  * Copyright 2017 Google Inc. All rights reserved.
16
19
  * Modifications copyright (c) Microsoft Corporation.
@@ -47,7 +50,7 @@ class CRExecutionContext {
47
50
  if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
48
51
  return remoteObject.value;
49
52
  }
50
- async rawEvaluateHandle(expression) {
53
+ async rawEvaluateHandle(context, expression) {
51
54
  const {
52
55
  exceptionDetails,
53
56
  result: remoteObject
@@ -56,9 +59,9 @@ class CRExecutionContext {
56
59
  contextId: this._contextId
57
60
  }).catch(rewriteError);
58
61
  if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
59
- return remoteObject.objectId;
62
+ return createHandle(context, remoteObject);
60
63
  }
61
- async evaluateWithArguments(expression, returnByValue, utilityScript, values, objectIds) {
64
+ async evaluateWithArguments(expression, returnByValue, utilityScript, values, handles) {
62
65
  const {
63
66
  exceptionDetails,
64
67
  result: remoteObject
@@ -69,33 +72,31 @@ class CRExecutionContext {
69
72
  objectId: utilityScript._objectId
70
73
  }, ...values.map(value => ({
71
74
  value
72
- })), ...objectIds.map(objectId => ({
73
- objectId
75
+ })), ...handles.map(handle => ({
76
+ objectId: handle._objectId
74
77
  }))],
75
78
  returnByValue,
76
79
  awaitPromise: true,
77
80
  userGesture: true
78
81
  }).catch(rewriteError);
79
82
  if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
80
- return returnByValue ? (0, _utilityScriptSerializers.parseEvaluationResultValue)(remoteObject.value) : utilityScript._context.createHandle(remoteObject);
83
+ return returnByValue ? (0, _utilityScriptSerializers.parseEvaluationResultValue)(remoteObject.value) : createHandle(utilityScript._context, remoteObject);
81
84
  }
82
- async getProperties(context, objectId) {
85
+ async getProperties(object) {
83
86
  const response = await this._client.send('Runtime.getProperties', {
84
- objectId,
87
+ objectId: object._objectId,
85
88
  ownProperties: true
86
89
  });
87
90
  const result = new Map();
88
91
  for (const property of response.result) {
89
92
  if (!property.enumerable || !property.value) continue;
90
- result.set(property.name, context.createHandle(property.value));
93
+ result.set(property.name, createHandle(object._context, property.value));
91
94
  }
92
95
  return result;
93
96
  }
94
- createHandle(context, remoteObject) {
95
- return new js.JSHandle(context, remoteObject.subtype || remoteObject.type, renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
96
- }
97
- async releaseHandle(objectId) {
98
- await (0, _crProtocolHelper.releaseObject)(this._client, objectId);
97
+ async releaseHandle(handle) {
98
+ if (!handle._objectId) return;
99
+ await (0, _crProtocolHelper.releaseObject)(this._client, handle._objectId);
99
100
  }
100
101
  }
101
102
  exports.CRExecutionContext = CRExecutionContext;
@@ -129,4 +130,11 @@ function renderPreview(object) {
129
130
  }
130
131
  if (object.subtype === 'array' && object.preview) return js.sparseArrayToString(object.preview.properties);
131
132
  return object.description;
133
+ }
134
+ function createHandle(context, remoteObject) {
135
+ if (remoteObject.subtype === 'node') {
136
+ (0, _assert.assert)(context instanceof dom.FrameExecutionContext);
137
+ return new dom.ElementHandle(context, remoteObject.objectId);
138
+ }
139
+ return new js.JSHandle(context, remoteObject.subtype || remoteObject.type, renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
132
140
  }
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.RawTouchscreenImpl = exports.RawMouseImpl = exports.RawKeyboardImpl = void 0;
7
+ var _utils = require("../../utils");
7
8
  var input = _interopRequireWildcard(require("../input"));
8
9
  var _macEditingCommands = require("../macEditingCommands");
9
- var _utils = require("../../utils");
10
10
  var _crProtocolHelper = require("./crProtocolHelper");
11
11
  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; }
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 && {}.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
13
  /**
14
14
  * Copyright 2017 Google Inc. All rights reserved.
15
15
  * Modifications copyright (c) Microsoft Corporation.