<!DOCTYPE html>
<script src="../../resources/run-after-layout-and-paint.js"></script>
<style>
.container {
width: 100px;
height:100px;
position:absolute;
transform:translateZ(0);
overflow:auto;
}

.content {
transform: translateZ(0);
position:absolute;
width:10px;
height:10px;
}

.tall {
height:200px;
}

.wide {
width:200px;
}

.resizeWidget {
resize: both;
}

</style>
<pre id="layerTree"></pre>
<div class="container">
  <div id="vertical" class="content tall"></div>
</div>
<div class="container">
  <div id="horizontal" class="content wide"></div>
</div>
<div class="container">
  <div id="both" class="content tall wide"></div>
</div>
<div id="corner" class="container resizeWidget">
  <div class="content"></div>
</div>
<script>
function finishTest() {
    document.getElementById("vertical").classList.remove("tall"); // topmost div loses a vertical scrollbar
    document.getElementById("horizontal").classList.remove("wide"); // second div loses a horizontal scrollbar
    document.getElementById("both").classList.remove("wide"); // third div loses both
    document.getElementById("both").classList.remove("tall"); // vertical and horizontal scrollbars
    document.getElementById("corner").classList.remove("resizeWidget"); // bottom div loses a resize corner but no scrollbars
    if (window.testRunner) {
        document.getElementById("layerTree").innerText = internals.layerTreeAsText(document);
        testRunner.notifyDone();
    }
}

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
runAfterLayoutAndPaint(finishTest);
</script>
