<html>
<head>
<style>
#box {
    position: relative;
    width: 10px;
    height: 10px;
    background-color: green;
    -webkit-transform: translate3d(0, 0, 0);
    -webkit-transition: -webkit-transform 200ms linear;
}
</style>
<script>

if (window.testRunner) {
    window.testRunner.dumpAsText();
    window.testRunner.waitUntilDone();
}

var NUMBER_OF_INTERRUPTIONS = 30;
var interruptionCount = 0;
var box;

function interruptTransition() {
    if (interruptionCount <= NUMBER_OF_INTERRUPTIONS) {
        interruptionCount++;
        box.style.webkitTransform = 'translate3d(' + (interruptionCount * 5) + "px, 0, 0)";
        // call the function again, before the transition can complete
        setTimeout(interruptTransition, 0);
    }
}

function finishTest() {
    var results = document.getElementById("results");
    results.innerText = "The transition completed successfully.";
    
    if (window.testRunner)
        window.testRunner.notifyDone();
}

window.addEventListener("load", function () {
    box = document.getElementById("box");
    box.addEventListener("webkitTransitionEnd", finishTest, false);
    // start the rush of interruptions
    setTimeout(interruptTransition, 10);
}, false);

</script>
</head>
<body>
 <div id="box"></div>
 <p>This test should not crash</p>
 <p id="results"></p>
</body>
</html>