diff options
author | Josh Matthews <josh@joshmatthews.net> | 2015-10-20 21:14:42 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2015-12-29 10:45:04 -0500 |
commit | 7693b0346889a42c43e60e5c5ec7c921801a6f15 (patch) | |
tree | 0d458b330745a7bd26b4513f322767d6f974afb5 /components/script/dom/htmlbuttonelement.rs | |
parent | c1cb9403a7bfa9720c653c333134b55fc214c746 (diff) | |
download | servo-7693b0346889a42c43e60e5c5ec7c921801a6f15.tar.gz servo-7693b0346889a42c43e60e5c5ec7c921801a6f15.zip |
Make button elements activatable. Fixes #4837. Fixes #8101.
Diffstat (limited to 'components/script/dom/htmlbuttonelement.rs')
-rw-r--r-- | components/script/dom/htmlbuttonelement.rs | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index ad60d8fb38c..9b4697c4829 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -14,7 +14,7 @@ use dom::event::Event; use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; -use dom::htmlformelement::{FormControl, FormSubmitter}; +use dom::htmlformelement::{FormControl, FormSubmitter, ResetFrom}; use dom::htmlformelement::{SubmittedFrom, HTMLFormElement}; use dom::node::{Node, UnbindContext, document_from_node, window_from_node}; use dom::nodelist::NodeList; @@ -189,7 +189,7 @@ impl VirtualMethods for HTMLButtonElement { impl FormControl for HTMLButtonElement {} -impl<'a> Activatable for &'a HTMLButtonElement { +impl Activatable for HTMLButtonElement { fn as_element(&self) -> &Element { self.upcast() } @@ -214,19 +214,26 @@ impl<'a> Activatable for &'a HTMLButtonElement { match ty { //https://html.spec.whatwg.org/multipage/#attr-button-type-submit-state ButtonType::Submit => { - self.form_owner().map(|o| { - o.submit(SubmittedFrom::NotFromFormSubmitMethod, - FormSubmitter::ButtonElement(self.clone())) - }); - }, - _ => () + // TODO: is document owner fully active? + if let Some(owner) = self.form_owner() { + owner.submit(SubmittedFrom::NotFromFormSubmitMethod, + FormSubmitter::ButtonElement(self.clone())); + } + } + ButtonType::Reset => { + // TODO: is document owner fully active? + if let Some(owner) = self.form_owner() { + owner.reset(ResetFrom::NotFromFormResetMethod); + } + } + _ => (), } } // https://html.spec.whatwg.org/multipage/#implicit-submission #[allow(unsafe_code)] fn implicit_submission(&self, ctrlKey: bool, shiftKey: bool, altKey: bool, metaKey: bool) { - let doc = document_from_node(*self); + let doc = document_from_node(self); let node = doc.upcast::<Node>(); let owner = self.form_owner(); if owner.is_none() || self.upcast::<Element>().click_in_progress() { |