58 lines
1.5 KiB
HTML
58 lines
1.5 KiB
HTML
<!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>
|