blob: 818ac90ec4e0d6faafba05f4c322bd32fcc237fc [file] [log] [blame]
<body>
<div id="result"></div>
<div style="position: relative; height: 200px; overflow: auto;">
<div id="target" style="height: 75%; background-color: red;"></div>
</div>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
window.onload = function () {
// Force a layout with offsetHeight, and then start toggling overflow.
target.offsetHeight;
toggleOverflow();
}
var callCount = 0;
var recursionDepth = 0;
var target = document.getElementById("target");
var result = document.getElementById("result");
function pass()
{
result.innerHTML = "PASS";
if (window.testRunner)
testRunner.notifyDone();
}
function fail()
{
result.innerHTML = "FAIL";
if (window.testRunner)
testRunner.notifyDone();
}
function toggleOverflow()
{
++recursionDepth;
++callCount;
// The code change associated with this test will cause this function to start
// firing asynchronously.
if (recursionDepth > 2) {
fail();
return;
}
// If we have made it this far without a recursionDepth of 2 or greater, then we
// can say that the test passed.
if (callCount > 8) {
pass();
return;
}
if (target.style.height === "75%")
target.style.height = "200%";
else
target.style.height = "75%";
target.offsetHeight;
--recursionDepth;
}
target.parentNode.addEventListener("overflowchanged", toggleOverflow);
</script>
</body>