Bug 1518442 - Part 3: Add dom.formdata.event.enabled preference for Event-based form participation; r=smaug,edgar
Differential Revision: https://phabricator.services.mozilla.com/D43987
This commit is contained in:
@@ -560,7 +560,8 @@ nsresult HTMLFormElement::DoSubmit(WidgetEvent* aEvent) {
|
||||
nsresult rv = BuildSubmission(getter_Transfers(submission), aEvent);
|
||||
|
||||
// Don't raise an error if form cannot navigate.
|
||||
if (rv == NS_ERROR_NOT_AVAILABLE) {
|
||||
if (StaticPrefs::dom_formdata_event_enabled() &&
|
||||
rv == NS_ERROR_NOT_AVAILABLE) {
|
||||
mIsSubmitting = false;
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -628,7 +629,7 @@ nsresult HTMLFormElement::BuildSubmission(HTMLFormSubmission** aFormSubmission,
|
||||
|
||||
// Step 9. If form cannot navigate, then return.
|
||||
// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-submission-algorithm
|
||||
if (!GetComposedDoc()) {
|
||||
if (StaticPrefs::dom_formdata_event_enabled() && !GetComposedDoc()) {
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
@@ -885,7 +886,8 @@ nsresult HTMLFormElement::NotifySubmitObservers(nsIURI* aActionURL,
|
||||
|
||||
nsresult HTMLFormElement::ConstructEntryList(FormData* aFormData) {
|
||||
MOZ_ASSERT(aFormData, "Must have FormData!");
|
||||
if (mIsConstructingEntryList) {
|
||||
bool isFormDataEventEnabled = StaticPrefs::dom_formdata_event_enabled();
|
||||
if (isFormDataEventEnabled && mIsConstructingEntryList) {
|
||||
// Step 2.2 of https://xhr.spec.whatwg.org/#dom-formdata.
|
||||
return NS_ERROR_DOM_INVALID_STATE_ERR;
|
||||
}
|
||||
@@ -908,16 +910,18 @@ nsresult HTMLFormElement::ConstructEntryList(FormData* aFormData) {
|
||||
sortedControls[i]->SubmitNamesValues(aFormData);
|
||||
}
|
||||
|
||||
FormDataEventInit init;
|
||||
init.mBubbles = true;
|
||||
init.mCancelable = false;
|
||||
init.mFormData = aFormData;
|
||||
RefPtr<FormDataEvent> event =
|
||||
FormDataEvent::Constructor(this, NS_LITERAL_STRING("formdata"), init);
|
||||
event->SetTrusted(true);
|
||||
if (isFormDataEventEnabled) {
|
||||
FormDataEventInit init;
|
||||
init.mBubbles = true;
|
||||
init.mCancelable = false;
|
||||
init.mFormData = aFormData;
|
||||
RefPtr<FormDataEvent> event =
|
||||
FormDataEvent::Constructor(this, NS_LITERAL_STRING("formdata"), init);
|
||||
event->SetTrusted(true);
|
||||
|
||||
EventDispatcher::DispatchDOMEvent(ToSupports(this), nullptr, event, nullptr,
|
||||
nullptr);
|
||||
EventDispatcher::DispatchDOMEvent(ToSupports(this), nullptr, event, nullptr,
|
||||
nullptr);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user