<!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">
  <title>25052 testcase</title>
  <style type="text/css" media="screen">
  body {
      margin: 100px;
  }
  
  #container {
    position: relative;
    overflow: hidden;
    height: 200px;
    width: 200px;
    border: 1px solid black;
    z-index: 0;
  }
  
  #header {
    position: relative;
    width: 100%;
    height: 100px;
    background-color: rgba(128, 128, 0, 0.2);
  }

  #hanger {
    position: absolute;
    left: -200px;
    height: 100px;
    width: 150px;
    background-color: blue;
  }
  
  #mover {
    position: absolute;
    top: 0;
    height: 150px;
    width: 150px;
    background-color: green;
    -webkit-transition: -webkit-transform 1000s;
  }
  
  #mover:hover {
    -webkit-transform: translate(0px, 100px);
  }
  #mover.moving {
    -webkit-transform: translate(0px, 100px);
  }
  </style>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner)
      testRunner.waitUntilDone();

    function startTest()
    {
      window.setTimeout(function() {
        var mover = document.getElementById('mover');
        mover.className = 'moving';
        
        window.setTimeout(function() {
          if (window.testRunner)
            testRunner.notifyDone();
        }, 0);
        
      }, 0);
    }

    window.addEventListener('load', startTest, false);
  </script>
</head>
<body>

<p>Things should not jump around when the green square starts the transition.</p>
<div id="container">
  <div id="header">
    <div id="hanger"></div>
  </div>
  <div id="mover">
  </div>
</div>

</body>
</html>
