<script>

// This tests a particular sequence of render tree changes, which
// caused a crash in the code that maintains the line box tree.
// Even small changes to the test make it no longer crash, so it
// should be left as-is. That's why the test results don't say
// anything about what this tests -- adding that caused the crash
// to go away!

function turnAnchorIntoBlock()
{
    document.getElementById("a").style.display = "block";
    document.getElementById("span").firstChild.data = "PASSED";
    if (window.layoutTestController)
        layoutTestController.notifyDone();
}

function turnSpanIntoBlock()
{
    document.body.offsetHeight; // trigger layout
    document.getElementById("span").style.display = "block";
    
    setTimeout(turnAnchorIntoBlock, 0);
}

function runTest()
{
    if (window.layoutTestController) {
        layoutTestController.dumpAsText();
        layoutTestController.waitUntilDone();
    }
    setTimeout(turnSpanIntoBlock, 0);
}

</script>

<body onload="runTest()">

<a id="a">
    <span id="span">TEST HAS NOT RUN YET</span>
</a>

</body>
