diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index c7463e73a53..8e62705f434 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -90,3 +90,4 @@ euclid = "0.2" tendril = "0.1.1" rand = "0.3" serde = "0.6" +caseless = "0.1.0" diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index a07529ebbec..86d02d462c3 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -2,6 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +use caseless::compatibility_caseless_match_str; use dom::activation::Activatable; use dom::attr::{Attr, AttrValue}; use dom::bindings::cell::DOMRefCell; @@ -388,9 +389,8 @@ fn in_same_group(other: &HTMLInputElement, owner: Option<&HTMLFormElement>, other.input_type.get() == InputType::InputRadio && // TODO Both a and b are in the same home subtree. other_owner == owner && - // TODO should be a unicode compatibility caseless match match (other.get_radio_group_name(), group) { - (Some(ref s1), Some(s2)) => s1 == s2 && s2 != &atom!(""), + (Some(ref s1), Some(s2)) => compatibility_caseless_match_str(s1, s2) && s2 != &atom!(""), _ => false } } diff --git a/components/script/lib.rs b/components/script/lib.rs index 6ebf3d12df6..c35e6fbe753 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -46,6 +46,7 @@ extern crate util; extern crate angle; extern crate canvas; extern crate canvas_traits; +extern crate caseless; extern crate core; extern crate cssparser; extern crate devtools_traits; diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 08672e8af2b..18caf480cec 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -167,6 +167,15 @@ dependencies = [ "util 0.0.1", ] +[[package]] +name = "caseless" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "regex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cgl" version = "0.1.0" @@ -1442,6 +1451,7 @@ dependencies = [ "bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "canvas 0.0.1", "canvas_traits 0.0.1", + "caseless 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1780,6 +1790,11 @@ dependencies = [ "matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-normalization" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-script" version = "0.1.1" diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/radio-groupname-case.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/radio-groupname-case.html.ini index 23d89442303..4de30f16232 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-input-element/radio-groupname-case.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/radio-groupname-case.html.ini @@ -1,23 +1,5 @@ [radio-groupname-case.html] type: testharness - [radio button group name = sImPlE] - expected: FAIL - [radio button group name = paSSfield-killroyß] expected: FAIL - [radio button group name = глупый] - expected: FAIL - - [radio button group name = åωk] - expected: FAIL - - [radio button group name = blah1] - expected: FAIL - - [radio button group name = tÉdz5アパートFi] - expected: FAIL - - [radio button group name = ΣΣ] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/radio.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/radio.html.ini index 59a2ba43d2a..212ef8ec4a3 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-input-element/radio.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/radio.html.ini @@ -3,6 +3,3 @@ [canceled activation steps on unchecked radio] expected: FAIL - [radio inputs with name attributes groüp2 and groÜp2 belong to the same radio button group] - expected: FAIL -