precommitHandler-addHandler-throws.html (1513B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <body> 5 <script> 6 7 promise_test(async t => { 8 let precommit_controller; 9 navigation.onnavigate = t.step_func(e => { 10 e.intercept({ precommitHandler: async controller => precommit_controller = controller }); 11 }); 12 await navigation.navigate("#").finished; 13 assert_throws_dom("InvalidStateError", () => precommit_controller.addHandler(() => {})); 14 }, "addHandler() after finish"); 15 16 promise_test(async t => { 17 let precommit_controller; 18 navigation.onnavigate = t.step_func(e => { 19 e.intercept({ 20 precommitHandler: async controller => precommit_controller = controller, 21 handler: t.step_func(async () => { 22 assert_throws_dom("InvalidStateError", () => precommit_controller.addHandler(() => {})); 23 }) 24 }); 25 }); 26 await navigation.navigate("#").finished; 27 }, "addHandler() after commit"); 28 29 promise_test(async t => { 30 let i = document.createElement("iframe"); 31 i.src = "about:blank"; 32 document.body.appendChild(i); 33 i.contentWindow.navigation.onnavigate = t.step_func(e => { 34 e.intercept({ 35 precommitHandler: t.step_func(controller => { 36 let iframe_constructor = i.contentWindow.DOMException; 37 i.remove(); 38 assert_throws_dom("InvalidStateError", iframe_constructor, () => controller.addHandler(() => {})); 39 }) 40 }); 41 }); 42 i.contentWindow.navigation.navigate("#"); 43 }, "addHandler() in detached iframe"); 44 45 </script> 46 </body>