<!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://{{domains[www1]}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline';">
    <title>shared-worker-connect-src-allowed</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src='../support/logTest.sub.js?logs=["xhr allowed","TEST COMPLETE"]'></script>
    <script src='../support/alertAssert.sub.js?alerts=[]'></script>
</head>

<body>
  <script>
    window.addEventListener('securitypolicyviolation', function(e) {
        log("violated-directive=" + e.violatedDirective);
    });

    if(typeof SharedWorker != 'function') {
        t_log.set_status(t_alert.NOTRUN, "No SharedWorker, cannot run test.");
        t_log.phase = t_alert.phases.HAS_RESULT;
      	t_log.done();
    } else {
        try {
            var worker = new SharedWorker('/content-security-policy/connect-src/support/shared-worker-make-xhr-allowed.sub.js');
            worker.port.onmessage = function(event) {
                log(event.data);
            };
        } catch (e) {
            log(e);
        }
    }

    </script>
    <div id="log"></div>
</body>

</html>
