| <!DOCTYPE html> | |
| <title>Node.removeChild</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="creators.js"></script> | |
| <div id="log"></div> | |
| <iframe src=about:blank></iframe> | |
| <script> | |
| var documents = [ | |
| [function() { return document }, "the main document"], | |
| [function() { return frames[0].document }, "a frame document"], | |
| [function() { return document.implementation.createHTMLDocument() }, | |
| "a synthetic document"], | |
| ]; | |
| documents.forEach(function(d) { | |
| var get = d[0], description = d[1] | |
| for (var p in creators) { | |
| var creator = creators[p]; | |
| test(function() { | |
| var doc = get(); | |
| var s = doc[creator]("a") | |
| assert_equals(s.ownerDocument, doc) | |
| assert_throws("NOT_FOUND_ERR", function() { document.body.removeChild(s) }) | |
| assert_equals(s.ownerDocument, doc) | |
| }, "Passing a detached " + p + " from " + description + | |
| " to removeChild should not affect it.") | |
| test(function() { | |
| var doc = get(); | |
| var s = doc[creator]("b") | |
| doc.documentElement.appendChild(s) | |
| assert_equals(s.ownerDocument, doc) | |
| assert_throws("NOT_FOUND_ERR", function() { document.body.removeChild(s) }) | |
| assert_equals(s.ownerDocument, doc) | |
| }, "Passing a non-detached " + p + " from " + description + | |
| " to removeChild should not affect it.") | |
| test(function() { | |
| var doc = get(); | |
| var s = doc[creator]("test") | |
| doc.body.appendChild(s) | |
| assert_equals(s.ownerDocument, doc) | |
| assert_throws("NOT_FOUND_ERR", function() { s.removeChild(doc) }) | |
| }, "Calling removeChild on a " + p + " from " + description + | |
| " with no children should throw NOT_FOUND_ERR.") | |
| } | |
| }); | |
| test(function() { | |
| assert_throws(new TypeError(), function() { document.body.removeChild(null) }) | |
| assert_throws(new TypeError(), function() { document.body.removeChild({'a':'b'}) }) | |
| }, "Passing a value that is not a Node reference to removeChild should throw TypeError.") | |
| </script> |