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

Reply via email to