<!DOCTYPE html>
<!-- 
    This tests verifies that blur is repainted using the full source image of the element instead of just the dirty area.
    There should be 3 blurry green boxes on the page, all the same size and color.
-->
<html>
<head>
    <style>
        .box {
            margin: 10px;
            height: 50px;
            width: 50px;
            background-color: green;
        }

        .before {
            background-color: red;
        }

        .blur {
            margin: 50px;
            filter: blur(10px);
        }
    </style>

    <script src="../../resources/run-after-layout-and-paint.js"></script>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsTextWithPixelResults();
            testRunner.waitUntilDone();
        }

        function repaintTest()
        {
            runAfterLayoutAndPaint(function() {
                document.querySelector(".before").classList.remove("before");
                if (window.testRunner)
                    testRunner.notifyDone();
            });
        }
    </script>
</head>

<body onload="repaintTest()">
    <div class="blur">
        <div class="box"></div>
        <div class="box before"></div>
        <div class="box"></div>
    </div>
</body>
</html>
