<!DOCTYPE html>
<html>
<title>Makes sure that preloaded resources reduce connection time to zero</title>
<meta name="timeout" content="long">
<meta name="pac" content="/common/proxy-all.sub.pac">
<script src="/common/utils.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<body>
<script>
    const FAKE_PORT = 30303;
    promise_test(async t => {
        const fake_remote_origin = `http://${token()}.wpt:${FAKE_PORT}`;
        const link = document.createElement('link');
        link.rel = "preconnect";
        link.href = fake_remote_origin;
        document.head.appendChild(link);
        await new Promise(r => t.step_timeout(r, 1000));
        const url = `${fake_remote_origin}/images/smiley.png`;
        const entryPromise = new Promise(resolve => {
            new PerformanceObserver(list => {
                const entries = list.getEntriesByName(url);
                if (entries.length)
                    resolve(entries[0]);
            }).observe({type: "resource"});
        });

        const img = document.createElement('img');
        img.src = url;
        document.body.appendChild(img);
        const entry = await entryPromise;
        assert_equals(entry.domainLookupStart, entry.domainLookupEnd);
        assert_equals(entry.domainLookupStart, entry.connectStart);
        assert_equals(entry.domainLookupStart, entry.connectEnd);
    }, "Test that preconnect reduces connection time to zero");
</script>
</body>
</html>
