commit b345bdade72abab086d8c2f6820dabc89f9b2490
parent cf32fb96435ebffd43a4b5eeaef480043c714c60
Author: Noam Rosenthal <noamr@users.noreply.github.com>
Date: Thu, 11 Dec 2025 09:27:10 +0000
Bug 2003805 [wpt PR 56454] - Navigation API: Download navigations abort previous navigations., a=testonly
Automatic update from web-platform-tests
Navigation API: Download navigations abort previous navigations. (#56454)
See https://github.com/whatwg/html/pull/11983
--
wpt-commits: 2f5828e157b1000384c4c4a5d2d2b48560ab50bd
wpt-pr: 56454
Diffstat:
1 file changed, 36 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/navigation-api/ordering-and-transition/anchor-download-aborts-previous-navigation.html b/testing/web-platform/tests/navigation-api/ordering-and-transition/anchor-download-aborts-previous-navigation.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="iframe" src="/common/blank.html"></iframe>
+<script>
+ promise_test(async t => {
+ const iframe = document.getElementById("iframe");
+ await new Promise(resolve => window.onload = resolve);
+ const navigate_called = Promise.withResolvers();
+ const { navigation } = iframe.contentWindow;
+ navigation.addEventListener("navigate", e => {
+ if (!e.downloadRequest) {
+ e.intercept({ handler: () => new Promise(resolve => { }) });
+ navigate_called.resolve();
+ }
+ });
+ navigation.navigate("?never");
+ await navigate_called.promise;
+ const events = [];
+ const { transition } = navigation;
+ transition.committed.then(() => events.push("committed")).catch(e => events.push("commit-rejected"));
+ transition.finished.then(() => events.push("finished")).catch(e => events.push("finish-rejected"));
+ navigation.onnavigatesuccess = () => events.push("navigatesuccess");
+ navigation.onnavigateerror = () => events.push("navigateerror");
+
+ await Promise.resolve();
+ let a = iframe.contentDocument.createElement("a");
+ a.href = "?download";
+ a.download = "";
+ iframe.contentDocument.body.appendChild(a);
+ a.click();
+ await Promise.allSettled([transition.finished, transition.committed])
+ assert_array_equals(events, ["committed", "navigateerror", "finish-rejected"]);
+ }, "<a download> aborts previous navigations");
+</script>
+\ No newline at end of file