98 lines
2.4 KiB
HTML
98 lines
2.4 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
|
|
window.jsTestIsAsync = true;
|
|
var mutations;
|
|
var div, subDiv;
|
|
|
|
function testBasic() {
|
|
var observer;
|
|
|
|
function start() {
|
|
debug('Testing basic aspects of cross-document observation.');
|
|
|
|
mutations = null;
|
|
div = document.createElement('div');
|
|
observer = new MutationObserver(function(mutations) {
|
|
window.mutations = mutations;
|
|
});
|
|
|
|
observer.observe(div, {attributes: true});
|
|
var newDoc = document.implementation.createDocument('', '', null);
|
|
newDoc.appendChild(div);
|
|
div.id = 'foo';
|
|
setTimeout(finish, 0);
|
|
}
|
|
|
|
function finish() {
|
|
shouldBe('mutations.length', '1');
|
|
shouldBe('mutations[0].type', '"attributes"');
|
|
shouldBe('mutations[0].target', 'div');
|
|
shouldBe('mutations[0].attributeName', '"id"');
|
|
shouldBe('mutations[0].attributeNamespace', 'null');
|
|
observer.disconnect();
|
|
debug('');
|
|
runNextTest();
|
|
}
|
|
|
|
start();
|
|
}
|
|
|
|
function testSubtree() {
|
|
var observer;
|
|
|
|
function start() {
|
|
debug('Testing that subtree observation works after node is moved.');
|
|
|
|
mutations = null;
|
|
div = document.createElement('div');
|
|
subDiv = div.appendChild(document.createElement('div'));
|
|
observer = new MutationObserver(function(mutations) {
|
|
window.mutations = mutations;
|
|
});
|
|
|
|
observer.observe(div, {attributes: true, subtree: true});
|
|
var newDoc = document.implementation.createDocument('', '', null);
|
|
newDoc.appendChild(div);
|
|
subDiv.id = 'foo';
|
|
setTimeout(finish, 0);
|
|
}
|
|
|
|
function finish() {
|
|
shouldBe('mutations.length', '1');
|
|
shouldBe('mutations[0].type', '"attributes"');
|
|
shouldBe('mutations[0].target', 'subDiv');
|
|
shouldBe('mutations[0].attributeName', '"id"');
|
|
shouldBe('mutations[0].attributeNamespace', 'null');
|
|
observer.disconnect();
|
|
debug('');
|
|
runNextTest();
|
|
}
|
|
|
|
start();
|
|
}
|
|
|
|
var tests = [testBasic, testSubtree];
|
|
var testIndex = 0;
|
|
|
|
function runNextTest() {
|
|
if (testIndex < tests.length)
|
|
tests[testIndex++]();
|
|
else
|
|
finishJSTest();
|
|
}
|
|
|
|
description('Test that MutationObservers move correctly across documents');
|
|
|
|
runNextTest();
|
|
|
|
</script>
|
|
<script src="../../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|