Improve support of limited unsigned long attributes

This commit is contained in:
Anthony Ramine 2015-05-03 14:51:40 +02:00
parent 15c4372a8b
commit fedad2af1f
15 changed files with 106 additions and 483 deletions

View file

@ -54,8 +54,25 @@ impl AttrValue {
AttrValue::TokenList(tokens, atoms) AttrValue::TokenList(tokens, atoms)
} }
// https://html.spec.whatwg.org/multipage/#reflecting-content-attributes-in-idl-attributes:idl-unsigned-long
pub fn from_u32(string: DOMString, default: u32) -> AttrValue { pub fn from_u32(string: DOMString, default: u32) -> AttrValue {
let result = parse_unsigned_integer(string.chars()).unwrap_or(default); let result = parse_unsigned_integer(string.chars()).unwrap_or(default);
let result = if result > 2147483647 {
default
} else {
result
};
AttrValue::UInt(string, result)
}
// https://html.spec.whatwg.org/multipage/#limited-to-only-non-negative-numbers-greater-than-zero
pub fn from_limited_u32(string: DOMString, default: u32) -> AttrValue {
let result = parse_unsigned_integer(string.chars()).unwrap_or(default);
let result = if result == 0 || result > 2147483647 {
default
} else {
result
};
AttrValue::UInt(string, result) AttrValue::UInt(string, result)
} }

View file

@ -711,7 +711,7 @@ pub trait AttributeHandlers {
fn get_tokenlist_attribute(self, local_name: &Atom) -> Vec<Atom>; fn get_tokenlist_attribute(self, local_name: &Atom) -> Vec<Atom>;
fn set_tokenlist_attribute(self, local_name: &Atom, value: DOMString); fn set_tokenlist_attribute(self, local_name: &Atom, value: DOMString);
fn set_atomic_tokenlist_attribute(self, local_name: &Atom, tokens: Vec<Atom>); fn set_atomic_tokenlist_attribute(self, local_name: &Atom, tokens: Vec<Atom>);
fn get_uint_attribute(self, local_name: &Atom) -> u32; fn get_uint_attribute(self, local_name: &Atom, default: u32) -> u32;
fn set_uint_attribute(self, local_name: &Atom, value: u32); fn set_uint_attribute(self, local_name: &Atom, value: u32);
} }
@ -966,7 +966,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
self.set_attribute(local_name, AttrValue::from_atomic_tokens(tokens)); self.set_attribute(local_name, AttrValue::from_atomic_tokens(tokens));
} }
fn get_uint_attribute(self, local_name: &Atom) -> u32 { fn get_uint_attribute(self, local_name: &Atom, default: u32) -> u32 {
assert!(local_name.chars().all(|ch| { assert!(local_name.chars().all(|ch| {
!ch.is_ascii() || ch.to_ascii_lowercase() == ch !ch.is_ascii() || ch.to_ascii_lowercase() == ch
})); }));
@ -979,7 +979,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
implement parse_plain_attribute"), implement parse_plain_attribute"),
} }
} }
None => 0, None => default,
} }
} }
fn set_uint_attribute(self, local_name: &Atom, value: u32) { fn set_uint_attribute(self, local_name: &Atom, value: u32) {

View file

@ -242,10 +242,8 @@ impl<'a> HTMLInputElementMethods for JSRef<'a, HTMLInputElement> {
make_bool_setter!(SetReadOnly, "readonly"); make_bool_setter!(SetReadOnly, "readonly");
// https://html.spec.whatwg.org/multipage/#dom-input-size // https://html.spec.whatwg.org/multipage/#dom-input-size
make_uint_getter!(Size); make_uint_getter!(Size, "size", DEFAULT_INPUT_SIZE);
make_limited_uint_setter!(SetSize, "size", DEFAULT_INPUT_SIZE);
// https://html.spec.whatwg.org/multipage/#dom-input-size
make_uint_setter!(SetSize, "size");
// https://html.spec.whatwg.org/multipage/#dom-input-type // https://html.spec.whatwg.org/multipage/#dom-input-type
make_enumerated_getter!(Type, "text", ("hidden") | ("search") | ("tel") | make_enumerated_getter!(Type, "text", ("hidden") | ("search") | ("tel") |
@ -568,7 +566,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLInputElement> {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue { fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name { match name {
&atom!("size") => AttrValue::from_u32(value, DEFAULT_INPUT_SIZE), &atom!("size") => AttrValue::from_limited_u32(value, DEFAULT_INPUT_SIZE),
_ => self.super_type().unwrap().parse_plain_attribute(name, value), _ => self.super_type().unwrap().parse_plain_attribute(name, value),
} }
} }

View file

@ -2,7 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::attr::{Attr, AttrHelpers}; use dom::attr::{Attr, AttrHelpers, AttrValue};
use dom::bindings::codegen::Bindings::HTMLTableCellElementBinding::HTMLTableCellElementMethods;
use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableCellElementDerived}; use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableCellElementDerived};
use dom::bindings::js::JSRef; use dom::bindings::js::JSRef;
use dom::document::Document; use dom::document::Document;
@ -12,9 +13,15 @@ use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::node::NodeTypeId; use dom::node::NodeTypeId;
use dom::virtualmethods::VirtualMethods; use dom::virtualmethods::VirtualMethods;
use cssparser::RGBA;
use util::str::{self, DOMString, LengthOrPercentageOrAuto}; use util::str::{self, DOMString, LengthOrPercentageOrAuto};
use cssparser::RGBA;
use string_cache::Atom;
use std::cell::Cell; use std::cell::Cell;
use std::cmp::max;
const DEFAULT_COLSPAN: u32 = 1;
#[derive(Copy, Clone, PartialEq, Debug)] #[derive(Copy, Clone, PartialEq, Debug)]
#[jstraceable] #[jstraceable]
@ -60,6 +67,12 @@ impl HTMLTableCellElement {
} }
} }
impl<'a> HTMLTableCellElementMethods for JSRef<'a, HTMLTableCellElement> {
// https://html.spec.whatwg.org/multipage/#dom-tdth-colspan
make_uint_getter!(ColSpan, "colspan", DEFAULT_COLSPAN);
make_uint_setter!(SetColSpan, "colspan");
}
pub trait HTMLTableCellElementHelpers { pub trait HTMLTableCellElementHelpers {
fn get_background_color(&self) -> Option<RGBA>; fn get_background_color(&self) -> Option<RGBA>;
fn get_colspan(&self) -> Option<u32>; fn get_colspan(&self) -> Option<u32>;
@ -96,8 +109,13 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTableCellElement> {
self.background_color.set(str::parse_legacy_color(&attr.value()).ok()) self.background_color.set(str::parse_legacy_color(&attr.value()).ok())
} }
&atom!("colspan") => { &atom!("colspan") => {
self.colspan.set(str::parse_unsigned_integer(attr.value().chars())); match *attr.value() {
} AttrValue::UInt(_, colspan) => {
self.colspan.set(Some(max(DEFAULT_COLSPAN, colspan)))
},
_ => unreachable!(),
}
},
&atom!("width") => self.width.set(str::parse_length(&attr.value())), &atom!("width") => self.width.set(str::parse_length(&attr.value())),
_ => () _ => ()
} }
@ -115,5 +133,11 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTableCellElement> {
_ => () _ => ()
} }
} }
}
fn parse_plain_attribute(&self, local_name: &Atom, value: DOMString) -> AttrValue {
match local_name {
&atom!("colspan") => AttrValue::from_u32(value, DEFAULT_COLSPAN),
_ => self.super_type().unwrap().parse_plain_attribute(local_name, value),
}
}
}

View file

@ -114,10 +114,8 @@ impl<'a> HTMLTextAreaElementMethods for JSRef<'a, HTMLTextAreaElement> {
// constraints // constraints
// https://html.spec.whatwg.org/multipage/#dom-textarea-cols // https://html.spec.whatwg.org/multipage/#dom-textarea-cols
make_uint_getter!(Cols); make_uint_getter!(Cols, "cols", DEFAULT_COLS);
make_limited_uint_setter!(SetCols, "cols", DEFAULT_COLS);
// https://html.spec.whatwg.org/multipage/#dom-textarea-cols
make_uint_setter!(SetCols, "cols");
// https://www.whatwg.org/html/#dom-fe-disabled // https://www.whatwg.org/html/#dom-fe-disabled
make_bool_getter!(Disabled); make_bool_getter!(Disabled);
@ -150,10 +148,8 @@ impl<'a> HTMLTextAreaElementMethods for JSRef<'a, HTMLTextAreaElement> {
make_bool_setter!(SetRequired, "required"); make_bool_setter!(SetRequired, "required");
// https://html.spec.whatwg.org/multipage/#dom-textarea-rows // https://html.spec.whatwg.org/multipage/#dom-textarea-rows
make_uint_getter!(Rows); make_uint_getter!(Rows, "rows", DEFAULT_ROWS);
make_limited_uint_setter!(SetRows, "rows", DEFAULT_ROWS);
// https://html.spec.whatwg.org/multipage/#dom-textarea-rows
make_uint_setter!(SetRows, "rows");
// https://html.spec.whatwg.org/multipage/#dom-textarea-wrap // https://html.spec.whatwg.org/multipage/#dom-textarea-wrap
make_getter!(Wrap); make_getter!(Wrap);
@ -310,8 +306,8 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue { fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name { match name {
&atom!("cols") => AttrValue::from_u32(value, DEFAULT_COLS), &atom!("cols") => AttrValue::from_limited_u32(value, DEFAULT_COLS),
&atom!("rows") => AttrValue::from_u32(value, DEFAULT_ROWS), &atom!("rows") => AttrValue::from_limited_u32(value, DEFAULT_ROWS),
_ => self.super_type().unwrap().parse_plain_attribute(name, value), _ => self.super_type().unwrap().parse_plain_attribute(name, value),
} }
} }

View file

@ -39,7 +39,7 @@ macro_rules! make_bool_getter(
#[macro_export] #[macro_export]
macro_rules! make_uint_getter( macro_rules! make_uint_getter(
( $attr:ident, $htmlname:expr ) => ( ($attr:ident, $htmlname:expr, $default:expr) => (
fn $attr(self) -> u32 { fn $attr(self) -> u32 {
use dom::element::{Element, AttributeHandlers}; use dom::element::{Element, AttributeHandlers};
use dom::bindings::codegen::InheritTypes::ElementCast; use dom::bindings::codegen::InheritTypes::ElementCast;
@ -47,9 +47,12 @@ macro_rules! make_uint_getter(
use std::ascii::AsciiExt; use std::ascii::AsciiExt;
let element: JSRef<Element> = ElementCast::from_ref(self); let element: JSRef<Element> = ElementCast::from_ref(self);
// FIXME(pcwalton): Do this at compile time, not runtime. // FIXME(pcwalton): Do this at compile time, not runtime.
element.get_uint_attribute(&Atom::from_slice($htmlname)) element.get_uint_attribute(&Atom::from_slice($htmlname), $default)
} }
); );
($attr:ident, $htmlname:expr) => {
make_uint_getter!($attr, $htmlname, 0);
};
($attr:ident) => { ($attr:ident) => {
make_uint_getter!($attr, to_lower!(stringify!($attr))); make_uint_getter!($attr, to_lower!(stringify!($attr)));
} }
@ -153,15 +156,51 @@ macro_rules! make_bool_setter(
#[macro_export] #[macro_export]
macro_rules! make_uint_setter( macro_rules! make_uint_setter(
( $attr:ident, $htmlname:expr ) => ( ($attr:ident, $htmlname:expr, $default:expr) => (
fn $attr(self, value: u32) { fn $attr(self, value: u32) {
use dom::element::{Element, AttributeHandlers}; use dom::element::{Element, AttributeHandlers};
use dom::bindings::codegen::InheritTypes::ElementCast; use dom::bindings::codegen::InheritTypes::ElementCast;
let value = if value > 2147483647 {
$default
} else {
value
};
let element: JSRef<Element> = ElementCast::from_ref(self); let element: JSRef<Element> = ElementCast::from_ref(self);
// FIXME(pcwalton): Do this at compile time, not at runtime. // FIXME(pcwalton): Do this at compile time, not at runtime.
element.set_uint_attribute(&Atom::from_slice($htmlname), value) element.set_uint_attribute(&Atom::from_slice($htmlname), value)
} }
); );
($attr:ident, $htmlname:expr) => {
make_uint_setter!($attr, $htmlname, 0);
};
);
#[macro_export]
macro_rules! make_limited_uint_setter(
($attr:ident, $htmlname:expr, $default:expr) => (
fn $attr(self, value: u32) -> $crate::dom::bindings::error::ErrorResult {
use dom::element::AttributeHandlers;
use dom::bindings::codegen::InheritTypes::ElementCast;
use string_cache::Atom;
let value = if value == 0 {
return Err($crate::dom::bindings::error::Error::IndexSize);
} else if value > 2147483647 {
$default
} else {
value
};
let element = ElementCast::from_ref(self);
// FIXME(pcwalton): Do this at compile time, not runtime.
element.set_uint_attribute(&Atom::from_slice($htmlname), value);
Ok(())
}
);
($attr:ident, $htmlname:expr) => {
make_limited_uint_setter!($attr, $htmlname, 1);
};
($attr:ident) => {
make_limited_uint_setter!($attr, to_lower!(stringify!($attr)));
};
); );
/// For use on non-jsmanaged types /// For use on non-jsmanaged types

View file

@ -34,7 +34,8 @@ interface HTMLInputElement : HTMLElement {
attribute DOMString placeholder; attribute DOMString placeholder;
attribute boolean readOnly; attribute boolean readOnly;
// attribute boolean required; // attribute boolean required;
attribute unsigned long size; [SetterThrows]
attribute unsigned long size;
// attribute DOMString src; // attribute DOMString src;
// attribute DOMString step; // attribute DOMString step;
attribute DOMString type; attribute DOMString type;

View file

@ -5,7 +5,7 @@
// https://www.whatwg.org/html/#htmltablecellelement // https://www.whatwg.org/html/#htmltablecellelement
interface HTMLTableCellElement : HTMLElement { interface HTMLTableCellElement : HTMLElement {
// attribute unsigned long colSpan; attribute unsigned long colSpan;
// attribute unsigned long rowSpan; // attribute unsigned long rowSpan;
//[PutForwards=value] readonly attribute DOMSettableTokenList headers; //[PutForwards=value] readonly attribute DOMSettableTokenList headers;
//readonly attribute long cellIndex; //readonly attribute long cellIndex;

View file

@ -7,7 +7,8 @@
interface HTMLTextAreaElement : HTMLElement { interface HTMLTextAreaElement : HTMLElement {
// attribute DOMString autocomplete; // attribute DOMString autocomplete;
// attribute boolean autofocus; // attribute boolean autofocus;
attribute unsigned long cols; [SetterThrows]
attribute unsigned long cols;
// attribute DOMString dirName; // attribute DOMString dirName;
attribute boolean disabled; attribute boolean disabled;
//readonly attribute HTMLFormElement? form; //readonly attribute HTMLFormElement? form;
@ -18,6 +19,7 @@ interface HTMLTextAreaElement : HTMLElement {
attribute DOMString placeholder; attribute DOMString placeholder;
attribute boolean readOnly; attribute boolean readOnly;
attribute boolean required; attribute boolean required;
[SetterThrows]
attribute unsigned long rows; attribute unsigned long rows;
attribute DOMString wrap; attribute DOMString wrap;

View file

@ -5238,9 +5238,6 @@
[HTMLTableDataCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type (0)] [HTMLTableDataCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type (0)]
expected: FAIL expected: FAIL
[HTMLTableCellElement interface: document.createElement("td") must inherit property "colSpan" with the proper type (0)]
expected: FAIL
[HTMLTableCellElement interface: document.createElement("td") must inherit property "rowSpan" with the proper type (1)] [HTMLTableCellElement interface: document.createElement("td") must inherit property "rowSpan" with the proper type (1)]
expected: FAIL expected: FAIL
@ -5307,9 +5304,6 @@
[HTMLTableHeaderCellElement interface: document.createElement("th") must inherit property "sort" with the proper type (3)] [HTMLTableHeaderCellElement interface: document.createElement("th") must inherit property "sort" with the proper type (3)]
expected: FAIL expected: FAIL
[HTMLTableCellElement interface: document.createElement("th") must inherit property "colSpan" with the proper type (0)]
expected: FAIL
[HTMLTableCellElement interface: document.createElement("th") must inherit property "rowSpan" with the proper type (1)] [HTMLTableCellElement interface: document.createElement("th") must inherit property "rowSpan" with the proper type (1)]
expected: FAIL expected: FAIL
@ -5352,9 +5346,6 @@
[HTMLTableCellElement interface object length] [HTMLTableCellElement interface object length]
expected: FAIL expected: FAIL
[HTMLTableCellElement interface: attribute colSpan]
expected: FAIL
[HTMLTableCellElement interface: attribute rowSpan] [HTMLTableCellElement interface: attribute rowSpan]
expected: FAIL expected: FAIL

View file

@ -1125,24 +1125,12 @@
[img.lowsrc: IDL set to object "test-valueOf" followed by IDL get] [img.lowsrc: IDL set to object "test-valueOf" followed by IDL get]
expected: FAIL expected: FAIL
[img.hspace: setAttribute() to 2147483648 followed by IDL get]
expected: FAIL
[img.hspace: setAttribute() to 4294967295 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
[img.hspace: setAttribute() to object "3" followed by IDL get] [img.hspace: setAttribute() to object "3" followed by IDL get]
expected: FAIL expected: FAIL
[img.vspace: setAttribute() to 2147483648 followed by IDL get]
expected: FAIL
[img.vspace: setAttribute() to 4294967295 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

@ -5766,33 +5766,12 @@
[input.required: IDL set to object "test-valueOf" followed by IDL get] [input.required: IDL set to object "test-valueOf" followed by IDL get]
expected: FAIL expected: FAIL
[input.size: IDL get with DOM attribute unset]
expected: FAIL
[input.size: setAttribute() to 0 followed by IDL get]
expected: FAIL
[input.size: setAttribute() to 2147483648 followed by IDL get]
expected: FAIL
[input.size: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL
[input.size: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[input.size: setAttribute() to "0" 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
[input.size: setAttribute() to object "3" followed by IDL get] [input.size: setAttribute() to object "3" followed by IDL get]
expected: FAIL expected: FAIL
[input.size: IDL set to 0 must throw INDEX_SIZE_ERR]
expected: FAIL
[input.src: typeof IDL attribute] [input.src: typeof IDL attribute]
expected: FAIL expected: FAIL
@ -12201,33 +12180,12 @@
[textarea.autofocus: IDL set to object "test-valueOf" followed by IDL get] [textarea.autofocus: IDL set to object "test-valueOf" followed by IDL get]
expected: FAIL expected: FAIL
[textarea.cols: IDL get with DOM attribute unset]
expected: FAIL
[textarea.cols: setAttribute() to 0 followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to 2147483648 followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[textarea.cols: setAttribute() to "0" 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
[textarea.cols: setAttribute() to object "3" followed by IDL get] [textarea.cols: setAttribute() to object "3" followed by IDL get]
expected: FAIL expected: FAIL
[textarea.cols: IDL set to 0 must throw INDEX_SIZE_ERR]
expected: FAIL
[textarea.dirName: typeof IDL attribute] [textarea.dirName: typeof IDL attribute]
expected: FAIL expected: FAIL
@ -13137,33 +13095,12 @@
[textarea.maxLength: IDL set to 2147483647 followed by getAttribute()] [textarea.maxLength: IDL set to 2147483647 followed by getAttribute()]
expected: FAIL expected: FAIL
[textarea.rows: IDL get with DOM attribute unset]
expected: FAIL
[textarea.rows: setAttribute() to 0 followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to 2147483648 followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[textarea.rows: setAttribute() to "0" 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
[textarea.rows: setAttribute() to object "3" followed by IDL get] [textarea.rows: setAttribute() to object "3" followed by IDL get]
expected: FAIL expected: FAIL
[textarea.rows: IDL set to 0 must throw INDEX_SIZE_ERR]
expected: FAIL
[textarea.itemScope: typeof IDL attribute] [textarea.itemScope: typeof IDL attribute]
expected: FAIL expected: FAIL

View file

@ -11544,192 +11544,12 @@
[td.tabIndex: IDL set to -2147483648 followed by getAttribute()] [td.tabIndex: IDL set to -2147483648 followed by getAttribute()]
expected: FAIL expected: FAIL
[td.colSpan: typeof IDL attribute]
expected: FAIL
[td.colSpan: IDL get with DOM attribute unset]
expected: FAIL
[td.colSpan: setAttribute() to -2147483649 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to -2147483648 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to -36 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to -1 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 0 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 1 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 257 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 2147483647 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 2147483648 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 4294967296 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "-1" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "0" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "1" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "\\t7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "\\v7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "\\f7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "\\n7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo " followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to undefined followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to 1.5 followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to true followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to false followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to object "[object Object\]" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to NaN followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to Infinity followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to -Infinity followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to "\\0" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to object "2" followed by IDL get]
expected: FAIL
[td.colSpan: setAttribute() to object "3" followed by getAttribute()] [td.colSpan: setAttribute() to object "3" followed by getAttribute()]
expected: FAIL expected: FAIL
[td.colSpan: setAttribute() to object "3" followed by IDL get] [td.colSpan: setAttribute() to object "3" followed by IDL get]
expected: FAIL expected: FAIL
[td.colSpan: IDL set to 0 followed by getAttribute()]
expected: FAIL
[td.colSpan: IDL set to 1 followed by getAttribute()]
expected: FAIL
[td.colSpan: IDL set to 257 followed by getAttribute()]
expected: FAIL
[td.colSpan: IDL set to 2147483647 followed by getAttribute()]
expected: FAIL
[td.colSpan: IDL set to "-0" followed by getAttribute()]
expected: FAIL
[td.colSpan: IDL set to "-0" followed by IDL get]
expected: FAIL
[td.rowSpan: typeof IDL attribute] [td.rowSpan: typeof IDL attribute]
expected: FAIL expected: FAIL
@ -13917,192 +13737,12 @@
[th.tabIndex: IDL set to -2147483648 followed by getAttribute()] [th.tabIndex: IDL set to -2147483648 followed by getAttribute()]
expected: FAIL expected: FAIL
[th.colSpan: typeof IDL attribute]
expected: FAIL
[th.colSpan: IDL get with DOM attribute unset]
expected: FAIL
[th.colSpan: setAttribute() to -2147483649 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to -2147483648 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to -36 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to -1 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 0 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 1 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 257 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 2147483647 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 2147483648 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 4294967295 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 4294967296 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "-1" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "-0" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "0" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "1" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "\\t7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "\\v7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "\\f7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "\\n7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to " 7" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo " followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to undefined followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to 1.5 followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to true followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to false followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to object "[object Object\]" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to NaN followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to Infinity followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to -Infinity followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to "\\0" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to object "2" followed by IDL get]
expected: FAIL
[th.colSpan: setAttribute() to object "3" followed by getAttribute()] [th.colSpan: setAttribute() to object "3" followed by getAttribute()]
expected: FAIL expected: FAIL
[th.colSpan: setAttribute() to object "3" followed by IDL get] [th.colSpan: setAttribute() to object "3" followed by IDL get]
expected: FAIL expected: FAIL
[th.colSpan: IDL set to 0 followed by getAttribute()]
expected: FAIL
[th.colSpan: IDL set to 1 followed by getAttribute()]
expected: FAIL
[th.colSpan: IDL set to 257 followed by getAttribute()]
expected: FAIL
[th.colSpan: IDL set to 2147483647 followed by getAttribute()]
expected: FAIL
[th.colSpan: IDL set to "-0" followed by getAttribute()]
expected: FAIL
[th.colSpan: IDL set to "-0" followed by IDL get]
expected: FAIL
[th.rowSpan: typeof IDL attribute] [th.rowSpan: typeof IDL attribute]
expected: FAIL expected: FAIL

View file

@ -1,5 +0,0 @@
[cols-zero.html]
type: reftest
reftype: ==
refurl: /html/rendering/bindings/the-textarea-element-0/textarea-ref.html
expected: FAIL

View file

@ -1,5 +0,0 @@
[rows-zero.html]
type: reftest
reftype: ==
refurl: /html/rendering/bindings/the-textarea-element-0/textarea-ref.html
expected: FAIL