<!DOCTYPE html>
<title>Ensures that prefetch sends headers as per-spec</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="resources/prefetch-helper.js"></script>
<body>
<script>

promise_test(async t => {
    const {href} = await prefetch({"type": "image/png", file: "green.png"}, t);
    const [info] = await get_prefetch_info(href);
    const {headers} = info;
    assert_equals(headers["sec-fetch-dest"], "empty");
    assert_equals(headers["sec-purpose"], "prefetch");
    assert_false("origin" in headers);
}, "Prefetch should include Sec-Purpose=prefetch and Sec-Fetch-Dest=empty headers");

promise_test(async t => {
    const {href} = await prefetch({"type": "image/png", file: "green.png"}, t);
    const [info] = await get_prefetch_info(href);
    const {headers} = info;
    assert_false("purpose" in headers);
    assert_false("x-moz" in headers);
}, "Prefetch should not include proprietary headers (X-moz/Purpose)");

promise_test(async t => {
    const {href} = await prefetch({"type": "image/png", file: "green.png", crossOrigin: "anonymous"}, t);
    const [info] = await get_prefetch_info(href);
    const {headers} = info;
    assert_equals(headers["origin"], document.origin);
}, "Prefetch should respect CORS mode");

</script>
</body>
