78 lines
2.5 KiB
HTML
78 lines
2.5 KiB
HTML
<!DOCTYPE html>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
description('Inserting DocumentFragments should remove all children of the fragment before inserting the children.');
|
|
|
|
window.jsTestIsAsync = true;
|
|
|
|
function createObservedFragment() {
|
|
var fragment = document.createDocumentFragment();
|
|
fragment.appendChild(document.createElement('b'));
|
|
fragment.appendChild(document.createElement('i'));
|
|
observer.observe(fragment, {childList: true});
|
|
return fragment;
|
|
}
|
|
|
|
function createObservedDiv() {
|
|
return div;
|
|
}
|
|
|
|
function callback(mutations) {
|
|
window.mutations = mutations;
|
|
}
|
|
var observer = new MutationObserver(callback);
|
|
|
|
function testAppendChild() {
|
|
debug('Testing appendChild');
|
|
var div = document.createElement('div');
|
|
observer.observe(div, {childList: true});
|
|
div.appendChild(createObservedFragment());
|
|
setTimeout(function() {
|
|
shouldBe('mutations.length', '2');
|
|
shouldBe('mutations[0].addedNodes.length', '0');
|
|
shouldBe('mutations[0].removedNodes.length', '2');
|
|
shouldBe('mutations[1].addedNodes.length', '2');
|
|
shouldBe('mutations[1].removedNodes.length', '0');
|
|
debug('');
|
|
testInsertBefore();
|
|
}, 0);
|
|
}
|
|
|
|
function testInsertBefore() {
|
|
debug('Testing insertBefore');
|
|
var div = document.createElement('div');
|
|
div.appendChild(document.createElement('span'));
|
|
observer.observe(div, {childList: true});
|
|
div.insertBefore(createObservedFragment(), div.firstChild);
|
|
setTimeout(function() {
|
|
shouldBe('mutations.length', '2');
|
|
shouldBe('mutations[0].addedNodes.length', '0');
|
|
shouldBe('mutations[0].removedNodes.length', '2');
|
|
shouldBe('mutations[1].addedNodes.length', '2');
|
|
shouldBe('mutations[1].removedNodes.length', '0');
|
|
debug('');
|
|
testReplaceChild();
|
|
}, 0);
|
|
}
|
|
|
|
function testReplaceChild() {
|
|
debug('Testing replaceChild');
|
|
var div = document.createElement('div');
|
|
div.appendChild(document.createElement('span'));
|
|
observer.observe(div, {childList: true});
|
|
div.replaceChild(createObservedFragment(), div.firstChild);
|
|
setTimeout(function() {
|
|
shouldBe('mutations.length', '2');
|
|
shouldBe('mutations[0].addedNodes.length', '0');
|
|
shouldBe('mutations[0].removedNodes.length', '2');
|
|
shouldBe('mutations[1].addedNodes.length', '2');
|
|
shouldBe('mutations[1].removedNodes.length', '1');
|
|
debug('');
|
|
finishJSTest();
|
|
}, 0);
|
|
}
|
|
|
|
testAppendChild();
|
|
</script>
|
|
<script src="../../../resources/js-test-post.js"></script>
|