| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <div style="height: 1000px; width: 1000px;"></div> |
| <div id="frag"></div> |
| <script> |
| let i = 0; |
| async function urlDidChangeImmediately(listener, expected) { |
| navigation.addEventListener("navigate", listener, { once: true }); |
| let expected_hash = "#" + ++i; |
| assert_not_equals(location.hash, expected_hash); |
| let finished = navigation.navigate(expected_hash).finished; |
| assert_equals(location.hash === expected_hash, expected); |
| await finished; |
| assert_equals(location.hash, expected_hash); |
| } |
| |
| async function testUrlDidChangeImmediately(listener) { |
| await urlDidChangeImmediately(listener, true); |
| } |
| |
| async function testUrlDidNotChangeImmediately(listener) { |
| await urlDidChangeImmediately(listener, false); |
| } |
| |
| promise_test(async t => { |
| await testUrlDidNotChangeImmediately(e => { |
| e.intercept({ precommitHandler: async () => {} }); |
| e.intercept({ precommitHandler: async () => {} }); |
| }); |
| }, "precommitHandler + precommitHandler"); |
| |
| promise_test(async t => { |
| await testUrlDidNotChangeImmediately(e => { |
| e.intercept({ precommitHandler: async () => {} }); |
| e.intercept(); |
| }); |
| }, "precommitHandler + (not provided)"); |
| |
| promise_test(async t => { |
| await testUrlDidNotChangeImmediately(e => { |
| e.intercept({ precommitHandler: async () => {} }); |
| e.intercept({ handler: async () => {} }); |
| }); |
| }, "precommitHandler + handler"); |
| |
| promise_test(async t => { |
| await testUrlDidNotChangeImmediately(e => { |
| e.intercept({ handler: async () => {} }); |
| e.intercept({ precommitHandler: async () => {} }); |
| }); |
| }, "handler + precommitHandler"); |
| |
| promise_test(async t => { |
| await testUrlDidChangeImmediately(e => { |
| e.intercept({ handler: async () => {} }); |
| e.intercept(); |
| }); |
| }, "handler + (not provided)"); |
| |
| promise_test(async t => { |
| await testUrlDidChangeImmediately(e => { |
| e.intercept({ handler: async () => {} }); |
| e.intercept({ handler: async () => {} }); |
| }); |
| }, "handler + handler"); |
| |
| promise_test(async t => { |
| await testUrlDidNotChangeImmediately(e => { |
| e.intercept(); |
| e.intercept({ precommitHandler: async () => {} }); |
| }); |
| }, "(not provided) + precommitHandler"); |
| |
| promise_test(async t => { |
| await testUrlDidChangeImmediately(e => { |
| e.intercept(); |
| e.intercept({ handler: async () => {} }); |
| }); |
| }, "(not provided) + handler"); |
| </script> |
| </body> |