tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>