aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlbuttonelement.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2015-10-20 21:14:42 -0500
committerJosh Matthews <josh@joshmatthews.net>2015-12-29 10:45:04 -0500
commit7693b0346889a42c43e60e5c5ec7c921801a6f15 (patch)
tree0d458b330745a7bd26b4513f322767d6f974afb5 /components/script/dom/htmlbuttonelement.rs
parentc1cb9403a7bfa9720c653c333134b55fc214c746 (diff)
downloadservo-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.rs25
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() {