Title: [240460] trunk/Tools
Revision
240460
Author
[email protected]
Date
2019-01-24 17:49:10 -0800 (Thu, 24 Jan 2019)

Log Message

[Win][WebKitTestRunner] Implement EventSenderProxy
https://bugs.webkit.org/show_bug.cgi?id=193755

Reviewed by Don Olmstead.

* WebKitTestRunner/EventSenderProxy.h: Removed unused members m_buttonState and m_mouseButtonsCurrentlyDown.
* WebKitTestRunner/win/EventSenderProxyWin.cpp:
(WTR::EventSenderProxy::dispatchMessage):
(WTR::EventSenderProxy::EventSenderProxy):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::mouseScrollBy):
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (240459 => 240460)


--- trunk/Tools/ChangeLog	2019-01-25 01:16:35 UTC (rev 240459)
+++ trunk/Tools/ChangeLog	2019-01-25 01:49:10 UTC (rev 240460)
@@ -1,3 +1,20 @@
+2019-01-24  Fujii Hironori  <[email protected]>
+
+        [Win][WebKitTestRunner] Implement EventSenderProxy
+        https://bugs.webkit.org/show_bug.cgi?id=193755
+
+        Reviewed by Don Olmstead.
+
+        * WebKitTestRunner/EventSenderProxy.h: Removed unused members m_buttonState and m_mouseButtonsCurrentlyDown.
+        * WebKitTestRunner/win/EventSenderProxyWin.cpp:
+        (WTR::EventSenderProxy::dispatchMessage):
+        (WTR::EventSenderProxy::EventSenderProxy):
+        (WTR::EventSenderProxy::mouseDown):
+        (WTR::EventSenderProxy::mouseUp):
+        (WTR::EventSenderProxy::mouseMoveTo):
+        (WTR::EventSenderProxy::mouseScrollBy):
+        (WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases):
+
 2019-01-24  Ross Kirsling  <[email protected]>
 
         Unreviewed fix for API test failure after r240437.

Modified: trunk/Tools/WebKitTestRunner/EventSenderProxy.h (240459 => 240460)


--- trunk/Tools/WebKitTestRunner/EventSenderProxy.h	2019-01-25 01:16:35 UTC (rev 240459)
+++ trunk/Tools/WebKitTestRunner/EventSenderProxy.h	2019-01-25 01:49:10 UTC (rev 240460)
@@ -123,6 +123,11 @@
     void prepareAndDispatchTouchEvent(enum wpe_input_touch_event_type);
 #endif
 
+#if PLATFORM(WIN)
+    LRESULT dispatchMessage(UINT message, WPARAM, LPARAM);
+    POINT positionInPoint() const { return { static_cast<LONG>(m_position.x), static_cast<LONG>(m_position.y) }; }
+#endif
+
     double m_time;
     WKPoint m_position;
     bool m_leftMouseButtonDown;
@@ -143,9 +148,6 @@
     uint32_t m_mouseButtonsCurrentlyDown { 0 };
     Vector<struct wpe_input_touch_event_raw> m_touchEvents;
     HashSet<unsigned, DefaultHash<unsigned>::Hash, WTF::UnsignedWithZeroKeyHashTraits<unsigned>> m_updatedTouchEvents;
-#elif PLATFORM(WIN)
-    uint32_t m_buttonState;
-    uint32_t m_mouseButtonsCurrentlyDown { 0 };
 #endif
 };
 

Modified: trunk/Tools/WebKitTestRunner/win/EventSenderProxyWin.cpp (240459 => 240460)


--- trunk/Tools/WebKitTestRunner/win/EventSenderProxyWin.cpp	2019-01-25 01:16:35 UTC (rev 240459)
+++ trunk/Tools/WebKitTestRunner/win/EventSenderProxyWin.cpp	2019-01-25 01:49:10 UTC (rev 240460)
@@ -33,24 +33,20 @@
 
 namespace WTR {
 
-// Key event location code defined in DOM Level 3.
-enum KeyLocationCode {
-    DOMKeyLocationStandard      = 0x00,
-    DOMKeyLocationLeft          = 0x01,
-    DOMKeyLocationRight         = 0x02,
-    DOMKeyLocationNumpad        = 0x03
-};
+LRESULT EventSenderProxy::dispatchMessage(UINT message, WPARAM wParam, LPARAM lParam)
+{
+    MSG msg { };
+    msg.hwnd = WKViewGetWindow(m_testController->mainWebView()->platformView());
+    msg.message = message;
+    msg.wParam = wParam;
+    msg.lParam = lParam;
+    msg.time = GetTickCount() + static_cast<DWORD>(m_time);
+    msg.pt = positionInPoint();
 
-enum ButtonState {
-    ButtonReleased = 0,
-    ButtonPressed = 1
-};
+    TranslateMessage(&msg);
+    return DispatchMessage(&msg);
+}
 
-enum PointerAxis {
-    VerticalScroll = 0,
-    HorizontalScroll = 1
-};
-
 EventSenderProxy::EventSenderProxy(TestController* testController)
     : m_testController(testController)
     , m_time(0)
@@ -58,7 +54,6 @@
     , m_clickCount(0)
     , m_clickTime(0)
     , m_clickButton(kWKEventMouseButtonNoButton)
-    , m_buttonState(ButtonReleased)
 {
 }
 
@@ -68,25 +63,82 @@
 
 void EventSenderProxy::mouseDown(unsigned button, WKEventModifiers wkModifiers)
 {
-    notImplemented();
+    int messageType;
+    switch (button) {
+    case 0:
+        messageType = WM_LBUTTONDOWN;
+        break;
+    case 1:
+        messageType = WM_MBUTTONDOWN;
+        break;
+    case 2:
+        messageType = WM_RBUTTONDOWN;
+        break;
+    case 3:
+        // fast/events/mouse-click-events expects the 4th button has event.button = 1, so send an WM_MBUTTONDOWN
+        messageType = WM_MBUTTONDOWN;
+        break;
+    default:
+        messageType = WM_LBUTTONDOWN;
+        break;
+    }
+    WPARAM wparam = 0;
+    dispatchMessage(messageType, wparam, MAKELPARAM(positionInPoint().x, positionInPoint().y));
 }
 
 void EventSenderProxy::mouseUp(unsigned button, WKEventModifiers wkModifiers)
 {
-    notImplemented();
+    int messageType;
+    switch (button) {
+    case 0:
+        messageType = WM_LBUTTONUP;
+        break;
+    case 1:
+        messageType = WM_MBUTTONUP;
+        break;
+    case 2:
+        messageType = WM_RBUTTONUP;
+        break;
+    case 3:
+        // fast/events/mouse-click-events expects the 4th button has event.button = 1, so send an WM_MBUTTONUP
+        messageType = WM_MBUTTONUP;
+        break;
+    default:
+        messageType = WM_LBUTTONUP;
+        break;
+    }
+    WPARAM wparam = 0;
+    dispatchMessage(messageType, wparam, MAKELPARAM(positionInPoint().x, positionInPoint().y));
 }
 
 void EventSenderProxy::mouseMoveTo(double x, double y)
 {
-    notImplemented();
+    m_position.x = x;
+    m_position.y = y;
+    dispatchMessage(WM_MOUSEMOVE, 0, MAKELPARAM(positionInPoint().x, positionInPoint().y));
 }
 
-void EventSenderProxy::mouseScrollBy(int horizontal, int vertical)
+void EventSenderProxy::mouseScrollBy(int x, int y)
 {
-    notImplemented();
+    RECT rect;
+    GetWindowRect(WKViewGetWindow(m_testController->mainWebView()->platformView()), &rect);
+
+    if (x) {
+        UINT scrollChars = 1;
+        SystemParametersInfo(SPI_GETWHEELSCROLLCHARS, 0, &scrollChars, 0);
+        x *= WHEEL_DELTA / scrollChars;
+        dispatchMessage(WM_MOUSEHWHEEL, MAKEWPARAM(0, x), MAKELPARAM(rect.left + positionInPoint().x, rect.top + positionInPoint().y));
+    }
+
+    if (y) {
+        UINT scrollLines = 3;
+        SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &scrollLines, 0);
+        y *= WHEEL_DELTA / scrollLines;
+        dispatchMessage(WM_MOUSEWHEEL, MAKEWPARAM(0, y), MAKELPARAM(rect.left + positionInPoint().x, rect.top + positionInPoint().y));
+    }
 }
 
-void EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases(int horizontal, int vertical, int, int)
+void EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases(int, int, int, int)
 {
     notImplemented();
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to