<!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>
