<!DOCTYPE html>
<!--
 | Test case which ensures that an animation assigned to an element who
 | has display: none will wait until display becomes non-none to begin.
 | From https://www.w3.org/TR/2013/WD-css3-animations-20130219/#animations,
 | "Setting the display property to ‘none’ will terminate any running animation
 |  applied to the element and its descendants. If an element has a display of
 |  ‘none’, updating display to a value other than ‘none’ will start all
 |  animations applied to the element by the ‘animation-name’ property, as well
 |  as all animations applied to descendants with display other than ‘none’."
 -->
<html>
<head>
  <style>
    @keyframes testAnimation{
      0% { transform: translate(0, 0); }
      50% { transform: translate(100px, 0); }
      100% { transform: translate(100px, 100px); }
    }
    #block {
      width: 100px;
      height: 100px;
      font-size: 30px;
      background-color: red;
    }
  </style>
</head>
<body>
  <div id="block"></div>

  <script>
    if (window.testRunner) {
      window.testRunner.waitUntilDone();
    }

    var blockDiv = document.getElementById('block');

    window.addEventListener('load', function() {
      if (window.testRunner) {
        // Run the transition to the half-way point.
        window.testRunner.AdvanceClockByMs(500);
        window.testRunner.DoNonMeasuredLayout();
      }

      blockDiv.style.display = "none";

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

      blockDiv.style.animation = "testAnimation 1s forwards";

      if (window.testRunner) {
        window.testRunner.DoNonMeasuredLayout();
        window.testRunner.AdvanceClockByMs(500);
        window.testRunner.DoNonMeasuredLayout();
      }

      blockDiv.style.display = "block";

      if (window.testRunner) {
        window.testRunner.DoNonMeasuredLayout();

        window.testRunner.AdvanceClockByMs(500);
        window.testRunner.notifyDone();
      }
    });
  </script>

</body>
</html>
