1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:38:11 +00:00

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
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()) { if (action().is_null()) {
dbg() << "Unsupported form action ''"; dbg() << "Unsupported form action ''";
@ -68,7 +68,7 @@ void HTMLFormElement::submit()
for_each_in_subtree_of_type<HTMLInputElement>([&](auto& node) { for_each_in_subtree_of_type<HTMLInputElement>([&](auto& node) {
auto& input = to<HTMLInputElement>(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() }); parameters.append({ input.name(), input.value() });
return IterationDecision::Continue; return IterationDecision::Continue;
}); });

View file

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

View file

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