<!DOCTYPE html>
<html>

<head>
    <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.-->
    <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';">
    <title>worker-function-function-blocked</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src='../support/logTest.sub.js?logs=["Function() function blocked"]'></script>
    <script src='../support/alertAssert.sub.js?alerts=[]'></script>
</head>

<body>
    <p>This test loads a worker, delivered with its own policy.
    The Function constructor should be forbidden by that
    policy.  No report should be generated because the worker
    policy does not set a report-uri (although this parent
    resource does).</p>
    <script>
        window.addEventListener('securitypolicyviolation', function(e) {
            log('Fail');
        });
        try {
            var worker = new Worker('/content-security-policy/script-src/support/worker-function-function.js');
            worker.onmessage = function(event) {
                log(event.data);
            };
        } catch (e) {
            log(e);
        }

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

</html>
