Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(451)

Side by Side Diff: ash/sticky_keys/sticky_keys_overlay_unittest.cc

Issue 255033003: Convert sticky keys to a chromeos::EventRewriter phase. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@x354034-er
Patch Set: distinguish between MouseEvent and MouseWheelEvent Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/sticky_keys/sticky_keys_controller.cc ('k') | ash/sticky_keys/sticky_keys_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/sticky_keys/sticky_keys_overlay.h" 5 #include "ash/sticky_keys/sticky_keys_overlay.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/sticky_keys/sticky_keys_controller.h" 8 #include "ash/sticky_keys/sticky_keys_controller.h"
9 #include "ash/test/ash_test_base.h" 9 #include "ash/test/ash_test_base.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "ui/aura/window_tree_host.h"
12 #include "ui/events/event.h" 10 #include "ui/events/event.h"
13 #include "ui/events/event_processor.h"
14 11
15 namespace ash { 12 namespace ash {
16 13
17 class StickyKeysOverlayTest : public test::AshTestBase { 14 class StickyKeysOverlayTest : public test::AshTestBase {
18 public: 15 public:
19 StickyKeysOverlayTest() : 16 StickyKeysOverlayTest() {}
20 controller_(NULL),
21 overlay_(NULL) {}
22
23 virtual ~StickyKeysOverlayTest() {} 17 virtual ~StickyKeysOverlayTest() {}
24
25 virtual void SetUp() OVERRIDE {
26 test::AshTestBase::SetUp();
27
28 controller_ = Shell::GetInstance()->sticky_keys_controller();
29 controller_->Enable(true);
30 overlay_ = controller_->GetOverlayForTest();
31 ASSERT_TRUE(overlay_);
32 }
33
34 void PressAndReleaseKey(ui::KeyboardCode code) {
35 SendKeyEvent(ui::ET_KEY_PRESSED, code);
36 SendKeyEvent(ui::ET_KEY_RELEASED, code);
37 }
38
39 void SendKeyEvent(ui::EventType type, ui::KeyboardCode code) {
40 ui::KeyEvent event(type, code, 0, false);
41 ui::Event::DispatcherApi dispatcher(&event);
42 dispatcher.set_target(Shell::GetInstance()->GetPrimaryRootWindow());
43
44 ui::EventDispatchDetails details = Shell::GetPrimaryRootWindow()->
45 GetHost()->event_processor()->OnEventFromSource(&event);
46 CHECK(!details.dispatcher_destroyed);
47 }
48
49 StickyKeysController* controller_;
50 StickyKeysOverlay* overlay_;
51 }; 18 };
52 19
53 TEST_F(StickyKeysOverlayTest, OverlayVisibility) { 20 TEST_F(StickyKeysOverlayTest, OverlayVisibility) {
54 StickyKeysOverlay overlay; 21 StickyKeysOverlay overlay;
55 EXPECT_FALSE(overlay.is_visible()); 22 EXPECT_FALSE(overlay.is_visible());
56 overlay.Show(true); 23 overlay.Show(true);
57 EXPECT_TRUE(overlay.is_visible()); 24 EXPECT_TRUE(overlay.is_visible());
58 } 25 }
59 26
60 TEST_F(StickyKeysOverlayTest, ModifierKeyState) { 27 TEST_F(StickyKeysOverlayTest, ModifierKeyState) {
61 StickyKeysOverlay overlay; 28 StickyKeysOverlay overlay;
62 overlay.SetModifierKeyState(ui::EF_SHIFT_DOWN, STICKY_KEY_STATE_DISABLED); 29 overlay.SetModifierKeyState(ui::EF_SHIFT_DOWN, STICKY_KEY_STATE_DISABLED);
63 overlay.SetModifierKeyState(ui::EF_ALT_DOWN, STICKY_KEY_STATE_LOCKED); 30 overlay.SetModifierKeyState(ui::EF_ALT_DOWN, STICKY_KEY_STATE_LOCKED);
64 overlay.SetModifierKeyState(ui::EF_CONTROL_DOWN, STICKY_KEY_STATE_ENABLED); 31 overlay.SetModifierKeyState(ui::EF_CONTROL_DOWN, STICKY_KEY_STATE_ENABLED);
65 32
66 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, 33 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
67 overlay.GetModifierKeyState(ui::EF_SHIFT_DOWN)); 34 overlay.GetModifierKeyState(ui::EF_SHIFT_DOWN));
68 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, 35 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
69 overlay.GetModifierKeyState(ui::EF_ALT_DOWN)); 36 overlay.GetModifierKeyState(ui::EF_ALT_DOWN));
70 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, 37 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
71 overlay.GetModifierKeyState(ui::EF_CONTROL_DOWN)); 38 overlay.GetModifierKeyState(ui::EF_CONTROL_DOWN));
72 } 39 }
73 40
74 TEST_F(StickyKeysOverlayTest, OneModifierEnabled) { 41 // Additional sticky key overlay tests that depend on chromeos::EventRewriter
75 EXPECT_FALSE(overlay_->is_visible()); 42 // are now in chrome/browser/chromeos/events/event_rewriter_unittest.cc .
76 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
77 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
78
79 // Pressing modifier key should show overlay.
80 PressAndReleaseKey(ui::VKEY_CONTROL);
81 EXPECT_TRUE(overlay_->is_visible());
82 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
83 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
84
85 // Pressing a normal key should hide overlay.
86 PressAndReleaseKey(ui::VKEY_T);
87 EXPECT_FALSE(overlay_->is_visible());
88 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
89 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
90 }
91
92 TEST_F(StickyKeysOverlayTest, TwoModifiersEnabled) {
93 EXPECT_FALSE(overlay_->is_visible());
94 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
95 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
96 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
97 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
98
99 // Pressing two modifiers should show overlay.
100 PressAndReleaseKey(ui::VKEY_SHIFT);
101 PressAndReleaseKey(ui::VKEY_CONTROL);
102 EXPECT_TRUE(overlay_->is_visible());
103 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
104 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
105 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
106 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
107
108 // Pressing a normal key should hide overlay.
109 PressAndReleaseKey(ui::VKEY_N);
110 EXPECT_FALSE(overlay_->is_visible());
111 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
112 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
113 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
114 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
115 }
116
117 TEST_F(StickyKeysOverlayTest, LockedModifier) {
118 EXPECT_FALSE(overlay_->is_visible());
119 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
120 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
121
122 // Pressing a modifier key twice should lock modifier and show overlay.
123 PressAndReleaseKey(ui::VKEY_LMENU);
124 PressAndReleaseKey(ui::VKEY_LMENU);
125 EXPECT_TRUE(overlay_->is_visible());
126 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
127 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
128
129 // Pressing a normal key should not hide overlay.
130 PressAndReleaseKey(ui::VKEY_D);
131 EXPECT_TRUE(overlay_->is_visible());
132 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
133 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
134 }
135
136 TEST_F(StickyKeysOverlayTest, LockedAndNormalModifier) {
137 EXPECT_FALSE(overlay_->is_visible());
138 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
139 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
140 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
141 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
142
143 // Pressing a modifier key twice should lock modifier and show overlay.
144 PressAndReleaseKey(ui::VKEY_CONTROL);
145 PressAndReleaseKey(ui::VKEY_CONTROL);
146 EXPECT_TRUE(overlay_->is_visible());
147 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
148 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
149
150 // Pressing another modifier key should still show overlay.
151 PressAndReleaseKey(ui::VKEY_SHIFT);
152 EXPECT_TRUE(overlay_->is_visible());
153 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
154 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
155 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
156 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
157
158 // Pressing a normal key should not hide overlay but disable normal modifier.
159 PressAndReleaseKey(ui::VKEY_D);
160 EXPECT_TRUE(overlay_->is_visible());
161 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
162 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
163 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
164 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
165 }
166
167 TEST_F(StickyKeysOverlayTest, ModifiersDisabled) {
168 EXPECT_FALSE(overlay_->is_visible());
169 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
170 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
171 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
172 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
173 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
174 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
175
176 // Enable modifiers.
177 PressAndReleaseKey(ui::VKEY_CONTROL);
178 PressAndReleaseKey(ui::VKEY_SHIFT);
179 PressAndReleaseKey(ui::VKEY_SHIFT);
180 PressAndReleaseKey(ui::VKEY_LMENU);
181
182 EXPECT_TRUE(overlay_->is_visible());
183 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
184 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
185 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
186 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
187 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
188 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
189
190 // Disable modifiers and overlay should be hidden.
191 PressAndReleaseKey(ui::VKEY_CONTROL);
192 PressAndReleaseKey(ui::VKEY_CONTROL);
193 PressAndReleaseKey(ui::VKEY_SHIFT);
194 PressAndReleaseKey(ui::VKEY_LMENU);
195 PressAndReleaseKey(ui::VKEY_LMENU);
196
197 EXPECT_FALSE(overlay_->is_visible());
198 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
199 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN));
200 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
201 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN));
202 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
203 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN));
204 }
205
206 TEST_F(StickyKeysOverlayTest, ModifierVisibility) {
207 // All but AltGr and Mod3 should initially be visible.
208 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_CONTROL_DOWN));
209 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_SHIFT_DOWN));
210 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_ALT_DOWN));
211 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
212 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
213
214 // Turn all modifiers on.
215 controller_->SetModifiersEnabled(true, true);
216 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_CONTROL_DOWN));
217 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_SHIFT_DOWN));
218 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_ALT_DOWN));
219 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
220 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
221
222 // Turn off Mod3.
223 controller_->SetModifiersEnabled(false, true);
224 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
225 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
226
227 // Turn off AltGr.
228 controller_->SetModifiersEnabled(true, false);
229 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
230 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
231
232 // Turn off AltGr and Mod3.
233 controller_->SetModifiersEnabled(false, false);
234 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
235 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
236 }
237 43
238 } // namespace ash 44 } // namespace ash
OLDNEW
« no previous file with comments | « ash/sticky_keys/sticky_keys_controller.cc ('k') | ash/sticky_keys/sticky_keys_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698