LibWeb: Don't proceed with Element.click() on disabled form controls

Fixes an infinite reload loop on some of the dom/events/ tests in WPT.
This commit is contained in:
Andreas Kling 2024-07-26 10:31:19 +02:00 committed by Andreas Kling
parent 696ccc1aa9
commit 273593afba
Notes: github-actions[bot] 2024-07-26 12:25:59 +00:00
3 changed files with 18 additions and 1 deletions

View File

@ -0,0 +1 @@
PASS! Did not click

View File

@ -0,0 +1,12 @@
<form id="theForm" style="display:none"><button id="theButton" type="submit" disabled></button></form>
<script src="../include.js"></script>
<script>
theForm.onclick = function() {
println("FAIL! Should not click!");
}
test(() => {
theButton.click();
println("PASS! Did not click");
});
</script>

View File

@ -496,7 +496,11 @@ JS::GCPtr<DOM::NodeList> HTMLElement::labels()
// https://html.spec.whatwg.org/multipage/interaction.html#dom-click
void HTMLElement::click()
{
// FIXME: 1. If this element is a form control that is disabled, then return.
// 1. If this element is a form control that is disabled, then return.
if (auto* form_control = dynamic_cast<FormAssociatedElement*>(this)) {
if (!form_control->enabled())
return;
}
// 2. If this element's click in progress flag is set, then return.
if (m_click_in_progress)