224 lines
10 KiB
HTML
224 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset=utf-8>
|
|
<title>Document.createElementNS</title>
|
|
<link rel=help href="https://dom.spec.whatwg.org/#dom-document-createelementns">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="Document-createElementNS.js"></script>
|
|
<div id="log"></div>
|
|
<iframe src="/common/dummy.xml"></iframe>
|
|
<iframe src="/common/dummy.xhtml"></iframe>
|
|
<script>
|
|
var tests = createElementNS_tests.concat([
|
|
/* Arrays with three elements:
|
|
* the namespace argument
|
|
* the qualifiedName argument
|
|
* the expected exception, or null if none
|
|
*/
|
|
["", "", "INVALID_CHARACTER_ERR"],
|
|
[null, "", "INVALID_CHARACTER_ERR"],
|
|
[undefined, "", "INVALID_CHARACTER_ERR"],
|
|
["http://example.com/", null, null],
|
|
["http://example.com/", "", "INVALID_CHARACTER_ERR"],
|
|
["/", null, null],
|
|
["/", "", "INVALID_CHARACTER_ERR"],
|
|
["http://www.w3.org/XML/1998/namespace", null, null],
|
|
["http://www.w3.org/XML/1998/namespace", "", "INVALID_CHARACTER_ERR"],
|
|
["http://www.w3.org/2000/xmlns/", null, "NAMESPACE_ERR"],
|
|
["http://www.w3.org/2000/xmlns/", "", "INVALID_CHARACTER_ERR"],
|
|
["foo:", null, null],
|
|
["foo:", "", "INVALID_CHARACTER_ERR"],
|
|
])
|
|
|
|
var xmlIframe = document.querySelector('[src="/common/dummy.xml"]');
|
|
var xhtmlIframe = document.querySelector('[src="/common/dummy.xhtml"]');
|
|
|
|
function runTest(t, i, desc) {
|
|
async_test(function(testObj) {
|
|
window.addEventListener("load", function() {
|
|
testObj.step(function() {
|
|
var doc;
|
|
if (desc == "HTML document") {
|
|
doc = document;
|
|
} else if (desc == "XML document") {
|
|
doc = xmlIframe.contentDocument;
|
|
// Make sure we're testing the right document
|
|
assert_equals(doc.documentElement.textContent, "Dummy XML document");
|
|
} else if (desc == "XHTML document") {
|
|
doc = xhtmlIframe.contentDocument;
|
|
assert_equals(doc.documentElement.textContent, "Dummy XHTML document");
|
|
}
|
|
var namespace = t[0], qualifiedName = t[1], expected = t[2]
|
|
if (expected != null) {
|
|
assert_throws_dom(expected, doc.defaultView.DOMException, function() {doc.createElementNS(namespace, qualifiedName) });
|
|
} else {
|
|
var element = doc.createElementNS(namespace, qualifiedName)
|
|
assert_not_equals(element, null)
|
|
assert_equals(element.nodeType, Node.ELEMENT_NODE)
|
|
assert_equals(element.nodeType, element.ELEMENT_NODE)
|
|
assert_equals(element.nodeValue, null)
|
|
assert_equals(element.ownerDocument, doc)
|
|
var qualified = String(qualifiedName), names = []
|
|
if (qualified.indexOf(":") >= 0) {
|
|
names = qualified.split(":", 2)
|
|
} else {
|
|
names = [null, qualified]
|
|
}
|
|
assert_equals(element.prefix, names[0])
|
|
assert_equals(element.localName, names[1])
|
|
assert_equals(element.tagName, qualified)
|
|
assert_equals(element.nodeName, qualified)
|
|
assert_equals(element.namespaceURI,
|
|
namespace === undefined || namespace === "" ? null
|
|
: namespace)
|
|
}
|
|
});
|
|
testObj.done();
|
|
});
|
|
}, "createElementNS test in " + desc + ": " + t.map(format_value))
|
|
}
|
|
|
|
tests.forEach(function(t, i) {
|
|
runTest(t, i, "HTML document")
|
|
runTest(t, i, "XML document")
|
|
runTest(t, i, "XHTML document")
|
|
})
|
|
|
|
|
|
test(function() {
|
|
var HTMLNS = "http://www.w3.org/1999/xhtml";
|
|
var element = document.createElementNS(HTMLNS, "span");
|
|
assert_equals(element.namespaceURI, HTMLNS);
|
|
assert_equals(element.prefix, null);
|
|
assert_equals(element.localName, "span");
|
|
assert_equals(element.tagName, "SPAN");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
|
|
assert_true(element instanceof HTMLSpanElement, "Should be an HTMLSpanElement");
|
|
}, "Lower-case HTML element without a prefix");
|
|
|
|
test(function() {
|
|
var HTMLNS = "http://www.w3.org/1999/xhtml";
|
|
var element = document.createElementNS(HTMLNS, "html:span");
|
|
assert_equals(element.namespaceURI, HTMLNS);
|
|
assert_equals(element.prefix, "html");
|
|
assert_equals(element.localName, "span");
|
|
assert_equals(element.tagName, "HTML:SPAN");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
|
|
assert_true(element instanceof HTMLSpanElement, "Should be an HTMLSpanElement");
|
|
}, "Lower-case HTML element with a prefix");
|
|
|
|
test(function() {
|
|
var element = document.createElementNS("test", "span");
|
|
assert_equals(element.namespaceURI, "test");
|
|
assert_equals(element.prefix, null);
|
|
assert_equals(element.localName, "span");
|
|
assert_equals(element.tagName, "span");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "Lower-case non-HTML element without a prefix");
|
|
|
|
test(function() {
|
|
var element = document.createElementNS("test", "html:span");
|
|
assert_equals(element.namespaceURI, "test");
|
|
assert_equals(element.prefix, "html");
|
|
assert_equals(element.localName, "span");
|
|
assert_equals(element.tagName, "html:span");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "Lower-case non-HTML element with a prefix");
|
|
|
|
test(function() {
|
|
var HTMLNS = "http://www.w3.org/1999/xhtml";
|
|
var element = document.createElementNS(HTMLNS, "SPAN");
|
|
assert_equals(element.namespaceURI, HTMLNS);
|
|
assert_equals(element.prefix, null);
|
|
assert_equals(element.localName, "SPAN");
|
|
assert_equals(element.tagName, "SPAN");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
|
|
assert_true(element instanceof HTMLUnknownElement, "Should be an HTMLUnknownElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "Upper-case HTML element without a prefix");
|
|
|
|
test(function() {
|
|
var HTMLNS = "http://www.w3.org/1999/xhtml";
|
|
var element = document.createElementNS(HTMLNS, "html:SPAN");
|
|
assert_equals(element.namespaceURI, HTMLNS);
|
|
assert_equals(element.prefix, "html");
|
|
assert_equals(element.localName, "SPAN");
|
|
assert_equals(element.tagName, "HTML:SPAN");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "Upper-case HTML element with a prefix");
|
|
|
|
test(function() {
|
|
var element = document.createElementNS("test", "SPAN");
|
|
assert_equals(element.namespaceURI, "test");
|
|
assert_equals(element.prefix, null);
|
|
assert_equals(element.localName, "SPAN");
|
|
assert_equals(element.tagName, "SPAN");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "Upper-case non-HTML element without a prefix");
|
|
|
|
test(function() {
|
|
var element = document.createElementNS("test", "html:SPAN");
|
|
assert_equals(element.namespaceURI, "test");
|
|
assert_equals(element.prefix, "html");
|
|
assert_equals(element.localName, "SPAN");
|
|
assert_equals(element.tagName, "html:SPAN");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "Upper-case non-HTML element with a prefix");
|
|
|
|
test(function() {
|
|
var element = document.createElementNS(null, "span");
|
|
assert_equals(element.namespaceURI, null);
|
|
assert_equals(element.prefix, null);
|
|
assert_equals(element.localName, "span");
|
|
assert_equals(element.tagName, "span");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "null namespace");
|
|
|
|
test(function() {
|
|
var element = document.createElementNS(undefined, "span");
|
|
assert_equals(element.namespaceURI, null);
|
|
assert_equals(element.prefix, null);
|
|
assert_equals(element.localName, "span");
|
|
assert_equals(element.tagName, "span");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "undefined namespace");
|
|
|
|
test(function() {
|
|
var element = document.createElementNS("", "span");
|
|
assert_equals(element.namespaceURI, null);
|
|
assert_equals(element.prefix, null);
|
|
assert_equals(element.localName, "span");
|
|
assert_equals(element.tagName, "span");
|
|
assert_true(element instanceof Node, "Should be a Node");
|
|
assert_true(element instanceof Element, "Should be an Element");
|
|
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
|
|
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
|
|
}, "empty string namespace");
|
|
</script>
|