<!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: "../../images/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: "../../images/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: "../../images/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>