<!DOCTYPE html>
<html>
<head>
<style>
  .large {
      width: 100px;
      height: 100px;
  }

  .medium {
      width: 65px;
      height: 65px;
  }

  .small {
      width: 30px;
      height: 30px;
  }

  .backfaceHidden {
      -webkit-backface-visibility: hidden;
  }

  .green {
      background-color: green
  }

  .blue {
      background-color: blue
  }

  .lime {
      background-color: lime
  }

  #testCase1 {
      position: absolute;
      top: 50px;
      left: 10px;
  }

  #testCase2 {
      position: absolute;
      top: 160px;
      left: 10px;
  }

  #testCase3 {
      position: absolute;
      top: 270px;
      left: 10px;
  }

  #testCase4 {
      position: absolute;
      top: 380px;
      left: 10px;
  }
</style>
</head>
<body>

<!-- This test checks various configurations of backface visibility when there is a 3d
     rendering context. -->

<!-- The blue div is a 3d rendering context, containing the lime div. No back faces are
     visible, so we should see all three divs. -->
<div class="large green" id="testCase1">
  <div class="medium blue" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateY(0deg); -webkit-transform-style: preserve-3d">
    <div class="small lime" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateX(0deg)">
    </div>
  </div>
</div>

<!-- The blue div is a 3d rendering context, containing the lime div. The lime div should
     inherit the blue div's transform, so both divs are showing their backface and both
     should disappear. -->
<div class="large green" id="testCase2">
  <div class="medium blue" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateY(180deg); -webkit-transform-style: preserve-3d">
    <div class="small lime" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateX(0deg)">
    </div>
  </div>
</div>

<!-- The blue div is a 3d rendering context, containing the lime div. The lime div should
     become invisible when it shows its backface. -->
<div class="large green" id="testCase3">
  <div class="medium blue" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateY(0deg); -webkit-transform-style: preserve-3d">
    <div class="small lime" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateX(180deg)">
    </div>
  </div>
</div>

<!-- The blue div is a 3d rendering context, containing the lime div. The lime div should
     inherit the blue div's transform, but because it flips twice (once around Y, once
     around X), its shows its front face and should be visible. This happens BEFORE the
     lime div flattens to the rendering context, so the lime div should remain visible. -->
<div id="testCase4" class="large green">
  <div class="medium blue" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateY(180deg); -webkit-transform-style: preserve-3d">
    <div class="small lime" style="-webkit-backface-visibility: hidden; -webkit-transform: rotateX(180deg)">
    </div>
  </div>
</div>

<script>
  if (window.testRunner) {
      testRunner.dumpAsText(true);  // This is only useful as a pixel test.
      document.write("<span style='position:absolute; top:-5000px'>This test is only useful as a pixel test</span>");
  }
</script>
</body>
</html>
