<!DOCTYPE html>
<html>
<body>
<script src="../../../resources/js-test-pre.js"></script>
<div id="testDiv"><p></p></div>
<script>
description("Tests that calls of appendChild() lead to mutation events even if they are no-ops.");
jsTestIsAsync = true;

var testDiv = document.getElementById("testDiv");

function testMutationObserver()
{
    var config = { childList: true };
    var observer = new MutationObserver(function(mutations) {
        testPassed("Mutation observer was notified");
        observer.disconnect();
        testMutationEventListener();
    });

    observer.observe(testDiv, config);
    testDiv.appendChild(testDiv.lastChild);
}

function testMutationEventListener()
{
    wasMutationEventListenerCalled = false;
    testDiv.addEventListener("DOMSubtreeModified", function() {
        wasMutationEventListenerCalled = true;
    });
    testDiv.appendChild(testDiv.lastChild);
    shouldBeTrue("wasMutationEventListenerCalled");
    finishJSTest();
}

testMutationObserver();
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
