tor-browser

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

same-document-away-and-back-navigation-api.html (2193B)


      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 }).committed;
     15    let entry1 = navigation.currentEntry;
     16 
     17    navState.startvar2 = "otherstate";
     18    await navigation.navigate("#2", { state: navState }).committed;
     19    let entry2 = navigation.currentEntry;
     20 
     21    t.step_func(() => {
     22      assert_equals(navigation.entries().length, start_length + 2);
     23      assert_equals(entry0, navigation.entries()[start_index]);
     24      assert_equals(entry1, navigation.entries()[start_index + 1]);
     25      assert_equals(entry2, navigation.entries()[start_index + 2]);
     26 
     27      assert_equals(entry0.getState(), undefined);
     28 
     29      let state1 = entry1.getState();
     30      assert_not_equals(state1, undefined);
     31      assert_not_equals(state1, navState);
     32      assert_equals(state1.statevar, "state");
     33      assert_equals(state1.startvar2, undefined);
     34 
     35      let state2 = entry2.getState();
     36      assert_not_equals(state2, undefined);
     37      assert_not_equals(state2, navState);
     38      assert_equals(state2.statevar, "state");
     39      assert_equals(state2.startvar2, "otherstate");
     40 
     41      navigation.back();
     42      window.onpopstate = t.step_func_done(() => {
     43        assert_equals(navigation.entries().length, start_length + 2);
     44        let back_entry = navigation.currentEntry;
     45        assert_equals(back_entry, navigation.entries()[start_index + 1]);
     46        let back_state = back_entry.getState();
     47        assert_not_equals(back_state, state1);
     48        assert_not_equals(back_state, state2);
     49        assert_equals(back_state.statevar, "state");
     50        assert_equals(back_state.startvar2, undefined);
     51      });
     52    })();
     53  }, 0);
     54 }, "entry.getState() behavior after navigating away using the navigation API, then back");
     55 </script>