<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/elements-test.js"></script>
<script>

function removeDoctype()
{
    document.removeChild(document.firstChild);
}

function test()
{
    InspectorTest.expandElementsTree(step1);

    function step1()
    {
        InspectorTest.dumpElementsTree(null, 1);
        InspectorTest.evaluateInPage("removeDoctype()", step2);
    }

    function step2()
    {
        InspectorTest.dumpElementsTree(null, 1);
        InspectorTest.completeTest();
    }
}

</script>
</head>

<body onload="runTest()">
<p>
Tests that removing child from the document is handled properly in the elements panel.
</p>

</body>
</html>
