<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);
  </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>
