<!DOCTYPE html>
<!--
 | Test outline width and color animations.
 -->
<html>
<head>
  <style>
    @keyframes testAnimation{
      0% { outline-color:#FF3D00; outline-width:20px; }
      50% { outline-color:#01579B; outline-width:10px; }
      100% { outline-color:#FF3D00; outline-width:20px; }
    }
    body {
      margin: 8px;
      font-size: 18px;
    }
    div {
      margin: 8px;
      display: inline-block;
      padding: 4px;
      animation: testAnimation 2s forwards;
    }
    .outline {
      outline-style: solid;
    }
    .border {
      border: #80CBC4 solid 8px;
      border-radius: 50%;
    }
  </style>
</head>
<body>
  <div class="outline"></div>
  <div class="border"></div>
  <div class="outline border"></div>

  <script>

    if (window.testRunner) {
      window.testRunner.waitUntilDone();
    }

    window.addEventListener('load', function() {
      if (window.testRunner) {
        // Run the animation to the half-way point and then measure the result.
        window.testRunner.AdvanceClockByMs(1000);
        window.testRunner.notifyDone();
      }
    });
  </script>

</body>
</html>
