<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->
<html>
<head>
  <title>Tests that prefixed animation events are correctly fired.</title>
  <style>
    #box {
      position: relative;
      left: 100px;
      top: 10px;
      height: 100px;
      width: 100px;
      background-color: #999;
    }

    .animate {
      animation-duration: 0.3s;
      animation-name: anim;
    }

    @keyframes anim {
        from { left: 200px; }
        to   { left: 300px; }
    }
  </style>
  <script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    var startEventReceived = false;
    var endEventReceived = false;

    document.addEventListener('webkitAnimationStart', function() {
      startEventReceived = true;
    }, false);

    document.addEventListener('webkitAnimationIteration', function() {
      if (startEventReceived && endEventReceived) {
        document.getElementById('result').innerHTML = 'PASS: All events have been received as expected.';
        if (window.testRunner)
            testRunner.notifyDone();
      }
    }, false);

    document.addEventListener('webkitAnimationEnd', function() {
      endEventReceived = true;
      document.getElementById('box').className = '';
      // Launch again the animation to catch the animation iteration events this time.
      setTimeout(function () {
        document.getElementById('box').style.webkitAnimationIterationCount = "infinite";
        document.getElementById('box').className = 'animate';
      }, 200);
    }, false);

    onload = function()
    {
      // Animation begins once we append the DOM node to the document.
      var boxNode = document.createElement('div');
      boxNode.id = 'box';
      boxNode.className = 'animate';
      document.body.appendChild(boxNode);
    }
  </script>
</head>
<body>
Tests that prefixed animation events are correctly fired.
<pre id="result">FAIL: No animation events received</pre>
</body>
</html>
