52 lines
1.7 KiB
HTML
52 lines
1.7 KiB
HTML
<!doctype html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<iframe id="i"></iframe>
|
|
|
|
|
|
<script type="module">
|
|
import { Recorder } from "./resources/helpers.mjs";
|
|
|
|
promise_test(async t => {
|
|
await new Promise(resolve => {
|
|
i.src = "/common/blank.html";
|
|
i.onload = () => t.step_timeout(resolve, 0)
|
|
});
|
|
|
|
const fromStart = i.contentWindow.navigation.currentEntry;
|
|
|
|
const recorder = new Recorder({
|
|
window: i.contentWindow,
|
|
finalExpectedEvent: "promise microtask"
|
|
});
|
|
|
|
recorder.setUpNavigationAPIListeners();
|
|
|
|
// Use https://web-platform-tests.org/writing-tests/server-pipes.html to make
|
|
// sure the response doesn't come back quickly, since once the response comes
|
|
// back the page would be unloaded and that would break our test.
|
|
const result1 = i.contentWindow.navigation.navigate("?pipe=trickle(d100)");
|
|
recorder.setUpResultListeners(result1, " 1");
|
|
|
|
const result2 = i.contentWindow.navigation.navigate("?2");
|
|
recorder.setUpResultListeners(result2, " 2");
|
|
|
|
Promise.resolve().then(() => recorder.record("promise microtask"));
|
|
|
|
await recorder.readyToAssert;
|
|
|
|
recorder.assert([
|
|
/* event name, location.hash value, navigation.transition properties */
|
|
["navigate", "", null],
|
|
["AbortSignal abort", "", null],
|
|
["navigateerror", "", null],
|
|
|
|
["navigate", "", null],
|
|
["committed rejected 1", "", null],
|
|
["finished rejected 1", "", null],
|
|
["promise microtask", "", null]
|
|
]);
|
|
|
|
recorder.assertErrorsAreAbortErrors();
|
|
}, "event and promise ordering when navigate() is called to a cross-document destination, interrupting another navigate() to a cross-document destination");
|
|
</script>
|