Make HTMLFormElementHelpers::submit take an enumerated argument instead of a boolean

Fixes #3677
This commit is contained in:
Gilles Leblanc 2014-10-16 20:57:55 -04:00
parent 6ab8f4611f
commit a31849df11
2 changed files with 10 additions and 5 deletions

View file

@ -116,19 +116,24 @@ impl<'a> HTMLFormElementMethods for JSRef<'a, HTMLFormElement> {
// https://html.spec.whatwg.org/multipage/forms.html#the-form-element:concept-form-submit // https://html.spec.whatwg.org/multipage/forms.html#the-form-element:concept-form-submit
fn Submit(self) { fn Submit(self) {
self.submit(true, FormElement(self)); self.submit(FromFormSubmitMethod, FormElement(self));
} }
} }
pub enum SubmittedFrom {
FromFormSubmitMethod,
NotFromFormSubmitMethod
}
pub trait HTMLFormElementHelpers { pub trait HTMLFormElementHelpers {
// https://html.spec.whatwg.org/multipage/forms.html#concept-form-submit // https://html.spec.whatwg.org/multipage/forms.html#concept-form-submit
fn submit(self, from_submit_method: bool, submitter: FormSubmitter); fn submit(self, submit_method_flag: SubmittedFrom, submitter: FormSubmitter);
// https://html.spec.whatwg.org/multipage/forms.html#constructing-the-form-data-set // https://html.spec.whatwg.org/multipage/forms.html#constructing-the-form-data-set
fn get_form_dataset(self, submitter: Option<FormSubmitter>) -> Vec<FormDatum>; fn get_form_dataset(self, submitter: Option<FormSubmitter>) -> Vec<FormDatum>;
} }
impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> { impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> {
fn submit(self, _from_submit_method: bool, submitter: FormSubmitter) { fn submit(self, _submit_method_flag: SubmittedFrom, submitter: FormSubmitter) {
// Step 1 // Step 1
let doc = document_from_node(self).root(); let doc = document_from_node(self).root();
let win = window_from_node(self).root(); let win = window_from_node(self).root();

View file

@ -19,7 +19,7 @@ use dom::element::{AttributeHandlers, Element, HTMLInputElementTypeId};
use dom::event::Event; use dom::event::Event;
use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement; use dom::htmlelement::HTMLElement;
use dom::htmlformelement::{InputElement, FormOwner, HTMLFormElement, HTMLFormElementHelpers}; use dom::htmlformelement::{InputElement, FormOwner, HTMLFormElement, HTMLFormElementHelpers, NotFromFormSubmitMethod};
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, document_from_node, window_from_node}; use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, document_from_node, window_from_node};
use dom::virtualmethods::VirtualMethods; use dom::virtualmethods::VirtualMethods;
@ -397,7 +397,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLInputElement> {
InputRadio => self.SetChecked(true), InputRadio => self.SetChecked(true),
InputButton(Some(DEFAULT_SUBMIT_VALUE)) => { InputButton(Some(DEFAULT_SUBMIT_VALUE)) => {
self.form_owner().map(|o| { self.form_owner().map(|o| {
o.root().submit(false, InputElement(self.clone())) o.root().submit(NotFromFormSubmitMethod, InputElement(self.clone()))
}); });
} }
_ => {} _ => {}