OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/accelerators/accelerator_controller.h" | 5 #include "ash/accelerators/accelerator_controller.h" |
6 #include "ash/shell.h" | 6 #include "ash/shell.h" |
7 #include "ash/shell_delegate.h" | 7 #include "ash/shell_delegate.h" |
8 #include "ash/shell_window_ids.h" | 8 #include "ash/shell_window_ids.h" |
9 #include "ash/test/ash_test_base.h" | 9 #include "ash/test/ash_test_base.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/event_types.h" | 11 #include "base/event_types.h" |
12 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
13 #include "ui/aura/client/dispatcher_client.h" | 13 #include "ui/aura/client/dispatcher_client.h" |
14 #include "ui/aura/root_window.h" | 14 #include "ui/aura/root_window.h" |
15 #include "ui/aura/test/test_windows.h" | 15 #include "ui/aura/test/test_windows.h" |
16 #include "ui/aura/window.h" | 16 #include "ui/aura/window.h" |
17 #include "ui/base/accelerators/accelerator.h" | 17 #include "ui/base/accelerators/accelerator.h" |
| 18 #include "ui/base/events.h" |
18 | 19 |
19 #if defined(USE_X11) | 20 #if defined(USE_X11) |
20 #include <X11/Xlib.h> | 21 #include <X11/Xlib.h> |
21 #include "ui/base/x/x11_util.h" | 22 #include "ui/base/x/x11_util.h" |
22 #endif // USE_X11 | 23 #endif // USE_X11 |
23 | 24 |
24 namespace ash { | 25 namespace ash { |
25 namespace test { | 26 namespace test { |
26 | 27 |
27 namespace { | 28 namespace { |
28 | 29 |
29 class MockDispatcher : public MessageLoop::Dispatcher { | 30 class MockDispatcher : public MessageLoop::Dispatcher { |
30 public: | 31 public: |
31 MockDispatcher() : num_key_events_dispatched_(0) { | 32 MockDispatcher() : num_key_events_dispatched_(0) { |
32 } | 33 } |
33 | 34 |
34 int num_key_events_dispatched() { return num_key_events_dispatched_; } | 35 int num_key_events_dispatched() { return num_key_events_dispatched_; } |
35 | 36 |
36 #if defined(OS_WIN) | 37 #if defined(OS_WIN) || defined(USE_X11) |
37 virtual bool Dispatch(const MSG& msg) OVERRIDE { | 38 virtual bool Dispatch(const base::NativeEvent& event) OVERRIDE { |
38 if (msg.message == WM_KEYUP) | 39 if (ui::EventTypeFromNative(event) == ui::ET_KEY_RELEASED) |
39 num_key_events_dispatched_++; | 40 num_key_events_dispatched_++; |
40 return !ui::IsNoopEvent(msg); | 41 return !ui::IsNoopEvent(event); |
41 } | 42 } |
42 #elif defined(USE_X11) | 43 #endif // defined(OS_WIN) || defined(USE_X11) |
43 virtual base::MessagePumpDispatcher::DispatchStatus Dispatch( | |
44 XEvent* xev) OVERRIDE { | |
45 if (xev->type == KeyRelease) | |
46 num_key_events_dispatched_++; | |
47 return ui::IsNoopEvent(xev) ? MessagePumpDispatcher::EVENT_QUIT : | |
48 MessagePumpDispatcher::EVENT_IGNORED; | |
49 } | |
50 #endif | |
51 | 44 |
52 private: | 45 private: |
53 int num_key_events_dispatched_; | 46 int num_key_events_dispatched_; |
54 }; | 47 }; |
55 | 48 |
56 class TestTarget : public ui::AcceleratorTarget { | 49 class TestTarget : public ui::AcceleratorTarget { |
57 public: | 50 public: |
58 TestTarget() : accelerator_pressed_count_(0) { | 51 TestTarget() : accelerator_pressed_count_(0) { |
59 } | 52 } |
60 virtual ~TestTarget() { | 53 virtual ~TestTarget() { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 aura::client::GetDispatcherClient(root_window)->RunWithDispatcher( | 161 aura::client::GetDispatcherClient(root_window)->RunWithDispatcher( |
169 &inner_dispatcher, | 162 &inner_dispatcher, |
170 root_window, | 163 root_window, |
171 true /* nestable_tasks_allowed */); | 164 true /* nestable_tasks_allowed */); |
172 EXPECT_EQ(0, inner_dispatcher.num_key_events_dispatched()); | 165 EXPECT_EQ(0, inner_dispatcher.num_key_events_dispatched()); |
173 EXPECT_EQ(1, target.accelerator_pressed_count()); | 166 EXPECT_EQ(1, target.accelerator_pressed_count()); |
174 } | 167 } |
175 | 168 |
176 } // namespace test | 169 } // namespace test |
177 } // namespace ash | 170 } // namespace ash |
OLD | NEW |