<!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="?status=200&should_prefetch=true">
<meta name="variant" content="?status=250&should_prefetch=true">
<meta name="variant" content="?status=299&should_prefetch=true">
<meta name="variant" content="?status=400&should_prefetch=false">
<meta name="variant" content="?status=500&should_prefetch=false">

<script>
  setup(() => assertSpeculationRulesIsSupported());

  // This is split across four test variants due to the test timeouts.
  let { status, should_prefetch } = Object.fromEntries(new URLSearchParams(location.search));
  promise_test(async t => {
    let agent = await spawnWindow(t);
    let nextUrl = agent.getExecutorURL({ page: 2, pipe: `status(${status})` });
    await agent.forceSinglePrefetch(nextUrl);
    await agent.navigate(nextUrl);

    if (should_prefetch == 'true')
      assert_prefetched(await agent.getRequestHeaders(), `Prefetch should work for request status:${status}.`);
    else
      assert_not_prefetched(await agent.getRequestHeaders(), `Prefetch should not work for request statue:${status}.`);
  }, "Check that only prefetched requests with status in 200-299 range are used.");
</script>
