<!DOCTYPE html>
<html>
<head>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/common/get-host-info.sub.js"></script>
</head>
<body>
    <div id="testDiv"></div>
    <script>
const host = get_host_info();
const notSameSiteBaseURL = host.HTTP_NOTSAMESITE_ORIGIN + window.location.pathname.replace(/\/[^\/]*$/, '/') ;
const ok = true;
const ko = false;
const noCors = false;

function loadScript(url, shoudLoad, corsMode, title)
{
    promise_test(() => {
        const script = document.createElement("script");
        if (corsMode)
            script.crossOrigin = corsMode;
        script.src = url;
        return new Promise((resolve, reject) => {
            script.onload = shoudLoad ? resolve : reject;
            script.onerror = shoudLoad ? reject : resolve;
            testDiv.appendChild(script);
        });
    }, title);
}

loadScript("./resources/script.py?corp=same-origin", ok, noCors,
    "Same-origin script load with a 'Cross-Origin-Resource-Policy: same-origin' response header.");

loadScript("./resources/script.py?corp=same-site", ok, noCors,
    "Same-origin script load with a 'Cross-Origin-Resource-Policy: same-site' response header.");

loadScript(notSameSiteBaseURL + "resources/script.py?corp=same-origin&acao=*", ok, "anonymous",
    "Cross-origin cors script load with a 'Cross-Origin-Resource-Policy: same-origin' response header.");

loadScript(notSameSiteBaseURL + "resources/script.py?corp=same-site&acao=*", ok, "anonymous",
    "Cross-origin cors script load with a 'Cross-Origin-Resource-Policy: same-site' response header.");

loadScript(notSameSiteBaseURL + "resources/script.py?corp=same-origin&acao=*", ko, noCors,
    "Cross-origin no-cors script load with a 'Cross-Origin-Resource-Policy: same-origin' response header.");

loadScript(notSameSiteBaseURL + "resources/script.py?corp=same-site&acao=*", ko, noCors,
    "Cross-origin no-cors script load with a 'Cross-Origin-Resource-Policy: same-site' response header.");
    </script>
</body>
</html>
