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

Side by Side Diff: chrome/browser/chromeos/accessibility/select_to_speak_event_handler_unittest.cc

Issue 2814213002: Refactor Select-to-speak so that mouse events are forwarded to the extension. (Closed)
Patch Set: Fix closure compiler warnings Created 3 years, 7 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "chrome/browser/chromeos/accessibility/select_to_speak_event_handler.h" 5 #include "chrome/browser/chromeos/accessibility/select_to_speak_event_handler.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
11 #include "ash/test/ash_test_helper.h" 11 #include "ash/test/ash_test_helper.h"
12 #include "ash/test/ash_test_views_delegate.h" 12 #include "ash/test/ash_test_views_delegate.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "chrome/browser/chromeos/accessibility/speech_monitor.h"
15 #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" 14 #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h"
16 #include "chrome/test/base/testing_profile.h" 15 #include "chrome/test/base/testing_profile.h"
17 #include "ui/aura/window.h" 16 #include "ui/aura/window.h"
18 #include "ui/events/event.h" 17 #include "ui/events/event.h"
19 #include "ui/events/event_constants.h" 18 #include "ui/events/event_constants.h"
20 #include "ui/events/test/event_generator.h" 19 #include "ui/events/test/event_generator.h"
21 #include "ui/views/views_delegate.h"
22 20
23 using chromeos::SelectToSpeakEventHandler; 21 using chromeos::SelectToSpeakEventHandler;
24 22
25 namespace { 23 namespace {
26 24
27 // Records all key events. 25 // Records all key events.
28 class EventCapturer : public ui::EventHandler { 26 class EventCapturer : public ui::EventHandler {
29 public: 27 public:
30 EventCapturer() {} 28 EventCapturer() {}
31 ~EventCapturer() override {} 29 ~EventCapturer() override {}
(...skipping 13 matching lines...) Expand all
45 void OnKeyEvent(ui::KeyEvent* event) override { 43 void OnKeyEvent(ui::KeyEvent* event) override {
46 last_key_event_.reset(new ui::KeyEvent(*event)); 44 last_key_event_.reset(new ui::KeyEvent(*event));
47 } 45 }
48 46
49 std::unique_ptr<ui::KeyEvent> last_key_event_; 47 std::unique_ptr<ui::KeyEvent> last_key_event_;
50 std::unique_ptr<ui::MouseEvent> last_mouse_event_; 48 std::unique_ptr<ui::MouseEvent> last_mouse_event_;
51 49
52 DISALLOW_COPY_AND_ASSIGN(EventCapturer); 50 DISALLOW_COPY_AND_ASSIGN(EventCapturer);
53 }; 51 };
54 52
55 class SelectToSpeakAccessibilityEventDelegate 53 class SelectToSpeakMouseEventDelegate
56 : public ash::test::TestAccessibilityEventDelegate { 54 : public chromeos::SelectToSpeakForwardedEventDelegateForTesting {
57 public: 55 public:
58 SelectToSpeakAccessibilityEventDelegate() {} 56 SelectToSpeakMouseEventDelegate() {}
59 ~SelectToSpeakAccessibilityEventDelegate() override {}
60 57
61 void Reset() { events_captured_.clear(); } 58 void Reset() { events_captured_.clear(); }
62 59
63 bool CapturedAXEvent(ui::AXEvent event_type) { 60 bool CapturedMouseEvent(ui::EventType event_type) {
64 return events_captured_.find(event_type) != events_captured_.end(); 61 return events_captured_.find(event_type) != events_captured_.end();
65 } 62 }
66 63
67 // Overriden from TestAccessibilityEventDelegate. 64 // Overriden from SelectToSpeakForwardedEventDelegateForTesting
68 void NotifyAccessibilityEvent(views::View* view, 65 void OnForwardEventToSelectToSpeakExtension(
69 ui::AXEvent event_type) override { 66 const ui::MouseEvent& event) override {
70 events_captured_.insert(event_type); 67 events_captured_.insert(event.type());
71 } 68 }
72 69
73 private: 70 private:
74 std::set<ui::AXEvent> events_captured_; 71 std::set<ui::EventType> events_captured_;
75 72
76 DISALLOW_COPY_AND_ASSIGN(SelectToSpeakAccessibilityEventDelegate); 73 DISALLOW_COPY_AND_ASSIGN(SelectToSpeakMouseEventDelegate);
77 }; 74 };
78 75
79 class SelectToSpeakEventHandlerTest : public ash::test::AshTestBase { 76 class SelectToSpeakEventHandlerTest : public ash::test::AshTestBase {
80 public: 77 public:
81 SelectToSpeakEventHandlerTest() 78 SelectToSpeakEventHandlerTest()
82 : generator_(nullptr), 79 : generator_(nullptr),
83 select_to_speak_event_handler_(new SelectToSpeakEventHandler()) {} 80 select_to_speak_event_handler_(new SelectToSpeakEventHandler()) {}
84 81
85 void SetUp() override { 82 void SetUp() override {
86 ash::test::AshTestBase::SetUp(); 83 ash::test::AshTestBase::SetUp();
87 event_delegate_.reset(new SelectToSpeakAccessibilityEventDelegate()); 84 mouse_event_delegate_.reset(new SelectToSpeakMouseEventDelegate());
88 ash_test_helper() 85 select_to_speak_event_handler_->CaptureForwardedEventsForTesting(
89 ->test_views_delegate() 86 mouse_event_delegate_.get());
90 ->set_test_accessibility_event_delegate(event_delegate_.get());
91 generator_ = &AshTestBase::GetEventGenerator(); 87 generator_ = &AshTestBase::GetEventGenerator();
92 CurrentContext()->AddPreTargetHandler(select_to_speak_event_handler_.get()); 88 CurrentContext()->AddPreTargetHandler(select_to_speak_event_handler_.get());
93 CurrentContext()->AddPreTargetHandler(&event_capturer_); 89 CurrentContext()->AddPreTargetHandler(&event_capturer_);
94 AutomationManagerAura::GetInstance()->Enable(&profile_); 90 AutomationManagerAura::GetInstance()->Enable(&profile_);
95 } 91 }
96 92
97 void TearDown() override { 93 void TearDown() override {
98 CurrentContext()->RemovePreTargetHandler( 94 CurrentContext()->RemovePreTargetHandler(
99 select_to_speak_event_handler_.get()); 95 select_to_speak_event_handler_.get());
100 CurrentContext()->RemovePreTargetHandler(&event_capturer_); 96 CurrentContext()->RemovePreTargetHandler(&event_capturer_);
101 generator_ = nullptr; 97 generator_ = nullptr;
102 ash::test::AshTestBase::TearDown(); 98 ash::test::AshTestBase::TearDown();
103 } 99 }
104 100
105 protected: 101 protected:
106 ui::test::EventGenerator* generator_; 102 ui::test::EventGenerator* generator_;
107 EventCapturer event_capturer_; 103 EventCapturer event_capturer_;
108 TestingProfile profile_; 104 TestingProfile profile_;
109 std::unique_ptr<SelectToSpeakAccessibilityEventDelegate> event_delegate_; 105 std::unique_ptr<SelectToSpeakMouseEventDelegate> mouse_event_delegate_;
110 106
111 private: 107 private:
112 std::unique_ptr<SelectToSpeakEventHandler> select_to_speak_event_handler_; 108 std::unique_ptr<SelectToSpeakEventHandler> select_to_speak_event_handler_;
113 109
114 DISALLOW_COPY_AND_ASSIGN(SelectToSpeakEventHandlerTest); 110 DISALLOW_COPY_AND_ASSIGN(SelectToSpeakEventHandlerTest);
115 }; 111 };
116 112
117 } // namespace 113 } // namespace
118 114
119 namespace chromeos { 115 namespace chromeos {
120 116
121 TEST_F(SelectToSpeakEventHandlerTest, PressAndReleaseSearchNotHandled) { 117 TEST_F(SelectToSpeakEventHandlerTest, PressAndReleaseSearchNotHandled) {
122 // If the user presses and releases the Search key, with no mouse 118 // If the user presses and releases the Search key, with no mouse
123 // presses, the key events won't be handled by the SelectToSpeakEventHandler 119 // presses, the key events won't be handled by the SelectToSpeakEventHandler
124 // and the normal behavior will occur. 120 // and the normal behavior will occur.
125 121
126 EXPECT_FALSE(event_capturer_.last_key_event()); 122 EXPECT_FALSE(event_capturer_.last_key_event());
127 123
128 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 124 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
129 ASSERT_TRUE(event_capturer_.last_key_event()); 125 ASSERT_TRUE(event_capturer_.last_key_event());
130 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 126 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
131 127
132 event_capturer_.Reset(); 128 event_capturer_.Reset();
133 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 129 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
134 ASSERT_TRUE(event_capturer_.last_key_event()); 130 ASSERT_TRUE(event_capturer_.last_key_event());
135 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 131 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
136 } 132 }
137 133
134 // Note: when running these tests locally on desktop Linux, you may need
135 // to use xvfb-run, otherwise simulating the Search key press may not work.
138 TEST_F(SelectToSpeakEventHandlerTest, SearchPlusClick) { 136 TEST_F(SelectToSpeakEventHandlerTest, SearchPlusClick) {
139 // If the user holds the Search key and then clicks the mouse button, 137 // If the user holds the Search key and then clicks the mouse button,
140 // the mouse events and the key release event get hancled by the 138 // the mouse events and the key release event get handled by the
141 // SelectToSpeakEventHandler, and accessibility events are generated. 139 // SelectToSpeakEventHandler, and mouse events are forwarded to the extension.
142 140
143 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 141 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
144 ASSERT_TRUE(event_capturer_.last_key_event()); 142 ASSERT_TRUE(event_capturer_.last_key_event());
145 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 143 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
146 144
147 generator_->set_current_location(gfx::Point(100, 12)); 145 generator_->set_current_location(gfx::Point(100, 12));
148 generator_->PressLeftButton(); 146 generator_->PressLeftButton();
149 EXPECT_FALSE(event_capturer_.last_mouse_event()); 147 EXPECT_FALSE(event_capturer_.last_mouse_event());
150 148
151 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_PRESSED)); 149 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_PRESSED));
152 150
153 generator_->ReleaseLeftButton(); 151 generator_->ReleaseLeftButton();
154 EXPECT_FALSE(event_capturer_.last_mouse_event()); 152 EXPECT_FALSE(event_capturer_.last_mouse_event());
155 153
156 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_RELEASED)); 154 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_RELEASED));
157 155
158 event_capturer_.Reset(); 156 event_capturer_.Reset();
159 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 157 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
160 EXPECT_FALSE(event_capturer_.last_key_event()); 158 EXPECT_FALSE(event_capturer_.last_key_event());
161 } 159 }
162 160
163 TEST_F(SelectToSpeakEventHandlerTest, RepeatSearchKey) { 161 TEST_F(SelectToSpeakEventHandlerTest, RepeatSearchKey) {
164 // Holding the Search key may generate key repeat events. Make sure it's 162 // Holding the Search key may generate key repeat events. Make sure it's
165 // still treated as if the search key is down. 163 // still treated as if the search key is down.
166 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 164 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
167 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 165 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
168 166
169 generator_->set_current_location(gfx::Point(100, 12)); 167 generator_->set_current_location(gfx::Point(100, 12));
170 generator_->PressLeftButton(); 168 generator_->PressLeftButton();
171 EXPECT_FALSE(event_capturer_.last_mouse_event()); 169 EXPECT_FALSE(event_capturer_.last_mouse_event());
172 170
173 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_PRESSED)); 171 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_PRESSED));
174 172
175 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 173 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
176 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 174 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
177 175
178 generator_->ReleaseLeftButton(); 176 generator_->ReleaseLeftButton();
179 EXPECT_FALSE(event_capturer_.last_mouse_event()); 177 EXPECT_FALSE(event_capturer_.last_mouse_event());
180 178
181 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_RELEASED)); 179 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_RELEASED));
182 180
183 event_capturer_.Reset(); 181 event_capturer_.Reset();
184 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 182 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
185 EXPECT_FALSE(event_capturer_.last_key_event()); 183 EXPECT_FALSE(event_capturer_.last_key_event());
186 } 184 }
187 185
188 TEST_F(SelectToSpeakEventHandlerTest, SearchPlusClickTwice) { 186 TEST_F(SelectToSpeakEventHandlerTest, SearchPlusClickTwice) {
189 // Same as SearchPlusClick, above, but test that the user can keep 187 // Same as SearchPlusClick, above, but test that the user can keep
190 // holding down Search and click again. 188 // holding down Search and click again.
191 189
192 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 190 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
193 ASSERT_TRUE(event_capturer_.last_key_event()); 191 ASSERT_TRUE(event_capturer_.last_key_event());
194 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 192 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
195 193
196 generator_->set_current_location(gfx::Point(100, 12)); 194 generator_->set_current_location(gfx::Point(100, 12));
197 generator_->PressLeftButton(); 195 generator_->PressLeftButton();
198 EXPECT_FALSE(event_capturer_.last_mouse_event()); 196 EXPECT_FALSE(event_capturer_.last_mouse_event());
199 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_PRESSED)); 197 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_PRESSED));
200 198
201 generator_->ReleaseLeftButton(); 199 generator_->ReleaseLeftButton();
202 EXPECT_FALSE(event_capturer_.last_mouse_event()); 200 EXPECT_FALSE(event_capturer_.last_mouse_event());
203 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_RELEASED)); 201 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_RELEASED));
204 202
205 event_delegate_->Reset(); 203 mouse_event_delegate_->Reset();
206 EXPECT_FALSE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_PRESSED)); 204 EXPECT_FALSE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_PRESSED));
207 EXPECT_FALSE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_RELEASED)); 205 EXPECT_FALSE(
206 mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_RELEASED));
208 207
209 generator_->PressLeftButton(); 208 generator_->PressLeftButton();
210 EXPECT_FALSE(event_capturer_.last_mouse_event()); 209 EXPECT_FALSE(event_capturer_.last_mouse_event());
211 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_PRESSED)); 210 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_PRESSED));
212 211
213 generator_->ReleaseLeftButton(); 212 generator_->ReleaseLeftButton();
214 EXPECT_FALSE(event_capturer_.last_mouse_event()); 213 EXPECT_FALSE(event_capturer_.last_mouse_event());
215 EXPECT_TRUE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_RELEASED)); 214 EXPECT_TRUE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_RELEASED));
216 215
217 event_capturer_.Reset(); 216 event_capturer_.Reset();
218 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 217 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
219 EXPECT_FALSE(event_capturer_.last_key_event()); 218 EXPECT_FALSE(event_capturer_.last_key_event());
220 } 219 }
221 220
222 TEST_F(SelectToSpeakEventHandlerTest, SearchPlusKeyIgnoresClicks) { 221 TEST_F(SelectToSpeakEventHandlerTest, SearchPlusKeyIgnoresClicks) {
223 // If the user presses the Search key and then some other key, 222 // If the user presses the Search key and then some other key,
224 // we should assume the user does not want select-to-speak, and 223 // we should assume the user does not want select-to-speak, and
225 // click events should be ignored. 224 // click events should be ignored.
226 225
227 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 226 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
228 ASSERT_TRUE(event_capturer_.last_key_event()); 227 ASSERT_TRUE(event_capturer_.last_key_event());
229 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 228 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
230 229
231 generator_->PressKey(ui::VKEY_I, ui::EF_COMMAND_DOWN); 230 generator_->PressKey(ui::VKEY_I, ui::EF_COMMAND_DOWN);
232 ASSERT_TRUE(event_capturer_.last_key_event()); 231 ASSERT_TRUE(event_capturer_.last_key_event());
233 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 232 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
234 233
235 generator_->set_current_location(gfx::Point(100, 12)); 234 generator_->set_current_location(gfx::Point(100, 12));
236 generator_->PressLeftButton(); 235 generator_->PressLeftButton();
237 ASSERT_TRUE(event_capturer_.last_mouse_event()); 236 ASSERT_TRUE(event_capturer_.last_mouse_event());
238 EXPECT_FALSE(event_capturer_.last_mouse_event()->handled()); 237 EXPECT_FALSE(event_capturer_.last_mouse_event()->handled());
239 238
240 EXPECT_FALSE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_PRESSED)); 239 EXPECT_FALSE(mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_PRESSED));
241 240
242 generator_->ReleaseLeftButton(); 241 generator_->ReleaseLeftButton();
243 ASSERT_TRUE(event_capturer_.last_mouse_event()); 242 ASSERT_TRUE(event_capturer_.last_mouse_event());
244 EXPECT_FALSE(event_capturer_.last_mouse_event()->handled()); 243 EXPECT_FALSE(event_capturer_.last_mouse_event()->handled());
245 244
246 EXPECT_FALSE(event_delegate_->CapturedAXEvent(ui::AX_EVENT_MOUSE_RELEASED)); 245 EXPECT_FALSE(
246 mouse_event_delegate_->CapturedMouseEvent(ui::ET_MOUSE_RELEASED));
247 247
248 event_capturer_.Reset(); 248 event_capturer_.Reset();
249 generator_->ReleaseKey(ui::VKEY_I, ui::EF_COMMAND_DOWN); 249 generator_->ReleaseKey(ui::VKEY_I, ui::EF_COMMAND_DOWN);
250 ASSERT_TRUE(event_capturer_.last_key_event()); 250 ASSERT_TRUE(event_capturer_.last_key_event());
251 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 251 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
252 252
253 event_capturer_.Reset(); 253 event_capturer_.Reset();
254 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN); 254 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
255 ASSERT_TRUE(event_capturer_.last_key_event()); 255 ASSERT_TRUE(event_capturer_.last_key_event());
256 EXPECT_FALSE(event_capturer_.last_key_event()->handled()); 256 EXPECT_FALSE(event_capturer_.last_key_event()->handled());
257 } 257 }
258 258
259 TEST_F(SelectToSpeakEventHandlerTest, TappingControlStopsSpeech) {
260 SpeechMonitor monitor;
261 EXPECT_FALSE(monitor.DidStop());
262 generator_->PressKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN);
263 generator_->ReleaseKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN);
264 EXPECT_TRUE(monitor.DidStop());
265 }
266
267 TEST_F(SelectToSpeakEventHandlerTest, TappingSearchStopsSpeech) {
268 SpeechMonitor monitor;
269 EXPECT_FALSE(monitor.DidStop());
270 generator_->PressKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
271 generator_->ReleaseKey(ui::VKEY_LWIN, ui::EF_COMMAND_DOWN);
272 EXPECT_TRUE(monitor.DidStop());
273 }
274
275 TEST_F(SelectToSpeakEventHandlerTest, TappingShiftDoesNotStopSpeech) {
276 SpeechMonitor monitor;
277 generator_->PressKey(ui::VKEY_SHIFT, ui::EF_SHIFT_DOWN);
278 generator_->ReleaseKey(ui::VKEY_SHIFT, ui::EF_SHIFT_DOWN);
279 EXPECT_FALSE(monitor.DidStop());
280 }
281
282 TEST_F(SelectToSpeakEventHandlerTest, PressingControlZDoesNotStopSpeech) {
283 SpeechMonitor monitor;
284 generator_->PressKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN);
285 generator_->PressKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN);
286 generator_->ReleaseKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN);
287 generator_->ReleaseKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN);
288 EXPECT_FALSE(monitor.DidStop());
289 }
290
291 } // namespace chromeos 259 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698