Parse attributes according to the specification in AttrValue::from_u32.

This exposes another bug: "-0" failed to parse with str.parse(), and is now
successfully parsed into 0. However, input.size and textarea.{rows, cols} are
supposed to be "limited to only non-negative numbers greater than zero", so 0
is not actually supposed to be accepted.
This commit is contained in:
Ms2ger 2015-04-20 10:50:47 +02:00
parent 8b8daa24b8
commit dd9351d722
3 changed files with 11 additions and 93 deletions

View file

@ -16,7 +16,7 @@ use dom::window::Window;
use dom::virtualmethods::vtable_for; use dom::virtualmethods::vtable_for;
use devtools_traits::AttrInfo; use devtools_traits::AttrInfo;
use util::str::{DOMString, split_html_space_chars}; use util::str::{DOMString, parse_unsigned_integer, split_html_space_chars};
use string_cache::{Atom, Namespace}; use string_cache::{Atom, Namespace};
@ -55,8 +55,7 @@ impl AttrValue {
} }
pub fn from_u32(string: DOMString, default: u32) -> AttrValue { pub fn from_u32(string: DOMString, default: u32) -> AttrValue {
// XXX Is parse() correct? let result = parse_unsigned_integer(string.chars()).unwrap_or(default);
let result: u32 = string.parse().unwrap_or(default);
AttrValue::UInt(string, result) AttrValue::UInt(string, result)
} }

View file

@ -1131,24 +1131,6 @@
[img.hspace: setAttribute() to 4294967295 followed by IDL get] [img.hspace: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL expected: FAIL
[img.hspace: setAttribute() to "\\t7" followed by IDL get]
expected: FAIL
[img.hspace: setAttribute() to "\\f7" followed by IDL get]
expected: FAIL
[img.hspace: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[img.hspace: setAttribute() to "\\n7" followed by IDL get]
expected: FAIL
[img.hspace: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL
[img.hspace: setAttribute() to 1.5 followed by IDL get]
expected: FAIL
[img.hspace: setAttribute() to object "3" followed by getAttribute()] [img.hspace: setAttribute() to object "3" followed by getAttribute()]
expected: FAIL expected: FAIL
@ -1161,24 +1143,6 @@
[img.vspace: setAttribute() to 4294967295 followed by IDL get] [img.vspace: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL expected: FAIL
[img.vspace: setAttribute() to "\\t7" followed by IDL get]
expected: FAIL
[img.vspace: setAttribute() to "\\f7" followed by IDL get]
expected: FAIL
[img.vspace: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[img.vspace: setAttribute() to "\\n7" followed by IDL get]
expected: FAIL
[img.vspace: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL
[img.vspace: setAttribute() to 1.5 followed by IDL get]
expected: FAIL
[img.vspace: setAttribute() to object "3" followed by getAttribute()] [img.vspace: setAttribute() to object "3" followed by getAttribute()]
expected: FAIL expected: FAIL

View file

@ -5778,27 +5778,12 @@
[input.size: setAttribute() to 4294967295 followed by IDL get] [input.size: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL expected: FAIL
[input.size: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[input.size: setAttribute() to "0" followed by IDL get] [input.size: setAttribute() to "0" followed by IDL get]
expected: FAIL expected: FAIL
[input.size: setAttribute() to "\\t7" followed by IDL get]
expected: FAIL
[input.size: setAttribute() to "\\f7" followed by IDL get]
expected: FAIL
[input.size: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[input.size: setAttribute() to "\\n7" followed by IDL get]
expected: FAIL
[input.size: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL
[input.size: setAttribute() to 1.5 followed by IDL get]
expected: FAIL
[input.size: setAttribute() to object "3" followed by getAttribute()] [input.size: setAttribute() to object "3" followed by getAttribute()]
expected: FAIL expected: FAIL
@ -12228,27 +12213,12 @@
[textarea.cols: setAttribute() to 4294967295 followed by IDL get] [textarea.cols: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL expected: FAIL
[textarea.cols: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to "0" followed by IDL get] [textarea.cols: setAttribute() to "0" followed by IDL get]
expected: FAIL expected: FAIL
[textarea.cols: setAttribute() to "\\t7" followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to "\\f7" followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to "\\n7" followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to 1.5 followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to object "3" followed by getAttribute()] [textarea.cols: setAttribute() to object "3" followed by getAttribute()]
expected: FAIL expected: FAIL
@ -13179,27 +13149,12 @@
[textarea.rows: setAttribute() to 4294967295 followed by IDL get] [textarea.rows: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL expected: FAIL
[textarea.rows: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to "0" followed by IDL get] [textarea.rows: setAttribute() to "0" followed by IDL get]
expected: FAIL expected: FAIL
[textarea.rows: setAttribute() to "\\t7" followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to "\\f7" followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to "\\n7" followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to 1.5 followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to object "3" followed by getAttribute()] [textarea.rows: setAttribute() to object "3" followed by getAttribute()]
expected: FAIL expected: FAIL