aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlcollection.rs
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2017-06-07 19:07:07 +0200
committerSimon Sapin <simon.sapin@exyr.org>2017-06-12 23:33:53 +0200
commit5bccf98aa4925264b7fe0c5e996ab5de13d02f3a (patch)
treeb21f0d1cdc9aeda8a336119a01e495a88f8769aa /components/script/dom/htmlcollection.rs
parent524fcac19155c69f8f2ea1683b411a8ef0ee149b (diff)
downloadservo-5bccf98aa4925264b7fe0c5e996ab5de13d02f3a.tar.gz
servo-5bccf98aa4925264b7fe0c5e996ab5de13d02f3a.zip
ID and class selectors are ASCII case-insensitive in quirks mode.
https://bugzilla.mozilla.org/show_bug.cgi?id=1363778
Diffstat (limited to 'components/script/dom/htmlcollection.rs')
-rw-r--r--components/script/dom/htmlcollection.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs
index aff4125a29f..7c3cad306c4 100644
--- a/components/script/dom/htmlcollection.rs
+++ b/components/script/dom/htmlcollection.rs
@@ -11,12 +11,14 @@ use dom::bindings::str::DOMString;
use dom::bindings::trace::JSTraceable;
use dom::bindings::xmlname::namespace_from_domstring;
use dom::element::Element;
-use dom::node::Node;
+use dom::node::{Node, document_from_node};
use dom::window::Window;
use dom_struct::dom_struct;
use html5ever::{LocalName, QualName};
+use selectors::attr::CaseSensitivity;
use servo_atoms::Atom;
use std::cell::Cell;
+use style::context::QuirksMode;
use style::str::split_html_space_chars;
pub trait CollectionFilter : JSTraceable {
@@ -199,7 +201,12 @@ impl HTMLCollection {
}
impl CollectionFilter for ClassNameFilter {
fn filter(&self, elem: &Element, _root: &Node) -> bool {
- self.classes.iter().all(|class| elem.has_class(class))
+ let case_sensitivity = match document_from_node(elem).quirks_mode() {
+ QuirksMode::NoQuirks |
+ QuirksMode::LimitedQuirks => CaseSensitivity::CaseSensitive,
+ QuirksMode::Quirks => CaseSensitivity::AsciiCaseInsensitive,
+ };
+ self.classes.iter().all(|class| elem.has_class(class, case_sensitivity))
}
}
let filter = ClassNameFilter {