| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <script type="module"> |
| import { Recorder } from "./resources/helpers.mjs"; |
| |
| promise_test(async t => { |
| // Wait for after the load event so that the navigation doesn't get converted |
| // into a replace navigation. |
| await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); |
| |
| const recorder = new Recorder({ |
| finalExpectedEvent: "finished rejected" |
| }); |
| |
| recorder.setUpAppHistoryListeners(); |
| |
| navigation.addEventListener("navigate", t.step_func(e => { |
| e.preventDefault(); |
| })); |
| |
| const result = navigation.reload(); |
| recorder.setUpResultListeners(result); |
| |
| 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], |
| ["committed rejected", "", null], |
| ["finished rejected", "", null], |
| ["promise microtask", "", null] |
| ]); |
| |
| recorder.assertErrorsAreAbortErrors(); |
| }, "event and promise ordering for navigation.reload() where the navigate event is canceled"); |
| </script> |