diff options
author | yusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-20 06:22:50 +0000 |
---|---|---|
committer | yusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-20 06:22:50 +0000 |
commit | 1027ebc3ec3fbb9fd44112e42bb06906895712bb (patch) | |
tree | 5bb1cd51e6d075f43f81675f4a3f59d0086b5167 /ui | |
parent | fcbbf082d9e87a7590617b402952d57bffb4daa2 (diff) | |
download | chromium_src-1027ebc3ec3fbb9fd44112e42bb06906895712bb.zip chromium_src-1027ebc3ec3fbb9fd44112e42bb06906895712bb.tar.gz chromium_src-1027ebc3ec3fbb9fd44112e42bb06906895712bb.tar.bz2 |
Fix the Windows implementation of EventGenerator::PressKey().
On Windows, we have to explicitly overwrite Event::flags_ since the flags are not determined by a MSG object but by GetKeyState() Win32 API. This CL is necessary for https://chromiumcodereview.appspot.com/9228013/.
BUG=None
TEST=try
Review URL: https://chromiumcodereview.appspot.com/9241007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118414 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/aura/test/event_generator.cc | 16 | ||||
-rw-r--r-- | ui/aura/test/event_generator.h | 8 |
2 files changed, 17 insertions, 7 deletions
diff --git a/ui/aura/test/event_generator.cc b/ui/aura/test/event_generator.cc index 59d2854..8366915 100644 --- a/ui/aura/test/event_generator.cc +++ b/ui/aura/test/event_generator.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -15,6 +15,14 @@ namespace { +class TestKeyEvent : public aura::KeyEvent { + public: + TestKeyEvent(const base::NativeEvent& native_event, int flags) + : KeyEvent(native_event, false /* is_char */) { + set_flags(flags); + } +}; + gfx::Point CenterOfWindowInRootWindowCoordinate(aura::Window* window) { gfx::Point center = window->bounds().CenterPoint(); aura::RootWindow* root_window = aura::RootWindow::GetInstance(); @@ -169,14 +177,14 @@ void EventGenerator::DispatchKeyEvent(bool is_press, int flags) { #if defined(OS_WIN) MSG native_event = - { NULL, (is_press ? WM_KEYDOWN : WM_KEYUP), key_code, flags }; - KeyEvent keyev(native_event, false /* is_char */); + { NULL, (is_press ? WM_KEYDOWN : WM_KEYUP), key_code, 0 }; + TestKeyEvent keyev(native_event, flags); #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()); - KeyEvent keyev(native_event.get(), false); + TestKeyEvent keyev(native_event.get(), flags); #else KeyEvent keyev(type, key_code, flags); #endif // USE_X11 diff --git a/ui/aura/test/event_generator.h b/ui/aura/test/event_generator.h index 80b83b1..7859010 100644 --- a/ui/aura/test/event_generator.h +++ b/ui/aura/test/event_generator.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -94,12 +94,14 @@ class EventGenerator { void PressMoveAndReleaseTouchToCenterOf(Window* window); // Generates a key press event. On platforms except Windows and X11, a key - // event without native_event() is generated. + // event without native_event() is generated. Note that ui::EF_ flags should + // be passed as |flags|, not the native ones like 'ShiftMask' in <X11/X.h>. // TODO(yusukes): Support native_event() on all platforms. void PressKey(ui::KeyboardCode key_code, int flags); // Generates a key release event. On platforms except Windows and X11, a key - // event without native_event() is generated. + // event without native_event() is generated. Note that ui::EF_ flags should + // be passed as |flags|, not the native ones like 'ShiftMask' in <X11/X.h>. // TODO(yusukes): Support native_event() on all platforms. void ReleaseKey(ui::KeyboardCode key_code, int flags); |