diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2017-06-07 19:07:07 +0200 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2017-06-12 23:33:53 +0200 |
commit | 5bccf98aa4925264b7fe0c5e996ab5de13d02f3a (patch) | |
tree | b21f0d1cdc9aeda8a336119a01e495a88f8769aa /components/script/dom/htmlcollection.rs | |
parent | 524fcac19155c69f8f2ea1683b411a8ef0ee149b (diff) | |
download | servo-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.rs | 11 |
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 { |