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/tests/wpt/metadata/html/semantics/forms/the-button-element/button-events.html.ini b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-events.html.ini index 989d296a711..f12b662a07c 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-button-element/button-events.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-events.html.ini @@ -1,12 +1,6 @@ [button-events.html] type: testharness - expected: CRASH - [The submit event must be fired when click a button in submit status] - expected: TIMEOUT - - [The reset event must be fired when click a button in reset status] - expected: TIMEOUT - + expected: TIMEOUT [The show event must be fired when click a button in menu status] expected: TIMEOUT