diff options
author | Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com> | 2017-01-28 17:20:01 +0300 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2017-03-15 16:39:55 +0100 |
commit | 38a61712e41ddeebb52cace6a9787735947964a4 (patch) | |
tree | f9949282e968e9a8fd57a8c8aa1fd63a59d0a89c /components/script/dom/htmlfieldsetelement.rs | |
parent | f90e19f7055387a14cabdf11f77335c7763e3fb7 (diff) | |
download | servo-38a61712e41ddeebb52cace6a9787735947964a4.tar.gz servo-38a61712e41ddeebb52cace6a9787735947964a4.zip |
Implement the form owner concept
Diffstat (limited to 'components/script/dom/htmlfieldsetelement.rs')
-rw-r--r-- | components/script/dom/htmlfieldsetelement.rs | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs index 19dbc8d4f1b..9fdc65a513c 100644 --- a/components/script/dom/htmlfieldsetelement.rs +++ b/components/script/dom/htmlfieldsetelement.rs @@ -6,7 +6,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding; use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding::HTMLFieldSetElementMethods; use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId}; -use dom::bindings::js::Root; +use dom::bindings::js::{MutNullableJS, Root}; use dom::bindings::str::DOMString; use dom::document::Document; use dom::element::{AttributeMutation, Element}; @@ -19,11 +19,13 @@ use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever_atoms::LocalName; +use std::default::Default; use style::element_state::*; #[dom_struct] pub struct HTMLFieldSetElement { - htmlelement: HTMLElement + htmlelement: HTMLElement, + form_owner: MutNullableJS<HTMLFormElement>, } impl HTMLFieldSetElement { @@ -33,7 +35,8 @@ impl HTMLFieldSetElement { HTMLFieldSetElement { htmlelement: HTMLElement::new_inherited_with_state(IN_ENABLED_STATE, - local_name, prefix, document) + local_name, prefix, document), + form_owner: Default::default(), } } @@ -148,9 +151,24 @@ impl VirtualMethods for HTMLFieldSetElement { } } }, + &local_name!("form") => { + self.form_attribute_mutated(mutation); + }, _ => {}, } } } -impl FormControl for HTMLFieldSetElement {} +impl FormControl for HTMLFieldSetElement { + fn form_owner(&self) -> Option<Root<HTMLFormElement>> { + self.form_owner.get() + } + + fn set_form_owner(&self, form: Option<&HTMLFormElement>) { + self.form_owner.set(form); + } + + fn to_element<'a>(&'a self) -> &'a Element { + self.upcast::<Element>() + } +} |