test_custom_element_namespace.xhtml (3682B)
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <title>Custom Elements in an XHTML document</title> 6 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 8 <script> 9 SimpleTest.waitForExplicitFinish(); 10 11 const HTML_NS = "http://www.w3.org/1999/xhtml"; 12 const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 13 14 class TestXULCustomElement extends XULElement { 15 constructor() { 16 super(); 17 } 18 19 get connected() { 20 return true; 21 } 22 } 23 24 customElements.define("test-xul-element", TestXULCustomElement); 25 26 class TestHTMLCustomElement extends HTMLElement { 27 constructor() { 28 super(); 29 } 30 31 get connected() { 32 return true; 33 } 34 } 35 36 customElements.define("test-html-element", TestHTMLCustomElement); 37 38 function checkElement(element, ns, connected, type) { 39 is(element.namespaceURI, ns, `${type} should have the correct namespace`); 40 if (connected) { 41 ok(element.connected, `${type} should have applied the class`); 42 } else { 43 is(element.connected, undefined, `${type} should not have applied the class`); 44 } 45 } 46 47 function runTest() { 48 let element = new TestXULCustomElement(); 49 checkElement(element, XUL_NS, true, "instantiated XUL"); 50 51 element = document.getElementById("xul1"); 52 checkElement(element, XUL_NS, true, "parsed XUL as XUL"); 53 54 element = document.getElementById("xul2"); 55 checkElement(element, HTML_NS, false, "parsed XUL as HTML"); 56 57 element = document.createElement("test-xul-element"); 58 checkElement(element, HTML_NS, false, "document.createElement(XUL)"); 59 60 element = document.createXULElement("test-xul-element"); 61 checkElement(element, XUL_NS, true, "document.createXULElement(XUL)"); 62 63 element = document.createElementNS(XUL_NS, "test-xul-element"); 64 checkElement(element, XUL_NS, true, "document.createElementNS(XUL, XUL)"); 65 66 element = document.createElementNS(HTML_NS, "test-xul-element"); 67 checkElement(element, HTML_NS, false, "document.createElementNS(HTML, XUL)"); 68 69 element = new TestHTMLCustomElement(); 70 checkElement(element, HTML_NS, true, "instantiated HTML"); 71 72 element = document.getElementById("html1"); 73 checkElement(element, XUL_NS, false, "parsed HTML as XUL"); 74 75 element = document.getElementById("html2"); 76 checkElement(element, HTML_NS, true, "parsed HTML as HTML"); 77 78 element = document.createElement("test-html-element"); 79 checkElement(element, HTML_NS, true, "document.createElement(HTML)"); 80 81 element = document.createXULElement("test-html-element"); 82 checkElement(element, XUL_NS, false, "document.createXULElement(HTML)"); 83 84 element = document.createElementNS(XUL_NS, "test-html-element"); 85 checkElement(element, XUL_NS, false, "document.createElementNS(XUL, HTML)"); 86 87 element = document.createElementNS(HTML_NS, "test-html-element"); 88 checkElement(element, HTML_NS, true, "document.createElementNS(HTML, HTML)"); 89 90 SimpleTest.finish(); 91 } 92 </script> 93 </head> 94 <body onload="runTest();"> 95 <p id="display"></p> 96 <div id="content"> 97 <test-xul-element xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="xul1"/> 98 <test-html-element xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="html1"/> 99 <test-xul-element id="xul2"/> 100 <test-html-element id="html2"/> 101 </div> 102 <pre id="test"></pre> 103 </body> 104 </html>