diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
commit | 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch) | |
tree | a31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip |
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js')
-rw-r--r-- | testing/web-platform/tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/testing/web-platform/tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js b/testing/web-platform/tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js new file mode 100644 index 0000000000..8d7ff24e3f --- /dev/null +++ b/testing/web-platform/tests/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js @@ -0,0 +1,83 @@ +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=./resources/pending_beacon-helper.js + +'use strict'; + +for (const beaconType of BeaconTypes) { + const beaconName = beaconType.name; + + parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // backgroundTimeout = 0s means `beacon should be sent out right on + // entering `hidden` state after navigating away. + const options = {backgroundTimeout: 0}; + const helper = new RemoteContextHelper(); + // Opens a window with noopener so that BFCache will work. + const rc1 = await helper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // Creates a PendingBeacon in remote which should only be sent on navigating + // away. + await rc1.executeScript((beaconName, url, options) => { + const beacon = beaconName == 'PendingGetBeacon' ? + new PendingGetBeacon(url, options) : + new PendingPostBeacon(url, options); + }, [beaconName, url, options]); + + await expectBeacon(uuid, {count: 0}); + }, `${beaconName}: does not send without page navigation.`); + + parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // backgroundTimeout = 0s means `beacon should be sent out right on + // entering `hidden` state after navigating away. + const options = {backgroundTimeout: 0}; + const helper = new RemoteContextHelper(); + // Opens a window with noopener so that BFCache will work. + const rc1 = await helper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // Creates a PendingBeacon in remote which should only be sent on navigating + // away. + await rc1.executeScript((beaconName, url, options) => { + const beacon = beaconName == 'PendingGetBeacon' ? + new PendingGetBeacon(url, options) : + new PendingPostBeacon(url, options); + }, [beaconName, url, options]); + // Navigates away to trigger beacon sending. + rc1.navigateToNew(); + + await expectBeacon(uuid, {count: 1}); + }, `${beaconName}: sends on page entering hidden state (w/ BFCache).`); + + parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // backgroundTimeout = 0s means `beacon should be sent out right on + // entering `hidden` state after navigating away. + const options = {backgroundTimeout: 0}; + const helper = new RemoteContextHelper(); + // Opens a window without BFCache. + const rc1 = await helper.addWindow(); + + // Creates a PendingBeacon in remote which should only be sent on navigating + // away. + await rc1.executeScript((beaconName, url, options) => { + const beacon = beaconName == 'PendingGetBeacon' ? + new PendingGetBeacon(url, options) : + new PendingPostBeacon(url, options); + }, [beaconName, url, options]); + // Navigates away to trigger beacon sending. + rc1.navigateToNew(); + + await expectBeacon(uuid, {count: 1}); + }, `${beaconName}: sends on page entering hidden state (w/o BFCache).`); +} |