| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/get-host-info.sub.js"></script> |
| <body> |
| <script> |
| async_test(t => { |
| let cross_origin_url = new URL(get_host_info().HTTPS_REMOTE_ORIGIN); |
| cross_origin_url.pathname = "/common/blank.html"; |
| let i = document.createElement("iframe"); |
| i.src = cross_origin_url; |
| document.body.appendChild(i); |
| |
| let start_length = history.length; |
| |
| // Wait for after the load event so that the navigation doesn't get converted |
| // into a replace navigation. |
| window.onload = () => t.step_timeout(() => { |
| i.contentWindow.location = "/common/blank.html"; |
| i.onload = () => t.step_timeout(() => { |
| assert_equals(history.length, start_length + 1); |
| assert_equals(i.contentWindow.navigation.entries().length, 1); |
| i.contentWindow.navigation.navigate("#fragment"); |
| assert_equals(i.contentWindow.navigation.entries().length, 2); |
| i.contentWindow.navigation.back().committed.then(t.step_func(() => { |
| assert_equals(i.contentWindow.navigation.entries().length, 2); |
| assert_equals(i.contentWindow.navigation.currentEntry.index, 0); |
| return i.contentWindow.navigation.forward().committed; |
| })).then(t.step_func_done(() => { |
| assert_equals(i.contentWindow.navigation.entries().length, 2); |
| assert_equals(i.contentWindow.navigation.currentEntry.index, 1); |
| })); |
| }, 0); |
| }, 0); |
| }, "navigation.traverseTo() should work in an iframe that has navigated across origins"); |
| </script> |
| </body> |