same-document-away-and-back-location-api.html (1625B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script> 5 async_test(t => { 6 // Wait for after the load event so that the navigation doesn't get converted 7 // into a replace navigation. 8 window.onload = () => t.step_timeout(async () => { 9 let start_length = navigation.entries().length; 10 let entry0 = navigation.currentEntry; 11 let start_index = entry0.index; 12 13 let navState = { statevar: "state" }; 14 navigation.updateCurrentEntry({ state: navState }); 15 assert_equals(navigation.currentEntry, entry0); 16 17 location.href = "#2"; 18 let entry1 = navigation.currentEntry; 19 20 assert_equals(navigation.entries().length, start_length + 1); 21 assert_equals(entry0, navigation.entries()[start_index]); 22 assert_equals(entry1, navigation.entries()[start_index + 1]); 23 24 assert_equals(entry0.getState().statevar, "state"); 25 assert_not_equals(entry0.getState(), navState); 26 27 assert_equals(entry1.getState().statevar, "state"); 28 assert_not_equals(entry1.getState(), navState); 29 assert_not_equals(entry1.getState(), entry0.getState()); 30 31 history.back(); 32 window.onpopstate = t.step_func_done(() => { 33 assert_equals(navigation.entries().length, start_length + 1); 34 let back_entry = navigation.currentEntry; 35 assert_equals(back_entry, entry0); 36 let back_state = back_entry.getState(); 37 assert_not_equals(back_state, navState); 38 assert_equals(back_state.statevar, "state"); 39 }); 40 }, 0); 41 }, "entry.getState() behavior after navigating away using the location API, then back"); 42 </script>