<!DOCTYPE html>
<html>
<head>
    <title>filter-bug</title>
    <style>
    .backdrop {
        position: absolute;
        top: 0;
        left: 0;
        height: 100px;
        width: 100px;
        background-color: silver;
    }

    .overlay {
        position: absolute;
        top: 50px;
        left: 50px;
        width: 400px;
        height: 100px;
        background: gray;
        box-shadow: 0 0 4px black;
    }
    
    .play {
        font-size: 36pt;
        background-color: navy;
        color: white;
    }
    .play.changed {
        -webkit-filter: drop-shadow(black 0 0 5px);
    }
    .composited {
        -webkit-transform: translateZ(0);
    }
    </style>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();
        function doTest()
        {
            window.setTimeout(function() {
                document.getElementById('play').classList.remove('changed');
                if (window.testRunner)
                    testRunner.notifyDone();
            }, 0);
        }
        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
    <div class="composited backdrop"></div>
    <div class="overlay">
        <span id="play" class="play changed">this should be visible</span>
    </div>
</body>
</html>