81 lines
3.3 KiB
HTML
81 lines
3.3 KiB
HTML
<!DOCTYPE html>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
var parser = new DOMParser();
|
|
var serializer = new XMLSerializer();
|
|
var doc, newChild, fragment;
|
|
|
|
function dumpDocument() {
|
|
debug(escapeHTML(serializer.serializeToString(doc)) + '<br>');
|
|
}
|
|
|
|
function test(name, fn) {
|
|
debug(name);
|
|
fn();
|
|
dumpDocument();
|
|
}
|
|
|
|
description('This tests that various combinations of replaceChild on the document works as specified.');
|
|
|
|
test('replacing element with element', function() {
|
|
doc = parser.parseFromString('<!DOCTYPE html><body/>', 'text/xml');
|
|
newChild = doc.createElement('div');
|
|
|
|
shouldNotThrow('doc.replaceChild(newChild, doc.documentElement)');
|
|
});
|
|
|
|
test('replacing element with element in fragment', function() {
|
|
doc = parser.parseFromString('<!DOCTYPE html><body/>', 'text/xml');
|
|
fragment = doc.createDocumentFragment();
|
|
fragment.appendChild(doc.createElement('div'));
|
|
|
|
shouldNotThrow('doc.replaceChild(fragment, doc.documentElement);');
|
|
});
|
|
|
|
test('replacing element with multiple elements in fragment', function() {
|
|
doc = parser.parseFromString('<!DOCTYPE html><body/>', 'text/xml');
|
|
fragment = doc.createDocumentFragment();
|
|
fragment.appendChild(doc.createElement('div'));
|
|
fragment.appendChild(doc.createElement('span'));
|
|
|
|
shouldThrow('doc.replaceChild(fragment, doc.documentElement);');
|
|
});
|
|
|
|
test('replacing element with doctype', function() {
|
|
doc = parser.parseFromString('<body/>', 'text/xml');
|
|
newChild = doc.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');
|
|
|
|
shouldNotThrow('doc.replaceChild(newChild, doc.documentElement)');
|
|
});
|
|
|
|
test('replacing element with doctype when a doctype already exists', function() {
|
|
doc = parser.parseFromString('<!DOCTYPE html><body/>', 'text/xml');
|
|
newChild = doc.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');
|
|
|
|
shouldThrow('doc.replaceChild(newChild, doc.documentElement)');
|
|
});
|
|
|
|
test('replacing doctype with doctype', function() {
|
|
doc = parser.parseFromString('<!DOCTYPE html><body/>', 'text/xml');
|
|
newChild = doc.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');
|
|
|
|
shouldNotThrow('doc.replaceChild(newChild, doc.doctype)');
|
|
});
|
|
|
|
test('replacing doctype with element', function() {
|
|
doc = parser.parseFromString('<!DOCTYPE html><body/>', 'text/xml');
|
|
doc.removeChild(doc.documentElement);
|
|
newChild = doc.createElement('bar');
|
|
|
|
shouldNotThrow('doc.replaceChild(newChild, doc.doctype)');
|
|
});
|
|
|
|
test('replacing element with doctype when an element already exists', function() {
|
|
doc = parser.parseFromString('<!DOCTYPE html><body/>', 'text/xml');
|
|
newChild = doc.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');
|
|
|
|
shouldThrow('doc.replaceChild(newChild, doc.documentElement)');
|
|
});
|
|
</script>
|
|
<script src="../../../resources/js-test-post.js"></script>
|