<html>
    <head>
        <script src="resources/dump-list.js"></script>
        <script>
            function test()
            {
                if (window.testRunner)
                    testRunner.dumpAsText();

                var list = document.getElementById("list");
                list.offsetTop; // Force a relayout.

                var nestedList = document.getElementById("nested-list");
                var items = nestedList.children.length;
                for (var i = 0; i < items; ++i)
                    nestedList.removeChild(nestedList.firstElementChild);

                document.getElementById("console").innerHTML = dumpList(list);

                // Don't show the actual list as it is useless in the text-only mode.
                list.parentNode.removeChild(list);
            }
        </script>
    </head>
    <body onload="test()">
        <p>This tests that list item markers do not change when removing existing items from a nested list.</p>
        <ol id="list">
            <li>One</li>
            <li>Two</li>
            <li>Three</li>
            <li>Four</li>
            <li>Five
                <ol id="nested-list">
                    <li>One</li>
                    <li>Two</li>
                    <li>Three</li>
                </ol>
            </li>
            <li value="1">One</li>
            <li>Two</li>
        </ol>

        <div id="console"></div>
    </body>
</html>
