Fix namespaces of elements created in XML documents

This commit is contained in:
cu1t 2017-04-15 14:27:36 +07:00
parent 7ae9c96467
commit bef86cbf36
5 changed files with 18 additions and 15 deletions

View file

@ -2772,7 +2772,14 @@ impl DocumentMethods for Document {
if self.is_html_document {
local_name.make_ascii_lowercase();
}
let name = QualName::new(ns!(html), LocalName::from(local_name));
let ns = if self.is_html_document || self.content_type == "application/xhtml+xml" {
ns!(html)
} else {
ns!()
};
let name = QualName::new(ns, LocalName::from(local_name));
Ok(Element::create(name, None, self, ElementCreator::ScriptCreated))
}

View file

@ -0,0 +1,4 @@
[Document-constructor.html]
type: testharness
[new Document(): URL parsing]
expected: FAIL

View file

@ -1,8 +0,0 @@
[Node-properties.html]
type: testharness
[xmlElement.namespaceURI]
expected: FAIL
[detachedXmlElement.namespaceURI]
expected: FAIL

View file

@ -25384,7 +25384,7 @@
"testharness"
],
"mozilla/document_head.html": [
"31892b141aba3b317502e38a4a38fcd8531cb8aa",
"b861fe5a1159ba5fba44d3aee048cdb27d378be9",
"testharness"
],
"mozilla/document_images_cache.html": [

View file

@ -13,8 +13,8 @@
test(function() {
var new_document = new Document();
new_document.appendChild(new_document.createElement("html"));
var new_head = new_document.createElement("head");
new_document.appendChild(new_document.createElementNS('http://www.w3.org/1999/xhtml', "html"));
var new_head = new_document.createElementNS('http://www.w3.org/1999/xhtml', 'head');
assert_not_equals(new_head, null, "test2-0, append head to a new document");
assert_true(new_head instanceof HTMLHeadElement, "test2-1, append head to a new document: should be HTMLHeadElement");
@ -30,9 +30,9 @@
test(function() {
var new_document = new Document();
var html = new_document.createElement("html");
var foo = new_document.createElement("foo");
var head = new_document.createElement("head");
var html = new_document.createElementNS('http://www.w3.org/1999/xhtml', "html");
var foo = new_document.createElementNS('http://www.w3.org/1999/xhtml', "foo");
var head = new_document.createElementNS('http://www.w3.org/1999/xhtml', "head");
new_document.appendChild(html);
html.appendChild(foo);
foo.appendChild(head);