<!DOCTYPE html>
<html>
<head></head> <!-- This element isn't necessary, but makes it straightforward to reason about the test when debugging it. -->
<body id="declarativeBody"></body>
<!-- Notice a <script> is only executed once. -->
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var savedDocumentElement;
function appendBodyElementToSavedDocument()
{
    document.removeEventListener("DOMNodeRemoved", appendBodyElementToSavedDocument, false);
    savedDocumentElement.appendChild(document.createElement("body")).id = "programmaticBody";
}

function insertSavedDocument()
{
    document.appendChild(savedDocumentElement); // Will execute <script id="script2">.
}

savedDocumentElement = document.documentElement;
document.addEventListener("DOMNodeRemoved", appendBodyElementToSavedDocument, false);
document.removeChild(savedDocumentElement); // Prevents <script id="script2"> from running since it won't be in the document when we fall off the end of this <script>.
window.setTimeout(insertSavedDocument, 0);
</script>
<!-- This must be in its own <script> so that we execute it (for the first time) when we re-insert it into the document in insertSavedDocument(). -->
<script id="script2">
document.write("PASS, removed element, with HTML attribute id, which was inserted on event DOMNodeRemoved."); // Destroys the entire document, including <body id="declarativeBody"> and <body id="programmaticBody">.
if (window.testRunner)
    testRunner.notifyDone();
</script>
</html>
