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

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

Issue 341923006: Revert 278342 "Convert sticky keys to a chromeos::EventRewriter ..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: 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 | Annotate | Revision Log
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"
10 #include "ui/events/event.h" 12 #include "ui/events/event.h"
13 #include "ui/events/event_processor.h"
11 14
12 namespace ash { 15 namespace ash {
13 16
14 class StickyKeysOverlayTest : public test::AshTestBase { 17 class StickyKeysOverlayTest : public test::AshTestBase {
15 public: 18 public:
16 StickyKeysOverlayTest() {} 19 StickyKeysOverlayTest() :
20 controller_(NULL),
21 overlay_(NULL) {}
22
17 virtual ~StickyKeysOverlayTest() {} 23 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_;
18 }; 51 };
19 52
20 TEST_F(StickyKeysOverlayTest, OverlayVisibility) { 53 TEST_F(StickyKeysOverlayTest, OverlayVisibility) {
21 StickyKeysOverlay overlay; 54 StickyKeysOverlay overlay;
22 EXPECT_FALSE(overlay.is_visible()); 55 EXPECT_FALSE(overlay.is_visible());
23 overlay.Show(true); 56 overlay.Show(true);
24 EXPECT_TRUE(overlay.is_visible()); 57 EXPECT_TRUE(overlay.is_visible());
25 } 58 }
26 59
27 TEST_F(StickyKeysOverlayTest, ModifierKeyState) { 60 TEST_F(StickyKeysOverlayTest, ModifierKeyState) {
28 StickyKeysOverlay overlay; 61 StickyKeysOverlay overlay;
29 overlay.SetModifierKeyState(ui::EF_SHIFT_DOWN, STICKY_KEY_STATE_DISABLED); 62 overlay.SetModifierKeyState(ui::EF_SHIFT_DOWN, STICKY_KEY_STATE_DISABLED);
30 overlay.SetModifierKeyState(ui::EF_ALT_DOWN, STICKY_KEY_STATE_LOCKED); 63 overlay.SetModifierKeyState(ui::EF_ALT_DOWN, STICKY_KEY_STATE_LOCKED);
31 overlay.SetModifierKeyState(ui::EF_CONTROL_DOWN, STICKY_KEY_STATE_ENABLED); 64 overlay.SetModifierKeyState(ui::EF_CONTROL_DOWN, STICKY_KEY_STATE_ENABLED);
32 65
33 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, 66 EXPECT_EQ(STICKY_KEY_STATE_DISABLED,
34 overlay.GetModifierKeyState(ui::EF_SHIFT_DOWN)); 67 overlay.GetModifierKeyState(ui::EF_SHIFT_DOWN));
35 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, 68 EXPECT_EQ(STICKY_KEY_STATE_LOCKED,
36 overlay.GetModifierKeyState(ui::EF_ALT_DOWN)); 69 overlay.GetModifierKeyState(ui::EF_ALT_DOWN));
37 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, 70 EXPECT_EQ(STICKY_KEY_STATE_ENABLED,
38 overlay.GetModifierKeyState(ui::EF_CONTROL_DOWN)); 71 overlay.GetModifierKeyState(ui::EF_CONTROL_DOWN));
39 } 72 }
40 73
41 // Additional sticky key overlay tests that depend on chromeos::EventRewriter 74 TEST_F(StickyKeysOverlayTest, OneModifierEnabled) {
42 // are now in chrome/browser/chromeos/events/event_rewriter_unittest.cc . 75 EXPECT_FALSE(overlay_->is_visible());
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 }
43 237
44 } // namespace ash 238 } // namespace ash
OLDNEW
« no previous file with comments | « trunk/src/ash/sticky_keys/sticky_keys_controller.cc ('k') | trunk/src/ash/sticky_keys/sticky_keys_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698