<!doctype html>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/preload/resources/preload_helper.js"></script>
<body>
<script>

const {REMOTE_ORIGIN} = get_host_info();

function test_prefetch_change(before, after, expected, label) {
    promise_test(async t => {
        const link = document.createElement('link');
        link.rel = 'prefetch';
        t.add_cleanup(() => link.remove());
        const loadErrorOrTimeout = () => new Promise(resolve => {
            const timeoutMillis = 1000;
            link.addEventListener('load', () => resolve('load'));
            link.addEventListener('error', () => resolve('error'));
            t.step_timeout(() => resolve('timeout'), timeoutMillis);
        });
        for (const attr in before)
            link.setAttribute(attr, before[attr]);
        document.head.appendChild(link);
        const result1 = await loadErrorOrTimeout();
        for (const attr in after) {
            if (attr in before && after[attr] === null)
                link.removeAttribute(attr);
            else
                link.setAttribute(attr, after[attr]);
        }
        const result2 = await loadErrorOrTimeout();
        assert_array_equals([result1, result2], expected);
    }, label);
}

test_prefetch_change(
    {href: '/common/square.png?1'},
    {href: '/common/square.png?2'},
    ['load', 'load'],
    'Changing a prefetch href should trigger a fetch');

test_prefetch_change(
    {href: `${REMOTE_ORIGIN}/common/square.png?pipe=header(Access-Control-Allow-Origin, *)`},
    {href: `${REMOTE_ORIGIN}/common/square.png?pipe=header(Access-Control-Allow-Origin, *)`, crossorigin: 'anonymous'},
    ['load', 'load'],
    'Changing a prefetch crossorigin attribute should trigger a fetch');

</script>
</body>