| <!DOCTYPE html> |
| <title>Prefetch request's Sec-Fetch-* request headers</title> |
| <meta name="timeout" content="long"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/dispatcher/dispatcher.js"></script> |
| <script src="/common/utils.js"></script> |
| <script src="../resources/utils.js"></script> |
| <script src="resources/utils.sub.js"></script> |
| |
| <script> |
| "use strict"; |
| |
| setup(() => assertSpeculationRulesIsSupported()); |
| |
| // https://wicg.github.io/nav-speculation/prefetch.html#create-a-navigation-request |
| |
| promise_test(async t => { |
| const agent = await spawnWindow(t); |
| const nextUrl = agent.getExecutorURL({ page: 2 }); |
| await agent.forceSinglePrefetch(nextUrl); |
| await agent.navigate(nextUrl); |
| |
| const headers = await agent.getRequestHeaders(); |
| assert_prefetched(headers, "must be prefetched"); |
| assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest"); |
| }, 'Sec-Fetch-Dest'); |
| |
| promise_test(async t => { |
| const agent = await spawnWindow(t); |
| const nextUrl = agent.getExecutorURL({ page: 2 }); |
| await agent.forceSinglePrefetch(nextUrl); |
| await agent.navigate(nextUrl); |
| |
| const headers = await agent.getRequestHeaders(); |
| assert_prefetched(headers, "must be prefetched"); |
| assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode"); |
| }, 'Sec-Fetch-Mode'); |
| |
| promise_test(async t => { |
| const agent = await spawnWindow(t); |
| const nextUrl = new URL('/common/redirect.py', location.href); |
| const finalUrl = agent.getExecutorURL({ page: 2 }); |
| nextUrl.searchParams.set('location', finalUrl); |
| await agent.forceSinglePrefetch(nextUrl); |
| await agent.navigate(nextUrl, {expectedDestinationUrl: finalUrl}); |
| |
| const headers = await agent.getRequestHeaders(); |
| assert_prefetched(headers, "must be prefetched"); |
| assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest"); |
| }, 'Sec-Fetch-Dest with redirects'); |
| |
| promise_test(async t => { |
| const agent = await spawnWindow(t); |
| const nextUrl = new URL('/common/redirect.py', location.href); |
| const finalUrl = agent.getExecutorURL({ page: 2 }); |
| nextUrl.searchParams.set('location', finalUrl); |
| await agent.forceSinglePrefetch(nextUrl); |
| await agent.navigate(nextUrl, {expectedDestinationUrl: finalUrl}); |
| |
| const headers = await agent.getRequestHeaders(); |
| assert_prefetched(headers, "must be prefetched"); |
| assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode"); |
| }, 'Sec-Fetch-Mode with redirects'); |
| </script> |