dispose-same-document-replace-with-intercept.html (1468B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script> 5 promise_test(async (t) => { 6 // Wait for after the load event so that we're definitely testing intentional, 7 // navigate()-caused replacement and not the replacement that happens 8 // automatically before the load event completes. 9 await new Promise(r => window.onload = () => t.step_timeout(r, 0)); 10 11 const currentBefore = navigation.currentEntry; 12 13 let disposeCalled = false; 14 navigation.currentEntry.ondispose = t.step_func(e => { 15 disposeCalled = true; 16 17 assert_equals(e.constructor, Event); 18 assert_equals(e.bubbles, false); 19 assert_equals(e.cancelable, false); 20 assert_equals(e.composed, false); 21 22 assert_not_equals(navigation.currentEntry, currentBefore); 23 assert_array_equals(navigation.entries().slice(navigation.currentEntry.index), [navigation.currentEntry]); 24 assert_equals((new URL(navigation.currentEntry.url)).search, "?replacement"); 25 assert_equals(navigation.transition.navigationType, "replace"); 26 assert_equals(navigation.transition.from, currentBefore); 27 assert_equals(location.search, "?replacement"); 28 }); 29 30 navigation.addEventListener("navigate", e => e.intercept()); 31 32 navigation.navigate("?replacement", { history: "replace" }); 33 assert_true(disposeCalled); 34 }, "dispose events when doing a same-document replace using navigation.navigate() and intercept()"); 35 </script>