| <!DOCTYPE html> | |
| <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> | |
| <meta name="variant" content="?from_protocol=http&to_protocol=http"> | |
| <meta name="variant" content="?from_protocol=http&to_protocol=https"> | |
| <meta name="variant" content="?from_protocol=https&to_protocol=http"> | |
| <meta name="variant" content="?from_protocol=https&to_protocol=https"> | |
| <script> | |
| setup(() => assertSpeculationRulesIsSupported()); | |
| // This is split across four test variants due to the test timeouts. | |
| let { from_protocol, to_protocol } = Object.fromEntries(new URLSearchParams(location.search)); | |
| promise_test(async t => { | |
| let agent = await spawnWindow(t, { protocol: from_protocol }); | |
| let nextUrl = agent.getExecutorURL({ protocol: to_protocol, page: 2 }); | |
| await agent.forceSinglePrefetch(nextUrl); | |
| await agent.navigate(nextUrl); | |
| if (to_protocol == "https") { | |
| assert_prefetched(await agent.getRequestHeaders(), "Prefetch should work for HTTPS urls."); | |
| } else { | |
| assert_not_prefetched(await agent.getRequestHeaders(), "Prefetch should not work for HTTP urls."); | |
| } | |
| }, `test single ${to_protocol} url prefetch from a ${from_protocol} url`); | |
| </script> |