tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 088a638a9ff8ade8461a91478b4b6fa190948b08
parent 57a094697e94d99f404ad43783eb76acc905f416
Author: Andrey Kosyakov <caseq@chromium.org>
Date:   Wed,  3 Dec 2025 14:42:16 +0000

Bug 2003442 [wpt PR 56399] - Add a WPT for microtasks dispatched from pagehide event handler, a=testonly

Automatic update from web-platform-tests
Add a WPT for microtasks dispatched from pagehide event handler

Bug: 427166012
Change-Id: I37b623bf2e4f74d4cf35eb6845dc911c41d93df7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7207759
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1552559}

--

wpt-commits: eca405fadff23c417443e00c18dce8adbc831bb9
wpt-pr: 56399

Diffstat:
Atesting/web-platform/tests/html/browsers/browsing-the-web/back-forward-cache/pagehide-event-handler-microtasks.window.js | 28++++++++++++++++++++++++++++
1 file changed, 28 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/back-forward-cache/pagehide-event-handler-microtasks.window.js b/testing/web-platform/tests/html/browsers/browsing-the-web/back-forward-cache/pagehide-event-handler-microtasks.window.js @@ -0,0 +1,28 @@ +// META: title=Assure microtasks posted by pagehide event handler are dispatched as page is BFCached +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=./resources/test-helper.js + +'use strict'; + +promise_test(async t => { + const uuid = token(); + const url = remoteExecutorUrl(uuid, {protocol: 'http:'}); + const win = window.open(url, '_blank', 'noopener'); + const context = new RemoteContext(uuid); + + // Navigate within the same eval, as (1) we can't navigate externally + // because of potential race against the eval, and (2) we can't navigate + // as a separate eval step as it would block on this one returning, + // which would only happen upon `pagehide`. + const {persisted} = await context.execute_script( + () => new Promise(resolve => { + window.addEventListener('pagehide', async (event) => { + await Promise.resolve(); // ... so the rest will run as a microtask. + resolve({persisted: event.persisted}); + }, false); + location.href += '&navigated'; + })); + + assert_true(persisted); // Validate we're BFCached. +}, 'Assure microtasks posted by pagehide event handler are dispatched');