summaryrefslogtreecommitdiff
path: root/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp')
-rw-r--r--Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp43
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