<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->
<html>
<head>
    <style>
        .container {
            height: 100px;
            width: 500px;
            margin: 4px;
            border: 1px solid black;
        }
        .box {
            position: relative;
            width: 100px;
            height: 100px;
            background-color: green;
        }
        
        .mover {
            animation: move 0.25s linear;
        }
        
        .mover.changed {
            animation-duration: 0.2s;
        }
        
        @keyframes move {
            from { left: 100px; }
            to   { left: 400px; }
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.waitUntilDone();
            testRunner.dumpAsText();
        }

        function doTest()
        {
            var box = document.getElementById('box');
            box.addEventListener('animationend', function() {
                window.setTimeout(function() {
                    box.addEventListener('animationstart', function() {
                        document.getElementById('results').textContent = "FAIL: animation restarted after changing animation-duration"
                        if (window.testRunner)
                            testRunner.notifyDone();
                    }, false);

                    // In the success case, wait a bit to make sure no animationstart event comes in.
                    window.setTimeout(function() {
                        if (window.testRunner)
                            testRunner.notifyDone();
                    }, 50);

                    box.classList.add('changed');
                }, 0);
            }, false);
            
            box.classList.add('mover');
        }
        
        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
    <div class="container">
        <div id="box" class="box"></div>
    </div>
    <div id="results">
        PASS: animation did not restart after changing animation-duration.
    </div>
</body>
</html>
