diff options
-rw-r--r-- | ash/sticky_keys/sticky_keys_controller.cc | 12 | ||||
-rw-r--r-- | ash/sticky_keys/sticky_keys_controller.h | 9 | ||||
-rw-r--r-- | ash/sticky_keys/sticky_keys_unittest.cc | 95 | ||||
-rw-r--r-- | ui/events/event.h | 8 |
4 files changed, 28 insertions, 96 deletions
diff --git a/ash/sticky_keys/sticky_keys_controller.cc b/ash/sticky_keys/sticky_keys_controller.cc index 45c1248..e5bb0af 100644 --- a/ash/sticky_keys/sticky_keys_controller.cc +++ b/ash/sticky_keys/sticky_keys_controller.cc @@ -69,18 +69,10 @@ void StickyKeysHandlerDelegateImpl::DispatchMouseEvent(ui::MouseEvent* event, DCHECK(target); // We need to send a new, untransformed mouse event to the host. if (event->IsMouseWheelEvent()) { - aura::Window* source = static_cast<aura::Window*>(event->target()); - ui::MouseWheelEvent new_event(*static_cast<ui::MouseWheelEvent*>(event), - source, - source->GetRootWindow()); - // Transform the location back to host coordinates before dispatching. - new_event.UpdateForRootTransform(source->GetHost()->GetRootTransform()); + ui::MouseWheelEvent new_event(event->native_event()); DispatchEvent(&new_event, target); } else { - aura::Window* source = static_cast<aura::Window*>(event->target()); - ui::MouseEvent new_event(*event, source, source->GetRootWindow()); - // Transform the location back to host coordinates before dispatching. - new_event.UpdateForRootTransform(source->GetHost()->GetRootTransform()); + ui::MouseEvent new_event(event->native_event()); DispatchEvent(&new_event, target); } } diff --git a/ash/sticky_keys/sticky_keys_controller.h b/ash/sticky_keys/sticky_keys_controller.h index c9c1580..792f2c5 100644 --- a/ash/sticky_keys/sticky_keys_controller.h +++ b/ash/sticky_keys/sticky_keys_controller.h @@ -147,18 +147,15 @@ class ASH_EXPORT StickyKeysHandler { StickyKeysHandlerDelegate(); virtual ~StickyKeysHandlerDelegate(); - // Dispatches keyboard event synchronously. |event| is an event that has - // been previously dispatched. + // Dispatches keyboard event synchronously. virtual void DispatchKeyEvent(ui::KeyEvent* event, aura::Window* target) = 0; - // Dispatches mouse event synchronously. |event| is an event that has - // been previously dispatched. + // Dispatches mouse event synchronously. virtual void DispatchMouseEvent(ui::MouseEvent* event, aura::Window* target) = 0; - // Dispatches scroll event synchronously. |event| is an event that has - // been previously dispatched. + // Dispatches scroll event synchronously. virtual void DispatchScrollEvent(ui::ScrollEvent* event, aura::Window* target) = 0; }; diff --git a/ash/sticky_keys/sticky_keys_unittest.cc b/ash/sticky_keys/sticky_keys_unittest.cc index 937cfd4..8f7a2a3 100644 --- a/ash/sticky_keys/sticky_keys_unittest.cc +++ b/ash/sticky_keys/sticky_keys_unittest.cc @@ -245,38 +245,26 @@ class StickyKeysTest : public test::AshTestBase, } // Creates a synthesized MouseEvent that is not backed by a native event. - ui::MouseEvent* GenerateSynthesizedMouseEventAt(ui::EventType event_type, - const gfx::Point& location) { - ui::MouseEvent* event = new ui::MouseEvent(event_type, - location, - location, - ui::EF_LEFT_MOUSE_BUTTON, - ui::EF_LEFT_MOUSE_BUTTON); + ui::MouseEvent* GenerateSynthesizedMouseEvent(bool is_button_press) { + ui::MouseEvent* event = new ui::MouseEvent( + is_button_press ? ui::ET_MOUSE_PRESSED : ui::ET_MOUSE_RELEASED, + gfx::Point(0, 0), + gfx::Point(0, 0), + ui::EF_LEFT_MOUSE_BUTTON, + ui::EF_LEFT_MOUSE_BUTTON); ui::Event::DispatcherApi dispatcher(event); dispatcher.set_target(target_); return event; } - // Creates a synthesized mouse press or release event. - ui::MouseEvent* GenerateSynthesizedMouseClickEvent( - bool is_button_press, - const gfx::Point& location) { - return GenerateSynthesizedMouseEventAt( - is_button_press ? ui::ET_MOUSE_PRESSED : ui::ET_MOUSE_RELEASED, - location); - } - // Creates a synthesized ET_MOUSE_MOVED event. - ui::MouseEvent* GenerateSynthesizedMouseMoveEvent( - const gfx::Point& location) { - return GenerateSynthesizedMouseEventAt(ui::ET_MOUSE_MOVED, location); - } - - // Creates a synthesized MouseWHeel event. - ui::MouseWheelEvent* GenerateSynthesizedMouseWheelEvent(int wheel_delta) { - scoped_ptr<ui::MouseEvent> mev( - GenerateSynthesizedMouseEventAt(ui::ET_MOUSEWHEEL, gfx::Point(0, 0))); - ui::MouseWheelEvent* event = new ui::MouseWheelEvent(*mev, 0, wheel_delta); + ui::MouseEvent* GenerateSynthesizedMouseEvent(int x, int y) { + ui::MouseEvent* event = new ui::MouseEvent( + ui::ET_MOUSE_MOVED, + gfx::Point(x, y), + gfx::Point(x, y), + ui::EF_LEFT_MOUSE_BUTTON, + ui::EF_LEFT_MOUSE_BUTTON); ui::Event::DispatcherApi dispatcher(event); dispatcher.set_target(target_); return event; @@ -503,9 +491,9 @@ TEST_F(StickyKeysTest, MouseMovedModifierTest) { // Press ctrl and handle mouse move events. kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); sticky_key.HandleKeyEvent(kev.get()); - mev.reset(GenerateSynthesizedMouseMoveEvent(gfx::Point(0, 0))); + mev.reset(GenerateSynthesizedMouseEvent(0, 0)); sticky_key.HandleMouseEvent(mev.get()); - mev.reset(GenerateSynthesizedMouseMoveEvent(gfx::Point(100, 100))); + mev.reset(GenerateSynthesizedMouseEvent(100, 100)); sticky_key.HandleMouseEvent(mev.get()); // Sticky keys should be enabled afterwards. @@ -792,12 +780,12 @@ TEST_F(StickyKeysTest, SynthesizedEvents) { EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); scoped_ptr<ui::MouseEvent> mev; - mev.reset(GenerateSynthesizedMouseClickEvent(true, gfx::Point(0, 0))); + mev.reset(GenerateSynthesizedMouseEvent(true)); sticky_key.HandleMouseEvent(mev.get()); EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); - mev.reset(GenerateSynthesizedMouseClickEvent(false, gfx::Point(0, 0))); + mev.reset(GenerateSynthesizedMouseEvent(false)); sticky_key.HandleMouseEvent(mev.get()); EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); @@ -840,21 +828,6 @@ TEST_F(StickyKeysTest, KeyEventDispatchImpl) { static_cast<ui::KeyEvent*>(events[0])->key_code()); EXPECT_FALSE(events[0]->flags() & ui::EF_CONTROL_DOWN); - // Test that synthesized key events are dispatched correctly. - SendActivateStickyKeyPattern(dispatcher, ui::VKEY_CONTROL); - buffer.PopEvents(&events); - scoped_ptr<ui::KeyEvent> kev; - kev.reset(GenerateSynthesizedKeyEvent(true, ui::VKEY_K)); - dispatcher->OnEventFromSource(kev.get()); - buffer.PopEvents(&events); - EXPECT_EQ(2u, events.size()); - EXPECT_EQ(ui::ET_KEY_PRESSED, events[0]->type()); - EXPECT_EQ(ui::VKEY_K, static_cast<ui::KeyEvent*>(events[0])->key_code()); - EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); - EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); - EXPECT_EQ(ui::VKEY_CONTROL, - static_cast<ui::KeyEvent*>(events[1])->key_code()); - Shell::GetInstance()->RemovePreTargetHandler(&buffer); } @@ -908,21 +881,6 @@ TEST_P(StickyKeysMouseDispatchTest, MouseEventDispatchImpl) { EXPECT_EQ(ui::VKEY_CONTROL, static_cast<ui::KeyEvent*>(events[1])->key_code()); - // Test synthesized mouse events are dispatched correctly. - SendActivateStickyKeyPattern(dispatcher, ui::VKEY_CONTROL); - buffer.PopEvents(&events); - ev.reset(GenerateSynthesizedMouseClickEvent(false, physical_location)); - dispatcher->OnEventFromSource(ev.get()); - buffer.PopEvents(&events); - EXPECT_EQ(2u, events.size()); - EXPECT_EQ(ui::ET_MOUSE_RELEASED, events[0]->type()); - EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); - EXPECT_EQ(dip_location.ToString(), - static_cast<ui::MouseEvent*>(events[0])->location().ToString()); - EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); - EXPECT_EQ(ui::VKEY_CONTROL, - static_cast<ui::KeyEvent*>(events[1])->key_code()); - Shell::GetInstance()->RemovePreTargetHandler(&buffer); } @@ -977,23 +935,6 @@ TEST_P(StickyKeysMouseDispatchTest, MouseWheelEventDispatchImpl) { EXPECT_EQ(ui::VKEY_CONTROL, static_cast<ui::KeyEvent*>(events[1])->key_code()); - // Test synthesized mouse wheel events are dispatched correctly. - SendActivateStickyKeyPattern(dispatcher, ui::VKEY_CONTROL); - buffer.PopEvents(&events); - ev.reset( - GenerateSynthesizedMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); - dispatcher->OnEventFromSource(ev.get()); - buffer.PopEvents(&events); - EXPECT_EQ(2u, events.size()); - EXPECT_TRUE(events[0]->IsMouseWheelEvent()); - EXPECT_EQ(ui::MouseWheelEvent::kWheelDelta / scale_factor, - static_cast<ui::MouseWheelEvent*>(events[0])->y_offset()); - EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); - EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); - EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); - EXPECT_EQ(ui::VKEY_CONTROL, - static_cast<ui::KeyEvent*>(events[1])->key_code()); - Shell::GetInstance()->RemovePreTargetHandler(&buffer); } diff --git a/ui/events/event.h b/ui/events/event.h index 17cad8b..51d73f8 100644 --- a/ui/events/event.h +++ b/ui/events/event.h @@ -416,9 +416,11 @@ class EVENTS_EXPORT MouseWheelEvent : public MouseEvent { template <class T> MouseWheelEvent(const MouseWheelEvent& model, T* source, - T* target) - : MouseEvent(model, source, target, model.type(), model.flags()), - offset_(model.x_offset(), model.y_offset()) { + T* target, + EventType type, + int flags) + : MouseEvent(model, source, target, type, flags), + offset_(model.x_offset(), model.y_offset()){ } // The amount to scroll. This is in multiples of kWheelDelta. |