<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->
<html>
<head>
  <title>Tests that iteration events are fired when the duration is very short.</title>
  <style>
    #box {
      position: relative;
      left: 100px;
      top: 10px;
      height: 100px;
      width: 100px;
      -webkit-animation-duration: 0.001s;
      -webkit-animation-name: anim;
      background-color: #999;
      -webkit-animation-iteration-count: 10;
    }
    @-webkit-keyframes anim {
        from { left: 200px; }
        to   { left: 300px; }
    }
  </style>
  <script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    function fail() {
      document.getElementById('result').innerHTML = 'FAIL: Got ' + count + ' webkitAnimationCount events';
    }  

    var count = 0;
    onload = function()
    {
        document.addEventListener('webkitAnimationIteration', function() {
          ++count;
        }, false);

        document.addEventListener('webkitAnimationEnd', function() {
            // We collapse all iteration events that occur within a single
            // frame into a single event. See http://crbug.com/275263.
            if (count < 10)
                document.getElementById('result').innerHTML = 'PASS: Got a reasonable number of webkitAnimationCount events';
            else
                fail();
            if (window.testRunner)
                testRunner.notifyDone();
        }, false);

        // Animation begins once we append the DOM node to the document.
        var boxNode = document.createElement('div');
        boxNode.id = 'box';
        document.body.appendChild(boxNode);
    }
  </script>
</head>
<body>
Tests that iteration events are fired when the duration is very short.
<pre id="result">FAIL: No webkitAnimationEnd event received</pre>
</body>
</html>
