<!DOCTYPE html>
<html>

<head>
    <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.-->
    <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=[]"></script>
    <script src='../support/alertAssert.sub.js?alerts=["Function() function blocked"]'></script>
    <!-- enforcing policy:
script-src 'self' 'unsafe-inline' 'self' 'unsafe-inline'; connect-src 'self';
-->

</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>
        try {
            var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-function-function.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>
