LibWeb: When creating form action URL, only include value for the submit

that was used to submit the form
This commit is contained in:
Shadowfacts 2020-05-04 22:58:27 -04:00 committed by Andreas Kling
parent 5c46741be8
commit 7f538ea7eb
Notes: sideshowbarker 2024-07-19 06:57:42 +09:00
3 changed files with 5 additions and 4 deletions

View file

@ -41,7 +41,7 @@ HTMLFormElement::~HTMLFormElement()
{
}
void HTMLFormElement::submit()
void HTMLFormElement::submit(RefPtr<HTMLInputElement> submitter)
{
if (action().is_null()) {
dbg() << "Unsupported form action ''";
@ -68,7 +68,7 @@ void HTMLFormElement::submit()
for_each_in_subtree_of_type<HTMLInputElement>([&](auto& node) {
auto& input = to<HTMLInputElement>(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;
});

View file

@ -27,6 +27,7 @@
#pragma once
#include <LibWeb/DOM/HTMLElement.h>
#include <LibWeb/DOM/HTMLInputElement.h>
namespace Web {
@ -38,7 +39,7 @@ public:
String action() const { return attribute("action"); }
String method() const { return attribute("method"); }
void submit();
void submit(RefPtr<HTMLInputElement> submitter);
};
template<>

View file

@ -63,7 +63,7 @@ RefPtr<LayoutNode> HTMLInputElement::create_layout_node(const StyleProperties*)
button.on_click = [this] {
if (auto* form = first_ancestor_of_type<HTMLFormElement>()) {
// FIXME: Remove this const_cast once we have a non-const first_ancestor_of_type.
const_cast<HTMLFormElement*>(form)->submit();
const_cast<HTMLFormElement*>(form)->submit(this);
}
};
widget = button;