diff options
author | dnicoara@chromium.org <dnicoara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-29 00:03:30 +0000 |
---|---|---|
committer | dnicoara@chromium.org <dnicoara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-29 00:03:30 +0000 |
commit | d158a34ccbe74581a7f08d4a508767b1382ba7de (patch) | |
tree | 151f19fcf494beea8922ffec64449b6235e322ed /content/renderer/render_view_browsertest.cc | |
parent | 835508384be23d1d5a3cc09f3814bd344f5bcd51 (diff) | |
download | chromium_src-d158a34ccbe74581a7f08d4a508767b1382ba7de.zip chromium_src-d158a34ccbe74581a7f08d4a508767b1382ba7de.tar.gz chromium_src-d158a34ccbe74581a7f08d4a508767b1382ba7de.tar.bz2 |
Fix RenderViewImplTest on Ozone build
1) RenderViewImplTest::SendKeyEvent fabricates native events for each platform, creates a NativeWebKeyboardEvent and sends it. Running the tests with Ozone would fall through to the NOTIMPLEMENTED case. Added an Ozone implementation to process these events.
2) MakeWebKeyboardEventFromAuraEvent for Ozone did not process the character passed in. This would result in passing the raw character rather than processing any control keys (such as shift).
BUG=315392
Review URL: https://codereview.chromium.org/92693002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237851 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/render_view_browsertest.cc')
-rw-r--r-- | content/renderer/render_view_browsertest.cc | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index 09b34b1..c43a82f 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc @@ -57,6 +57,10 @@ #include "ui/events/test/events_test_utils_x11.h" #endif +#if defined(USE_OZONE) +#include "ui/events/keycodes/keyboard_code_conversion.h" +#endif + using blink::WebFrame; using blink::WebInputEvent; using blink::WebMouseEvent; @@ -69,7 +73,7 @@ namespace content { namespace { -#if defined(USE_AURA) && defined(USE_X11) +#if (defined(USE_AURA) && defined(USE_X11)) || defined(USE_OZONE) // Converts MockKeyboard::Modifiers to ui::EventFlags. int ConvertMockKeyboardModifier(MockKeyboard::Modifiers modifiers) { static struct ModifierMap { @@ -220,6 +224,39 @@ class RenderViewImplTest : public RenderViewTest { flags); output->assign(1, static_cast<char16>(c)); return 1; +#elif defined(USE_OZONE) + const int flags = ConvertMockKeyboardModifier(modifiers); + + // Ozone's native events are ui::Events. So first create the "native" event, + // then create the actual ui::KeyEvent with the native event. + ui::KeyEvent keydown_native_event(ui::ET_KEY_PRESSED, + static_cast<ui::KeyboardCode>(key_code), + flags, + true); + ui::KeyEvent keydown_event(&keydown_native_event, false); + NativeWebKeyboardEvent keydown_web_event(&keydown_event); + SendNativeKeyEvent(keydown_web_event); + + ui::KeyEvent char_native_event(ui::ET_KEY_PRESSED, + static_cast<ui::KeyboardCode>(key_code), + flags, + true); + ui::KeyEvent char_event(&char_native_event, true); + NativeWebKeyboardEvent char_web_event(&char_event); + SendNativeKeyEvent(char_web_event); + + ui::KeyEvent keyup_native_event(ui::ET_KEY_RELEASED, + static_cast<ui::KeyboardCode>(key_code), + flags, + true); + ui::KeyEvent keyup_event(&keyup_native_event, false); + NativeWebKeyboardEvent keyup_web_event(&keyup_event); + SendNativeKeyEvent(keyup_web_event); + + long c = GetCharacterFromKeyCode(static_cast<ui::KeyboardCode>(key_code), + flags); + output->assign(1, static_cast<char16>(c)); + return 1; #elif defined(TOOLKIT_GTK) // We ignore |layout|, which means we are only testing the layout of the // current locale. TODO(estade): fix this to respect |layout|. |