diff options
Diffstat (limited to 'Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp')
-rw-r--r-- | Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp b/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp index d25320125..e93caf5aa 100644 --- a/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp +++ b/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp @@ -14,7 +14,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * 3. Neither the name of Apple Inc. ("Apple") nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -39,7 +39,7 @@ #include <gdk/gdkkeysyms.h> #include <gtk/gtk.h> #include <wtf/StdLibExtras.h> -#include <wtf/gobject/GUniquePtr.h> +#include <wtf/glib/GUniquePtr.h> #include <wtf/text/WTFString.h> namespace WTR { @@ -122,6 +122,8 @@ static guint webkitModifiersToGDKModifiers(WKEventModifiers wkModifiers) modifiers |= GDK_MOD1_MASK; if (wkModifiers & kWKEventModifiersMetaKey) modifiers |= GDK_META_MASK; + if (wkModifiers & kWKEventModifiersCapsLockKey) + modifiers |= GDK_LOCK_MASK; return modifiers; } @@ -162,8 +164,9 @@ void EventSenderProxy::updateClickCountForButton(int button) m_clickButton = button; } -static void dispatchEvent(GdkEvent* event) +void EventSenderProxy::dispatchEvent(GdkEvent* event) { + ASSERT(m_testController->mainWebView()); gtk_main_do_event(event); gdk_event_free(event); } @@ -217,6 +220,18 @@ int getGDKKeySymForKeyRef(WKStringRef keyRef, unsigned location, guint* modifier return GDK_KEY_VoidSymbol; } + if (WKStringIsEqualToUTF8CString(keyRef, "leftControl")) + return GDK_KEY_Control_L; + if (WKStringIsEqualToUTF8CString(keyRef, "rightControl")) + return GDK_KEY_Control_R; + if (WKStringIsEqualToUTF8CString(keyRef, "leftShift")) + return GDK_KEY_Shift_L; + if (WKStringIsEqualToUTF8CString(keyRef, "rightShift")) + return GDK_KEY_Shift_R; + if (WKStringIsEqualToUTF8CString(keyRef, "leftAlt")) + return GDK_KEY_Alt_L; + if (WKStringIsEqualToUTF8CString(keyRef, "rightAlt")) + return GDK_KEY_Alt_R; if (WKStringIsEqualToUTF8CString(keyRef, "leftArrow")) return GDK_KEY_Left; if (WKStringIsEqualToUTF8CString(keyRef, "rightArrow")) @@ -277,6 +292,8 @@ int getGDKKeySymForKeyRef(WKStringRef keyRef, unsigned location, guint* modifier return GDK_KEY_Tab; if (charCode == '\x8') return GDK_KEY_BackSpace; + if (charCode == 0x001B) + return GDK_KEY_Escape; if (WTF::isASCIIUpper(charCode)) *modifiers |= GDK_SHIFT_MASK; @@ -416,7 +433,10 @@ void EventSenderProxy::mouseScrollBy(int horizontal, int vertical) void EventSenderProxy::continuousMouseScrollBy(int horizontal, int vertical, bool paged) { // Gtk+ does not support paged scroll events. - g_return_if_fail(!paged); + if (paged) { + WTFLogAlways("EventSenderProxy::continuousMouseScrollBy not implemented for paged scroll events"); + return; + } GdkEvent* event = gdk_event_new(GDK_SCROLL); event->scroll.x = m_position.x; @@ -433,6 +453,18 @@ void EventSenderProxy::continuousMouseScrollBy(int horizontal, int vertical, boo sendOrQueueEvent(event); } +void EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases(int x, int y, int /*phase*/, int /*momentum*/) +{ + // Gtk+ does not have the concept of wheel gesture phases or momentum. Just relay to + // the mouse wheel handler. + mouseScrollBy(x, y); +} + +void EventSenderProxy::swipeGestureWithWheelAndMomentumPhases(int, int, int, int) +{ + notImplemented(); +} + void EventSenderProxy::leapForward(int milliseconds) { if (m_eventQueue.isEmpty()) @@ -466,6 +498,7 @@ GUniquePtr<GdkEvent> EventSenderProxy::createTouchEvent(GdkEventType eventType, return touchEvent; } +#if ENABLE(TOUCH_EVENTS) void EventSenderProxy::addTouchPoint(int x, int y) { // Touch ID is array index plus one, so 0 is skipped. @@ -556,6 +589,6 @@ void EventSenderProxy::setTouchModifier(WKEventModifiers modifier, bool enable) m_updatedTouchEvents.add(GPOINTER_TO_INT(event->touch.sequence)); } } - +#endif // ENABLE(TOUCH_EVENTS) } // namespace WTR |