diff options
author | noel@chromium.org <noel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-29 06:36:03 +0000 |
---|---|---|
committer | noel@chromium.org <noel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-29 06:36:03 +0000 |
commit | 80afbdbf6432bae199da3ef53dc02de7160585cc (patch) | |
tree | c0094d5527d94198ceec9c8543851e62e5075e64 | |
parent | afc941e853d6ed876255ee1af2d9597887bc202e (diff) | |
download | chromium_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.cc | 9 | ||||
-rw-r--r-- | ui/base/keycodes/keyboard_code_conversion_gtk.h | 5 | ||||
-rw-r--r-- | webkit/support/webkit_support.cc | 11 | ||||
-rw-r--r-- | webkit/support/webkit_support.h | 4 |
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(); |