<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->
<html>
<head>
  <style>
    img {
        margin: 10px;
    }

    #grayscale-box {
        -webkit-transition: -webkit-filter 5s;
        -webkit-filter: grayscale(0);
    }

    .trigger #grayscale-box {
        -webkit-filter: grayscale(1);
    }

    #sepia-box {
        -webkit-filter: sepia(1);
    }

    #saturate-box {
        -webkit-transition: -webkit-filter 5s;
        -webkit-filter: saturate(0);
    }

    .trigger #saturate-box {
        -webkit-filter: saturate(1);
    }

    #huerotate-box {
        -webkit-filter: hue-rotate(90deg);
    }

    #invert-box {
        -webkit-transition: -webkit-filter 5s;
        -webkit-filter: invert(0);
    }

    .trigger #invert-box {
        -webkit-filter: invert(1);
    }

    #opacity-box {
        -webkit-filter: opacity(0.5);
    }

    #brightness-box {
        -webkit-transition: -webkit-filter 5s;
        -webkit-filter: brightness(0);
    }

    .trigger #brightness-box {
        -webkit-filter: brightness(1);
    }

    #contrast-box {
        -webkit-filter: contrast(0);
    }
  </style>
  <script>
      if (window.testRunner) {
          testRunner.waitUntilDone();
          testRunner.dumpAsText();
      }

      function doTest() {
          if (window.testRunner) {
              document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document)
              testRunner.notifyDone();
          }
      }

      function triggerTransition() {
          document.body.className = "trigger";
          setTimeout(doTest, 200);
      }

      window.addEventListener("load", triggerTransition, false);
  </script>
</head>
<body>

<!-- Every third image below will transition, and thus might
     get a compositing layer. Every 3n+1 element is not transitioning but
     has a static filter, and shouldn't need a compositing layer.
     Every 3n+2 element is a purely static image, and shouldn't
     even be a layer -->
<img src="resources/reference.png" id="grayscale-box">
<img src="resources/reference.png" id="sepia-box">
<img src="resources/reference.png">
<br>
<img src="resources/reference.png" id="saturate-box">
<img src="resources/reference.png" id="huerotate-box">
<img src="resources/reference.png">
<br>
<img src="resources/reference.png" id="invert-box">
<img src="resources/reference.png" id="opacity-box">
<img src="resources/reference.png">
<br>
<img src="resources/reference.png" id="brightness-box">
<img src="resources/reference.png" id="contrast-box">
<img src="resources/reference.png">

<pre id="layer-tree">Layer tree goes here in DRT</pre>

</body>
</html>
