<!DOCTYPE html>
<meta charset=utf-8>
<title>Makes sure that Link headers support modulepreload</title>
<meta name="timeout" content="long">
<script src="/common/utils.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/preload/resources/preload_helper.js"></script>
<body>
<script>
    promise_test(async t => {
        const id = token();
        const moduleLink = getAbsoluteURL('./resources/module1.js');
        const params = new URLSearchParams();
        params.set('link', `<${moduleLink}>;rel=modulepreload`);
        params.set('type', 'text/html');
        params.set('file', 'modulepreload-iframe.html')
        const docURL = getAbsoluteURL(`./resources/echo-preload-header.py?${params.toString()}`);
        const iframe = document.createElement('iframe');
        t.add_cleanup(() => iframe.remove());
        iframe.src = docURL;
        const messageReceived = new Promise(resolve => window.addEventListener('message', m => {
            resolve(m.data);
        }))
        document.body.appendChild(iframe);
        const result = await messageReceived;
        assert_equals(result, 1);
    }, 'test that a header-preloaded module is loaded and consumed');
</script>
</body>
