Skip to content

Commit

Permalink
Don't fire dblclick on disabled form control elements
Browse files Browse the repository at this point in the history
As discussed here, we should apply the event blocking behavior for
disabled form controls to dblclick in addition to click, mouseup, and
mousedown:
whatwg/html#2368 (comment)

Change-Id: Ibc52585ce0704d8ba8467efc3462bd378d23fbae
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5007308
Commit-Queue: Joey Arhar <jarhar@chromium.org>
Reviewed-by: Mason Freed <masonf@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1225838}
  • Loading branch information
josepharhar authored and Chromium LUCI CQ committed Nov 17, 2023
1 parent 2c14659 commit 4210d4b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
5 changes: 4 additions & 1 deletion third_party/blink/renderer/core/events/mouse_event.cc
Expand Up @@ -389,7 +389,10 @@ DispatchEventResult MouseEvent::DispatchEvent(EventDispatcher& dispatcher) {
return dispatcher.Dispatch();

if (is_click || type() == event_type_names::kMousedown ||
type() == event_type_names::kMouseup) {
type() == event_type_names::kMouseup ||
(RuntimeEnabledFeatures::
DontFireDblclickOnDisabledFormControlsEnabled() &&
type() == event_type_names::kDblclick)) {
GetEventPath().AdjustForDisabledFormControl();
}

Expand Down
Expand Up @@ -1459,6 +1459,11 @@
name: "DOMPartsAPIActivePartTracking",
depends_on: ["DOMPartsAPI"],
},
{
// Shipping in M121, so should be safe to remove in M126.
name: "DontFireDblclickOnDisabledFormControls",
status: "stable",
},
{
name: "EditContext",
origin_trial_feature_name: "EditContext",
Expand Down
Expand Up @@ -25,7 +25,7 @@
static get formAssociated() { return true; }
});

['mousedown', 'mouseup', 'pointerdown', 'pointerup', 'click'].forEach(eventName => {
['mousedown', 'mouseup', 'pointerdown', 'pointerup', 'click', 'dblclick'].forEach(eventName => {
[true, false].forEach(clickChildElement => {
for (const target of targetparent.children) {
promise_test(async () => {
Expand All @@ -39,7 +39,18 @@
let targetchild = target.firstElementChild;
targetchild.addEventListener(eventName, () => childReceivedEvent = true);

await test_driver.click(clickChildElement ? targetchild : target);
const elementToClick = clickChildElement ? targetchild : target;
if (eventName === 'dblclick') {
await (new test_driver.Actions()
.pointerMove(1, 1, {origin: elementToClick})
.pointerDown()
.pointerUp()
.pointerDown()
.pointerUp())
.send();
} else {
await test_driver.click(elementToClick);
}

const parentShouldReceiveEvents = eventName.startsWith('pointer');
assert_equals(parentReceivedEvent, parentShouldReceiveEvents,
Expand Down

0 comments on commit 4210d4b

Please sign in to comment.