| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| async_test(t => { |
| window.onload = t.step_func(() => { |
| let abort_signal; |
| let onabort_called = false; |
| appHistory.onnavigatesuccess = t.unreached_func("onnavigatesuccess"); |
| appHistory.onnavigate = t.step_func(e => { |
| abort_signal = e.signal; |
| abort_signal.onabort = () => onabort_called = true; |
| e.respondWith(new Promise(resolve => t.step_timeout(resolve, 0))); |
| }); |
| appHistory.navigate("?1"); |
| window.stop(); |
| assert_true(abort_signal.aborted); |
| assert_true(onabort_called); |
| // Complete the test asynchronously to ensure that onnavigatesuccess |
| // didn't fire on a microtask. |
| t.step_timeout(t.step_func_done(() => {}), 5); |
| }); |
| }, "window.stop() cancels AppHistoryNavigateEvent.respondWith and signals AppHistoryNavigateEvent.signal"); |
| </script> |