tor-browser

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

cancel-prerendering-after-clear-site-data-cache-different-origins.https.html (1813B)


      1 <!DOCTYPE html>
      2 <title>clear-site-data-cache cancels prerenders</title>
      3 <meta name="timeout" content="long">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/common/utils.js"></script>
      7 <script src="/common/get-host-info.sub.js"></script>
      8 <script src="/common/dispatcher/dispatcher.js"></script>
      9 <script src="/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js"></script>
     10 <script src="../resources/utils.js"></script>
     11 <script src="resources/utils.js"></script>
     12 <script>
     13 setup(() => assertSpeculationRulesIsSupported());
     14 
     15 promise_test(async t => {
     16 
     17  const rcHelper = new PrerenderingRemoteContextHelper();
     18  const referrerRC = await rcHelper.addWindow({
     19    origin: 'HTTPS_ORIGIN'
     20  }, {
     21    features: 'noopener'
     22  });
     23  const prerenderedRC = await referrerRC.addPrerender({
     24    origin: 'HTTPS_REMOTE_ORIGIN',
     25    headers: [
     26      ['Supports-Loading-Mode', 'credentialed-prerender']
     27    ]
     28  });
     29 
     30  const differentOrigin = get_host_info().HTTPS_REMOTE_ORIGIN;
     31 
     32  // Open new window with different origin to clear cache data through
     33  // Clear-Site-Data header.
     34  // Ensure that the cache is cleared before the navigation.
     35  const gotMessage = new Promise(resolve => {
     36    window.addEventListener('message', e => {
     37      resolve(e.data);
     38    }, {
     39      once: true
     40    });
     41  });
     42  window.open(differentOrigin + "/../../clear-site-data/support/clear-site-data-prerenderCache.py");
     43  await gotMessage;
     44 
     45  // Because Clear-Site-Data response header is sent on a different origin than
     46  // the initiator origin, the existing prerender is not expected to be
     47  // canceled.
     48  // And the prerender is expected to be activated.
     49  await referrerRC.navigateExpectingPrerenderingActivation(prerenderedRC);
     50 });
     51 </script>