diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 51280d27759..7057ec91323 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -27,7 +27,7 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::htmlelement::HTMLElement; use dom::keyboardevent::KeyboardEvent; use dom::htmlformelement::{InputElement, FormControl, HTMLFormElement, HTMLFormElementHelpers}; -use dom::htmlformelement::{NotFromFormSubmitMethod}; +use dom::htmlformelement::{NotFromFormSubmitMethod, NotFromFormResetMethod}; use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, OtherNodeDamage}; use dom::node::{document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; @@ -701,6 +701,15 @@ impl<'a> Activatable for JSRef<'a, HTMLInputElement> { }); } }, + InputReset => { + // https://html.spec.whatwg.org/multipage/forms.html#reset-button-state-(type=reset):activation-behavior + // FIXME (Manishearth): support document owners (needs ability to get parent browsing context) + if self.mutable() /* and document owner is fully active */ { + self.form_owner().map(|o| { + o.root().reset(NotFromFormResetMethod) + }); + } + }, InputCheckbox | InputRadio => { // https://html.spec.whatwg.org/multipage/forms.html#checkbox-state-(type=checkbox):activation-behavior // https://html.spec.whatwg.org/multipage/forms.html#radio-button-state-(type=radio):activation-behavior diff --git a/tests/html/form_reset.html b/tests/html/form_reset.html new file mode 100644 index 00000000000..99f3f194c07 --- /dev/null +++ b/tests/html/form_reset.html @@ -0,0 +1,17 @@ + +
+ + + + +