<!DOCTYPE html>
<html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
</head>
<body>
<p>
    This test ensures that XHR/Fetch will bypass CORS for user extension URLS in case the page is running user scripts.
</p>
<script>
    if (!window.internals)
        alert("This test requires WebKit internals API to work properly");

    test(() => {
        xhr = new XMLHttpRequest();
        xhr.open("GET", "safari-extension://test1", false);
        assert_throws({name: "NetworkError"}, () => { xhr.send() });
    }, "Bypassing CORS on synchronous XHR - should trigger a CORS error message");

    test(() => {
        internals.setAsRunningUserScripts();

        xhr = new XMLHttpRequest();
        xhr.open("GET", "safari-extension://test3", false);
        assert_throws({name: "NetworkError"}, () => { xhr.send() });
    }, "Bypassing CORS on synchronous XHR - should not trigger a CORS error message");

    promise_test((test) => {
        return promise_rejects(test, new TypeError, fetch("safari-extension://test4"));
    }, "Bypassing CORS on asynchronous fetch - should not trigger a CORS error message");
</script>
</body>
</html>
