| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <iframe id="i" src="/common/blank.html"></iframe> |
| <body> |
| <script> |
| promise_test(async t => { |
| // Wait for after the load event so that the navigation doesn't get converted |
| // into a replace navigation. |
| await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); |
| |
| await i.contentWindow.navigation.navigate("#1").finished; |
| |
| i.contentWindow.navigation.onnavigate = t.step_func(e => { |
| assert_false(e.cancelable); |
| // intercept() with a precommitHandler is forbidden because e.cancelable is false. |
| let iframe_constructor = i.contentWindow.DOMException; |
| assert_throws_dom("InvalidStateError", iframe_constructor, |
| () => e.intercept({ precommitHandler: async () => {} })); |
| }); |
| await i.contentWindow.navigation.back().finished; |
| }, "precommitHandler for an uncancelable traverse navigation"); |
| </script> |
| </body> |