From eabaf2c6a55f954c7a7e38ade2123f8f75dafe27 Mon Sep 17 00:00:00 2001 From: Corey Farwell Date: Tue, 6 Oct 2015 20:34:12 -0400 Subject: [PATCH] Use the correct IDL setter for .size Previously, the IDL attribute would incorrectly set the `size` attribute for `` elements as `AttrValue::String`. Now it correctly sets it as `AttrValue::Length`. Also included is a regression test. --- components/script/dom/htmlfontelement.rs | 12 ++++++++++-- .../mozilla/htmlfontelement_size_attribute.html | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index 873079bee11..8b30375fbeb 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -70,7 +70,11 @@ impl HTMLFontElementMethods for HTMLFontElement { make_getter!(Size); // https://html.spec.whatwg.org/multipage/#dom-font-size - make_setter!(SetSize, "size"); + fn SetSize(&self, value: DOMString) { + let element = ElementCast::from_ref(self); + let length = parse_length(&value); + element.set_attribute(&Atom::from_slice("size"), AttrValue::Length(value, length)); + } } impl VirtualMethods for HTMLFontElement { @@ -100,7 +104,7 @@ impl VirtualMethods for HTMLFontElement { match name { &atom!("face") => AttrValue::from_atomic(value), &atom!("size") => { - let length = parse_legacy_font_size(&value).and_then(|parsed| specified::Length::from_str(&parsed)); + let length = parse_length(&value); AttrValue::Length(value, length) }, _ => self.super_type().unwrap().parse_plain_attribute(name, value), @@ -133,3 +137,7 @@ impl HTMLFontElement { } } } + +fn parse_length(value: &str) -> Option { + parse_legacy_font_size(&value).and_then(|parsed| specified::Length::from_str(&parsed)) +} diff --git a/tests/wpt/mozilla/tests/mozilla/htmlfontelement_size_attribute.html b/tests/wpt/mozilla/tests/mozilla/htmlfontelement_size_attribute.html index 6a17e70e24b..823e8e28c4f 100644 --- a/tests/wpt/mozilla/tests/mozilla/htmlfontelement_size_attribute.html +++ b/tests/wpt/mozilla/tests/mozilla/htmlfontelement_size_attribute.html @@ -20,6 +20,11 @@ var sizes = ["0", "1", "2", "3", "4", "5", "6", "7", "8"]; var testSize = function (attrValue) { elem.setAttribute("size", attrValue); assert_equals(elem.getAttribute("size"), attrValue); + assert_equals(elem.size, attrValue); + + elem.size = attrValue; + assert_equals(elem.getAttribute("size"), attrValue); + assert_equals(elem.size, attrValue); } var args = [];