multiple-intercept.html (2448B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <body> 5 <div style="height: 1000px; width: 1000px;"></div> 6 <div id="frag"></div> 7 <script> 8 let i = 0; 9 async function urlDidChangeImmediately(listener, expected) { 10 navigation.addEventListener("navigate", listener, { once: true }); 11 let expected_hash = "#" + ++i; 12 assert_not_equals(location.hash, expected_hash); 13 let finished = navigation.navigate(expected_hash).finished; 14 assert_equals(location.hash === expected_hash, expected); 15 await finished; 16 assert_equals(location.hash, expected_hash); 17 } 18 19 async function testUrlDidChangeImmediately(listener) { 20 await urlDidChangeImmediately(listener, true); 21 } 22 23 async function testUrlDidNotChangeImmediately(listener) { 24 await urlDidChangeImmediately(listener, false); 25 } 26 27 promise_test(async t => { 28 await testUrlDidNotChangeImmediately(e => { 29 e.intercept({ precommitHandler: async () => {} }); 30 e.intercept({ precommitHandler: async () => {} }); 31 }); 32 }, "precommitHandler + precommitHandler"); 33 34 promise_test(async t => { 35 await testUrlDidNotChangeImmediately(e => { 36 e.intercept({ precommitHandler: async () => {} }); 37 e.intercept(); 38 }); 39 }, "precommitHandler + (not provided)"); 40 41 promise_test(async t => { 42 await testUrlDidNotChangeImmediately(e => { 43 e.intercept({ precommitHandler: async () => {} }); 44 e.intercept({ handler: async () => {} }); 45 }); 46 }, "precommitHandler + handler"); 47 48 promise_test(async t => { 49 await testUrlDidNotChangeImmediately(e => { 50 e.intercept({ handler: async () => {} }); 51 e.intercept({ precommitHandler: async () => {} }); 52 }); 53 }, "handler + precommitHandler"); 54 55 promise_test(async t => { 56 await testUrlDidChangeImmediately(e => { 57 e.intercept({ handler: async () => {} }); 58 e.intercept(); 59 }); 60 }, "handler + (not provided)"); 61 62 promise_test(async t => { 63 await testUrlDidChangeImmediately(e => { 64 e.intercept({ handler: async () => {} }); 65 e.intercept({ handler: async () => {} }); 66 }); 67 }, "handler + handler"); 68 69 promise_test(async t => { 70 await testUrlDidNotChangeImmediately(e => { 71 e.intercept(); 72 e.intercept({ precommitHandler: async () => {} }); 73 }); 74 }, "(not provided) + precommitHandler"); 75 76 promise_test(async t => { 77 await testUrlDidChangeImmediately(e => { 78 e.intercept(); 79 e.intercept({ handler: async () => {} }); 80 }); 81 }, "(not provided) + handler"); 82 </script> 83 </body>