<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <style>
    #container {
      position: relative;
      width: 400px;
      height: 100px;
      border: 1px solid  black;
    }
    
    .box {
      position: absolute;
      width: 100px;
      height: 100px;
      background-color: green;
    }
    
    .indicator {
      left: 150px;
      top: 0;
      background-color: red;
    }
    #container.moved .software {
      left: 300px;
    }

    #container.moved .hardware {
      -webkit-animation: move 300ms linear;
    }

    .hardware {
      -webkit-transform-style: preserve-3d;
    }

    @-webkit-keyframes move {
      from { -webkit-transform: translateX(0); }
      to   { -webkit-transform: translateX(300px); }
    }
   </style>
   <script type="text/javascript" charset="utf-8">

    function testEnded()
    {
      document.getElementById('tester').style.webkitTransform = 'translateX(150px)';
      if (window.testRunner)
        testRunner.notifyDone();
    }
    
    function startTest()
    {
      if (window.testRunner)
        testRunner.waitUntilDone();

      document.getElementById('tester').addEventListener('webkitAnimationEnd', testEnded, false);
      document.getElementById('container').className = 'moved';
    }
    
    window.addEventListener('load', startTest, false);
   </script>
</head>
<body>

  <p>At the end of the test the green box should obscure the red box.</p>
  <div id="container">
    <div class="indicator box"></div>
    <div id="tester" class="hardware box"></div>
  </div>

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

</body>
</html>
