diff options
-rw-r--r-- | components/script/dom/htmllielement.rs | 25 | ||||
-rw-r--r-- | components/script/dom/macros.rs | 16 | ||||
-rw-r--r-- | components/script/dom/virtualmethods.rs | 4 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLLIElement.webidl | 2 | ||||
-rw-r--r-- | tests/wpt/metadata/html/dom/interfaces.html.ini | 6 | ||||
-rw-r--r-- | tests/wpt/metadata/html/dom/reflection-grouping.html.ini | 180 | ||||
-rw-r--r-- | tests/wpt/metadata/html/semantics/grouping-content/the-li-element/grouping-li.html.ini | 30 |
7 files changed, 46 insertions, 217 deletions
diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs index 444fc37827c..32915a5c351 100644 --- a/components/script/dom/htmllielement.rs +++ b/components/script/dom/htmllielement.rs @@ -3,12 +3,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLLIElementBinding; +use dom::bindings::codegen::Bindings::HTMLLIElementBinding::HTMLLIElementMethods; +use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; use dom::bindings::str::DOMString; use dom::document::Document; use dom::htmlelement::HTMLElement; use dom::node::Node; +use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; #[dom_struct] pub struct HTMLLIElement { @@ -31,3 +35,24 @@ impl HTMLLIElement { HTMLLIElementBinding::Wrap) } } + +impl HTMLLIElementMethods for HTMLLIElement { + // https://html.spec.whatwg.org/multipage/#dom-li-value + make_int_getter!(Value, "value"); + + // https://html.spec.whatwg.org/multipage/#dom-li-value + make_int_setter!(SetValue, "value"); +} + +impl VirtualMethods for HTMLLIElement { + fn super_type(&self) -> Option<&VirtualMethods> { + Some(self.upcast::<HTMLElement>() as &VirtualMethods) + } + + fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue { + match name { + &atom!("value") => AttrValue::from_i32(value.into(), 0), + _ => self.super_type().unwrap().parse_plain_attribute(name, value), + } + } +} diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 58af2b28ac6..2b29ec8014c 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -47,6 +47,22 @@ macro_rules! make_limited_int_setter( ); #[macro_export] +macro_rules! make_int_setter( + ($attr:ident, $htmlname:tt, $default:expr) => ( + fn $attr(&self, value: i32) { + use dom::bindings::inheritance::Castable; + use dom::element::Element; + + let element = self.upcast::<Element>(); + element.set_int_attribute(&atom!($htmlname), value) + } + ); + ($attr:ident, $htmlname:tt) => { + make_int_setter!($attr, $htmlname, 0); + }; +); + +#[macro_export] macro_rules! make_int_getter( ($attr:ident, $htmlname:tt, $default:expr) => ( fn $attr(&self) -> i32 { diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs index b42e8b676c3..d4cf1609568 100644 --- a/components/script/dom/virtualmethods.rs +++ b/components/script/dom/virtualmethods.rs @@ -29,6 +29,7 @@ use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; use dom::htmllabelelement::HTMLLabelElement; +use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; use dom::htmlmediaelement::HTMLMediaElement; use dom::htmlmetaelement::HTMLMetaElement; @@ -179,6 +180,9 @@ pub fn vtable_for(node: &Node) -> &VirtualMethods { NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLabelElement)) => { node.downcast::<HTMLLabelElement>().unwrap() as &VirtualMethods } + NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLIElement)) => { + node.downcast::<HTMLLIElement>().unwrap() as &VirtualMethods + } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLinkElement)) => { node.downcast::<HTMLLinkElement>().unwrap() as &VirtualMethods } diff --git a/components/script/dom/webidls/HTMLLIElement.webidl b/components/script/dom/webidls/HTMLLIElement.webidl index a2fcd9cc7d3..ea7d574eba4 100644 --- a/components/script/dom/webidls/HTMLLIElement.webidl +++ b/components/script/dom/webidls/HTMLLIElement.webidl @@ -4,7 +4,7 @@ // https://html.spec.whatwg.org/multipage/#htmllielement interface HTMLLIElement : HTMLElement { - // attribute long value; + attribute long value; // also has obsolete members }; diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 7696abf478f..9cf7bd0c315 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -1572,15 +1572,9 @@ [HTMLUListElement interface: attribute type] expected: FAIL - [HTMLLIElement interface: attribute value] - expected: FAIL - [HTMLLIElement interface: attribute type] expected: FAIL - [HTMLLIElement interface: document.createElement("li") must inherit property "value" with the proper type (0)] - expected: FAIL - [HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type (1)] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/reflection-grouping.html.ini b/tests/wpt/metadata/html/dom/reflection-grouping.html.ini index 7ecf978bf18..ab78b68717b 100644 --- a/tests/wpt/metadata/html/dom/reflection-grouping.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-grouping.html.ini @@ -6303,186 +6303,6 @@ [li.tabIndex: IDL set to -2147483648 followed by getAttribute()] expected: FAIL - [li.value: typeof IDL attribute] - expected: FAIL - - [li.value: IDL get with DOM attribute unset] - expected: FAIL - - [li.value: setAttribute() to -36 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to -1 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to 0 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to 1 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to 2147483647 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to -2147483648 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to 2147483648 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to -2147483649 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to 4294967295 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to 4294967296 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "-1" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "-0" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "0" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "1" followed by IDL get] - expected: FAIL - - [li.value: 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 - - [li.value: setAttribute() to "\\t7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "\\v7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "\\f7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "\\n7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "\\r7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "
7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "
7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to " 7" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to undefined followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to 1.5 followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to true followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to false followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to object "[object Object\]" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to NaN followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to Infinity followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to -Infinity followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to "\\0" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to object "2" followed by IDL get] - expected: FAIL - - [li.value: setAttribute() to object "3" followed by IDL get] - expected: FAIL - - [li.value: IDL set to -36 followed by getAttribute()] - expected: FAIL - - [li.value: IDL set to -1 followed by getAttribute()] - expected: FAIL - - [li.value: IDL set to 0 followed by getAttribute()] - expected: FAIL - - [li.value: IDL set to 1 followed by getAttribute()] - expected: FAIL - - [li.value: IDL set to 2147483647 followed by getAttribute()] - expected: FAIL - - [li.value: IDL set to -2147483648 followed by getAttribute()] - expected: FAIL - [li.type: typeof IDL attribute] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/grouping-content/the-li-element/grouping-li.html.ini b/tests/wpt/metadata/html/semantics/grouping-content/the-li-element/grouping-li.html.ini index ea4e02e4cac..57509d09e74 100644 --- a/tests/wpt/metadata/html/semantics/grouping-content/the-li-element/grouping-li.html.ini +++ b/tests/wpt/metadata/html/semantics/grouping-content/the-li-element/grouping-li.html.ini @@ -3,33 +3,3 @@ [li should have a 'value' attribute] expected: FAIL - [Default (unspecified) value of value is 0.] - expected: FAIL - - [.value property reflects content attribute - and both parse value of '2' correctly.] - expected: FAIL - - [IDL and content attribute parse value of '-10' correctly.] - expected: FAIL - - [IDL and content attribute parse value of '4.03' correctly.] - expected: FAIL - - [IDL and content attribute parse value of '-4.03' correctly.] - expected: FAIL - - [IDL and content attribute parse value of '4.9' correctly.] - expected: FAIL - - [IDL and content attribute parse value of '-4.9' correctly.] - expected: FAIL - - [IDL and content attribute parse value of '7e2' correctly.] - expected: FAIL - - [IDL and content attribute parse value of '.5' correctly.] - expected: FAIL - - [IDL and content attribute parse value of 'A' correctly.] - expected: FAIL - |