tor-browser

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

navigation-api-multiple-entries.https.html (2677B)


      1 <!DOCTYPE html>
      2 <meta name="timeout" content="long">
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/common/utils.js"></script>
      6 <script src="/common/dispatcher/dispatcher.js"></script>
      7 <script src="/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js"></script>
      8 <script src="../resources/utils.js"></script>
      9 <script src="resources/utils.js"></script>
     10 
     11 <body>
     12 <script>
     13 setup(() => assertSpeculationRulesIsSupported());
     14 
     15 promise_test(async t => {
     16  const rcHelper = new PrerenderingRemoteContextHelper();
     17 
     18  const referrerRC1 = await rcHelper.addWindow(undefined, { features: 'noopener' });
     19  const referrerRC2 = await referrerRC1.navigateToNew();
     20  const referrerRC3 = await referrerRC2.navigateToNew();
     21  assert_equals(await referrerRC3.executeScript(() => navigation.entries().length), 3);
     22 
     23  let referrerRC3CurrentId = await referrerRC3.executeScript(() => navigation.currentEntry.id);
     24 
     25  const prerenderedRC = await referrerRC3.addPrerender();
     26  let activationStateBeforeActivation = await prerenderedRC.executeScript(() => {
     27    return {
     28     entries: navigation.entries().map(e => ({ id: e.id, })),
     29     activationEntryId: navigation.activation.entry?.id,
     30     activationFromId: navigation.activation.from?.id,
     31     activationNavigationType : navigation.activation.navigationType,
     32    }
     33  });
     34  assert_equals(activationStateBeforeActivation.entries.length, 1);
     35  assert_equals(activationStateBeforeActivation.activationFromId, referrerRC3CurrentId);
     36  assert_equals(activationStateBeforeActivation.activationEntryId, activationStateBeforeActivation.entries[0].id);
     37  assert_equals(activationStateBeforeActivation.activationNavigationType, "push");
     38 
     39  await referrerRC3.navigateExpectingPrerenderingActivation(prerenderedRC);
     40 
     41  let activationStateAfterActivation = await prerenderedRC.executeScript(() => {
     42    return {
     43     entries: navigation.entries().map(e => ({ id: e.id, })),
     44     activationEntryId: navigation.activation.entry?.id,
     45     activationFromId: navigation.activation.from?.id,
     46     activationNavigationType : navigation.activation.navigationType,
     47    }
     48  });
     49  assert_equals(activationStateAfterActivation.entries.length, 4);
     50  assert_equals(activationStateAfterActivation.activationFromId, activationStateAfterActivation.entries[2].id);
     51  assert_equals(activationStateAfterActivation.activationEntryId, activationStateAfterActivation.entries[3].id);
     52  assert_equals(activationStateAfterActivation.activationNavigationType, "push");
     53 },`navigation.entries() and navigation.activation should be updated on activation - multiple entries`);
     54 </script>