<!DOCTYPE html>
<html>

<head>
    <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.-->
    <title>worker-connect-src-blocked</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="../support/logTest.sub.js?logs=[]"></script>
    <script src='../support/alertAssert.sub.js?alerts=["xhr blocked","TEST COMPLETE"]'></script>
    <!-- enforcing policy:
connect-src *; script-src 'self' 'unsafe-inline';
-->

</head>
<p>This test loads a worker, which is delivered with its own
    policy.  The worker should be blocked from making an XHR
    as that policy specifies a connect-src 'none', though
    this resource's policy is connect-src *.  No report
    should be sent since the worker's policy doesn't specify
    a report-uri.</p>
<body>
    <script>
        try {
            var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js');
            worker.onmessage = function(event) {
                alert_assert(event.data);
            };
        } catch (e) {
            alert_assert(e);
        }

    </script>
    <div id="log"></div>
    <script async defer src="../support/checkReport.sub.js?reportExists=false"></script>
</body>

</html>
