mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Properly mark application/xhtml+xml documents as XML
For this to work, we must remove the unimplemented!() call in Element::parse_fragment because all the tests rely on setting innerHTML.
This commit is contained in:
parent
0c64bd766a
commit
c1bdd3d5ce
8 changed files with 9 additions and 136 deletions
|
@ -136,7 +136,7 @@ pub enum TouchEventResult {
|
||||||
Forwarded,
|
Forwarded,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(JSTraceable, PartialEq, HeapSizeOf)]
|
#[derive(Clone, Copy, Debug, HeapSizeOf, JSTraceable, PartialEq)]
|
||||||
pub enum IsHTMLDocument {
|
pub enum IsHTMLDocument {
|
||||||
HTMLDocument,
|
HTMLDocument,
|
||||||
NonHTMLDocument,
|
NonHTMLDocument,
|
||||||
|
|
|
@ -1278,12 +1278,8 @@ impl Element {
|
||||||
pub fn parse_fragment(&self, markup: DOMString) -> Fallible<Root<DocumentFragment>> {
|
pub fn parse_fragment(&self, markup: DOMString) -> Fallible<Root<DocumentFragment>> {
|
||||||
// Steps 1-2.
|
// Steps 1-2.
|
||||||
let context_document = document_from_node(self);
|
let context_document = document_from_node(self);
|
||||||
let new_children = if context_document.is_html_document() {
|
// TODO(#11995): XML case.
|
||||||
ServoParser::parse_html_fragment(self, markup)
|
let new_children = ServoParser::parse_html_fragment(self, markup);
|
||||||
} else {
|
|
||||||
// FIXME: XML case
|
|
||||||
unimplemented!()
|
|
||||||
};
|
|
||||||
// Step 3.
|
// Step 3.
|
||||||
let fragment = DocumentFragment::new(&context_document);
|
let fragment = DocumentFragment::new(&context_document);
|
||||||
// Step 4.
|
// Step 4.
|
||||||
|
|
|
@ -1751,9 +1751,12 @@ impl ScriptThread {
|
||||||
Some(incomplete.url.clone()));
|
Some(incomplete.url.clone()));
|
||||||
|
|
||||||
let is_html_document = match metadata.content_type {
|
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::Application, SubLevel::Xml, _)))) |
|
||||||
Some(Serde(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _)))) =>
|
Some(Serde(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _)))) => IsHTMLDocument::NonHTMLDocument,
|
||||||
IsHTMLDocument::NonHTMLDocument,
|
|
||||||
_ => IsHTMLDocument::HTMLDocument,
|
_ => IsHTMLDocument::HTMLDocument,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1844,17 +1847,7 @@ impl ScriptThread {
|
||||||
|
|
||||||
document.set_https_state(metadata.https_state);
|
document.set_https_state(metadata.https_state);
|
||||||
|
|
||||||
let is_xml = match metadata.content_type {
|
if is_html_document == IsHTMLDocument::NonHTMLDocument {
|
||||||
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 {
|
|
||||||
ServoParser::parse_xml_document(
|
ServoParser::parse_xml_document(
|
||||||
&document,
|
&document,
|
||||||
parse_input,
|
parse_input,
|
||||||
|
|
|
@ -3,186 +3,96 @@
|
||||||
[createElement(undefined) in XML document]
|
[createElement(undefined) in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement(undefined) in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement(null) in XML document]
|
[createElement(null) in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement(null) in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("foo") in XML document]
|
[createElement("foo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("foo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("f1oo") in XML document]
|
[createElement("f1oo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("f1oo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("foo1") in XML document]
|
[createElement("foo1") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("foo1") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("fெ") in XML document]
|
[createElement("fெ") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("fெ") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("fooெ") in XML document]
|
[createElement("fooெ") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("fooெ") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement(":") in XML document]
|
[createElement(":") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement(":foo") in XML document]
|
[createElement(":foo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement(":foo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("f:oo") in XML document]
|
[createElement("f:oo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("f:oo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("foo:") in XML document]
|
[createElement("foo:") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("foo:") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("f:o:o") in XML document]
|
[createElement("f:o:o") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("f:o:o") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("f::oo") in XML document]
|
[createElement("f::oo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("f::oo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("f::oo:") in XML document]
|
[createElement("f::oo:") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("f::oo:") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("foo:0") in XML document]
|
[createElement("foo:0") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("foo:0") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("foo:_") in XML document]
|
[createElement("foo:_") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("foo:_") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("foo:ெ") in XML document]
|
[createElement("foo:ெ") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("foo:ெ") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("foo:fooெ") in XML document]
|
[createElement("foo:fooெ") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("foo:fooெ") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("fooெ:foo") in XML document]
|
[createElement("fooெ:foo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("fooெ:foo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("xml") in XML document]
|
[createElement("xml") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("xml") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("xmlns") in XML document]
|
[createElement("xmlns") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("xmlns") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("xmlfoo") in XML document]
|
[createElement("xmlfoo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("xmlfoo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("xml:foo") in XML document]
|
[createElement("xml:foo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("xml:foo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("xmlns:foo") in XML document]
|
[createElement("xmlns:foo") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("xmlns:foo") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("xmlfoo:bar") in XML document]
|
[createElement("xmlfoo:bar") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("xmlfoo:bar") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("svg") in XML document]
|
[createElement("svg") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("svg") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("math") in XML document]
|
[createElement("math") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("math") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("FOO") in XML document]
|
[createElement("FOO") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("FOO") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("marK") in XML document]
|
[createElement("marK") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("marK") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("İnput") in XML document]
|
[createElement("İnput") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("İnput") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("ınput") in XML document]
|
[createElement("ınput") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createElement("ınput") in XHTML document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createElement("") in XML document]
|
[createElement("") in XML document]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
[Document-getElementsByTagName-xhtml.xhtml]
|
|
||||||
type: testharness
|
|
||||||
[HTML element with uppercase tag name matches in XHTML documents]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element in HTML namespace, no prefix, non-ascii characters in name]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element in HTML namespace, prefix, non-ascii characters in name]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[Node-nodeName-xhtml.xhtml]
|
|
||||||
type: testharness
|
|
||||||
[For Element nodes, nodeName should return the same as tagName.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[document.write-01.xhtml]
|
|
||||||
type: testharness
|
|
||||||
[document.write in XHTML]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[document.writeln-01.xhtml]
|
|
||||||
type: testharness
|
|
||||||
[document.writeln in XHTML]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue