Node-lookupNamespaceURI.html (8737B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>LookupNamespaceURI and IsDefaultNamespace tests</title> 5 <script src=/resources/testharness.js></script> 6 <script src=/resources/testharnessreport.js></script> 7 </head> 8 <body> 9 <h1>LookupNamespaceURI and IsDefaultNamespace</h1> 10 <div id="log"/> 11 <script> 12 function lookupNamespaceURI(node, prefix, expected, name) { 13 test(function() { 14 assert_equals(node.lookupNamespaceURI(prefix), expected); 15 }, name); 16 } 17 18 function isDefaultNamespace(node, namespace, expected, name) { 19 test(function() { 20 assert_equals(node.isDefaultNamespace(namespace), expected); 21 }, name); 22 } 23 24 25 var frag = document.createDocumentFragment(); 26 lookupNamespaceURI(frag, null, null, 'DocumentFragment should have null namespace, prefix null'); 27 lookupNamespaceURI(frag, '', null, 'DocumentFragment should have null namespace, prefix ""'); 28 lookupNamespaceURI(frag, 'foo', null, 'DocumentFragment should have null namespace, prefix "foo"'); 29 lookupNamespaceURI(frag, 'xml', null, 'DocumentFragment should have null namespace, prefix "xml"'); 30 lookupNamespaceURI(frag, 'xmlns', null, 'DocumentFragment should have null namespace, prefix "xmlns"'); 31 isDefaultNamespace(frag, null, true, 'DocumentFragment is in default namespace, prefix null'); 32 isDefaultNamespace(frag, '', true, 'DocumentFragment is in default namespace, prefix ""'); 33 isDefaultNamespace(frag, 'foo', false, 'DocumentFragment is in default namespace, prefix "foo"'); 34 isDefaultNamespace(frag, 'xmlns', false, 'DocumentFragment is in default namespace, prefix "xmlns"'); 35 36 var docType = document.doctype; 37 lookupNamespaceURI(docType, null, null, 'DocumentType should have null namespace, prefix null'); 38 lookupNamespaceURI(docType, '', null, 'DocumentType should have null namespace, prefix ""'); 39 lookupNamespaceURI(docType, 'foo', null, 'DocumentType should have null namespace, prefix "foo"'); 40 lookupNamespaceURI(docType, 'xml', null, 'DocumentType should have null namespace, prefix "xml"'); 41 lookupNamespaceURI(docType, 'xmlns', null, 'DocumentType should have null namespace, prefix "xmlns"'); 42 isDefaultNamespace(docType, null, true, 'DocumentType is in default namespace, prefix null'); 43 isDefaultNamespace(docType, '', true, 'DocumentType is in default namespace, prefix ""'); 44 isDefaultNamespace(docType, 'foo', false, 'DocumentType is in default namespace, prefix "foo"'); 45 isDefaultNamespace(docType, 'xmlns', false, 'DocumentType is in default namespace, prefix "xmlns"'); 46 47 var fooElem = document.createElementNS('fooNamespace', 'prefix:elem'); 48 fooElem.setAttribute('bar', 'value'); 49 const XMLNS_NS = 'http://www.w3.org/2000/xmlns/'; 50 const XML_NS = 'http://www.w3.org/XML/1998/namespace'; 51 lookupNamespaceURI(fooElem, null, null, 'Element should have null namespace, prefix null'); 52 lookupNamespaceURI(fooElem, '', null, 'Element should have null namespace, prefix ""'); 53 lookupNamespaceURI(fooElem, 'fooNamespace', null, 'Element should not have namespace matching prefix with namespaceURI value'); 54 lookupNamespaceURI(fooElem, 'xml', XML_NS, 'Element should have XML namespace'); 55 lookupNamespaceURI(fooElem, 'xmlns', XMLNS_NS, 'Element should have XMLNS namespace'); 56 lookupNamespaceURI(fooElem, 'prefix', 'fooNamespace', 'Element has namespace URI matching prefix'); 57 isDefaultNamespace(fooElem, null, true, 'Empty namespace is not default, prefix null'); 58 isDefaultNamespace(fooElem, '', true, 'Empty namespace is not default, prefix ""'); 59 isDefaultNamespace(fooElem, 'fooNamespace', false, 'fooNamespace is not default'); 60 isDefaultNamespace(fooElem, XMLNS_NS, false, 'xmlns namespace is not default'); 61 62 fooElem.setAttributeNS(XMLNS_NS, 'xmlns:bar', 'barURI'); 63 fooElem.setAttributeNS(XMLNS_NS, 'xmlns', 'bazURI'); 64 65 lookupNamespaceURI(fooElem, null, 'bazURI', 'Element should have baz namespace, prefix null'); 66 lookupNamespaceURI(fooElem, '', 'bazURI', 'Element should have baz namespace, prefix ""'); 67 lookupNamespaceURI(fooElem, 'xmlns', XMLNS_NS, 'Element should have namespace with xmlns prefix'); 68 lookupNamespaceURI(fooElem, 'bar', 'barURI', 'Element has bar namespace'); 69 70 isDefaultNamespace(fooElem, null, false, 'Empty namespace is not default on fooElem, prefix null'); 71 isDefaultNamespace(fooElem, '', false, 'Empty namespace is not default on fooElem, prefix ""'); 72 isDefaultNamespace(fooElem, 'barURI', false, 'bar namespace is not default'); 73 isDefaultNamespace(fooElem, 'bazURI', true, 'baz namespace is default'); 74 75 var comment = document.createComment('comment'); 76 fooElem.appendChild(comment); 77 78 lookupNamespaceURI(comment, null, 'bazURI', 'Comment should inherit baz namespace'); 79 lookupNamespaceURI(comment, '', 'bazURI', 'Comment should inherit baz namespace'); 80 lookupNamespaceURI(comment, 'prefix', 'fooNamespace', 'Comment should inherit namespace URI matching prefix'); 81 lookupNamespaceURI(comment, 'bar', 'barURI', 'Comment should inherit bar namespace'); 82 83 isDefaultNamespace(comment, null, false, 'For comment, empty namespace is not default, prefix null'); 84 isDefaultNamespace(comment, '', false, 'For comment, empty namespace is not default, prefix ""'); 85 isDefaultNamespace(comment, 'fooNamespace', false, 'For comment, fooNamespace is not default'); 86 isDefaultNamespace(comment, XMLNS_NS, false, 'For comment, xmlns namespace is not default'); 87 isDefaultNamespace(comment, 'barURI', false, 'For comment, inherited bar namespace is not default'); 88 isDefaultNamespace(comment, 'bazURI', true, 'For comment, inherited baz namespace is default'); 89 90 var fooChild = document.createElementNS('childNamespace', 'childElem'); 91 fooElem.appendChild(fooChild); 92 93 lookupNamespaceURI(fooChild, null, 'childNamespace', 'Child element should inherit baz namespace'); 94 lookupNamespaceURI(fooChild, '', 'childNamespace', 'Child element should have null namespace'); 95 lookupNamespaceURI(fooChild, 'xmlns', XMLNS_NS, 'Child element should have XMLNS namespace'); 96 lookupNamespaceURI(fooChild, 'prefix', 'fooNamespace', 'Child element has namespace URI matching prefix'); 97 98 isDefaultNamespace(fooChild, null, false, 'Empty namespace is not default for child, prefix null'); 99 isDefaultNamespace(fooChild, '', false, 'Empty namespace is not default for child, prefix ""'); 100 isDefaultNamespace(fooChild, 'fooNamespace', false, 'fooNamespace is not default for child'); 101 isDefaultNamespace(fooChild, XMLNS_NS, false, 'xmlns namespace is not default for child'); 102 isDefaultNamespace(fooChild, 'barURI', false, 'bar namespace is not default for child'); 103 isDefaultNamespace(fooChild, 'bazURI', false, 'baz namespace is default for child'); 104 isDefaultNamespace(fooChild, 'childNamespace', true, 'childNamespace is default for child'); 105 106 document.documentElement.setAttributeNS(XMLNS_NS, 'xmlns:bar', 'barURI'); 107 document.documentElement.setAttributeNS(XMLNS_NS, 'xmlns', 'bazURI'); 108 109 lookupNamespaceURI(document, null, 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace, prefix null'); 110 lookupNamespaceURI(document, '', 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace, prefix ""'); 111 lookupNamespaceURI(document, 'prefix', null, 'Document has no namespace URI matching prefix'); 112 lookupNamespaceURI(document, 'bar', 'barURI', 'Document has bar namespace'); 113 114 isDefaultNamespace(document, null, false, 'For document, empty namespace is not default, prefix null'); 115 isDefaultNamespace(document, '', false, 'For document, empty namespace is not default, prefix ""'); 116 isDefaultNamespace(document, 'fooNamespace', false, 'For document, fooNamespace is not default'); 117 isDefaultNamespace(document, XMLNS_NS, false, 'For document, xmlns namespace is not default'); 118 isDefaultNamespace(document, 'barURI', false, 'For document, bar namespace is not default'); 119 isDefaultNamespace(document, 'bazURI', false, 'For document, baz namespace is not default'); 120 isDefaultNamespace(document, 'http://www.w3.org/1999/xhtml', true, 'For document, xhtml namespace is default'); 121 122 const doc = new Document(); 123 lookupNamespaceURI(doc, 'xml', null, 'Document without documentElement has no namespace URI matching "xml"'); 124 lookupNamespaceURI(doc, 'xmlns', null, 'Document without documentElement has no namespace URI matching "xmlns"'); 125 126 const attr = document.createAttribute('foo'); 127 lookupNamespaceURI(attr, 'xml', null, 'Disconnected Attr has no namespace URI matching "xml"'); 128 lookupNamespaceURI(attr, 'xmlns', null, 'Disconnected Attr has no namespace URI matching "xmlns"'); 129 document.body.setAttributeNode(attr); 130 lookupNamespaceURI(attr, 'xml', XML_NS, 'Connected Attr has namespace URI matching "xml"'); 131 lookupNamespaceURI(attr, 'xmlns', XMLNS_NS, 'Connected Attr no namespace URI matching "xmlns"'); 132 133 var comment = document.createComment('comment'); 134 document.appendChild(comment); 135 lookupNamespaceURI(comment, 'bar', null, 'Comment does not have bar namespace'); 136 137 </script> 138 </body> 139 </html>