<!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.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> // 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 => { assert_implements(HTMLScriptElement.supports('speculationrules'), "Speculation Rules not supported"); 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>