Skip to content

Commit

Permalink
Properly mark application/xhtml+xml documents as XML
Browse files Browse the repository at this point in the history
For this to work, we must remove the unimplemented!() call
in Element::parse_fragment because all the tests rely on
setting innerHTML.
  • Loading branch information
nox committed Dec 1, 2016
1 parent 0c64bd7 commit c1bdd3d
Show file tree
Hide file tree
Showing 8 changed files with 9 additions and 136 deletions.
2 changes: 1 addition & 1 deletion components/script/dom/document.rs
Expand Up @@ -136,7 +136,7 @@ pub enum TouchEventResult {
Forwarded,
}

#[derive(JSTraceable, PartialEq, HeapSizeOf)]
#[derive(Clone, Copy, Debug, HeapSizeOf, JSTraceable, PartialEq)]
pub enum IsHTMLDocument {
HTMLDocument,
NonHTMLDocument,
Expand Down
8 changes: 2 additions & 6 deletions components/script/dom/element.rs
Expand Up @@ -1278,12 +1278,8 @@ impl Element {
pub fn parse_fragment(&self, markup: DOMString) -> Fallible<Root<DocumentFragment>> {
// Steps 1-2.
let context_document = document_from_node(self);
let new_children = if context_document.is_html_document() {
ServoParser::parse_html_fragment(self, markup)
} else {
// FIXME: XML case
unimplemented!()
};
// TODO(#11995): XML case.
let new_children = ServoParser::parse_html_fragment(self, markup);
// Step 3.
let fragment = DocumentFragment::new(&context_document);
// Step 4.
Expand Down
19 changes: 6 additions & 13 deletions components/script/script_thread.rs
Expand Up @@ -1751,9 +1751,12 @@ impl ScriptThread {
Some(incomplete.url.clone()));

let is_html_document = match metadata.content_type {
Some(Serde(ContentType(Mime(TopLevel::Application, SubLevel::Ext(ref sub_level), _))))
if sub_level.ends_with("+xml") => IsHTMLDocument::NonHTMLDocument,

Some(Serde(ContentType(Mime(TopLevel::Application, SubLevel::Xml, _)))) |
Some(Serde(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _)))) =>
IsHTMLDocument::NonHTMLDocument,
Some(Serde(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _)))) => IsHTMLDocument::NonHTMLDocument,

_ => IsHTMLDocument::HTMLDocument,
};

Expand Down Expand Up @@ -1844,17 +1847,7 @@ impl ScriptThread {

document.set_https_state(metadata.https_state);

let is_xml = match metadata.content_type {
Some(Serde(ContentType(Mime(TopLevel::Application, SubLevel::Ext(ref sub_level), _))))
if sub_level.ends_with("+xml") => true,

Some(Serde(ContentType(Mime(TopLevel::Application, SubLevel::Xml, _)))) |
Some(Serde(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _)))) => true,

_ => false,
};

if is_xml {
if is_html_document == IsHTMLDocument::NonHTMLDocument {
ServoParser::parse_xml_document(
&document,
parse_input,
Expand Down
90 changes: 0 additions & 90 deletions tests/wpt/metadata/dom/nodes/Document-createElement.html.ini
Expand Up @@ -3,186 +3,96 @@
[createElement(undefined) in XML document]
expected: FAIL

[createElement(undefined) in XHTML document]
expected: FAIL

[createElement(null) in XML document]
expected: FAIL

[createElement(null) in XHTML document]
expected: FAIL

[createElement("foo") in XML document]
expected: FAIL

[createElement("foo") in XHTML document]
expected: FAIL

[createElement("f1oo") in XML document]
expected: FAIL

[createElement("f1oo") in XHTML document]
expected: FAIL

[createElement("foo1") in XML document]
expected: FAIL

[createElement("foo1") in XHTML document]
expected: FAIL

[createElement("fெ") in XML document]
expected: FAIL

[createElement("fெ") in XHTML document]
expected: FAIL

[createElement("fooெ") in XML document]
expected: FAIL

[createElement("fooெ") in XHTML document]
expected: FAIL

[createElement(":") in XML document]
expected: FAIL

[createElement(":foo") in XML document]
expected: FAIL

[createElement(":foo") in XHTML document]
expected: FAIL

[createElement("f:oo") in XML document]
expected: FAIL

[createElement("f:oo") in XHTML document]
expected: FAIL

[createElement("foo:") in XML document]
expected: FAIL

[createElement("foo:") in XHTML document]
expected: FAIL

[createElement("f:o:o") in XML document]
expected: FAIL

[createElement("f:o:o") in XHTML document]
expected: FAIL

[createElement("f::oo") in XML document]
expected: FAIL

[createElement("f::oo") in XHTML document]
expected: FAIL

[createElement("f::oo:") in XML document]
expected: FAIL

[createElement("f::oo:") in XHTML document]
expected: FAIL

[createElement("foo:0") in XML document]
expected: FAIL

[createElement("foo:0") in XHTML document]
expected: FAIL

[createElement("foo:_") in XML document]
expected: FAIL

[createElement("foo:_") in XHTML document]
expected: FAIL

[createElement("foo:ெ") in XML document]
expected: FAIL

[createElement("foo:ெ") in XHTML document]
expected: FAIL

[createElement("foo:fooெ") in XML document]
expected: FAIL

[createElement("foo:fooெ") in XHTML document]
expected: FAIL

[createElement("fooெ:foo") in XML document]
expected: FAIL

[createElement("fooெ:foo") in XHTML document]
expected: FAIL

[createElement("xml") in XML document]
expected: FAIL

[createElement("xml") in XHTML document]
expected: FAIL

[createElement("xmlns") in XML document]
expected: FAIL

[createElement("xmlns") in XHTML document]
expected: FAIL

[createElement("xmlfoo") in XML document]
expected: FAIL

[createElement("xmlfoo") in XHTML document]
expected: FAIL

[createElement("xml:foo") in XML document]
expected: FAIL

[createElement("xml:foo") in XHTML document]
expected: FAIL

[createElement("xmlns:foo") in XML document]
expected: FAIL

[createElement("xmlns:foo") in XHTML document]
expected: FAIL

[createElement("xmlfoo:bar") in XML document]
expected: FAIL

[createElement("xmlfoo:bar") in XHTML document]
expected: FAIL

[createElement("svg") in XML document]
expected: FAIL

[createElement("svg") in XHTML document]
expected: FAIL

[createElement("math") in XML document]
expected: FAIL

[createElement("math") in XHTML document]
expected: FAIL

[createElement("FOO") in XML document]
expected: FAIL

[createElement("FOO") in XHTML document]
expected: FAIL

[createElement("marK") in XML document]
expected: FAIL

[createElement("marK") in XHTML document]
expected: FAIL

[createElement("İnput") in XML document]
expected: FAIL

[createElement("İnput") in XHTML document]
expected: FAIL

[createElement("ınput") in XML document]
expected: FAIL

[createElement("ınput") in XHTML document]
expected: FAIL

[createElement("") in XML document]
expected: FAIL

Expand Down

This file was deleted.

5 changes: 0 additions & 5 deletions tests/wpt/metadata/dom/nodes/Node-nodeName-xhtml.xhtml.ini

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit c1bdd3d

Please sign in to comment.