blob: 9ae57a0325a942bf0dda4ebfacbfad17ac9b1e16 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../../../resources/js-test-pre.js"></script>
<div id="testDiv"><p></p><p></p></div>
<script>
description("Tests that calls of insertBefore() lead to mutation events even if they are no-ops.");
jsTestIsAsync = true;
var testDiv = document.getElementById("testDiv");
var p1 = testDiv.firstChild;
var p2 = testDiv.lastChild;
var operations = [
function() { testDiv.insertBefore(p1, p1); },
function() { testDiv.insertBefore(p1, p2); }
];
var currentOperation = 0;
function testMutationObserver()
{
var config = { childList: true };
var observer = new MutationObserver(function(mutations) {
testPassed("Mutation observer was notified");
observer.disconnect();
testMutationEventListener();
});
observer.observe(testDiv, config);
operations[currentOperation]();
}
function subtreeModifiedHandler()
{
wasMutationEventListenerCalled = true;
}
function testMutationEventListener()
{
wasMutationEventListenerCalled = false;
testDiv.addEventListener("DOMSubtreeModified", subtreeModifiedHandler);
operations[currentOperation]();
shouldBeTrue("wasMutationEventListenerCalled");
testDiv.removeEventListener("DOMSubtreeModified", subtreeModifiedHandler);
currentOperation++;
if (currentOperation < operations.length)
testMutationObserver();
else
finishJSTest();
}
testMutationObserver();
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>