@checkly/playwright-core 1.41.2-beta.0 → 1.41.2-beta.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 (124) hide show
  1. package/lib/browserServerImpl.js +1 -1
  2. package/lib/cli/cli.js +61 -0
  3. package/lib/cli/driver.js +3 -11
  4. package/lib/cli/program.js +5 -13
  5. package/lib/client/android.js +1 -1
  6. package/lib/client/artifact.js +2 -2
  7. package/lib/client/browserContext.js +5 -5
  8. package/lib/client/browserType.js +1 -1
  9. package/lib/client/channelOwner.js +3 -3
  10. package/lib/client/clientHelper.js +1 -5
  11. package/lib/client/connection.js +2 -2
  12. package/lib/client/consoleMessage.js +2 -2
  13. package/lib/client/fetch.js +3 -3
  14. package/lib/client/frame.js +3 -4
  15. package/lib/client/harRouter.js +1 -1
  16. package/lib/client/locator.js +2 -2
  17. package/lib/client/page.js +1 -24
  18. package/lib/common/debugLogger.js +90 -0
  19. package/lib/common/socksProxy.js +17 -12
  20. package/lib/generated/consoleApiSource.js +1 -1
  21. package/lib/generated/injectedScriptSource.js +1 -1
  22. package/lib/generated/recorderSource.js +1 -1
  23. package/lib/outofprocess.js +3 -3
  24. package/lib/protocol/validator.js +7 -13
  25. package/lib/remote/playwrightConnection.js +2 -2
  26. package/lib/remote/playwrightServer.js +166 -72
  27. package/lib/server/android/android.js +2 -2
  28. package/lib/server/android/backendAdb.js +2 -2
  29. package/lib/server/browser.js +2 -2
  30. package/lib/server/browserContext.js +9 -8
  31. package/lib/server/browserType.js +5 -5
  32. package/lib/server/chromium/chromium.js +1 -1
  33. package/lib/server/chromium/crBrowser.js +3 -2
  34. package/lib/server/chromium/crConnection.js +2 -2
  35. package/lib/server/chromium/crExecutionContext.js +2 -2
  36. package/lib/server/chromium/crInput.js +2 -2
  37. package/lib/server/chromium/crNetworkManager.js +23 -37
  38. package/lib/server/chromium/crPage.js +7 -48
  39. package/lib/server/chromium/crServiceWorker.js +3 -2
  40. package/lib/server/debugController.js +3 -0
  41. package/lib/server/deviceDescriptorsSource.json +50 -50
  42. package/lib/server/dispatchers/browserContextDispatcher.js +4 -4
  43. package/lib/server/dispatchers/dispatcher.js +10 -10
  44. package/lib/server/dispatchers/localUtilsDispatcher.js +4 -4
  45. package/lib/server/dispatchers/pageDispatcher.js +0 -12
  46. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  47. package/lib/server/dispatchers/writableStreamDispatcher.js +2 -2
  48. package/lib/server/dom.js +170 -133
  49. package/lib/server/electron/electron.js +4 -5
  50. package/lib/server/electron/loader.js +2 -4
  51. package/lib/server/fetch.js +4 -4
  52. package/lib/server/firefox/ffBrowser.js +3 -3
  53. package/lib/server/firefox/ffConnection.js +1 -1
  54. package/lib/server/firefox/ffExecutionContext.js +2 -2
  55. package/lib/server/firefox/ffNetworkManager.js +7 -7
  56. package/lib/server/firefox/ffPage.js +5 -3
  57. package/lib/server/firefox/firefox.js +2 -2
  58. package/lib/server/frames.js +23 -31
  59. package/lib/server/har/harTracer.js +6 -6
  60. package/lib/server/helper.js +1 -1
  61. package/lib/server/input.js +2 -2
  62. package/lib/server/isomorphic/utilityScriptSerializers.js +1 -0
  63. package/lib/server/javascript.js +2 -2
  64. package/lib/server/network.js +23 -5
  65. package/lib/server/page.js +3 -44
  66. package/lib/server/pipeTransport.js +1 -1
  67. package/lib/server/playwright.js +1 -1
  68. package/lib/server/progress.js +14 -5
  69. package/lib/server/recorder/csharp.js +1 -1
  70. package/lib/server/recorder/recorderUtils.js +2 -2
  71. package/lib/server/recorder.js +14 -14
  72. package/lib/server/registry/browserFetcher.js +2 -1
  73. package/lib/server/registry/dependencies.js +6 -7
  74. package/lib/server/registry/index.js +33 -50
  75. package/lib/server/registry/nativeDeps.js +94 -0
  76. package/lib/server/registry/oopDownloadBrowserMain.js +2 -2
  77. package/lib/server/screenshotter.js +1 -0
  78. package/lib/server/socksInterceptor.js +2 -2
  79. package/lib/server/trace/recorder/snapshotter.js +2 -2
  80. package/lib/server/trace/recorder/tracing.js +9 -7
  81. package/lib/server/trace/test/inMemorySnapshotter.js +1 -1
  82. package/lib/server/trace/viewer/traceViewer.js +2 -2
  83. package/lib/server/transport.js +13 -15
  84. package/lib/server/webkit/wkBrowser.js +3 -3
  85. package/lib/server/webkit/wkConnection.js +1 -1
  86. package/lib/server/webkit/wkExecutionContext.js +2 -2
  87. package/lib/server/webkit/wkInput.js +2 -2
  88. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  89. package/lib/server/webkit/wkPage.js +12 -10
  90. package/lib/utils/fileUtils.js +0 -4
  91. package/lib/utils/happy-eyeballs.js +4 -5
  92. package/lib/utils/hostPlatform.js +1 -1
  93. package/lib/utils/index.js +0 -11
  94. package/lib/utils/isomorphic/cssParser.js +2 -2
  95. package/lib/utils/isomorphic/locatorParser.js +4 -6
  96. package/lib/utils/isomorphic/selectorParser.js +1 -0
  97. package/lib/utils/network.js +0 -33
  98. package/lib/utils/processLauncher.js +2 -9
  99. package/lib/utils/profiler.js +2 -2
  100. package/lib/utils/zipFile.js +1 -1
  101. package/lib/vite/htmlReport/index.html +13 -12
  102. package/lib/vite/recorder/assets/codeMirrorModule-2a26f817.js +24 -0
  103. package/lib/vite/recorder/assets/codeMirrorModule-5d0f417c.css +1 -0
  104. package/lib/vite/recorder/assets/{index-ljsTwXtJ.css → index-64ce22d5.css} +1 -1
  105. package/lib/vite/recorder/assets/index-bbf80321.js +41 -0
  106. package/lib/vite/recorder/index.html +3 -2
  107. package/lib/vite/{recorder/assets/codeMirrorModule-I9ks4y7D.js → traceViewer/assets/codeMirrorModule-56536a77.js} +13 -13
  108. package/lib/vite/traceViewer/assets/wsPort-722747dc.js +64 -0
  109. package/lib/vite/traceViewer/assets/xtermModule-443332e6.js +9 -0
  110. package/lib/vite/traceViewer/codeMirrorModule.5d0f417c.css +1 -0
  111. package/lib/vite/traceViewer/codicon.79f233d0.ttf +0 -0
  112. package/lib/vite/traceViewer/index.1a1fe659.css +1 -0
  113. package/lib/vite/traceViewer/index.d05939c9.js +2 -0
  114. package/lib/vite/traceViewer/index.html +5 -4
  115. package/lib/vite/traceViewer/sw.bundle.js +1 -1
  116. package/lib/vite/traceViewer/uiMode.8b41a49d.css +1 -0
  117. package/lib/vite/traceViewer/uiMode.8e0454c4.js +4 -0
  118. package/lib/vite/traceViewer/uiMode.html +5 -4
  119. package/lib/vite/traceViewer/wsPort.9c9a6767.css +1 -0
  120. package/lib/vite/traceViewer/xtermModule.6428296b.css +32 -0
  121. package/package.json +1 -1
  122. package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +0 -1
  123. package/lib/vite/recorder/assets/index-yg8ypzl6.js +0 -47
  124. /package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-79f233d0.ttf} +0 -0
@@ -7,8 +7,8 @@ exports.WritableStreamDispatcher = void 0;
7
7
  var _dispatcher = require("./dispatcher");
8
8
  var fs = _interopRequireWildcard(require("fs"));
9
9
  var _utils = require("../../utils");
10
- 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); }
11
- 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 _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
12
  /**
13
13
  * Copyright (c) Microsoft Corporation.
14
14
  *
package/lib/server/dom.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.NonRecoverableDOMError = exports.FrameExecutionContext = exports.ElementHandle = void 0;
6
+ exports.NonRecoverableDOMError = exports.InjectedScriptPollHandler = exports.FrameExecutionContext = exports.ElementHandle = void 0;
7
7
  exports.assertDone = assertDone;
8
8
  exports.isNonRecoverableDOMError = isNonRecoverableDOMError;
9
9
  exports.kUnableToAdoptErrorMessage = void 0;
@@ -14,8 +14,8 @@ var js = _interopRequireWildcard(require("./javascript"));
14
14
  var _progress = require("./progress");
15
15
  var _utils = require("../utils");
16
16
  var _fileUploadUtils = require("./fileUploadUtils");
17
- 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); }
18
- 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; }
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
  /**
20
20
  * Copyright (c) Microsoft Corporation.
21
21
  *
@@ -136,6 +136,17 @@ class ElementHandle extends js.JSHandle {
136
136
  return 'error:notconnected';
137
137
  }
138
138
  }
139
+ async evaluatePoll(progress, pageFunction, arg) {
140
+ try {
141
+ const utility = await this._frame._utilityContext();
142
+ const poll = await utility.evaluateHandle(pageFunction, [await utility.injectedScript(), this, arg]);
143
+ const pollHandler = new InjectedScriptPollHandler(progress, poll);
144
+ return await pollHandler.finish();
145
+ } catch (e) {
146
+ if (js.isJavaScriptErrorInEvaluate(e) || (0, _protocolError.isSessionClosedError)(e)) throw e;
147
+ return 'error:notconnected';
148
+ }
149
+ }
139
150
  async ownerFrame() {
140
151
  const frameId = await this._page._delegate.getOwnerFrame(this);
141
152
  if (!frameId) return null;
@@ -177,19 +188,25 @@ class ElementHandle extends js.JSHandle {
177
188
  return await this._page._delegate.scrollRectIntoViewIfNeeded(this, rect);
178
189
  }
179
190
  async _waitAndScrollIntoViewIfNeeded(progress, waitForVisible) {
180
- const result = await this._retryAction(progress, 'scroll into view', async () => {
181
- progress.log(` waiting for element to be stable`);
182
- const waitResult = await this.evaluateInUtility(async ([injected, node, {
183
- waitForVisible
184
- }]) => {
185
- return await injected.checkElementStates(node, waitForVisible ? ['visible', 'stable'] : ['stable']);
186
- }, {
187
- waitForVisible
188
- });
189
- if (waitResult) return waitResult;
190
- return await this._scrollRectIntoViewIfNeeded();
191
- }, {});
192
- assertDone(throwRetargetableDOMError(result));
191
+ const timeouts = [0, 50, 100, 250];
192
+ while (progress.isRunning()) {
193
+ assertDone(throwRetargetableDOMError(await this._waitForElementStates(progress, waitForVisible ? ['visible', 'stable'] : ['stable'], false /* force */)));
194
+ progress.throwIfAborted(); // Avoid action that has side-effects.
195
+ const result = throwRetargetableDOMError(await this._scrollRectIntoViewIfNeeded());
196
+ if (result === 'error:notvisible') {
197
+ if (!waitForVisible) {
198
+ var _timeouts$shift;
199
+ // Wait for a timeout to avoid retrying too often when not waiting for visible.
200
+ // If we wait for visible, this should be covered by _waitForElementStates instead.
201
+ const timeout = (_timeouts$shift = timeouts.shift()) !== null && _timeouts$shift !== void 0 ? _timeouts$shift : 500;
202
+ progress.log(` element is not displayed, retrying in ${timeout}ms`);
203
+ await new Promise(f => setTimeout(f, timeout));
204
+ }
205
+ continue;
206
+ }
207
+ assertDone(result);
208
+ return;
209
+ }
193
210
  }
194
211
  async scrollIntoViewIfNeeded(metadata, options = {}) {
195
212
  const controller = new _progress.ProgressController(metadata, this);
@@ -244,10 +261,25 @@ class ElementHandle extends js.JSHandle {
244
261
  y: box.y + border.top + offset.y
245
262
  };
246
263
  }
247
- async _retryAction(progress, actionName, action, options) {
264
+ async _retryPointerAction(progress, actionName, waitForEnabled, action, options) {
248
265
  let retry = 0;
249
266
  // We progressively wait longer between retries, up to 500ms.
250
267
  const waitTime = [0, 20, 100, 100, 500];
268
+
269
+ // By default, we scroll with protocol method to reveal the action point.
270
+ // However, that might not work to scroll from under position:sticky elements
271
+ // that overlay the target element. To fight this, we cycle through different
272
+ // scroll alignments. This works in most scenarios.
273
+ const scrollOptions = [undefined, {
274
+ block: 'end',
275
+ inline: 'end'
276
+ }, {
277
+ block: 'center',
278
+ inline: 'center'
279
+ }, {
280
+ block: 'start',
281
+ inline: 'start'
282
+ }];
251
283
  while (progress.isRunning()) {
252
284
  if (retry) {
253
285
  progress.log(`retrying ${actionName} action${options.trial ? ' (trial run)' : ''}, attempt #${retry}`);
@@ -260,8 +292,8 @@ class ElementHandle extends js.JSHandle {
260
292
  } else {
261
293
  progress.log(`attempting ${actionName} action${options.trial ? ' (trial run)' : ''}`);
262
294
  }
263
- if (!options.skipLocatorHandlersCheckpoint) await this._frame._page.performLocatorHandlersCheckpoint(progress);
264
- const result = await action(retry);
295
+ const forceScrollOptions = scrollOptions[retry % scrollOptions.length];
296
+ const result = await this._performPointerAction(progress, actionName, waitForEnabled, action, forceScrollOptions, options);
265
297
  ++retry;
266
298
  if (result === 'error:notvisible') {
267
299
  if (options.force) throw new NonRecoverableDOMError('Element is not visible');
@@ -273,47 +305,14 @@ class ElementHandle extends js.JSHandle {
273
305
  progress.log(' element is outside of the viewport');
274
306
  continue;
275
307
  }
276
- if (result === 'error:optionsnotfound') {
277
- progress.log(' did not find some options');
278
- continue;
279
- }
280
308
  if (typeof result === 'object' && 'hitTargetDescription' in result) {
281
309
  progress.log(` ${result.hitTargetDescription} intercepts pointer events`);
282
310
  continue;
283
311
  }
284
- if (typeof result === 'object' && 'missingState' in result) {
285
- progress.log(` element is not ${result.missingState}`);
286
- continue;
287
- }
288
312
  return result;
289
313
  }
290
314
  return 'done';
291
315
  }
292
- async _retryPointerAction(progress, actionName, waitForEnabled, action, options) {
293
- // Note: do not perform locator handlers checkpoint to avoid moving the mouse in the middle of a drag operation.
294
- const skipLocatorHandlersCheckpoint = actionName === 'move and up';
295
- return await this._retryAction(progress, actionName, async retry => {
296
- // By default, we scroll with protocol method to reveal the action point.
297
- // However, that might not work to scroll from under position:sticky elements
298
- // that overlay the target element. To fight this, we cycle through different
299
- // scroll alignments. This works in most scenarios.
300
- const scrollOptions = [undefined, {
301
- block: 'end',
302
- inline: 'end'
303
- }, {
304
- block: 'center',
305
- inline: 'center'
306
- }, {
307
- block: 'start',
308
- inline: 'start'
309
- }];
310
- const forceScrollOptions = scrollOptions[retry % scrollOptions.length];
311
- return await this._performPointerAction(progress, actionName, waitForEnabled, action, forceScrollOptions, options);
312
- }, {
313
- ...options,
314
- skipLocatorHandlersCheckpoint
315
- });
316
- }
317
316
  async _performPointerAction(progress, actionName, waitForEnabled, action, forceScrollOptions, options) {
318
317
  const {
319
318
  force = false,
@@ -341,19 +340,8 @@ class ElementHandle extends js.JSHandle {
341
340
  await doScrollIntoView().catch(() => {});
342
341
  }
343
342
  if (options.__testHookBeforeStable) await options.__testHookBeforeStable();
344
- if (!force) {
345
- const elementStates = waitForEnabled ? ['visible', 'enabled', 'stable'] : ['visible', 'stable'];
346
- progress.log(` waiting for element to be ${waitForEnabled ? 'visible, enabled and stable' : 'visible and stable'}`);
347
- const result = await this.evaluateInUtility(async ([injected, node, {
348
- elementStates
349
- }]) => {
350
- return await injected.checkElementStates(node, elementStates);
351
- }, {
352
- elementStates
353
- });
354
- if (result) return result;
355
- progress.log(` element is ${waitForEnabled ? 'visible, enabled and stable' : 'visible and stable'}`);
356
- }
343
+ const result = await this._waitForElementStates(progress, waitForEnabled ? ['visible', 'enabled', 'stable'] : ['visible', 'stable'], force);
344
+ if (result !== 'done') return result;
357
345
  if (options.__testHookAfterStable) await options.__testHookAfterStable();
358
346
  progress.log(' scrolling into view if needed');
359
347
  progress.throwIfAborted(); // Avoid action that has side-effects.
@@ -366,9 +354,7 @@ class ElementHandle extends js.JSHandle {
366
354
  progress.metadata.point = point;
367
355
  await progress.beforeInputAction(this);
368
356
  let hitTargetInterceptionHandle;
369
- if (force) {
370
- progress.log(` forcing action`);
371
- } else {
357
+ if (!options.force) {
372
358
  if (options.__testHookBeforeHitTarget) await options.__testHookBeforeHitTarget();
373
359
  const frameCheckResult = await this._checkFrameIsHitTarget(point);
374
360
  if (frameCheckResult === 'error:notconnected' || 'hitTargetDescription' in frameCheckResult) return frameCheckResult;
@@ -410,7 +396,7 @@ class ElementHandle extends js.JSHandle {
410
396
  if (hitTargetInterceptionHandle) {
411
397
  const stopHitTargetInterception = hitTargetInterceptionHandle.evaluate(h => h.stop()).catch(e => 'done').finally(() => {
412
398
  var _hitTargetInterceptio;
413
- (_hitTargetInterceptio = hitTargetInterceptionHandle) === null || _hitTargetInterceptio === void 0 || _hitTargetInterceptio.dispose();
399
+ (_hitTargetInterceptio = hitTargetInterceptionHandle) === null || _hitTargetInterceptio === void 0 ? void 0 : _hitTargetInterceptio.dispose();
414
400
  });
415
401
  if (!options.noWaitAfter) {
416
402
  // When noWaitAfter is passed, we do not want to accidentally stall on
@@ -476,32 +462,22 @@ class ElementHandle extends js.JSHandle {
476
462
  }, this._page._timeoutSettings.timeout(options));
477
463
  }
478
464
  async _selectOption(progress, elements, values, options) {
479
- let resultingOptions = [];
480
- await this._retryAction(progress, 'select option', async () => {
481
- await progress.beforeInputAction(this);
482
- if (!options.force) progress.log(` waiting for element to be visible and enabled`);
483
- const optionsToSelect = [...elements, ...values];
484
- const result = await this.evaluateInUtility(async ([injected, node, {
465
+ const optionsToSelect = [...elements, ...values];
466
+ await progress.beforeInputAction(this);
467
+ return this._page._frameManager.waitForSignalsCreatedBy(progress, options.noWaitAfter, async () => {
468
+ progress.throwIfAborted(); // Avoid action that has side-effects.
469
+ progress.log(' selecting specified option(s)');
470
+ const result = await this.evaluatePoll(progress, ([injected, node, {
485
471
  optionsToSelect,
486
472
  force
487
473
  }]) => {
488
- if (!force) {
489
- const checkResult = await injected.checkElementStates(node, ['visible', 'enabled']);
490
- if (checkResult) return checkResult;
491
- }
492
- return injected.selectOptions(node, optionsToSelect);
474
+ return injected.waitForElementStatesAndPerformAction(node, ['visible', 'enabled'], force, injected.selectOptions.bind(injected, optionsToSelect));
493
475
  }, {
494
476
  optionsToSelect,
495
477
  force: options.force
496
478
  });
497
- if (Array.isArray(result)) {
498
- progress.log(' selected specified option(s)');
499
- resultingOptions = result;
500
- return 'done';
501
- }
502
479
  return result;
503
- }, options);
504
- return resultingOptions;
480
+ });
505
481
  }
506
482
  async fill(metadata, value, options = {}) {
507
483
  const controller = new _progress.ProgressController(metadata, this);
@@ -511,51 +487,38 @@ class ElementHandle extends js.JSHandle {
511
487
  }, this._page._timeoutSettings.timeout(options));
512
488
  }
513
489
  async _fill(progress, value, options) {
514
- progress.log(` fill("${value}")`);
515
- return await this._retryAction(progress, 'fill', async () => {
516
- await progress.beforeInputAction(this);
517
- return this._page._frameManager.waitForSignalsCreatedBy(progress, options.noWaitAfter, async () => {
518
- if (!options.force) progress.log(' waiting for element to be visible, enabled and editable');
519
- const result = await this.evaluateInUtility(async ([injected, node, {
520
- value,
521
- force
522
- }]) => {
523
- if (!force) {
524
- const checkResult = await injected.checkElementStates(node, ['visible', 'enabled', 'editable']);
525
- if (checkResult) return checkResult;
526
- }
527
- return injected.fill(node, value);
528
- }, {
529
- value,
530
- force: options.force
531
- });
490
+ progress.log(`elementHandle.fill("${value}")`);
491
+ await progress.beforeInputAction(this);
492
+ return this._page._frameManager.waitForSignalsCreatedBy(progress, options.noWaitAfter, async () => {
493
+ progress.log(' waiting for element to be visible, enabled and editable');
494
+ const filled = await this.evaluatePoll(progress, ([injected, node, {
495
+ value,
496
+ force
497
+ }]) => {
498
+ return injected.waitForElementStatesAndPerformAction(node, ['visible', 'enabled', 'editable'], force, injected.fill.bind(injected, value));
499
+ }, {
500
+ value,
501
+ force: options.force
502
+ });
503
+ progress.throwIfAborted(); // Avoid action that has side-effects.
504
+ if (filled === 'error:notconnected') return filled;
505
+ progress.log(' element is visible, enabled and editable');
506
+ if (filled === 'needsinput') {
532
507
  progress.throwIfAborted(); // Avoid action that has side-effects.
533
- if (result === 'needsinput') {
534
- if (value) await this._page.keyboard.insertText(value);else await this._page.keyboard.press('Delete');
535
- return 'done';
536
- } else {
537
- return result;
538
- }
539
- }, 'input');
540
- }, options);
508
+ if (value) await this._page.keyboard.insertText(value);else await this._page.keyboard.press('Delete');
509
+ } else {
510
+ assertDone(filled);
511
+ }
512
+ return 'done';
513
+ }, 'input');
541
514
  }
542
515
  async selectText(metadata, options = {}) {
543
516
  const controller = new _progress.ProgressController(metadata, this);
544
517
  return controller.run(async progress => {
545
- const result = await this._retryAction(progress, 'selectText', async () => {
546
- if (!options.force) progress.log(' waiting for element to be visible');
547
- return await this.evaluateInUtility(async ([injected, node, {
548
- force
549
- }]) => {
550
- if (!force) {
551
- const checkResult = await injected.checkElementStates(node, ['visible']);
552
- if (checkResult) return checkResult;
553
- }
554
- return injected.selectText(node);
555
- }, {
556
- force: options.force
557
- });
558
- }, options);
518
+ progress.throwIfAborted(); // Avoid action that has side-effects.
519
+ const result = await this.evaluatePoll(progress, ([injected, node, force]) => {
520
+ return injected.waitForElementStatesAndPerformAction(node, ['visible'], force, injected.selectText.bind(injected));
521
+ }, options.force);
559
522
  assertDone(throwRetargetableDOMError(result));
560
523
  }, this._page._timeoutSettings.timeout(options));
561
524
  }
@@ -706,12 +669,10 @@ class ElementHandle extends js.JSHandle {
706
669
  async waitForElementState(metadata, state, options = {}) {
707
670
  const controller = new _progress.ProgressController(metadata, this);
708
671
  return controller.run(async progress => {
709
- const actionName = `wait for ${state}`;
710
- const result = await this._retryAction(progress, actionName, async () => {
711
- return await this.evaluateInUtility(async ([injected, node, state]) => {
712
- return (await injected.checkElementStates(node, [state])) || 'done';
713
- }, state);
714
- }, {});
672
+ progress.log(` waiting for element to be ${state}`);
673
+ const result = await this.evaluatePoll(progress, ([injected, node, state]) => {
674
+ return injected.waitForElementStatesAndPerformAction(node, [state], false, () => 'done');
675
+ }, state);
715
676
  assertDone(throwRetargetableDOMError(result));
716
677
  }, this._page._timeoutSettings.timeout(options));
717
678
  }
@@ -726,6 +687,22 @@ class ElementHandle extends js.JSHandle {
726
687
  }
727
688
  return this;
728
689
  }
690
+ async _waitForElementStates(progress, states, force) {
691
+ const title = joinWithAnd(states);
692
+ progress.log(` waiting for element to be ${title}`);
693
+ const result = await this.evaluatePoll(progress, ([injected, node, {
694
+ states,
695
+ force
696
+ }]) => {
697
+ return injected.waitForElementStatesAndPerformAction(node, states, force, () => 'done');
698
+ }, {
699
+ states,
700
+ force
701
+ });
702
+ if (result === 'error:notconnected') return result;
703
+ progress.log(` element is ${title}`);
704
+ return result;
705
+ }
729
706
  async _checkFrameIsHitTarget(point) {
730
707
  let frame = this._frame;
731
708
  const data = [];
@@ -774,7 +751,63 @@ class ElementHandle extends js.JSHandle {
774
751
  };
775
752
  }
776
753
  }
754
+
755
+ // Handles an InjectedScriptPoll running in injected script:
756
+ // - streams logs into progress;
757
+ // - cancels the poll when progress cancels.
777
758
  exports.ElementHandle = ElementHandle;
759
+ class InjectedScriptPollHandler {
760
+ constructor(progress, poll) {
761
+ this._progress = void 0;
762
+ this._poll = void 0;
763
+ this._progress = progress;
764
+ this._poll = poll;
765
+ // Ensure we cancel the poll before progress aborts and returns:
766
+ // - no unnecessary work in the page;
767
+ // - no possible side effects after progress promise rejects.
768
+ this._progress.cleanupWhenAborted(() => this.cancel());
769
+ this._streamLogs();
770
+ }
771
+ async _streamLogs() {
772
+ while (this._poll && this._progress.isRunning()) {
773
+ const log = await this._poll.evaluate(poll => poll.takeNextLogs()).catch(e => []);
774
+ if (!this._poll || !this._progress.isRunning()) return;
775
+ for (const entry of log) this._progress.logEntry(entry);
776
+ }
777
+ }
778
+ async finishHandle() {
779
+ try {
780
+ const result = await this._poll.evaluateHandle(poll => poll.run());
781
+ await this._finishInternal();
782
+ return result;
783
+ } finally {
784
+ await this.cancel();
785
+ }
786
+ }
787
+ async finish() {
788
+ try {
789
+ const result = await this._poll.evaluate(poll => poll.run());
790
+ await this._finishInternal();
791
+ return result;
792
+ } finally {
793
+ await this.cancel();
794
+ }
795
+ }
796
+ async _finishInternal() {
797
+ if (!this._poll) return;
798
+ // Retrieve all the logs before continuing.
799
+ const log = await this._poll.evaluate(poll => poll.takeLastLogs()).catch(e => []);
800
+ for (const entry of log) this._progress.logEntry(entry);
801
+ }
802
+ async cancel() {
803
+ if (!this._poll) return;
804
+ const copy = this._poll;
805
+ this._poll = null;
806
+ await copy.evaluate(p => p.cancel()).catch(e => {});
807
+ copy.dispose();
808
+ }
809
+ }
810
+ exports.InjectedScriptPollHandler = InjectedScriptPollHandler;
778
811
  function throwRetargetableDOMError(result) {
779
812
  if (result === 'error:notconnected') throw new Error('Element is not attached to the DOM');
780
813
  return result;
@@ -805,4 +838,8 @@ function compensateHalfIntegerRoundingError(point) {
805
838
  const remainderY = point.y - Math.floor(point.y);
806
839
  if (remainderY > 0.49 && remainderY < 0.51) point.y -= 0.02;
807
840
  }
841
+ function joinWithAnd(strings) {
842
+ if (strings.length <= 1) return strings.join('');
843
+ return strings.slice(0, strings.length - 1).join(', ') + ' and ' + strings[strings.length - 1];
844
+ }
808
845
  const kUnableToAdoptErrorMessage = exports.kUnableToAdoptErrorMessage = 'Unable to adopt element handle from a different document';
@@ -20,10 +20,10 @@ var _progress = require("../progress");
20
20
  var _helper = require("../helper");
21
21
  var _eventsHelper = require("../../utils/eventsHelper");
22
22
  var readline = _interopRequireWildcard(require("readline"));
23
- var _debugLogger = require("../../utils/debugLogger");
23
+ var _debugLogger = require("../../common/debugLogger");
24
24
  var _instrumentation = require("../instrumentation");
25
- 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); }
26
- 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; }
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
28
  /**
29
29
  * Copyright (c) Microsoft Corporation.
@@ -133,11 +133,10 @@ class Electron extends _instrumentation.SdkObject {
133
133
  controller.setLogName('browser');
134
134
  return controller.run(async progress => {
135
135
  let app = undefined;
136
- // --remote-debugging-port=0 must be the last playwright's argument, loader.ts relies on it.
137
136
  const electronArguments = ['--inspect=0', '--remote-debugging-port=0', ...args];
138
137
  if (_os.default.platform() === 'linux') {
139
138
  const runningAsRoot = process.geteuid && process.geteuid() === 0;
140
- if (runningAsRoot && electronArguments.indexOf('--no-sandbox') === -1) electronArguments.unshift('--no-sandbox');
139
+ if (runningAsRoot && electronArguments.indexOf('--no-sandbox') === -1) electronArguments.push('--no-sandbox');
141
140
  }
142
141
  const artifactsDir = await _fs.default.promises.mkdtemp(ARTIFACTS_FOLDER);
143
142
  const browserLogsCollector = new _debugLogger.RecentLogsCollector();
@@ -23,10 +23,8 @@ const {
23
23
  chromiumSwitches
24
24
  } = require('../chromium/chromiumSwitches');
25
25
 
26
- // Always pass user arguments first, see https://github.com/microsoft/playwright/issues/16614 and
27
- // https://github.com/microsoft/playwright/issues/29198.
28
- // [Electron, -r, loader.js[, --no-sandbox>], --inspect=0, --remote-debugging-port=0, ...args]
29
- process.argv.splice(1, process.argv.indexOf('--remote-debugging-port=0'));
26
+ // [Electron, -r, loader.js, --inspect=0, --remote-debugging-port=0, ...args]
27
+ process.argv.splice(1, 4);
30
28
  for (const arg of chromiumSwitches) {
31
29
  const match = arg.match(/--([^=]*)=?(.*)/);
32
30
  app.commandLine.appendSwitch(match[1], match[2]);
@@ -22,8 +22,8 @@ var _progress = require("./progress");
22
22
  var _tracing = require("./trace/recorder/tracing");
23
23
  var _network = require("./network");
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
- 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); }
26
- 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; }
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
27
  /**
28
28
  * Copyright (c) Microsoft Corporation.
29
29
  *
@@ -356,8 +356,8 @@ class APIRequestContext extends _instrumentation.SdkObject {
356
356
  });
357
357
  }
358
358
  _getHttpCredentials(url) {
359
- var _this$_defaultOptions, _this$_defaultOptions2;
360
- if (!((_this$_defaultOptions = this._defaultOptions().httpCredentials) !== null && _this$_defaultOptions !== void 0 && _this$_defaultOptions.origin) || url.origin.toLowerCase() === ((_this$_defaultOptions2 = this._defaultOptions().httpCredentials) === null || _this$_defaultOptions2 === void 0 || (_this$_defaultOptions2 = _this$_defaultOptions2.origin) === null || _this$_defaultOptions2 === void 0 ? void 0 : _this$_defaultOptions2.toLowerCase())) return this._defaultOptions().httpCredentials;
359
+ var _this$_defaultOptions, _this$_defaultOptions2, _this$_defaultOptions3;
360
+ if (!((_this$_defaultOptions = this._defaultOptions().httpCredentials) !== null && _this$_defaultOptions !== void 0 && _this$_defaultOptions.origin) || url.origin.toLowerCase() === ((_this$_defaultOptions2 = this._defaultOptions().httpCredentials) === null || _this$_defaultOptions2 === void 0 ? void 0 : (_this$_defaultOptions3 = _this$_defaultOptions2.origin) === null || _this$_defaultOptions3 === void 0 ? void 0 : _this$_defaultOptions3.toLowerCase())) return this._defaultOptions().httpCredentials;
361
361
  return undefined;
362
362
  }
363
363
  }
@@ -11,8 +11,8 @@ var _browserContext = require("../browserContext");
11
11
  var network = _interopRequireWildcard(require("../network"));
12
12
  var _ffConnection = require("./ffConnection");
13
13
  var _ffPage = require("./ffPage");
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); }
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 && 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; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
16
  /**
17
17
  * Copyright 2018 Google Inc. All rights reserved.
18
18
  * Modifications copyright (c) Microsoft Corporation.
@@ -147,7 +147,7 @@ class FFBrowser extends _browser.Browser {
147
147
  }
148
148
  _onVideoRecordingFinished(payload) {
149
149
  var _this$_takeVideo;
150
- (_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 || _this$_takeVideo.reportFinished();
150
+ (_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 ? void 0 : _this$_takeVideo.reportFinished();
151
151
  }
152
152
  _onDisconnect() {
153
153
  for (const video of this._idToVideo.values()) video.artifact.reportFinished(new _errors.TargetClosedError());
@@ -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("../../common/debugLogger");
9
9
  var _helper = require("../helper");
10
10
  var _protocolError = require("../protocolError");
11
11
  /**
@@ -8,8 +8,8 @@ var js = _interopRequireWildcard(require("../javascript"));
8
8
  var _stackTrace = require("../../utils/stackTrace");
9
9
  var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
10
10
  var _protocolError = require("../protocolError");
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; }
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
13
  /**
14
14
  * Copyright 2019 Google Inc. All rights reserved.
15
15
  * Modifications copyright (c) Microsoft Corporation.
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.FFNetworkManager = void 0;
7
7
  var _eventsHelper = require("../../utils/eventsHelper");
8
8
  var network = _interopRequireWildcard(require("../network"));
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; }
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
11
  /**
12
12
  * Copyright 2019 Google Inc. All rights reserved.
13
13
  * Modifications copyright (c) Microsoft Corporation.
@@ -91,11 +91,11 @@ class FFNetworkManager {
91
91
  response._serverAddrFinished();
92
92
  }
93
93
  response._securityDetailsFinished({
94
- protocol: event === null || event === void 0 || (_event$securityDetail = event.securityDetails) === null || _event$securityDetail === void 0 ? void 0 : _event$securityDetail.protocol,
95
- subjectName: event === null || event === void 0 || (_event$securityDetail2 = event.securityDetails) === null || _event$securityDetail2 === void 0 ? void 0 : _event$securityDetail2.subjectName,
96
- issuer: event === null || event === void 0 || (_event$securityDetail3 = event.securityDetails) === null || _event$securityDetail3 === void 0 ? void 0 : _event$securityDetail3.issuer,
97
- validFrom: event === null || event === void 0 || (_event$securityDetail4 = event.securityDetails) === null || _event$securityDetail4 === void 0 ? void 0 : _event$securityDetail4.validFrom,
98
- validTo: event === null || event === void 0 || (_event$securityDetail5 = event.securityDetails) === null || _event$securityDetail5 === void 0 ? void 0 : _event$securityDetail5.validTo
94
+ protocol: event === null || event === void 0 ? void 0 : (_event$securityDetail = event.securityDetails) === null || _event$securityDetail === void 0 ? void 0 : _event$securityDetail.protocol,
95
+ subjectName: event === null || event === void 0 ? void 0 : (_event$securityDetail2 = event.securityDetails) === null || _event$securityDetail2 === void 0 ? void 0 : _event$securityDetail2.subjectName,
96
+ issuer: event === null || event === void 0 ? void 0 : (_event$securityDetail3 = event.securityDetails) === null || _event$securityDetail3 === void 0 ? void 0 : _event$securityDetail3.issuer,
97
+ validFrom: event === null || event === void 0 ? void 0 : (_event$securityDetail4 = event.securityDetails) === null || _event$securityDetail4 === void 0 ? void 0 : _event$securityDetail4.validFrom,
98
+ validTo: event === null || event === void 0 ? void 0 : (_event$securityDetail5 = event.securityDetails) === null || _event$securityDetail5 === void 0 ? void 0 : _event$securityDetail5.validTo
99
99
  });
100
100
  // "raw" headers are the same as "provisional" headers in Firefox.
101
101
  response.setRawResponseHeaders(null);