| <!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> |