intercept-multiple-times-reject.html (1347B)
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 const err = new TypeError("a message"); 7 let start_href = location.href; 8 9 let onnavigateerror_called = false; 10 let caught_rejection = false; 11 navigation.onnavigatesuccess = t.step_func(assert_unreached); 12 navigation.onnavigateerror = t.step_func(e => { 13 onnavigateerror_called = true; 14 assert_equals(location.hash, "#1"); 15 assert_equals(e.constructor, ErrorEvent); 16 assert_equals(e.error, err); 17 assert_true(e.message.includes("TypeError: a message")); 18 assert_equals(e.filename, start_href); 19 assert_greater_than(e.colno, 0); 20 assert_greater_than(e.lineno, 0); 21 }); 22 navigation.onnavigate = t.step_func(e => { 23 e.intercept(); 24 e.intercept({ handler: async () => { 25 await new Promise(r => t.step_timeout(r, 1)); 26 return Promise.reject(err); 27 }}); 28 e.intercept({ handler: () => new Promise(resolve => t.step_timeout(resolve, 1)) }); 29 }); 30 31 await navigation.navigate("#1").finished.catch(t.step_func(e => { 32 caught_rejection = true; 33 assert_equals(e, err); 34 })); 35 assert_true(onnavigateerror_called); 36 assert_true(caught_rejection); 37 }, "event.intercept() is called multiple times and one of the promises rejects"); 38 </script>