<!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 HTMLDocument, "Document should be an HTML 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 HTMLDocument), "Document shouldn't be an HTML document!"); ok(doc1 instanceof XMLDocument, "Document should be an XML document!"); // SVG documents have .documentElement. ok("documentElement" in doc1, "No .documentElement 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!"); is(doc2.documentElement.localName, "svg", "Wrong .documentElement!"); } 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 HTMLDocument), "Document shouldn't be an HTML 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 HTMLDocument), "Document shouldn't be an HTML 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>