tor-browser

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

sec-fetch-headers.https.html (2496B)


      1 <!DOCTYPE html>
      2 <title>Prefetch request's Sec-Fetch-* request headers</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/dispatcher/dispatcher.js"></script>
      7 <script src="/common/utils.js"></script>
      8 <script src="../resources/utils.js"></script>
      9 <script src="resources/utils.sub.js"></script>
     10 
     11 <script>
     12 "use strict";
     13 
     14 setup(() => assertSpeculationRulesIsSupported());
     15 
     16 // https://wicg.github.io/nav-speculation/prefetch.html#create-a-navigation-request
     17 
     18 promise_test(async t => {
     19  const agent = await spawnWindow(t);
     20  const nextUrl = agent.getExecutorURL({ page: 2 });
     21  await agent.forceSinglePrefetch(nextUrl);
     22  await agent.navigate(nextUrl);
     23 
     24  const headers = await agent.getRequestHeaders();
     25  assert_prefetched(headers, "must be prefetched");
     26  assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest");
     27 }, 'Sec-Fetch-Dest');
     28 
     29 promise_test(async t => {
     30  const agent = await spawnWindow(t);
     31  const nextUrl = agent.getExecutorURL({ page: 2 });
     32  await agent.forceSinglePrefetch(nextUrl);
     33  await agent.navigate(nextUrl);
     34 
     35  const headers = await agent.getRequestHeaders();
     36  assert_prefetched(headers, "must be prefetched");
     37  assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode");
     38 }, 'Sec-Fetch-Mode');
     39 
     40 promise_test(async t => {
     41  const agent = await spawnWindow(t);
     42  const nextUrl = new URL('/common/redirect.py', location.href);
     43  const finalUrl = agent.getExecutorURL({ page: 2 });
     44  nextUrl.searchParams.set('location', finalUrl);
     45  await agent.forceSinglePrefetch(nextUrl);
     46  await agent.navigate(nextUrl, {expectedDestinationUrl: finalUrl});
     47 
     48  const headers = await agent.getRequestHeaders();
     49  assert_prefetched(headers, "must be prefetched");
     50  assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest");
     51 }, 'Sec-Fetch-Dest with redirects');
     52 
     53 promise_test(async t => {
     54  const agent = await spawnWindow(t);
     55  const nextUrl = new URL('/common/redirect.py', location.href);
     56  const finalUrl = agent.getExecutorURL({ page: 2 });
     57  nextUrl.searchParams.set('location', finalUrl);
     58  await agent.forceSinglePrefetch(nextUrl);
     59  await agent.navigate(nextUrl, {expectedDestinationUrl: finalUrl});
     60 
     61  const headers = await agent.getRequestHeaders();
     62  assert_prefetched(headers, "must be prefetched");
     63  assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode");
     64 }, 'Sec-Fetch-Mode with redirects');
     65 </script>