<!DOCTYPE html>

<html>
<head>
    <style>
        .box {
          width: 100px;
          height: 100px;
          background-color: blue;
        }
        
        .composited {
          -webkit-transform: translateZ(0);
        }
        
        .masked {
            -webkit-mask-image: linear-gradient(black, transparent);
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }
        
        var count = 0;
        function doTest()
        {
            window.setInterval(function() {
                document.getElementById('box').classList.toggle('masked');
                if (++count == 4 && window.testRunner)
                    testRunner.notifyDone();
            }, 0);
        }
        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
    <p>This test should not crash when run with MallocScribble</p>
    <div id="box" class="composited box">
    </div>
</body>
</html>
