<!DOCTYPE html>
<!-- 
    This tests verifies that filters work even on composited layers that fallback to rendering in software.
    NOTE: It is using the fact that Safari can draw drop-shadows in GPU only if the filter is the last one in the filter chain.
    You should see three green rectangles slightly rotated and blurred. There should be no red.
-->
<html>
<head>
    <style>
        .box {
            position: relative;
            margin: 10px;
            height: 50px;
            width: 50px;
            background-color: green;
            -webkit-transform: translate(50px, 0px) rotate(20deg);
        }

        .before {
            background-color: red;
        }

        .blur {
            /* force a composited layer */
            -webkit-transform: translate3d(0, 0, 0);
            background: red;
            margin: 50px;
            -webkit-filter: drop-shadow(0px 0px 1px blue) blur(5px);
            width: 0px;
            height: 0px;
        }
    </style>

    <script src="../../fast/repaint/resources/repaint.js"></script>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText(true);

        function repaintTest()
        {
            document.querySelector(".before").classList.remove("before");
        }
    </script>
</head>

<body onload="runRepaintTest()">

    <div class="blur">
        <div class="box"></div>
        <div class="box before"></div>
        <div class="box"></div>
    </div>

</body>
</html>
