From 7f538ea7ebb87c1731a136eb7f6b94de74a6defd Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Mon, 4 May 2020 22:58:27 -0400 Subject: [PATCH] LibWeb: When creating form action URL, only include value for the submit that was used to submit the form --- Libraries/LibWeb/DOM/HTMLFormElement.cpp | 4 ++-- Libraries/LibWeb/DOM/HTMLFormElement.h | 3 ++- Libraries/LibWeb/DOM/HTMLInputElement.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Libraries/LibWeb/DOM/HTMLFormElement.cpp b/Libraries/LibWeb/DOM/HTMLFormElement.cpp index 1d87f18017..8e310983f1 100644 --- a/Libraries/LibWeb/DOM/HTMLFormElement.cpp +++ b/Libraries/LibWeb/DOM/HTMLFormElement.cpp @@ -41,7 +41,7 @@ HTMLFormElement::~HTMLFormElement() { } -void HTMLFormElement::submit() +void HTMLFormElement::submit(RefPtr submitter) { if (action().is_null()) { dbg() << "Unsupported form action ''"; @@ -68,7 +68,7 @@ void HTMLFormElement::submit() for_each_in_subtree_of_type([&](auto& node) { auto& input = to(node); - if (!input.name().is_null()) + if (!input.name().is_null() && (input.type() != "submit" || &input == submitter)) parameters.append({ input.name(), input.value() }); return IterationDecision::Continue; }); diff --git a/Libraries/LibWeb/DOM/HTMLFormElement.h b/Libraries/LibWeb/DOM/HTMLFormElement.h index f50d9ea869..e6a6f18a4f 100644 --- a/Libraries/LibWeb/DOM/HTMLFormElement.h +++ b/Libraries/LibWeb/DOM/HTMLFormElement.h @@ -27,6 +27,7 @@ #pragma once #include +#include namespace Web { @@ -38,7 +39,7 @@ public: String action() const { return attribute("action"); } String method() const { return attribute("method"); } - void submit(); + void submit(RefPtr submitter); }; template<> diff --git a/Libraries/LibWeb/DOM/HTMLInputElement.cpp b/Libraries/LibWeb/DOM/HTMLInputElement.cpp index 66e58b036e..f3888e3b5c 100644 --- a/Libraries/LibWeb/DOM/HTMLInputElement.cpp +++ b/Libraries/LibWeb/DOM/HTMLInputElement.cpp @@ -63,7 +63,7 @@ RefPtr HTMLInputElement::create_layout_node(const StyleProperties*) button.on_click = [this] { if (auto* form = first_ancestor_of_type()) { // FIXME: Remove this const_cast once we have a non-const first_ancestor_of_type. - const_cast(form)->submit(); + const_cast(form)->submit(this); } }; widget = button;