diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2015-12-31 15:56:16 +0530 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2015-12-31 15:56:16 +0530 |
commit | 77b23d1bb97555b08e6bf0cc7a12482fd84c0a43 (patch) | |
tree | 4b607ed8acc3e32445300ecab227b393a1011350 /components/script/dom | |
parent | 3d969e429d2cf92ae9c548bedc688a5175322854 (diff) | |
parent | 3ef39e1a30bd2d93073c41d0bb866bd3359e8d66 (diff) | |
download | servo-77b23d1bb97555b08e6bf0cc7a12482fd84c0a43.tar.gz servo-77b23d1bb97555b08e6bf0cc7a12482fd84c0a43.zip |
Auto merge of #9105 - jdm:buttoneventsintermittent, r=nox
Implement support for modifying the type attribute of <button>
https://github.com/servo/servo/pull/9100
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9105)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/htmlbuttonelement.rs | 18 | ||||
-rw-r--r-- | components/script/dom/macros.rs | 1 | ||||
-rw-r--r-- | components/script/dom/webidls/EventHandler.webidl | 1 |
3 files changed, 18 insertions, 2 deletions
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index 9b4697c4829..5a8ffaf0df6 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -27,7 +27,6 @@ use string_cache::Atom; use util::str::DOMString; #[derive(JSTraceable, PartialEq, Copy, Clone)] -#[allow(dead_code)] #[derive(HeapSizeOf)] enum ButtonType { Submit, @@ -50,7 +49,6 @@ impl HTMLButtonElement { htmlelement: HTMLElement::new_inherited_with_state(IN_ENABLED_STATE, localName, prefix, document), - //TODO: implement button_type in attribute_mutated button_type: Cell::new(ButtonType::Submit) } } @@ -162,6 +160,22 @@ impl VirtualMethods for HTMLButtonElement { } } }, + &atom!("type") => { + match mutation { + AttributeMutation::Set(_) => { + let value = match &**attr.value() { + "reset" => ButtonType::Reset, + "button" => ButtonType::Button, + "menu" => ButtonType::Menu, + _ => ButtonType::Submit, + }; + self.button_type.set(value); + } + AttributeMutation::Removed => { + self.button_type.set(ButtonType::Submit); + } + } + } _ => {}, } } diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index ec639d6f6b5..eb60a2c5798 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -330,6 +330,7 @@ macro_rules! global_event_handlers( event_handler!(keyup, GetOnkeyup, SetOnkeyup); event_handler!(input, GetOninput, SetOninput); event_handler!(change, GetOnchange, SetOnchange); + event_handler!(reset, GetOnreset, SetOnreset); event_handler!(submit, GetOnsubmit, SetOnsubmit); ) ); diff --git a/components/script/dom/webidls/EventHandler.webidl b/components/script/dom/webidls/EventHandler.webidl index 81547d03eb3..24382756aec 100644 --- a/components/script/dom/webidls/EventHandler.webidl +++ b/components/script/dom/webidls/EventHandler.webidl @@ -31,6 +31,7 @@ interface GlobalEventHandlers { attribute EventHandler onkeypress; attribute EventHandler onkeyup; attribute EventHandler onchange; + attribute EventHandler onreset; attribute EventHandler onsubmit; }; |