mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-09 17:49:40 +00:00
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:
parent
696ccc1aa9
commit
273593afba
Notes:
github-actions[bot]
2024-07-26 12:25:59 +00:00
Author: https://github.com/awesomekling
Commit: 273593afba
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/841
Reviewed-by: https://github.com/tcl3
3 changed files with 18 additions and 1 deletions
|
@ -0,0 +1 @@
|
||||||
|
PASS! Did not click
|
|
@ -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>
|
|
@ -496,7 +496,11 @@ JS::GCPtr<DOM::NodeList> HTMLElement::labels()
|
||||||
// https://html.spec.whatwg.org/multipage/interaction.html#dom-click
|
// https://html.spec.whatwg.org/multipage/interaction.html#dom-click
|
||||||
void HTMLElement::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.
|
// 2. If this element's click in progress flag is set, then return.
|
||||||
if (m_click_in_progress)
|
if (m_click_in_progress)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue