summaryrefslogtreecommitdiffstats
path: root/content/renderer/render_view_browsertest.cc
diff options
context:
space:
mode:
authordnicoara@chromium.org <dnicoara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-29 00:03:30 +0000
committerdnicoara@chromium.org <dnicoara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-29 00:03:30 +0000
commitd158a34ccbe74581a7f08d4a508767b1382ba7de (patch)
tree151f19fcf494beea8922ffec64449b6235e322ed /content/renderer/render_view_browsertest.cc
parent835508384be23d1d5a3cc09f3814bd344f5bcd51 (diff)
downloadchromium_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.cc39
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|.