<!DOCTYPE html>
<html>

<head>
    <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.-->
    <meta http-equiv="Content-Security-Policy" content="img-src 'none'">
    <title>combine-header-and-meta-policies</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src='../support/logTest.sub.js?logs=["TEST COMPLETE", "violated-directive=img-src", "violated-directive=style-src-elem"]'></script>
    <script src="../support/alertAssert.sub.js?alerts=[]"></script>
    <!-- enforcing multiple policies:
Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self'
Content-Security-Policy: img-src 'none'
-->
</head>

<body>
<p>Test passes if both style and image are blocked and a report is generated for the
    style block from the header-supplied policy.</p>

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

        var img = document.createElement('img');
        img.src = '../support/fail.png';
        img.onerror = function() {
            log("TEST COMPLETE");
        };
        img.onload = function() {
            log("FAIL");
        };
        document.body.appendChild(img);

    </script>
    <style>
        body {
            background-color: blue;
        }

    </style>
    <script>
        var el = document.querySelector('body');
        test(function() {
            assert_equals(window.getComputedStyle(el).color, "rgb(0, 0, 0)")
        });

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

</html>
