| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <iframe id="i" src="/common/blank.html"></iframe> |
| <script> |
| promise_test(async t => { |
| await new Promise(resolve => window.onload = resolve); |
| let iframe_constructor = i.contentWindow.DOMException; |
| let i_win = i.contentWindow; |
| await i.contentWindow.appHistory.navigate("#1"); |
| assert_equals(i.contentWindow.appHistory.entries().length, 2); |
| let key = i.contentWindow.appHistory.entries()[0].key; |
| |
| let onnavigateerror_called = false; |
| let onnavigateerror_error; |
| i.contentWindow.appHistory.onnavigate = t.step_func(() => i.remove()); |
| i.contentWindow.appHistory.onnavigateerror = t.step_func(e => { |
| assert_false(onnavigateerror_called); |
| onnavigateerror_called = true; |
| onnavigateerror_error = e.error; |
| assert_equals(e.filename, location.href); |
| assert_greater_than(e.lineno, 0); |
| assert_greater_than(e.colno, 0); |
| }); |
| await i.contentWindow.appHistory.goTo(key).catch(t.step_func(e => { |
| assert_true(onnavigateerror_called); |
| assert_equals(e, onnavigateerror_error); |
| })); |
| }, "goTo() in a detached window"); |
| </script> |