tor-browser

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

currententrychange-before-popstate-intercept.html (1930B)


      1 <!doctype html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script>
      5 promise_test(async t => {
      6  let start_length = navigation.entries().length;
      7  // Wait for after the load event so that the navigation doesn't get converted
      8  // into a replace navigation.
      9  await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
     10  await navigation.navigate("#foo").committed;
     11  assert_equals(navigation.entries().length, start_length + 1);
     12 
     13  navigation.onnavigate = e => e.intercept();
     14 
     15  let oncurrententrychange_back_called = false;
     16  let onpopstate_back_called = false;
     17  window.onpopstate = t.step_func(e => {
     18    onpopstate_back_called = true;
     19    assert_true(oncurrententrychange_back_called);
     20  });
     21  navigation.oncurrententrychange = t.step_func(e => {
     22    oncurrententrychange_back_called = true;
     23    assert_false(onpopstate_back_called);
     24  });
     25  let back_result = navigation.back();
     26  assert_false(oncurrententrychange_back_called);
     27  assert_false(onpopstate_back_called);
     28  await back_result.finished;
     29  assert_true(oncurrententrychange_back_called);
     30  assert_true(onpopstate_back_called);
     31 
     32  let oncurrententrychange_forward_called = false;
     33  let onpopstate_forward_called = false;
     34  window.onpopstate = t.step_func(e => {
     35    onpopstate_forward_called = true;
     36    assert_true(oncurrententrychange_forward_called);
     37  });
     38  navigation.oncurrententrychange = t.step_func(e => {
     39    oncurrententrychange_forward_called = true;
     40    assert_false(onpopstate_forward_called);
     41  });
     42  let forward_result = navigation.forward();
     43  assert_false(oncurrententrychange_forward_called);
     44  assert_false(onpopstate_forward_called);
     45  await forward_result.finished;
     46  assert_true(oncurrententrychange_back_called);
     47  assert_true(onpopstate_forward_called);
     48 }, "currententrychange fires before popstate for navigation.back() and navigation.forward()");
     49 </script>