diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index a7d73dd404e..26a5c41a26c 100755 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -63,7 +63,7 @@ use std::cell::Cell; use std::ops::Range; use style::attr::AttrValue; use style::element_state::ElementState; -use style::str::split_commas; +use style::str::{split_commas, str_join}; const DEFAULT_SUBMIT_VALUE: &'static str = "Submit"; const DEFAULT_RESET_VALUE: &'static str = "Reset"; @@ -1195,6 +1195,24 @@ impl HTMLInputElement { InputType::Range => { value.set_best_representation_of_the_floating_point_number(); }, + InputType::Email => { + if !self.Multiple() { + value.strip_newlines(); + value.strip_leading_and_trailing_ascii_whitespace(); + } else { + let sanitized = str_join( + split_commas(value).map(|token| { + let mut token = DOMString::from_string(token.to_string()); + token.strip_newlines(); + token.strip_leading_and_trailing_ascii_whitespace(); + token + }), + ",", + ); + value.clear(); + value.push_str(sanitized.as_str()); + } + }, _ => (), } } diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/email.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/email.html.ini index c0017e10a70..fdf37813f65 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-input-element/email.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/email.html.ini @@ -1,17 +1,8 @@ [email.html] type: testharness - [value should be sanitized: strip line breaks] - expected: FAIL - [Email address validity] expected: FAIL - [When the multiple attribute is removed, the user agent must run the value sanitization algorithm] - expected: FAIL - - [run the value sanitization algorithm after setting a new value] - expected: FAIL - [valid value is a set of valid email addresses separated by a single ','] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/type-change-state.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/type-change-state.html.ini index 46cbb336bee..309ca15cdda 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-input-element/type-change-state.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/type-change-state.html.ini @@ -1,35 +1,23 @@ [type-change-state.html] type: testharness - [change state from hidden to email] - expected: FAIL - [change state from hidden to datetime] expected: FAIL [change state from hidden to range] expected: FAIL - [change state from text to email] - expected: FAIL - [change state from text to datetime] expected: FAIL [change state from text to range] expected: FAIL - [change state from search to email] - expected: FAIL - [change state from search to datetime] expected: FAIL [change state from search to range] expected: FAIL - [change state from tel to email] - expected: FAIL - [change state from tel to datetime] expected: FAIL @@ -48,9 +36,6 @@ [change state from email to range] expected: FAIL - [change state from password to email] - expected: FAIL - [change state from password to datetime] expected: FAIL @@ -69,9 +54,6 @@ [change state from datetime to url] expected: FAIL - [change state from datetime to email] - expected: FAIL - [change state from datetime to password] expected: FAIL @@ -108,57 +90,36 @@ [change state from number to range] expected: FAIL - [change state from range to email] - expected: FAIL - [change state from range to datetime] expected: FAIL - [change state from checkbox to email] - expected: FAIL - [change state from checkbox to range] expected: FAIL - [change state from radio to email] - expected: FAIL - [change state from radio to datetime] expected: FAIL [change state from radio to range] expected: FAIL - [change state from submit to email] - expected: FAIL - [change state from submit to datetime] expected: FAIL [change state from submit to range] expected: FAIL - [change state from image to email] - expected: FAIL - [change state from image to datetime] expected: FAIL [change state from image to range] expected: FAIL - [change state from reset to email] - expected: FAIL - [change state from reset to datetime] expected: FAIL [change state from reset to range] expected: FAIL - [change state from button to email] - expected: FAIL - [change state from button to datetime] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini index 7577868bb52..26f33d38074 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini @@ -10,11 +10,4 @@ expected: FAIL [value IDL attribute of input type range with value attribute] - expected: FAIL - - [value IDL attribute of input type email without value attribute] - expected: FAIL - - [value IDL attribute of input type email with value attribute] - expected: FAIL - + expected: FAIL \ No newline at end of file