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 = [];