| Index: ui/aura/test/event_generator.cc
|
| diff --git a/ui/aura/test/event_generator.cc b/ui/aura/test/event_generator.cc
|
| index ebad4f31158fca402ddc706f398c6c7e1fbbaab1..a2eb897daad5d2853beaaa66c9ad3e9699591ca8 100644
|
| --- a/ui/aura/test/event_generator.cc
|
| +++ b/ui/aura/test/event_generator.cc
|
| @@ -13,12 +13,16 @@
|
| #include "ui/base/x/x11_util.h"
|
| #endif
|
|
|
| +#if defined(OS_WIN)
|
| +#include "ui/base/keycodes/keyboard_code_conversion.h"
|
| +#endif
|
| +
|
| namespace {
|
|
|
| class TestKeyEvent : public ui::KeyEvent {
|
| public:
|
| - TestKeyEvent(const base::NativeEvent& native_event, int flags)
|
| - : KeyEvent(native_event, false /* is_char */) {
|
| + TestKeyEvent(const base::NativeEvent& native_event, int flags, bool is_char)
|
| + : KeyEvent(native_event, is_char) {
|
| set_flags(flags);
|
| }
|
| };
|
| @@ -309,17 +313,28 @@ void EventGenerator::DispatchKeyEvent(bool is_press,
|
| ui::KeyboardCode key_code,
|
| int flags) {
|
| #if defined(OS_WIN)
|
| + UINT key_press = WM_KEYDOWN;
|
| + uint16 character = ui::GetCharacterFromKeyCode(key_code, flags);
|
| + if (is_press && character) {
|
| + MSG native_event = { NULL, WM_KEYDOWN, key_code, 0 };
|
| + TestKeyEvent keyev(native_event, flags, false);
|
| + Dispatch(keyev);
|
| + // On Windows, WM_KEYDOWN event is followed by WM_CHAR with a character
|
| + // if the key event cooresponds to a real character.
|
| + key_press = WM_CHAR;
|
| + key_code = static_cast<ui::KeyboardCode>(character);
|
| + }
|
| MSG native_event =
|
| - { NULL, (is_press ? WM_KEYDOWN : WM_KEYUP), key_code, 0 };
|
| - TestKeyEvent keyev(native_event, flags);
|
| + { NULL, (is_press ? key_press : WM_KEYUP), key_code, 0 };
|
| + TestKeyEvent keyev(native_event, flags, key_press == WM_CHAR);
|
| #else
|
| ui::EventType type = is_press ? ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED;
|
| #if defined(USE_X11)
|
| scoped_ptr<XEvent> native_event(new XEvent);
|
| ui::InitXKeyEventForTesting(type, key_code, flags, native_event.get());
|
| - TestKeyEvent keyev(native_event.get(), flags);
|
| + TestKeyEvent keyev(native_event.get(), flags, false);
|
| #else
|
| - ui::KeyEvent keyev(type, key_code, flags);
|
| + ui::KeyEvent keyev(type, key_code, flags, false);
|
| #endif // USE_X11
|
| #endif // OS_WIN
|
| Dispatch(keyev);
|
|
|