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