1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=450160
-->
<head>
<title>Test for Bug 450160</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=450160">Mozilla Bug 450160</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 450160 **/
function testHTMLDocuments(ids, isXHTML) {
for (var i = 0; i < ids.length; ++i) {
var docType1 =
document.implementation.createDocumentType(isXHTML ? "html" : "HTML",
ids[i],
null);
ok(docType1, "No doctype?");
ok(docType1.ownerDocument, "docType should have ownerDocument!");
var doc1 = document.implementation.createDocument(null, null, docType1);
is(docType1.ownerDocument, doc1, "docType should have ownerDocument!");
ok(!doc1.documentElement, "Document shouldn't have document element!");
is(doc1.body, null, "Shouldn't have .body!");
ok(doc1 instanceof SpecialPowers.Ci.nsIDOMHTMLDocument,
"Document should be an HTML document!");
ok(!(doc1 instanceof SpecialPowers.Ci.nsIDOMSVGDocument),
"Document shouldn't be an SVG document!");
var docType2 =
document.implementation.createDocumentType(isXHTML ? "html" : "HTML",
ids[i],
null);
var doc2 = document.implementation.createDocument(
"http://www.w3.org/1999/xhtml", "html", docType2);
is(docType2.ownerDocument, doc2, "docType should have ownerDocument!");
ok(doc2.documentElement, "Document should have document element!");
is(doc2.documentElement.localName, "html", "Wrong document element!");
is(doc2.body, null, "Shouldn't have .body!");
doc2.documentElement.appendChild(doc2.createElement("body"));
is(doc2.body, doc2.documentElement.firstChild, "Should have .body!");
if (isXHTML) {
doc2.body.appendChild(doc2.createElementNS("http://www.w3.org/1999/xhtml", "form"));
} else {
doc2.body.appendChild(doc2.createElement("form"));
}
is(doc2.forms.length, 1, "Form wasn't added .forms");
}
}
function testSVGDocument() {
var docType1 =
document.implementation.createDocumentType("svg",
"-//W3C//DTD SVG 1.1//EN",
null);
ok(docType1, "No doctype?");
ok(docType1.ownerDocument, "docType should have ownerDocument!");
var doc1 = document.implementation.createDocument(null, null, docType1);
is(docType1.ownerDocument, doc1, "docType should have ownerDocument!");
ok(!doc1.documentElement, "Document shouldn't have document element!");
ok(!(doc1 instanceof SpecialPowers.Ci.nsIDOMHTMLDocument),
"Document shouldn't be an HTML document!");
ok(doc1 instanceof SpecialPowers.Ci.nsIDOMSVGDocument,
"Document should be an SVG document!");
// SVG documents have .rootElement.
ok("rootElement" in doc1, "No .rootElement in document");
var docType2 =
document.implementation.createDocumentType("svg",
"-//W3C//DTD SVG 1.1//EN",
null);
var doc2 = document.implementation.createDocument("http://www.w3.org/2000/svg",
"svg", docType2);
ok(doc2.documentElement, "Document should have document element!");
ok(doc2.rootElement, "Should have .rootElement in document");
is(doc2.rootElement.localName, "svg", "Wrong .rootElement!");
}
function testFooBarDocument() {
var docType1 =
document.implementation.createDocumentType("FooBar", "FooBar", null);
ok(docType1, "No doctype?");
ok(docType1.ownerDocument, "docType should have ownerDocument!");
var doc1 = document.implementation.createDocument(null, null, docType1);
is(docType1.ownerDocument, doc1, "docType should have ownerDocument!");
ok(!doc1.documentElement, "Document shouldn't have document element!");
ok(!(doc1 instanceof SpecialPowers.Ci.nsIDOMHTMLDocument),
"Document shouldn't be an HTML document!");
ok(!(doc1 instanceof SpecialPowers.Ci.nsIDOMSVGDocument),
"Document shouldn't be an SVG document!");
var docType2 =
document.implementation.createDocumentType("FooBar", "FooBar", null);
var doc2 = document.implementation.createDocument("FooBarNS",
"FooBar", docType2);
ok(doc2.documentElement, "Document should have document element!");
is(doc2.documentElement.namespaceURI, "FooBarNS", "Wrong namespaceURI!");
is(doc2.documentElement.localName, "FooBar", "Wrong localName!");
}
function testNullDocTypeDocument() {
var doc1 = document.implementation.createDocument(null, null, null);
ok(!doc1.documentElement, "Document shouldn't have document element!");
ok(!(doc1 instanceof SpecialPowers.Ci.nsIDOMHTMLDocument),
"Document shouldn't be an HTML document!");
ok(!(doc1 instanceof SpecialPowers.Ci.nsIDOMSVGDocument),
"Document shouldn't be an SVG document!");
var doc2 = document.implementation.createDocument("FooBarNS",
"FooBar", null);
ok(doc2.documentElement, "Document should have document element!");
is(doc2.documentElement.namespaceURI, "FooBarNS", "Wrong namespaceURI!");
is(doc2.documentElement.localName, "FooBar", "Wrong localName!");
}
var htmlPublicIDs =
[ "-//W3C//DTD HTML 4.01//EN",
"-//W3C//DTD HTML 4.01 Transitional//EN",
"-//W3C//DTD HTML 4.01 Frameset//EN",
"-//W3C//DTD HTML 4.0//EN",
"-//W3C//DTD HTML 4.0 Transitional//EN",
"-//W3C//DTD HTML 4.0 Frameset//EN" ];
var xhtmlPublicIDs =
[ "-//W3C//DTD XHTML 1.0 Strict//EN",
"-//W3C//DTD XHTML 1.0 Transitional//EN",
"-//W3C//DTD XHTML 1.0 Frameset//EN" ];
testHTMLDocuments(htmlPublicIDs, false);
testHTMLDocuments(xhtmlPublicIDs, true);
testSVGDocument();
testFooBarDocument();
testNullDocTypeDocument();
</script>
</pre>
</body>
</html>
|