aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-04-27 07:50:54 -0700
committerbors-servo <lbergstrom+bors@mozilla.com>2016-04-27 07:50:54 -0700
commitdaa1a2a0a82d336205dae340d705ea6c0bed4ed2 (patch)
treeded5df5b12c75a906b8cad8d8ac2cfcc4c772ae3
parentce5423426270a3f3adbe12178f42e90903d66029 (diff)
parent3389c497c0ca740dbcd4fd56a4fc8d490f7a8592 (diff)
downloadservo-daa1a2a0a82d336205dae340d705ea6c0bed4ed2.tar.gz
servo-daa1a2a0a82d336205dae340d705ea6c0bed4ed2.zip
Auto merge of #10647 - ConnorGBrewster:parse_xml, r=jdm
Finish hooking up XML parser This is a work in progress PR for #10581. I just want to make sure I am headed in the right direction. cc @jdm <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10647) <!-- Reviewable:end -->
-rw-r--r--components/script/Cargo.toml2
-rw-r--r--components/script/dom/servoxmlparser.rs2
-rw-r--r--components/script/parse/xml.rs23
-rw-r--r--components/script/script_thread.rs52
-rw-r--r--components/servo/Cargo.lock6
-rw-r--r--ports/cef/Cargo.lock6
-rw-r--r--ports/gonk/Cargo.lock6
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini5
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini16
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-childElementCount-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml.ini4
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-firstElementChild-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-lastElementChild-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-nextElementSibling-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-previousElementSibling-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-siblingElement-null-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Node-isEqualNode-xhtml.xhtml.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini247
-rw-r--r--tests/wpt/metadata/dom/nodes/ProcessingInstruction-literal-2.xhtml.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini13
-rw-r--r--tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-compatmode-06.xhtml.ini5
-rw-r--r--tests/wpt/metadata/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.xhtml.ini55
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-style-element/html_style_in_comment.xhtml.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml.ini5
29 files changed, 393 insertions, 96 deletions
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml
index f4cdde5a19f..9e9cb5ec462 100644
--- a/components/script/Cargo.toml
+++ b/components/script/Cargo.toml
@@ -27,7 +27,7 @@ canvas_traits = {path = "../canvas_traits"}
js = {git = "https://github.com/servo/rust-mozjs"}
angle = {git = "https://github.com/emilio/angle", branch = "servo"}
ipc-channel = {git = "https://github.com/servo/ipc-channel"}
-xml5ever = {git = "https://github.com/Ygg01/xml5ever", features = ["unstable"]}
+xml5ever = {version = "0.1.2", features = ["unstable"]}
gfx_traits = {path = "../gfx_traits"}
webrender_traits = {git = "https://github.com/servo/webrender_traits"}
app_units = {version = "0.2.3", features = ["plugins"]}
diff --git a/components/script/dom/servoxmlparser.rs b/components/script/dom/servoxmlparser.rs
index 63e64a6fe4c..892477ffd0f 100644
--- a/components/script/dom/servoxmlparser.rs
+++ b/components/script/dom/servoxmlparser.rs
@@ -127,6 +127,8 @@ impl ServoXMLParser {
if !pending_input.is_empty() {
let chunk = pending_input.remove(0);
self.tokenizer.borrow_mut().feed(chunk.into());
+ } else {
+ self.tokenizer.borrow_mut().run();
}
// Document parsing is blocked on an external resource.
diff --git a/components/script/parse/xml.rs b/components/script/parse/xml.rs
index 6c82e5af358..74741af8806 100644
--- a/components/script/parse/xml.rs
+++ b/components/script/parse/xml.rs
@@ -11,11 +11,13 @@ use dom::comment::Comment;
use dom::document::Document;
use dom::documenttype::DocumentType;
use dom::element::{Element, ElementCreator};
+use dom::htmlscriptelement::HTMLScriptElement;
use dom::node::Node;
use dom::processinginstruction::ProcessingInstruction;
use dom::servoxmlparser;
use dom::servoxmlparser::ServoXMLParser;
use dom::text::Text;
+use html5ever;
use msg::constellation_msg::PipelineId;
use parse::Parser;
use std::borrow::Cow;
@@ -24,7 +26,7 @@ use url::Url;
use util::str::DOMString;
use xml5ever::tendril::StrTendril;
use xml5ever::tokenizer::{Attribute, QName};
-use xml5ever::tree_builder::{NodeOrText, TreeSink};
+use xml5ever::tree_builder::{NextParserState, NodeOrText, TreeSink};
impl<'a> TreeSink for servoxmlparser::Sink {
type Handle = JS<Node>;
@@ -101,6 +103,24 @@ impl<'a> TreeSink for servoxmlparser::Sink {
doc);
JS::from_ref(pi.upcast())
}
+
+ fn mark_script_already_started(&mut self, node: Self::Handle) {
+ let script = node.downcast::<HTMLScriptElement>();
+ if let Some(script) = script {
+ script.mark_already_started();
+ }
+ }
+
+ fn complete_script(&mut self, node: Self::Handle) -> NextParserState {
+ let script = node.downcast::<HTMLScriptElement>();
+ if let Some(script) = script {
+ return match script.prepare() {
+ html5ever::tree_builder::NextParserState::Continue => NextParserState::Continue,
+ html5ever::tree_builder::NextParserState::Suspend => NextParserState::Suspend
+ };
+ }
+ NextParserState::Continue
+ }
}
@@ -119,4 +139,3 @@ pub fn parse_xml(document: &Document,
};
parser.parse_chunk(String::from(input));
}
-
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index a082c6bdaab..2aac608df13 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -1510,23 +1510,22 @@ impl ScriptThread {
headers.get().map(|&LastModified(HttpDate(ref tm))| dom_last_modified(tm))
});
- let content_type = match metadata.content_type {
- Some(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _))) => {
- Some(DOMString::from("text/xml"))
+ let content_type = metadata.content_type.as_ref().and_then(|&ContentType(ref mimetype)| {
+ match *mimetype {
+ Mime(TopLevel::Application, SubLevel::Xml, _) |
+ Mime(TopLevel::Application, SubLevel::Ext(_), _) |
+ Mime(TopLevel::Text, SubLevel::Xml, _) |
+ Mime(TopLevel::Text, SubLevel::Plain, _) => Some(DOMString::from(mimetype.to_string())),
+ _ => None,
}
-
- Some(ContentType(Mime(TopLevel::Text, SubLevel::Plain, _))) => {
- Some(DOMString::from("text/plain"))
- }
-
- _ => None
- };
+ });
let loader = DocumentLoader::new_with_thread(self.resource_thread.clone(),
Some(page.pipeline()),
Some(incomplete.url.clone()));
let is_html_document = match metadata.content_type {
+ Some(ContentType(Mime(TopLevel::Application, SubLevel::Xml, _))) |
Some(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _))) =>
IsHTMLDocument::NonHTMLDocument,
_ => IsHTMLDocument::HTMLDocument,
@@ -1587,19 +1586,26 @@ impl ScriptThread {
document.set_https_state(metadata.https_state);
- match metadata.content_type {
- Some(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _))) => {
- parse_xml(document.r(),
- parse_input,
- final_url,
- xml::ParseContext::Owner(Some(incomplete.pipeline_id)));
- }
- _ => {
- parse_html(document.r(),
- parse_input,
- final_url,
- ParseContext::Owner(Some(incomplete.pipeline_id)));
- }
+ let is_xml = match metadata.content_type {
+ Some(ContentType(Mime(TopLevel::Application, SubLevel::Ext(ref sub_level), _)))
+ if sub_level.ends_with("+xml") => true,
+
+ Some(ContentType(Mime(TopLevel::Application, SubLevel::Xml, _))) |
+ Some(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _))) => true,
+
+ _ => false,
+ };
+
+ if is_xml {
+ parse_xml(document.r(),
+ parse_input,
+ final_url,
+ xml::ParseContext::Owner(Some(incomplete.pipeline_id)));
+ } else {
+ parse_html(document.r(),
+ parse_input,
+ final_url,
+ ParseContext::Owner(Some(incomplete.pipeline_id)));
}
if incomplete.is_frozen {
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock
index 72bb1f53f42..6f9538ee228 100644
--- a/components/servo/Cargo.lock
+++ b/components/servo/Cargo.lock
@@ -1837,7 +1837,7 @@ dependencies = [
"uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
"websocket 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
+ "xml5ever 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2523,8 +2523,8 @@ dependencies = [
[[package]]
name = "xml5ever"
-version = "0.1.1"
-source = "git+https://github.com/Ygg01/xml5ever#a51a6df18f384ecfb0a99b288c267178cf68f7f7"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock
index a8b2211b4e0..6873ea8ad00 100644
--- a/ports/cef/Cargo.lock
+++ b/ports/cef/Cargo.lock
@@ -1705,7 +1705,7 @@ dependencies = [
"uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
"websocket 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
+ "xml5ever 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2389,8 +2389,8 @@ dependencies = [
[[package]]
name = "xml5ever"
-version = "0.1.1"
-source = "git+https://github.com/Ygg01/xml5ever#a51a6df18f384ecfb0a99b288c267178cf68f7f7"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock
index 6be8e25b977..919951afc87 100644
--- a/ports/gonk/Cargo.lock
+++ b/ports/gonk/Cargo.lock
@@ -1688,7 +1688,7 @@ dependencies = [
"uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
"websocket 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
+ "xml5ever 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2340,8 +2340,8 @@ dependencies = [
[[package]]
name = "xml5ever"
-version = "0.1.1"
-source = "git+https://github.com/Ygg01/xml5ever#a51a6df18f384ecfb0a99b288c267178cf68f7f7"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini
deleted file mode 100644
index 9f8eea136e8..00000000000
--- a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[contenttype_xml.html]
- type: testharness
- [XML document.contentType === 'application/xml']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml.ini
deleted file mode 100644
index c6ff4513774..00000000000
--- a/tests/wpt/metadata/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Document-createProcessingInstruction-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini
index c5be44aa051..08074624384 100644
--- a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini
+++ b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini
@@ -1,3 +1,17 @@
[Document-getElementsByTagName-xhtml.xhtml]
type: testharness
- disabled: xml
+ [HTML element with uppercase tag name matches in XHTML documents]
+ expected: FAIL
+
+ [Element in non-HTML namespace, prefix, lowercase name]
+ expected: FAIL
+
+ [Element in non-HTML namespace, prefix, uppercase name]
+ 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
+
diff --git a/tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml.ini
deleted file mode 100644
index efb23ece81d..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-childElementCount-dynamic-add-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml.ini
deleted file mode 100644
index 07431710e64..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-childElementCount-dynamic-remove-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml.ini
deleted file mode 100644
index 4ab090cf558..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-childElementCount-nochild-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-childElementCount-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-childElementCount-xhtml.xhtml.ini
deleted file mode 100644
index 6ec23772d64..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-childElementCount-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-childElementCount-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml.ini
index 7012b588058..a4042d91351 100644
--- a/tests/wpt/metadata/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml.ini
+++ b/tests/wpt/metadata/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml.ini
@@ -1,3 +1,5 @@
[Element-firstElementChild-entity-xhtml.xhtml]
type: testharness
- disabled: xml
+ [Entity References]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml.ini
deleted file mode 100644
index 5cb09ad2cae..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-firstElementChild-namespace-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-firstElementChild-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-firstElementChild-xhtml.xhtml.ini
deleted file mode 100644
index bdf128d82ae..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-firstElementChild-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-firstElementChild-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-lastElementChild-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-lastElementChild-xhtml.xhtml.ini
deleted file mode 100644
index bb1664f23cf..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-lastElementChild-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-lastElementChild-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-nextElementSibling-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-nextElementSibling-xhtml.xhtml.ini
deleted file mode 100644
index e0c0ebeb5a1..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-nextElementSibling-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-nextElementSibling-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-previousElementSibling-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-previousElementSibling-xhtml.xhtml.ini
deleted file mode 100644
index e0cc1e934a0..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-previousElementSibling-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-previousElementSibling-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Element-siblingElement-null-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Element-siblingElement-null-xhtml.xhtml.ini
deleted file mode 100644
index a2cf4262415..00000000000
--- a/tests/wpt/metadata/dom/nodes/Element-siblingElement-null-xhtml.xhtml.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[Element-siblingElement-null-xhtml.xhtml]
- type: testharness
- disabled: xml
diff --git a/tests/wpt/metadata/dom/nodes/Node-isEqualNode-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Node-isEqualNode-xhtml.xhtml.ini
index ccf1643417f..0690b87f5a6 100644
--- a/tests/wpt/metadata/dom/nodes/Node-isEqualNode-xhtml.xhtml.ini
+++ b/tests/wpt/metadata/dom/nodes/Node-isEqualNode-xhtml.xhtml.ini
@@ -1,6 +1,5 @@
[Node-isEqualNode-xhtml.xhtml]
type: testharness
- expected: TIMEOUT
[isEqualNode should return true when only the internal subsets of DocumentTypes differ.]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini b/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini
index 39132ff05c5..78163fe6d9d 100644
--- a/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini
+++ b/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini
@@ -1,3 +1,248 @@
[ParentNode-querySelector-All-xht.xht]
type: testharness
- expected: TIMEOUT
+ [Detached Element.querySelectorAll tree order]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll tree order]
+ expected: FAIL
+
+ [Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [Document.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [Document.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [Document.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [Document.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [Document.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [Document.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [Document.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [Document.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [Document.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [Document.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [Document.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [Document.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [Document.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [Document.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [Document.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [Document.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [Document.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [Document.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
+ [Document.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [Detached Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [Detached Element.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [Detached Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [Detached Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [Detached Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [Detached Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [Detached Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [Detached Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [Detached Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
+ [Detached Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [Fragment.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [Fragment.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [Fragment.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [Fragment.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [Fragment.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [Fragment.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [Fragment.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [Fragment.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [Fragment.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
+ [Fragment.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [In-document Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [In-document Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [In-document Element.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en)]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [In-document Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr)]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [In-document Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en)]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [In-document Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR)]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [In-document Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [In-document Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [In-document Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter]
+ expected: FAIL
+
+ [In-document Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
+ [In-document Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/nodes/ProcessingInstruction-literal-2.xhtml.ini b/tests/wpt/metadata/dom/nodes/ProcessingInstruction-literal-2.xhtml.ini
deleted file mode 100644
index 62b289b0173..00000000000
--- a/tests/wpt/metadata/dom/nodes/ProcessingInstruction-literal-2.xhtml.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[ProcessingInstruction-literal-2.xhtml]
- type: testharness
- [ProcessingInstruction literals]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini b/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini
index 0b2b03ab7a9..13ca91e5b37 100644
--- a/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini
+++ b/tests/wpt/metadata/html/browsers/windows/browsing-context-first-created.xhtml.ini
@@ -1,3 +1,14 @@
[browsing-context-first-created.xhtml]
type: testharness
- expected: TIMEOUT
+ [Check the history.length of the first created browsing context]
+ expected: FAIL
+
+ [Check the document's meta data]
+ expected: FAIL
+
+ [Check the document's status]
+ expected: FAIL
+
+ [Check the document's content]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-compatmode-06.xhtml.ini b/tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-compatmode-06.xhtml.ini
deleted file mode 100644
index b7b4f32a60e..00000000000
--- a/tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-compatmode-06.xhtml.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[document-compatmode-06.xhtml]
- type: testharness
- [document.compatMode: Standards]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.xhtml.ini b/tests/wpt/metadata/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.xhtml.ini
index a4567898073..78c42d107f7 100644
--- a/tests/wpt/metadata/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.xhtml.ini
+++ b/tests/wpt/metadata/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.xhtml.ini
@@ -1,3 +1,56 @@
[dynamic-urls.sub.xhtml]
type: testharness
- expected: TIMEOUT
+ [The 'href' attribute of the 'a' element]
+ expected: FAIL
+
+ [The 'href' attribute of the 'link' element]
+ expected: FAIL
+
+ [The 'href' attribute of the 'area' element]
+ expected: FAIL
+
+ [The 'cite' attribute of the 'q' element]
+ expected: FAIL
+
+ [The 'cite' attribute of the 'blockquote' element]
+ expected: FAIL
+
+ [The 'cite' attribute of the 'ins' element]
+ expected: FAIL
+
+ [The 'cite' attribute of the 'del' element]
+ expected: FAIL
+
+ [The 'src' attribute of the 'img' element]
+ expected: FAIL
+
+ [The 'src' attribute of the 'embed' element]
+ expected: FAIL
+
+ [The 'src' attribute of the 'video' element]
+ expected: FAIL
+
+ [The 'src' attribute of the 'iframe' element]
+ expected: FAIL
+
+ [The 'src' attribute of the 'script' element]
+ expected: FAIL
+
+ [The 'src' attribute of the 'source' element]
+ expected: FAIL
+
+ [The 'src' attribute of the 'track' element]
+ expected: FAIL
+
+ [The 'action' attribute of the 'form' element]
+ expected: FAIL
+
+ [The 'data' attribute of the 'object' element]
+ expected: FAIL
+
+ [The 'formaction' attribute of the 'button' element]
+ expected: FAIL
+
+ [Change the base URL must effect the descendant elements only]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-style-element/html_style_in_comment.xhtml.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-style-element/html_style_in_comment.xhtml.ini
index b6945e839da..2ff79b6d8c4 100644
--- a/tests/wpt/metadata/html/semantics/document-metadata/the-style-element/html_style_in_comment.xhtml.ini
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-style-element/html_style_in_comment.xhtml.ini
@@ -2,4 +2,3 @@
type: reftest
reftype: ==
refurl: /html/semantics/document-metadata/the-style-element/html_style_in_comment-ref.html
- expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml.ini
deleted file mode 100644
index 1b6f1bde961..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[script-noembed-noframes-iframe.xhtml]
- type: testharness
- [Script inside noembed, noframes and iframe]
- expected: FAIL
-