| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "remoting/protocol/input_event_tracker.h" | 5 #include "remoting/protocol/input_event_tracker.h" |
| 6 | 6 |
| 7 #include "remoting/proto/event.pb.h" | 7 #include "remoting/proto/event.pb.h" |
| 8 #include "remoting/protocol/protocol_mock_objects.h" | 8 #include "remoting/protocol/protocol_mock_objects.h" |
| 9 #include "remoting/protocol/test_event_matchers.h" |
| 9 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 11 | 12 |
| 12 using ::testing::_; | 13 using ::testing::_; |
| 13 using ::testing::ExpectationSet; | 14 using ::testing::ExpectationSet; |
| 14 using ::testing::InSequence; | 15 using ::testing::InSequence; |
| 15 | 16 |
| 16 namespace remoting { | 17 namespace remoting { |
| 17 namespace protocol { | 18 namespace protocol { |
| 18 | 19 |
| 20 using test::EqualsKeyEventWithCapsLock; |
| 21 using test::EqualsMouseEvent; |
| 22 using test::EqualsKeyEventWithoutLockStates; |
| 23 |
| 19 namespace { | 24 namespace { |
| 20 | 25 |
| 21 static const MouseEvent::MouseButton BUTTON_LEFT = MouseEvent::BUTTON_LEFT; | 26 static const MouseEvent::MouseButton BUTTON_LEFT = MouseEvent::BUTTON_LEFT; |
| 22 static const MouseEvent::MouseButton BUTTON_RIGHT = MouseEvent::BUTTON_RIGHT; | 27 static const MouseEvent::MouseButton BUTTON_RIGHT = MouseEvent::BUTTON_RIGHT; |
| 23 | 28 |
| 24 // A hardcoded value used to verify |lock_states| is preserved. | |
| 25 static const uint32 kTestLockStates = protocol::KeyEvent::LOCK_STATES_CAPSLOCK; | |
| 26 | |
| 27 // Verify the usb key code and the "pressed" state. | |
| 28 // Also verify that the event doesn't have |lock_states| set. | |
| 29 MATCHER_P2(EqualsUsbEventWithoutLockStates, usb_keycode, pressed, "") { | |
| 30 return arg.usb_keycode() == static_cast<uint32>(usb_keycode) && | |
| 31 arg.pressed() == pressed && | |
| 32 !arg.has_lock_states(); | |
| 33 } | |
| 34 | |
| 35 // Verify the usb key code, the "pressed" state, and the lock states. | |
| 36 MATCHER_P2(EqualsUsbEvent, usb_keycode, pressed, "") { | |
| 37 return arg.usb_keycode() == static_cast<uint32>(usb_keycode) && | |
| 38 arg.pressed() == pressed && | |
| 39 arg.lock_states() == kTestLockStates; | |
| 40 } | |
| 41 | |
| 42 MATCHER_P4(EqualsMouseEvent, x, y, button, down, "") { | |
| 43 return arg.x() == x && arg.y() == y && arg.button() == button && | |
| 44 arg.button_down() == down; | |
| 45 } | |
| 46 | |
| 47 MATCHER_P2(TouchPointIdsAndTypeEqual, ids, type, "") { | 29 MATCHER_P2(TouchPointIdsAndTypeEqual, ids, type, "") { |
| 48 if (arg.event_type() != type) | 30 if (arg.event_type() != type) |
| 49 return false; | 31 return false; |
| 50 | 32 |
| 51 std::set<uint32> touch_ids; | 33 std::set<uint32> touch_ids; |
| 52 for (const TouchEventPoint& point : arg.touch_points()) { | 34 for (const TouchEventPoint& point : arg.touch_points()) { |
| 53 touch_ids.insert(point.id()); | 35 touch_ids.insert(point.id()); |
| 54 } | 36 } |
| 55 return touch_ids == ids; | 37 return touch_ids == ids; |
| 56 } | 38 } |
| 57 | 39 |
| 58 static KeyEvent NewUsbEvent(uint32 usb_keycode, | 40 static KeyEvent NewUsbEvent(uint32 usb_keycode, bool pressed) { |
| 59 bool pressed) { | |
| 60 KeyEvent event; | 41 KeyEvent event; |
| 61 event.set_usb_keycode(usb_keycode); | 42 event.set_usb_keycode(usb_keycode); |
| 62 event.set_pressed(pressed); | 43 event.set_pressed(pressed); |
| 63 // Create all key events with the hardcoded |lock_state| in this test. | 44 // Create all key events with the hardcoded |lock_state| in this test. |
| 64 event.set_lock_states(kTestLockStates); | 45 event.set_lock_states(KeyEvent::LOCK_STATES_CAPSLOCK); |
| 65 return event; | 46 return event; |
| 66 } | 47 } |
| 67 | 48 |
| 68 static void PressAndReleaseUsb(InputStub* input_stub, | 49 static void PressAndReleaseUsb(InputStub* input_stub, uint32 usb_keycode) { |
| 69 uint32 usb_keycode) { | |
| 70 input_stub->InjectKeyEvent(NewUsbEvent(usb_keycode, true)); | 50 input_stub->InjectKeyEvent(NewUsbEvent(usb_keycode, true)); |
| 71 input_stub->InjectKeyEvent(NewUsbEvent(usb_keycode, false)); | 51 input_stub->InjectKeyEvent(NewUsbEvent(usb_keycode, false)); |
| 72 } | 52 } |
| 73 | 53 |
| 74 static MouseEvent NewMouseEvent(int x, int y, | 54 static MouseEvent NewMouseEvent(int x, |
| 75 MouseEvent::MouseButton button, bool down) { | 55 int y, |
| 56 MouseEvent::MouseButton button, |
| 57 bool down) { |
| 76 MouseEvent event; | 58 MouseEvent event; |
| 77 event.set_x(x); | 59 event.set_x(x); |
| 78 event.set_y(y); | 60 event.set_y(y); |
| 79 event.set_button(button); | 61 event.set_button(button); |
| 80 event.set_button_down(down); | 62 event.set_button_down(down); |
| 81 return event; | 63 return event; |
| 82 } | 64 } |
| 83 | 65 |
| 84 void AddTouchPoint(uint32 id, TouchEvent* event) { | 66 void AddTouchPoint(uint32 id, TouchEvent* event) { |
| 85 TouchEventPoint* p = event->add_touch_points(); | 67 TouchEventPoint* p = event->add_touch_points(); |
| 86 p->set_id(id); | 68 p->set_id(id); |
| 87 } | 69 } |
| 88 | 70 |
| 89 } // namespace | 71 } // namespace |
| 90 | 72 |
| 91 // Verify that keys that were pressed and released aren't re-released. | 73 // Verify that keys that were pressed and released aren't re-released. |
| 92 TEST(InputEventTrackerTest, NothingToRelease) { | 74 TEST(InputEventTrackerTest, NothingToRelease) { |
| 93 MockInputStub mock_stub; | 75 MockInputStub mock_stub; |
| 94 InputEventTracker input_tracker(&mock_stub); | 76 InputEventTracker input_tracker(&mock_stub); |
| 95 | 77 |
| 96 { | 78 { |
| 97 InSequence s; | 79 InSequence s; |
| 98 | 80 |
| 99 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(1, true))); | 81 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsKeyEventWithCapsLock(1, true))); |
| 100 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(1, false))); | 82 EXPECT_CALL(mock_stub, |
| 101 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, true))); | 83 InjectKeyEvent(EqualsKeyEventWithCapsLock(1, false))); |
| 102 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, false))); | 84 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsKeyEventWithCapsLock(2, true))); |
| 85 EXPECT_CALL(mock_stub, |
| 86 InjectKeyEvent(EqualsKeyEventWithCapsLock(2, false))); |
| 103 | 87 |
| 104 EXPECT_CALL(mock_stub, | 88 EXPECT_CALL(mock_stub, |
| 105 InjectMouseEvent(EqualsMouseEvent(0, 0, BUTTON_LEFT, true))); | 89 InjectMouseEvent(EqualsMouseEvent(0, 0, BUTTON_LEFT, true))); |
| 106 EXPECT_CALL(mock_stub, | 90 EXPECT_CALL(mock_stub, |
| 107 InjectMouseEvent(EqualsMouseEvent(0, 0, BUTTON_LEFT, false))); | 91 InjectMouseEvent(EqualsMouseEvent(0, 0, BUTTON_LEFT, false))); |
| 108 } | 92 } |
| 109 | 93 |
| 110 PressAndReleaseUsb(&input_tracker, 1); | 94 PressAndReleaseUsb(&input_tracker, 1); |
| 111 PressAndReleaseUsb(&input_tracker, 2); | 95 PressAndReleaseUsb(&input_tracker, 2); |
| 112 | 96 |
| 113 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_LEFT, true)); | 97 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_LEFT, true)); |
| 114 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_LEFT, false)); | 98 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_LEFT, false)); |
| 115 | 99 |
| 116 input_tracker.ReleaseAll(); | 100 input_tracker.ReleaseAll(); |
| 117 } | 101 } |
| 118 | 102 |
| 119 // Verify that keys that were left pressed get released. | 103 // Verify that keys that were left pressed get released. |
| 120 TEST(InputEventTrackerTest, ReleaseAllKeys) { | 104 TEST(InputEventTrackerTest, ReleaseAllKeys) { |
| 121 MockInputStub mock_stub; | 105 MockInputStub mock_stub; |
| 122 InputEventTracker input_tracker(&mock_stub); | 106 InputEventTracker input_tracker(&mock_stub); |
| 123 ExpectationSet injects; | 107 ExpectationSet injects; |
| 124 | 108 |
| 125 { | 109 { |
| 126 InSequence s; | 110 InSequence s; |
| 127 | 111 |
| 128 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(3, true))); | 112 injects += EXPECT_CALL(mock_stub, |
| 129 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(1, true))); | 113 InjectKeyEvent(EqualsKeyEventWithCapsLock(3, true))); |
| 130 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(1, false))); | 114 injects += EXPECT_CALL(mock_stub, |
| 131 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, true))); | 115 InjectKeyEvent(EqualsKeyEventWithCapsLock(1, true))); |
| 132 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, false))); | 116 injects += EXPECT_CALL( |
| 117 mock_stub, InjectKeyEvent(EqualsKeyEventWithCapsLock(1, false))); |
| 118 injects += EXPECT_CALL(mock_stub, |
| 119 InjectKeyEvent(EqualsKeyEventWithCapsLock(2, true))); |
| 120 injects += EXPECT_CALL( |
| 121 mock_stub, InjectKeyEvent(EqualsKeyEventWithCapsLock(2, false))); |
| 133 | 122 |
| 134 injects += EXPECT_CALL(mock_stub, | 123 injects += EXPECT_CALL(mock_stub, InjectMouseEvent(EqualsMouseEvent( |
| 135 InjectMouseEvent(EqualsMouseEvent(0, 0, BUTTON_RIGHT, true))); | 124 0, 0, BUTTON_RIGHT, true))); |
| 136 injects += EXPECT_CALL(mock_stub, | 125 injects += EXPECT_CALL( |
| 137 InjectMouseEvent(EqualsMouseEvent(0, 0, BUTTON_LEFT, true))); | 126 mock_stub, InjectMouseEvent(EqualsMouseEvent(0, 0, BUTTON_LEFT, true))); |
| 138 injects += EXPECT_CALL(mock_stub, | 127 injects += EXPECT_CALL(mock_stub, InjectMouseEvent(EqualsMouseEvent( |
| 139 InjectMouseEvent(EqualsMouseEvent(1, 1, BUTTON_LEFT, false))); | 128 1, 1, BUTTON_LEFT, false))); |
| 140 } | 129 } |
| 141 | 130 |
| 142 // The key should be released but |lock_states| should not be set. | 131 // The key should be released but |lock_states| should not be set. |
| 143 EXPECT_CALL(mock_stub, | 132 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsKeyEventWithoutLockStates( |
| 144 InjectKeyEvent(EqualsUsbEventWithoutLockStates(3, false))) | 133 3, false))).After(injects); |
| 145 .After(injects); | 134 EXPECT_CALL(mock_stub, InjectMouseEvent(EqualsMouseEvent( |
| 146 EXPECT_CALL(mock_stub, | 135 1, 1, BUTTON_RIGHT, false))).After(injects); |
| 147 InjectMouseEvent(EqualsMouseEvent(1, 1, BUTTON_RIGHT, false))) | |
| 148 .After(injects); | |
| 149 | 136 |
| 150 input_tracker.InjectKeyEvent(NewUsbEvent(3, true)); | 137 input_tracker.InjectKeyEvent(NewUsbEvent(3, true)); |
| 151 PressAndReleaseUsb(&input_tracker, 1); | 138 PressAndReleaseUsb(&input_tracker, 1); |
| 152 PressAndReleaseUsb(&input_tracker, 2); | 139 PressAndReleaseUsb(&input_tracker, 2); |
| 153 | 140 |
| 154 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_RIGHT, true)); | 141 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_RIGHT, true)); |
| 155 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_LEFT, true)); | 142 input_tracker.InjectMouseEvent(NewMouseEvent(0, 0, BUTTON_LEFT, true)); |
| 156 input_tracker.InjectMouseEvent(NewMouseEvent(1, 1, BUTTON_LEFT, false)); | 143 input_tracker.InjectMouseEvent(NewMouseEvent(1, 1, BUTTON_LEFT, false)); |
| 157 | 144 |
| 158 EXPECT_FALSE(input_tracker.IsKeyPressed(1)); | 145 EXPECT_FALSE(input_tracker.IsKeyPressed(1)); |
| 159 EXPECT_FALSE(input_tracker.IsKeyPressed(2)); | 146 EXPECT_FALSE(input_tracker.IsKeyPressed(2)); |
| 160 EXPECT_TRUE(input_tracker.IsKeyPressed(3)); | 147 EXPECT_TRUE(input_tracker.IsKeyPressed(3)); |
| 161 EXPECT_EQ(1, input_tracker.PressedKeyCount()); | 148 EXPECT_EQ(1, input_tracker.PressedKeyCount()); |
| 162 | 149 |
| 163 input_tracker.ReleaseAll(); | 150 input_tracker.ReleaseAll(); |
| 164 } | 151 } |
| 165 | 152 |
| 166 // Verify that we track both USB-based key events correctly. | 153 // Verify that we track both USB-based key events correctly. |
| 167 TEST(InputEventTrackerTest, TrackUsbKeyEvents) { | 154 TEST(InputEventTrackerTest, TrackUsbKeyEvents) { |
| 168 MockInputStub mock_stub; | 155 MockInputStub mock_stub; |
| 169 InputEventTracker input_tracker(&mock_stub); | 156 InputEventTracker input_tracker(&mock_stub); |
| 170 ExpectationSet injects; | 157 ExpectationSet injects; |
| 171 | 158 |
| 172 { | 159 { |
| 173 InSequence s; | 160 InSequence s; |
| 174 | 161 |
| 175 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(3, true))); | 162 injects += EXPECT_CALL(mock_stub, |
| 176 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(6, true))); | 163 InjectKeyEvent(EqualsKeyEventWithCapsLock(3, true))); |
| 177 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(7, true))); | 164 injects += EXPECT_CALL(mock_stub, |
| 178 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(5, true))); | 165 InjectKeyEvent(EqualsKeyEventWithCapsLock(6, true))); |
| 179 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(5, true))); | 166 injects += EXPECT_CALL(mock_stub, |
| 180 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, true))); | 167 InjectKeyEvent(EqualsKeyEventWithCapsLock(7, true))); |
| 181 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, false))); | 168 injects += EXPECT_CALL(mock_stub, |
| 169 InjectKeyEvent(EqualsKeyEventWithCapsLock(5, true))); |
| 170 injects += EXPECT_CALL(mock_stub, |
| 171 InjectKeyEvent(EqualsKeyEventWithCapsLock(5, true))); |
| 172 injects += EXPECT_CALL(mock_stub, |
| 173 InjectKeyEvent(EqualsKeyEventWithCapsLock(2, true))); |
| 174 injects += EXPECT_CALL( |
| 175 mock_stub, InjectKeyEvent(EqualsKeyEventWithCapsLock(2, false))); |
| 182 } | 176 } |
| 183 | 177 |
| 184 // The key should be auto released with no |lock_states|. | 178 // The key should be auto released with no |lock_states|. |
| 185 EXPECT_CALL(mock_stub, | 179 EXPECT_CALL(mock_stub, |
| 186 InjectKeyEvent(EqualsUsbEventWithoutLockStates(3, false))) | 180 InjectKeyEvent(EqualsKeyEventWithoutLockStates(3, false))) |
| 187 .After(injects); | 181 .After(injects); |
| 188 EXPECT_CALL(mock_stub, | 182 EXPECT_CALL(mock_stub, |
| 189 InjectKeyEvent(EqualsUsbEventWithoutLockStates(6, false))) | 183 InjectKeyEvent(EqualsKeyEventWithoutLockStates(6, false))) |
| 190 .After(injects); | 184 .After(injects); |
| 191 EXPECT_CALL(mock_stub, | 185 EXPECT_CALL(mock_stub, |
| 192 InjectKeyEvent(EqualsUsbEventWithoutLockStates(7, false))) | 186 InjectKeyEvent(EqualsKeyEventWithoutLockStates(7, false))) |
| 193 .After(injects); | 187 .After(injects); |
| 194 EXPECT_CALL(mock_stub, | 188 EXPECT_CALL(mock_stub, |
| 195 InjectKeyEvent(EqualsUsbEventWithoutLockStates(5, false))) | 189 InjectKeyEvent(EqualsKeyEventWithoutLockStates(5, false))) |
| 196 .After(injects); | 190 .After(injects); |
| 197 | 191 |
| 198 input_tracker.InjectKeyEvent(NewUsbEvent(3, true)); | 192 input_tracker.InjectKeyEvent(NewUsbEvent(3, true)); |
| 199 input_tracker.InjectKeyEvent(NewUsbEvent(6, true)); | 193 input_tracker.InjectKeyEvent(NewUsbEvent(6, true)); |
| 200 input_tracker.InjectKeyEvent(NewUsbEvent(7, true)); | 194 input_tracker.InjectKeyEvent(NewUsbEvent(7, true)); |
| 201 input_tracker.InjectKeyEvent(NewUsbEvent(5, true)); | 195 input_tracker.InjectKeyEvent(NewUsbEvent(5, true)); |
| 202 input_tracker.InjectKeyEvent(NewUsbEvent(5, true)); | 196 input_tracker.InjectKeyEvent(NewUsbEvent(5, true)); |
| 203 PressAndReleaseUsb(&input_tracker, 2); | 197 PressAndReleaseUsb(&input_tracker, 2); |
| 204 | 198 |
| 205 EXPECT_FALSE(input_tracker.IsKeyPressed(1)); | 199 EXPECT_FALSE(input_tracker.IsKeyPressed(1)); |
| 206 EXPECT_FALSE(input_tracker.IsKeyPressed(2)); | 200 EXPECT_FALSE(input_tracker.IsKeyPressed(2)); |
| 207 EXPECT_TRUE(input_tracker.IsKeyPressed(3)); | 201 EXPECT_TRUE(input_tracker.IsKeyPressed(3)); |
| 208 EXPECT_TRUE(input_tracker.IsKeyPressed(5)); | 202 EXPECT_TRUE(input_tracker.IsKeyPressed(5)); |
| 209 EXPECT_TRUE(input_tracker.IsKeyPressed(6)); | 203 EXPECT_TRUE(input_tracker.IsKeyPressed(6)); |
| 210 EXPECT_TRUE(input_tracker.IsKeyPressed(7)); | 204 EXPECT_TRUE(input_tracker.IsKeyPressed(7)); |
| 211 EXPECT_EQ(4, input_tracker.PressedKeyCount()); | 205 EXPECT_EQ(4, input_tracker.PressedKeyCount()); |
| 212 | 206 |
| 213 input_tracker.ReleaseAll(); | 207 input_tracker.ReleaseAll(); |
| 214 } | 208 } |
| 215 | 209 |
| 216 // Verify that invalid events get passed through but not tracked. | 210 // Verify that invalid events get passed through but not tracked. |
| 217 TEST(InputEventTrackerTest, InvalidEventsNotTracked) { | 211 TEST(InputEventTrackerTest, InvalidEventsNotTracked) { |
| 218 MockInputStub mock_stub; | 212 MockInputStub mock_stub; |
| 219 InputEventTracker input_tracker(&mock_stub); | 213 InputEventTracker input_tracker(&mock_stub); |
| 220 ExpectationSet injects; | 214 ExpectationSet injects; |
| 221 | 215 |
| 222 { | 216 { |
| 223 InSequence s; | 217 InSequence s; |
| 224 | 218 |
| 225 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(3, true))); | 219 injects += EXPECT_CALL(mock_stub, |
| 226 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(1, true))); | 220 InjectKeyEvent(EqualsKeyEventWithCapsLock(3, true))); |
| 227 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(1, false))); | 221 injects += EXPECT_CALL(mock_stub, |
| 222 InjectKeyEvent(EqualsKeyEventWithCapsLock(1, true))); |
| 223 injects += EXPECT_CALL( |
| 224 mock_stub, InjectKeyEvent(EqualsKeyEventWithCapsLock(1, false))); |
| 228 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(_)).Times(2); | 225 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(_)).Times(2); |
| 229 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, true))); | 226 injects += EXPECT_CALL(mock_stub, |
| 230 injects += EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(2, false))); | 227 InjectKeyEvent(EqualsKeyEventWithCapsLock(2, true))); |
| 228 injects += EXPECT_CALL( |
| 229 mock_stub, InjectKeyEvent(EqualsKeyEventWithCapsLock(2, false))); |
| 231 } | 230 } |
| 232 | 231 |
| 233 EXPECT_CALL(mock_stub, | 232 EXPECT_CALL(mock_stub, |
| 234 InjectKeyEvent(EqualsUsbEventWithoutLockStates(3, false))) | 233 InjectKeyEvent(EqualsKeyEventWithoutLockStates(3, false))) |
| 235 .After(injects); | 234 .After(injects); |
| 236 | 235 |
| 237 input_tracker.InjectKeyEvent(NewUsbEvent(3, true)); | 236 input_tracker.InjectKeyEvent(NewUsbEvent(3, true)); |
| 238 PressAndReleaseUsb(&input_tracker, 1); | 237 PressAndReleaseUsb(&input_tracker, 1); |
| 239 | 238 |
| 240 KeyEvent invalid_event1; | 239 KeyEvent invalid_event1; |
| 241 invalid_event1.set_pressed(true); | 240 invalid_event1.set_pressed(true); |
| 242 input_tracker.InjectKeyEvent(invalid_event1); | 241 input_tracker.InjectKeyEvent(invalid_event1); |
| 243 | 242 |
| 244 KeyEvent invalid_event2; | 243 KeyEvent invalid_event2; |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 TouchEvent cancel_event; | 346 TouchEvent cancel_event; |
| 348 cancel_event.set_event_type(TouchEvent::TOUCH_POINT_CANCEL); | 347 cancel_event.set_event_type(TouchEvent::TOUCH_POINT_CANCEL); |
| 349 AddTouchPoint(3, &cancel_event); | 348 AddTouchPoint(3, &cancel_event); |
| 350 input_tracker.InjectTouchEvent(cancel_event); | 349 input_tracker.InjectTouchEvent(cancel_event); |
| 351 | 350 |
| 352 input_tracker.ReleaseAll(); | 351 input_tracker.ReleaseAll(); |
| 353 } | 352 } |
| 354 | 353 |
| 355 } // namespace protocol | 354 } // namespace protocol |
| 356 } // namespace remoting | 355 } // namespace remoting |
| OLD | NEW |