<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <style>
  .outer {
    width: 120px;
    height: 230px;
    margin: 20px;
    border: 1px solid black;
    -webkit-box-reflect: right 10px;
  }
  
  .inner {
    margin: 10px;
    width: 100px;
    height: 100px;
    background-color: green;
    text-align: center;
    font-size: 50pt;
    -webkit-box-reflect: below 10px;
  }
  
  .composited {
    -webkit-transform: translateZ(0);
  }
  
  .masked {
    -webkit-mask: -webkit-gradient(linear, left top, right top, from(transparent), to(white));
  }
  </style>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner)
      testRunner.waitUntilDone();

    function doTest()
    {
      window.setTimeout(function() {
        document.getElementById('inner').className = 'inner composited masked';
        if (window.testRunner)
          testRunner.notifyDone();
      }, 0);
    }
    window.addEventListener('load', doTest, false);
  </script>
  </head>
<body>
<p>The four green squares should all have the mask applied.</p>
  <div class="outer box composited">
    <div id="inner" class="inner composited">
      1
    </div>
  </div>
</body>
</html>
