diff options
author | bors-servo <metajack+bors@gmail.com> | 2014-11-12 15:15:38 -0700 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2014-11-12 15:15:38 -0700 |
commit | 668d9217d8b8d999547fd1e8b690da8c8d80ddda (patch) | |
tree | 5ac4b6eacb755e446ac005954ca48a193e0fbf05 /components/script | |
parent | 88ff8c61f075e6f8b6123b810f1be4acf444b3d1 (diff) | |
parent | 09766511b5be92d64baca0bb7824455f8ae6befa (diff) | |
download | servo-668d9217d8b8d999547fd1e8b690da8c8d80ddda.tar.gz servo-668d9217d8b8d999547fd1e8b690da8c8d80ddda.zip |
auto merge of #3938 : guillaumebort/servo/fix/3933, r=jdm
Implement HTMLOptionElement.{label,value}
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/htmloptionelement.rs | 31 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLOptionElement.webidl | 6 |
2 files changed, 33 insertions, 4 deletions
diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index b9df3cc83d0..eabda88f4f8 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -91,6 +91,35 @@ impl<'a> HTMLOptionElementMethods for JSRef<'a, HTMLOptionElement> { let node: JSRef<Node> = NodeCast::from_ref(self); node.SetTextContent(Some(value)) } + + // https://html.spec.whatwg.org/multipage/forms.html#attr-option-value + fn Value(self) -> DOMString { + let element: JSRef<Element> = ElementCast::from_ref(self); + let attr = &atom!("value"); + if element.has_attribute(attr) { + element.get_string_attribute(attr) + } else { + self.Text() + } + } + + // https://html.spec.whatwg.org/multipage/forms.html#attr-option-value + make_setter!(SetValue, "value") + + // https://html.spec.whatwg.org/multipage/forms.html#attr-option-label + fn Label(self) -> DOMString { + let element: JSRef<Element> = ElementCast::from_ref(self); + let attr = &atom!("label"); + if element.has_attribute(attr) { + element.get_string_attribute(attr) + } else { + self.Text() + } + } + + // https://html.spec.whatwg.org/multipage/forms.html#attr-option-label + make_setter!(SetLabel, "label") + } impl<'a> VirtualMethods for JSRef<'a, HTMLOptionElement> { @@ -110,7 +139,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptionElement> { let node: JSRef<Node> = NodeCast::from_ref(*self); node.set_disabled_state(true); node.set_enabled_state(false); - }, + } _ => () } } diff --git a/components/script/dom/webidls/HTMLOptionElement.webidl b/components/script/dom/webidls/HTMLOptionElement.webidl index 5c3f4b37f6a..9126e24d790 100644 --- a/components/script/dom/webidls/HTMLOptionElement.webidl +++ b/components/script/dom/webidls/HTMLOptionElement.webidl @@ -6,12 +6,12 @@ // http://www.whatwg.org/html/#htmloptionelement //[NamedConstructor=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)] interface HTMLOptionElement : HTMLElement { - attribute boolean disabled; + attribute boolean disabled; //readonly attribute HTMLFormElement? form; - // attribute DOMString label; + attribute DOMString label; // attribute boolean defaultSelected; // attribute boolean selected; - // attribute DOMString value; + attribute DOMString value; attribute DOMString text; //readonly attribute long index; |