summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornoel@chromium.org <noel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-29 06:36:03 +0000
committernoel@chromium.org <noel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-29 06:36:03 +0000
commit80afbdbf6432bae199da3ef53dc02de7160585cc (patch)
treec0094d5527d94198ceec9c8543851e62e5075e64
parentafc941e853d6ed876255ee1af2d9597887bc202e (diff)
downloadchromium_src-80afbdbf6432bae199da3ef53dc02de7160585cc.zip
chromium_src-80afbdbf6432bae199da3ef53dc02de7160585cc.tar.gz
chromium_src-80afbdbf6432bae199da3ef53dc02de7160585cc.tar.bz2
Add a GTK support routine that returns a simulated nativeKeyCode for a given
windowKeyCode. Simulated since there's no keyboard attached when testing in webkit DRT, so DRT::eventSender.keyDown() must simulate keyboard events. https://bugs.webkit.org/show_bug.cgi?id=66679 BUG=94211 TEST=webkit LayoutTests/plugins/keyboard-events.html Review URL: http://codereview.chromium.org/7740048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98599 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ui/base/keycodes/keyboard_code_conversion_gtk.cc9
-rw-r--r--ui/base/keycodes/keyboard_code_conversion_gtk.h5
-rw-r--r--webkit/support/webkit_support.cc11
-rw-r--r--webkit/support/webkit_support.h4
4 files changed, 29 insertions, 0 deletions
diff --git a/ui/base/keycodes/keyboard_code_conversion_gtk.cc b/ui/base/keycodes/keyboard_code_conversion_gtk.cc
index 4425b88..c55476a 100644
--- a/ui/base/keycodes/keyboard_code_conversion_gtk.cc
+++ b/ui/base/keycodes/keyboard_code_conversion_gtk.cc
@@ -621,6 +621,15 @@ int GdkKeyCodeForWindowsKeyCode(KeyboardCode keycode, bool shift) {
}
}
+int GdkNativeKeyCodeForWindowsKeyCode(KeyboardCode keycode, bool shift) {
+ int keyval = GdkKeyCodeForWindowsKeyCode(keycode, shift);
+ GdkKeymapKey* keys;
+ gint n_keys;
+ if (keyval && gdk_keymap_get_entries_for_keyval(0, keyval, &keys, &n_keys))
+ return keys[0].keycode;
+ return 0;
+}
+
KeyboardCode KeyboardCodeFromGdkEventKey(GdkEventKey* event) {
KeyboardCode keycode = WindowsKeyCodeForGdkKeyCode(event->keyval);
#ifdef USE_X11
diff --git a/ui/base/keycodes/keyboard_code_conversion_gtk.h b/ui/base/keycodes/keyboard_code_conversion_gtk.h
index 6a9d293..7a4e167 100644
--- a/ui/base/keycodes/keyboard_code_conversion_gtk.h
+++ b/ui/base/keycodes/keyboard_code_conversion_gtk.h
@@ -48,6 +48,11 @@ UI_EXPORT KeyboardCode WindowsKeyCodeForGdkKeyCode(int keycode);
UI_EXPORT int GdkKeyCodeForWindowsKeyCode(KeyboardCode keycode, bool shift);
+// For WebKit DRT testing: simulate the native keycode for the given
+// input |keycode|. Return the native keycode.
+UI_EXPORT int GdkNativeKeyCodeForWindowsKeyCode(KeyboardCode keycode,
+ bool shift);
+
UI_EXPORT KeyboardCode KeyboardCodeFromGdkEventKey(GdkEventKey* event);
} // namespace ui
diff --git a/webkit/support/webkit_support.cc b/webkit/support/webkit_support.cc
index 8f8a514..d877325 100644
--- a/webkit/support/webkit_support.cc
+++ b/webkit/support/webkit_support.cc
@@ -37,6 +37,9 @@
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebURLError.h"
+#if defined(OS_LINUX)
+#include "ui/base/keycodes/keyboard_code_conversion_gtk.h"
+#endif
#include "ui/gfx/gl/gl_context.h"
#include "ui/gfx/gl/gl_implementation.h"
#include "ui/gfx/gl/gl_surface.h"
@@ -612,6 +615,14 @@ void OpenFileSystem(WebFrame* frame, WebFileSystem::Type type,
fileSystem->OpenFileSystem(frame, type, size, create, callbacks);
}
+// Keyboard code
+#if defined(OS_LINUX)
+int NativeKeyCodeForWindowsKeyCode(int keycode, bool shift) {
+ ui::KeyboardCode code = static_cast<ui::KeyboardCode>(keycode);
+ return ui::GdkNativeKeyCodeForWindowsKeyCode(code, shift);
+}
+#endif
+
// Timers
double GetForegroundTabTimerInterval() {
return webkit_glue::kForegroundTabTimerInterval;
diff --git a/webkit/support/webkit_support.h b/webkit/support/webkit_support.h
index d11f09b..2b27ab8 100644
--- a/webkit/support/webkit_support.h
+++ b/webkit/support/webkit_support.h
@@ -212,6 +212,10 @@ enum {
VKEY_F1 = ui::VKEY_F1,
};
+#if defined(OS_LINUX)
+int NativeKeyCodeForWindowsKeyCode(int keycode, bool shift);
+#endif
+
// - Timers
double GetForegroundTabTimerInterval();