<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->

<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="../../../compositing/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>
