<!DOCTYPE html>

<html>
<head>
  <style>
    #box {
      height: 100px;
      width: 100px;
      background-color: blue;
      -webkit-transition-duration: 2s;
      transform: translate(0, 0);
    }
    
  </style>
  <script>
    if (window.testRunner) {
      testRunner.dumpAsText();
      testRunner.waitUntilDone();
    }

    function test()
    {
      var c = new WebKitCSSMatrix(window.getComputedStyle(document.getElementById('box')).webkitTransform);
      var result = (c.f < 200) ? 'PASS' : 'FAIL: transition should still be running, so y < 200';
      document.getElementById('result').innerHTML = result;

      if (window.testRunner)
          testRunner.notifyDone();
    }
    
    function startTest()
    {
      var box = document.getElementById('box');
      box.style.webkitTransform = 'translate(100px, 0)';
      
      window.setTimeout(function() {
        box.style.webkitTransform = 'translate(0, 200px)';
        window.setTimeout(function() {
          test();
        }, 200);
      }, 300);
    }
    window.addEventListener('load', startTest, false)
  </script>
</head>
<body>
<p>Box should start moving right, then move down</p>
<div id="box">
</div>

<div id="result">
</div>
</body>
</html>
