<!DOCTYPE html>
<html>

<head>
    <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.-->
    <meta http-equiv="Content-Security-Policy" content="connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline';">
    <title>connect-src-eventsource-allowed</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src='../support/logTest.sub.js?logs=["allowed"]'></script>
    <script src="../support/alertAssert.sub.js?alerts=[]"></script>
</head>

<body>
    <script>
        window.addEventListener('securitypolicyviolation', function(e) {
            log("allowed");
        });

        try {
            var es = new EventSource("http://{{domains[www1]}}:{{ports[http][0]}}/content-security-policy/connect-src/resources/simple-event-stream");
            // Firefox and Chrome don't throw an exception and takes some time to close async
            if (es.readyState == EventSource.CONNECTING) {
                setTimeout( function() {
                    es.readyState != EventSource.CLOSED ? log("allowed") : log("blocked");
                }, 1000);
            } else if (es.readyState == EventSource.CLOSED) {
                log("blocked");
            } else {
                log("allowed");
            }
        } catch (e) {
            log("blocked");
        }
    </script>
    <div id="log"></div>
</body>

</html>
