| <!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> |