same-document-away-and-back-location-api.html (1868B)
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 await navigation.navigate("#1", { state: navState }).finished; 15 let entry1 = navigation.currentEntry; 16 17 location.href = "#2"; 18 let entry2 = navigation.currentEntry; 19 20 assert_equals(navigation.entries().length, start_length + 2); 21 assert_equals(entry0, navigation.entries()[start_index]); 22 assert_equals(entry1, navigation.entries()[start_index + 1]); 23 assert_equals(entry2, navigation.entries()[start_index + 2]); 24 25 assert_equals(entry0.getState(), undefined); 26 27 let state1 = entry1.getState(); 28 assert_not_equals(state1, undefined); 29 assert_not_equals(state1, navState); 30 assert_equals(state1.statevar, "state"); 31 32 let state2 = entry2.getState(); 33 assert_not_equals(state2, undefined); 34 assert_not_equals(state2, navState); 35 assert_equals(state2.statevar, "state"); 36 37 history.back(); 38 window.onpopstate = t.step_func_done(() => { 39 assert_equals(navigation.entries().length, start_length + 2); 40 let back_entry = navigation.currentEntry; 41 assert_equals(back_entry, navigation.entries()[start_index + 1]); 42 let back_state = back_entry.getState(); 43 assert_not_equals(back_state, state1); 44 assert_not_equals(back_state, state2); 45 assert_equals(back_state.statevar, "state"); 46 }); 47 }, 0); 48 }, "entry.getState() behavior after navigating away using a fragment change, then back"); 49 </script>