intercept-multiple-times.html (1288B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script> 5 promise_test(async t => { 6 let p1_resolved = false; 7 let p2_resolved = false; 8 let p3_resolved = false; 9 navigation.onnavigate = t.step_func(e => { 10 e.intercept({ handler: async () => { 11 await Promise.resolve(); 12 assert_false(p2_resolved); 13 assert_false(p3_resolved); 14 p1_resolved = true; 15 }}); 16 e.intercept({ handler: async () => { 17 await new Promise(resolve => t.step_timeout(resolve, 1)); 18 assert_true(p1_resolved); 19 assert_false(p3_resolved); 20 p2_resolved = true; 21 }}); 22 e.intercept({ handler: async () => { 23 await new Promise(resolve => t.step_timeout(resolve, 1)); 24 assert_true(p1_resolved); 25 assert_true(p2_resolved); 26 p3_resolved = true; 27 }}); 28 }); 29 30 let promise = navigation.navigate("#1").finished; 31 assert_equals(location.hash, "#1"); 32 assert_false(p1_resolved); 33 assert_false(p2_resolved); 34 assert_false(p3_resolved); 35 36 await promise; 37 assert_true(p1_resolved); 38 assert_true(p2_resolved); 39 assert_true(p3_resolved); 40 }, "navigation.navigate() returns a finished promise that awaits all promises if event.intercept() is called multiple times"); 41 </script>