<!DOCTYPE html>

<html>
<head>
    <style>
        .box {
            width: 120px;
            height: 100px;
            background-color: blue;
            margin: 270px 200px;
            position: relative;
            box-shadow: 0 0 10px black;
            -webkit-transform-origin: 80% 20%;
            transition: -webkit-transform 10s;
        }
        
        .dot {
            position: absolute;
            top: 0;
            left: 0;
            height: 4px;
            width: 4px;
            background-color: silver;
        }
        
        body.changed .box {
            animation: move 10s linear;
        }

        @keyframes move {
            from {
                -webkit-transform: translatex(10px) scale(1) rotate(0);
            }
            
            30% {
                -webkit-transform: translateX(150px) scale(1.3) rotate(10deg);
            }

            60% {
                -webkit-transform: translateX(-20px) scale(0.5) rotate(0);
            }

            to {
                -webkit-transform: translateX(100px) scale(1.3) rotate(0);
            }
        }
    </style>
    <script src="../resources/compositing-test-utils.js"></script>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function runTest()
        {
            makeDots(60, 60);
            
            window.setTimeout(function() {
                document.getElementById('target').addEventListener('animationstart', dumpLayersWithoutTransforms, false);
                document.body.classList.add('changed');
            }, 0);
        }
        
        window.addEventListener('load', runTest, false);
    </script>
</head>
<body>

    <div id="target" class="box">
    </div>
<pre id="layers"></pre>
</body>
</html>
