<html>
<body onload="runTest();">
<span style="display: run-in" id="runIn">
</span>
<span style="display: list-item" id="listItem">
</span>
<div id="result"></div>
<script>
if (window.testRunner)
{
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function runTest()
{
    document.body.offsetTop;
    var runIn = document.getElementById('runIn');
    var listItem = document.getElementById('listItem');

    runIn.appendChild(document.createElement('menu'));
    
    ol = document.createElement('ol');
    listItem.appendChild(ol);
    listItem.appendChild(document.createElement('i'));
    
    document.body.offsetTop;
    listItem.removeChild(ol);
    document.body.removeChild(runIn);
    document.body.removeChild(listItem);

    document.getElementById('result').innerHTML = "PASS";
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</body>
</html>
