Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 5aee38fcd3aefb448e6f3961878ebcbc7393c420
https://github.com/WebKit/WebKit/commit/5aee38fcd3aefb448e6f3961878ebcbc7393c420
Author: Lily Spiniolas <[email protected]>
Date: 2025-12-16 (Tue, 16 Dec 2025)
Changed paths:
M LayoutTests/fast/events/fire-mousedown-while-pressing-mouse-button.html
M LayoutTests/fast/events/mouse-click-events-expected.txt
M LayoutTests/fast/events/mouse-click-events.html
A LayoutTests/fast/events/mouse-event-buttons-expected.txt
A LayoutTests/fast/events/mouse-event-buttons.html
M
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_mouse-right-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_mouse-right-nonstandard-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_pen-right-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_pen-right-nonstandard-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_click_on_chorded_mouse_button.tentative-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/uievents/mouse/synthetic-mouse-enter-leave-over-out-button-state-after-target-removed.tentative_buttonType=MIDDLE&button=1&buttons=4-expected.txt
M LayoutTests/platform/ios/TestExpectations
A LayoutTests/platform/mac-wk1/fast/events/mouse-event-buttons-expected.txt
M
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/uievents/mouse/synthetic-mouse-enter-leave-over-out-button-state-after-target-removed.tentative_buttonType=MIDDLE&button=1&buttons=4-expected.txt
M LayoutTests/platform/win/TestExpectations
M LayoutTests/platform/wpe/TestExpectations
M Source/WebCore/dom/MouseEvent.cpp
M Source/WebCore/dom/MouseEventTypes.h
M Source/WebCore/platform/mac/PlatformEventFactoryMac.mm
M Source/WebKit/Shared/API/c/WKEvent.h
M Source/WebKit/Shared/API/c/WKSharedAPICast.h
M Source/WebKit/Shared/WebEvent.serialization.in
M Source/WebKit/Shared/WebEventConversion.cpp
M Source/WebKit/Shared/WebMouseEvent.h
A Source/WebKit/Shared/ios/AdditionalButtonMasksIOS.h
M Source/WebKit/Shared/ios/WebIOSEventFactory.mm
M Source/WebKit/Shared/mac/WebEventFactory.mm
M Source/WebKit/UIProcess/API/glib/WebKitPrivate.cpp
M Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp
M Source/WebKit/UIProcess/Automation/Automation.json
M Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp
M Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp
M Source/WebKit/UIProcess/Automation/libwpe/WebAutomationSessionLibWPE.cpp
M Source/WebKit/UIProcess/Automation/libwpe/WebAutomationSessionWPE.cpp
M Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm
M Source/WebKit/UIProcess/ios/WKMouseInteraction.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Tools/DumpRenderTree/mac/DumpRenderTree.mm
M Tools/DumpRenderTree/mac/EventSendingController.h
M Tools/DumpRenderTree/mac/EventSendingController.mm
M Tools/TestWebKitAPI/Configurations/Base.xcconfig
M Tools/TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm
M Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm
M Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm
M Tools/WebKitTestRunner/EventSenderProxy.h
M Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
A Tools/WebKitTestRunner/cocoa/EventSenderProxyCocoa.mm
M Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
M Tools/WebKitTestRunner/mac/EventSenderProxy.mm
Log Message:
-----------
geforcenow.com: [macOS & iPadOS] The wrong values for are reported for the
`MouseEvent.button`& `MouseEvent.which` property for extra mouse buttons.
https://bugs.webkit.org/show_bug.cgi?id=280755
rdar://137592588
Reviewed by Abrar Rahman Protyasha.
`MouseEvent.button` and `MouseEvent.which` now return the correct values for
mouse events occuring as a result of a fourth or fifth mouse button being
pressed. Thanks to Abrar Protyasha for starting this patch, and for the work
in 289800@main which is re-landed here as the foundation for these changes.
`MouseEvent.button` and `MouseEvent.which` now return the correct value when
the wheel button is clicked on iOS (macOS already supported this button).
Tested by `fast/events/mouse-event-buttons.html` on non-iOS platforms, and
tested on iOS by new API test `iOSMouseSupport.NonPrimaryMouseButtonsForEvents`.
Added an extra, unrelated test
`iOSMouseSupport.LeftClickFiresPointerAndMouseEvents` to increase test
comprehensiveness for iOS mouse support.
Tests: fast/events/mouse-event-buttons.html
Tools/TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm
* LayoutTests/fast/events/fire-mousedown-while-pressing-mouse-button.html:
* LayoutTests/fast/events/mouse-click-events-expected.txt:
* LayoutTests/fast/events/mouse-click-events.html:
* LayoutTests/fast/events/mouse-event-buttons-expected.txt: Added.
* LayoutTests/fast/events/mouse-event-buttons.html: Added.
*
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_mouse-right-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_mouse-right-nonstandard-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_pen-right-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_attributes_pen-right-nonstandard-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_click_on_chorded_mouse_button.tentative-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/uievents/mouse/synthetic-mouse-enter-leave-over-out-button-state-after-target-removed.tentative_buttonType=MIDDLE&button=1&buttons=4-expected.txt:
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/mac-wk1/fast/events/mouse-event-buttons-expected.txt:
Added.
*
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/uievents/mouse/synthetic-mouse-enter-leave-over-out-button-state-after-target-removed.tentative_buttonType=MIDDLE&button=1&buttons=4-expected.txt:
* LayoutTests/platform/win/TestExpectations:
* LayoutTests/platform/wpe/TestExpectations:
* Source/WebCore/dom/MouseEvent.cpp:
(WebCore::MouseEvent::button const):
* Source/WebCore/dom/MouseEventTypes.h:
(WebCore::buttonFromShort):
(WebCore::nsEventButtonNumberFromWebCoreMouseButton):
* Source/WebCore/platform/mac/PlatformEventFactoryMac.mm:
(WebCore::currentMouseButton):
(WebCore::buttonFromButtonNumber):
(WebCore::mouseButtonForEvent):
* Source/WebKit/Shared/API/c/WKEvent.h:
* Source/WebKit/Shared/API/c/WKSharedAPICast.h:
(WebKit::toAPI):
* Source/WebKit/Shared/WebEvent.serialization.in:
* Source/WebKit/Shared/WebEventConversion.cpp:
(WebKit::platform):
(WebKit::kit):
* Source/WebKit/Shared/WebMouseEvent.h:
* Source/WebKit/Shared/ios/AdditionalButtonMasksIOS.h: Added.
* Source/WebKit/Shared/ios/WebIOSEventFactory.mm:
(WebKit::WebIOSEventFactory::toUIEventButtonMask):
* Source/WebKit/Shared/mac/WebEventFactory.mm:
(WebKit::WebEventFactory::toNSButtonNumber):
* Source/WebKit/UIProcess/API/glib/WebKitPrivate.cpp:
(toWebKitMouseButton):
* Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:
(MotionEvent::setState):
(webkitWebViewBaseSynthesizeMouseEvent):
* Source/WebKit/UIProcess/Automation/Automation.json:
* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::WebAutomationSession):
* Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
(WebKit::mouseButtonToGdkButton):
* Source/WebKit/UIProcess/Automation/libwpe/WebAutomationSessionLibWPE.cpp:
(WebKit::mouseButtonToWPEButton):
(WebKit::stateModifierForWPEButton):
* Source/WebKit/UIProcess/Automation/libwpe/WebAutomationSessionWPE.cpp:
(WebKit::libWPEMouseButtonToWPEButton):
* Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::sendSynthesizedEventsToPage):
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
* Source/WebKit/UIProcess/ios/WKMouseInteraction.mm:
(-[WKMouseInteraction createMouseEventWithType:wasCancelled:]):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/DumpRenderTree/mac/DumpRenderTree.mm:
(runTest):
* Tools/DumpRenderTree/mac/EventSendingController.h:
* Tools/DumpRenderTree/mac/EventSendingController.mm:
(eventTypeForMouseButtonAndAction):
(swizzledEventPressedMouseButtons):
(swizzledEventButtonNumber):
(-[EventSendingController mouseDown:withModifiers:]):
(-[EventSendingController mouseUp:withModifiers:]):
(-[EventSendingController contextClick]):
* Tools/TestWebKitAPI/Configurations/Base.xcconfig:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm:
(-[TestWKWebView pointerInfoAtLocation:]):
((iOSMouseSupport, TrackButtonMaskFromTouchStart)):
((iOSMouseSupport, MouseTimestampTimebase)):
((iOSMouseSupport, EndedTouchesTriggerClick)):
((iOSMouseSupport, CancelledTouchesDoNotTriggerClick)):
((iOSMouseSupport, MouseDidMoveOverElement)):
((iOSMouseSupport, SelectionUpdatesBeforeContextMenuAppears)):
((iOSMouseSupport,
DisablingTextIteractionPreventsSelectionWhenShowingContextMenu)):
((iOSMouseSupport, ShowingContextMenuSelectsEditableText)):
((iOSMouseSupport, ShowingContextMenuSelectsNonEditableText)):
((iOSMouseSupport, ContextClickAtEndOfSelection)):
((iOSMouseSupport, WebsiteMouseEventPolicies)):
((iOSMouseSupport, MouseInitiallyDisconnected)):
((iOSMouseSupport, MouseInitiallyConnected)):
((iOSMouseSupport, MouseLaterDisconnected)):
((iOSMouseSupport, MouseLaterConnected)):
((iOSMouseSupport, MouseAlwaysConnected)):
((iOSMouseSupport, BasicPointerInteractionRegions)):
((iOSMouseSupport, LeftClickFiresPointerAndMouseEvents)):
((iOSMouseSupport, NonPrimaryMouseButtonsForEvents)):
* Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:
(TestWebKitAPI::buildAndPerformTest):
* Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm:
(TestWebKitAPI::eventTypeForButton):
(TestWebKitAPI::PlatformWebView::simulateButtonClick):
* Tools/WebKitTestRunner/EventSenderProxy.h:
(WTR::EventSenderProxy::lastButtonDown const):
(WTR::EventSenderProxy::mouseButtonsCurrentlyDown const): Deleted.
* Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* Tools/WebKitTestRunner/cocoa/EventSenderProxyCocoa.mm: Copied from
Source/WebCore/dom/MouseEventTypes.h.
(WTR::EventSenderProxy::mouseButtonsCurrentlyDown const):
* Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::eventSenderButtonToGDKButton):
(WTR::stateModifierForGdkButton):
* Tools/WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::eventTypeForMouseButtonAndAction):
(WTR::EventSenderProxy::EventSenderProxy):
(WTR::swizzledEventButtonNumber):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::sendMouseDownToStartPressureEvents):
(): Deleted.
Canonical link: https://commits.webkit.org/304537@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications