<html>
<head>
  <style>
    .box {
      position: relative;
      left: 0;
      height: 100px;
      width: 100px;
      margin: 10px;
      background-color: blue;
      -webkit-transition-property: width, left, background-color, height, top;
      -webkit-transition-duration: 0.2s;
    }
    
    .box1 {
      left: 50px;
    }
    
    .box2 {
      background-color: red;
      left: 100px;
    }
  </style>
  <script src="transition-end-event-helpers.js"></script>
  <script type="text/javascript">
    
    var expectedEndEvents = [
      // [property-name, element-id, elapsed-time, listen]
      ["left", "box1", 0.2, false],
    ];
    
    function startTransition()
    {
      var box = document.getElementById("box1");
      box.className = "box box2";
    }
    
    var firstTimeInHandleEndEvent = true;
    function handleEndEvent(event)
    {
      recordTransitionEndEvent(event);
      
      event.target.style.webkitTransitionProperty = "none";
      if (firstTimeInHandleEndEvent) {
        firstTimeInHandleEndEvent = false;
        window.setTimeout(startTransition, 100);
      }
    }

    function setupTest()
    {
      var box = document.getElementById("box1");
      box.addEventListener("webkitTransitionEnd", handleEndEvent, false);
      box.className = "box box1";
    }
    
    // We need to pass an explicit maxTime because we use two sequential
    // transitions that each take 0.2s.
    runTransitionTest(expectedEndEvents, setupTest, 0.5);
  </script>
</head>
<body>

<p>Initiating transitions on various properties of all boxes.</p>

<div id="container">
  <div id="box1" class="box"></div>
</div>

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

</body>
</html>
