<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Keyframes test</title>
  <style type="text/css" media="screen">
    #box {
        position: absolute;
        left: 0;
        top: 100px;
        height: 100px;
        width: 100px;
        background-color: blue;
        -webkit-animation-duration: 2s;
        -webkit-animation-timing-function: linear;
        -webkit-animation-name: "anim";
        -webkit-animation-iteration-count: 0.3;
    }
    @-webkit-keyframes "anim" {
        from { left: 50px; }
        20%  { left: 100px; }
        40%  { left: 100px; }
        60%  { left: 200px; }
        80%  { left: 200px; }
        to   { left: 300px; }
    }
    </style>
    <script src="resources/animation-test-helpers.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript" charset="utf-8">

    if (window.testRunner)
        testRunner.dumpAsText();
    
    document.addEventListener("webkitAnimationEnd", function(event){
        var result;
        if (event.elapsedTime < 1)
            result = "PASS end of animation";
        else
            result = "FAIL end of animation";
        document.getElementById('result').innerHTML = result;

        if (window.testRunner)
            testRunner.notifyDone();
    }, false);
    
  </script>
</head>
<body>
This test performs an animation of the left property with a non integer iteration count.
<div id="box">
</div>
<div id="result">
</div>
</body>
</html>
