diff options
-rw-r--r-- | components/script/dom/element.rs | 17 | ||||
-rw-r--r-- | tests/wpt/metadata/dom/nodes/getElementsByClassName-14.htm.ini | 5 |
2 files changed, 14 insertions, 8 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index df99f4dc91d..129756c1575 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -55,6 +55,8 @@ use style::{IntegerAttribute, LengthAttribute, ParserContext, matches}; use servo_util::namespace; use servo_util::str::{DOMString, LengthOrPercentageOrAuto}; +use html5ever::tree_builder::{NoQuirks, LimitedQuirks, Quirks}; + use cssparser::RGBA; use std::ascii::AsciiExt; use std::cell::{Ref, RefMut}; @@ -571,7 +573,7 @@ pub trait AttributeHandlers { value: DOMString) -> AttrValue; fn remove_attribute(self, namespace: Namespace, name: &str); - fn has_class(&self, name: &Atom) -> bool; + fn has_class(self, name: &Atom) -> bool; fn set_atomic_attribute(self, name: &Atom, value: DOMString); @@ -713,10 +715,19 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> { }; } - fn has_class(&self, name: &Atom) -> bool { + fn has_class(self, name: &Atom) -> bool { + let quirks_mode = { + let node: JSRef<Node> = NodeCast::from_ref(self); + let owner_doc = node.owner_doc().root(); + owner_doc.r().quirks_mode() + }; + let is_equal = |lhs: &Atom, rhs: &Atom| match quirks_mode { + NoQuirks | LimitedQuirks => lhs == rhs, + Quirks => lhs.as_slice().eq_ignore_ascii_case(rhs.as_slice()) + }; self.get_attribute(ns!(""), &atom!("class")).root().map(|attr| { attr.r().value().tokens().map(|tokens| { - tokens.iter().any(|atom| atom == name) + tokens.iter().any(|atom| is_equal(name, atom)) }).unwrap_or(false) }).unwrap_or(false) } diff --git a/tests/wpt/metadata/dom/nodes/getElementsByClassName-14.htm.ini b/tests/wpt/metadata/dom/nodes/getElementsByClassName-14.htm.ini deleted file mode 100644 index c64fcf0e3e7..00000000000 --- a/tests/wpt/metadata/dom/nodes/getElementsByClassName-14.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[getElementsByClassName-14.htm] - type: testharness - [document.getElementsByClassName(): case-insensitive (quirks mode)] - expected: FAIL - |