tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>