aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmloptionelement.rs
diff options
context:
space:
mode:
authorAlexandrov Sergey <splavgm@gmail.com>2016-08-30 17:25:35 +0300
committerAlexandrov Sergey <splavgm@gmail.com>2016-08-30 17:29:58 +0300
commitf5dbf4184117b03451a8dd0fce08dd0e3ff227ac (patch)
treed14256aaafe2f2da2d663d0e76c5f0521d92dd93 /components/script/dom/htmloptionelement.rs
parent7ebdf98d28369a0a547021148f40520131eea0e4 (diff)
downloadservo-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.rs16
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>();