<!DOCTYPE html>
<!-- 
    This tests verifies that shadow is repainted using the full source image of the element instead of just the dirty area. 
    There should be 3 green boxes of same size with blue shadow on the lower right corner. Check that the shadow is not interrupted.
-->
<html>
<head>
    <style>
        .box {
            margin: 10px;
            height: 50px;
            width: 50px;
            background-color: green;
        }

        .before {
            background-color: red;
        }

        .shadow {
            margin: 50px;
            filter: drop-shadow(10px 10px 10px blue);
        }
    </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="shadow">
        <div class="box"></div>
        <div class="box before"></div>
        <div class="box"></div>
    </div>

</body>
</html>
