diff options
author | Alexandrov Sergey <splavgm@gmail.com> | 2016-08-30 17:25:35 +0300 |
---|---|---|
committer | Alexandrov Sergey <splavgm@gmail.com> | 2016-08-30 17:29:58 +0300 |
commit | f5dbf4184117b03451a8dd0fce08dd0e3ff227ac (patch) | |
tree | d14256aaafe2f2da2d663d0e76c5f0521d92dd93 /components/script/dom/htmloptionelement.rs | |
parent | 7ebdf98d28369a0a547021148f40520131eea0e4 (diff) | |
download | servo-f5dbf4184117b03451a8dd0fce08dd0e3ff227ac.tar.gz servo-f5dbf4184117b03451a8dd0fce08dd0e3ff227ac.zip |
add HTMLOptionElement form attribute support
Diffstat (limited to 'components/script/dom/htmloptionelement.rs')
-rw-r--r-- | components/script/dom/htmloptionelement.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 737bc67bd4c..9183a78de0c 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -6,6 +6,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterDataMethods; use dom::bindings::codegen::Bindings::HTMLOptionElementBinding; use dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods; +use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementBinding::HTMLSelectElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; @@ -14,6 +15,8 @@ use dom::characterdata::CharacterData; use dom::document::Document; use dom::element::{AttributeMutation, Element}; use dom::htmlelement::HTMLElement; +use dom::htmlformelement::HTMLFormElement; +use dom::htmloptgroupelement::HTMLOptGroupElement; use dom::htmlscriptelement::HTMLScriptElement; use dom::htmlselectelement::HTMLSelectElement; use dom::node::{Node, UnbindContext}; @@ -110,6 +113,19 @@ impl HTMLOptionElementMethods for HTMLOptionElement { self.upcast::<Node>().SetTextContent(Some(value)) } + // https://html.spec.whatwg.org/multipage/#dom-option-form + fn GetForm(&self) -> Option<Root<HTMLFormElement>> { + let parent = self.upcast::<Node>().GetParentNode().and_then(|p| + if p.is::<HTMLOptGroupElement>() { + p.upcast::<Node>().GetParentNode() + } else { + Some(p) + } + ); + + parent.and_then(|p| p.downcast::<HTMLSelectElement>().and_then(|s| s.GetForm())) + } + // https://html.spec.whatwg.org/multipage/#attr-option-value fn Value(&self) -> DOMString { let element = self.upcast::<Element>(); |