35 lines
1.4 KiB
HTML
35 lines
1.4 KiB
HTML
<!doctype html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
promise_test(async (t) => {
|
|
// Wait for after the load event so that we're definitely testing intentional,
|
|
// navigate()-caused replacement and not the replacement that happens
|
|
// automatically before the load event completes.
|
|
await new Promise(r => window.onload = () => t.step_timeout(r, 0));
|
|
|
|
const currentBefore = navigation.currentEntry;
|
|
|
|
let disposeCalled = false;
|
|
navigation.currentEntry.ondispose = t.step_func(e => {
|
|
disposeCalled = true;
|
|
|
|
assert_equals(e.constructor, Event);
|
|
assert_equals(e.bubbles, false);
|
|
assert_equals(e.cancelable, false);
|
|
assert_equals(e.composed, false);
|
|
|
|
assert_not_equals(navigation.currentEntry, currentBefore);
|
|
assert_array_equals(navigation.entries().slice(navigation.currentEntry.index), [navigation.currentEntry]);
|
|
assert_equals((new URL(navigation.currentEntry.url)).search, "?replacement");
|
|
assert_equals(navigation.transition.navigationType, "replace");
|
|
assert_equals(navigation.transition.from, currentBefore);
|
|
assert_equals(location.search, "?replacement");
|
|
});
|
|
|
|
navigation.addEventListener("navigate", e => e.intercept());
|
|
|
|
navigation.navigate("?replacement", { history: "replace" });
|
|
assert_true(disposeCalled);
|
|
}, "dispose events when doing a same-document replace using navigation.navigate() and intercept()");
|
|
</script>
|