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:
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');