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

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

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

Powered by Google App Engine
This is Rietveld 408576698