<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Opacity between absolutes</title>
  <style type="text/css" media="screen">
    .container {
      position: relative;
      height: 200px;
      width: 200px;
      border: 1px solid black;
      -webkit-transform: translateZ(0);
    }

    .fader {
      height: 50px;
      width: 50px;
      margin: 20px;
      border: 1px solid black;
      -webkit-transition: opacity 100s;
    }
    
    .container:hover .fader {
      opacity: 0.5;
    }

    .inner {
      position: absolute;
      left: 100px;
      top: 100px;
      height: 80px;
      width: 80px;
      background-color: gray;
    }
    
    .inner:hover {
      background-color: orange !important;
    }
  </style>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner)
      testRunner.waitUntilDone();

    function runTest()
    {
      // Kick off an opacity fade to make .fader into a compositing layer
      var container = document.querySelectorAll('.fader')[1];
      container.style.opacity = 0.99;
      window.setTimeout(function() {
        // Now test redraw on .inner
        var inner = document.querySelectorAll('.inner')[0];
        inner.style.backgroundColor = 'green';
        if (window.testRunner)
          testRunner.notifyDone();
      }, 0);
    }

    window.addEventListener('load', runTest, false)
  </script>
</head>
<body>
<p>This test should not assert, and you should see a fully green square.</p>
<div class="container">
  <div class="fader">
    <div class="fader">
      <div class="inner">
      </div>
    </div>
  </div>
</div>

</body>
</html>
