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

Side by Side Diff: remoting/host/remote_input_filter_unittest.cc

Issue 985863002: Move all protocol event matchers to test_event_matchers.h (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 5 years, 9 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 (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/host/remote_input_filter.h" 5 #include "remoting/host/remote_input_filter.h"
6 6
7 #include "remoting/proto/event.pb.h" 7 #include "remoting/proto/event.pb.h"
8 #include "remoting/protocol/input_event_tracker.h" 8 #include "remoting/protocol/input_event_tracker.h"
9 #include "remoting/protocol/protocol_mock_objects.h" 9 #include "remoting/protocol/protocol_mock_objects.h"
10 #include "remoting/protocol/test_event_matchers.h"
10 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 using ::testing::_; 14 using ::testing::_;
14 using ::testing::ExpectationSet; 15 using ::testing::ExpectationSet;
15 using ::testing::InSequence; 16 using ::testing::InSequence;
16 17
17 namespace remoting { 18 namespace remoting {
18 19
20 using protocol::InputEventTracker;
19 using protocol::MockInputStub; 21 using protocol::MockInputStub;
20 using protocol::InputEventTracker; 22 using protocol::test::EqualsKeyEvent;
23 using protocol::test::EqualsTouchEventTypeAndId;
21 24
22 namespace { 25 namespace {
23 26
24 MATCHER_P2(EqualsUsbEvent, usb_keycode, pressed, "") {
25 return arg.usb_keycode() == (unsigned int)usb_keycode &&
26 arg.pressed() == pressed;
27 }
28
29 static protocol::MouseEvent MouseMoveEvent(int x, int y) { 27 static protocol::MouseEvent MouseMoveEvent(int x, int y) {
30 protocol::MouseEvent event; 28 protocol::MouseEvent event;
31 event.set_x(x); 29 event.set_x(x);
32 event.set_y(y); 30 event.set_y(y);
33 return event; 31 return event;
34 } 32 }
35 33
36 static protocol::KeyEvent UsbKeyEvent(int usb_keycode, bool pressed) { 34 static protocol::KeyEvent UsbKeyEvent(int usb_keycode, bool pressed) {
37 protocol::KeyEvent event; 35 protocol::KeyEvent event;
38 event.set_usb_keycode(usb_keycode); 36 event.set_usb_keycode(usb_keycode);
39 event.set_pressed(pressed); 37 event.set_pressed(pressed);
40 return event; 38 return event;
41 } 39 }
42 40
43 MATCHER_P2(EqualsTouchEvent, type, id, "") {
44 if (arg.event_type() != type)
45 return false;
46
47 // Expect only one touch point.
48 if (arg.touch_points().size() != 1)
49 return false;
50
51 return arg.touch_points(0).id() == id;
52 }
53
54 protocol::TouchEvent TouchStartEvent(uint32_t id) { 41 protocol::TouchEvent TouchStartEvent(uint32_t id) {
55 protocol::TouchEvent event; 42 protocol::TouchEvent event;
56 event.set_event_type(protocol::TouchEvent::TOUCH_POINT_START); 43 event.set_event_type(protocol::TouchEvent::TOUCH_POINT_START);
57 44
58 protocol::TouchEventPoint* point = event.add_touch_points(); 45 protocol::TouchEventPoint* point = event.add_touch_points();
59 point->set_id(id); 46 point->set_id(id);
60 point->set_x(0.0f); 47 point->set_x(0.0f);
61 point->set_y(0.0f); 48 point->set_y(0.0f);
62 point->set_radius_x(0.0f); 49 point->set_radius_x(0.0f);
63 point->set_radius_y(0.0f); 50 point->set_radius_y(0.0f);
64 point->set_angle(0.0f); 51 point->set_angle(0.0f);
65 point->set_pressure(0.0f); 52 point->set_pressure(0.0f);
66 return event; 53 return event;
67 } 54 }
68 55
69 } 56 } // namespace
70 57
71 // Verify that events get through if there is no local activity. 58 // Verify that events get through if there is no local activity.
72 TEST(RemoteInputFilterTest, NoLocalActivity) { 59 TEST(RemoteInputFilterTest, NoLocalActivity) {
73 MockInputStub mock_stub; 60 MockInputStub mock_stub;
74 InputEventTracker input_tracker(&mock_stub); 61 InputEventTracker input_tracker(&mock_stub);
75 RemoteInputFilter input_filter(&input_tracker); 62 RemoteInputFilter input_filter(&input_tracker);
76 63
77 EXPECT_CALL(mock_stub, InjectMouseEvent(_)) 64 EXPECT_CALL(mock_stub, InjectMouseEvent(_)).Times(10);
78 .Times(10);
79 65
80 for (int i = 0; i < 10; ++i) 66 for (int i = 0; i < 10; ++i)
81 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0)); 67 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0));
82 } 68 }
83 69
84 // Verify that events get through until there is local activity. 70 // Verify that events get through until there is local activity.
85 TEST(RemoteInputFilterTest, MismatchedLocalActivity) { 71 TEST(RemoteInputFilterTest, MismatchedLocalActivity) {
86 MockInputStub mock_stub; 72 MockInputStub mock_stub;
87 InputEventTracker input_tracker(&mock_stub); 73 InputEventTracker input_tracker(&mock_stub);
88 RemoteInputFilter input_filter(&input_tracker); 74 RemoteInputFilter input_filter(&input_tracker);
89 75
90 EXPECT_CALL(mock_stub, InjectMouseEvent(_)) 76 EXPECT_CALL(mock_stub, InjectMouseEvent(_)).Times(5);
91 .Times(5);
92 77
93 for (int i = 0; i < 10; ++i) { 78 for (int i = 0; i < 10; ++i) {
94 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0)); 79 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0));
95 if (i == 4) 80 if (i == 4)
96 input_filter.LocalMouseMoved(webrtc::DesktopVector(1, 1)); 81 input_filter.LocalMouseMoved(webrtc::DesktopVector(1, 1));
97 } 82 }
98 } 83 }
99 84
100 // Verify that echos of injected events don't block activity. 85 // Verify that echos of injected events don't block activity.
101 TEST(RemoteInputFilterTest, LocalEchoesOfRemoteActivity) { 86 TEST(RemoteInputFilterTest, LocalEchoesOfRemoteActivity) {
102 MockInputStub mock_stub; 87 MockInputStub mock_stub;
103 InputEventTracker input_tracker(&mock_stub); 88 InputEventTracker input_tracker(&mock_stub);
104 RemoteInputFilter input_filter(&input_tracker); 89 RemoteInputFilter input_filter(&input_tracker);
105 90
106 EXPECT_CALL(mock_stub, InjectMouseEvent(_)) 91 EXPECT_CALL(mock_stub, InjectMouseEvent(_)).Times(10);
107 .Times(10);
108 92
109 for (int i = 0; i < 10; ++i) { 93 for (int i = 0; i < 10; ++i) {
110 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0)); 94 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0));
111 input_filter.LocalMouseMoved(webrtc::DesktopVector(0, 0)); 95 input_filter.LocalMouseMoved(webrtc::DesktopVector(0, 0));
112 } 96 }
113 } 97 }
114 98
115 // Verify that echos followed by a mismatch blocks activity. 99 // Verify that echos followed by a mismatch blocks activity.
116 TEST(RemoteInputFilterTest, LocalEchosAndLocalActivity) { 100 TEST(RemoteInputFilterTest, LocalEchosAndLocalActivity) {
117 MockInputStub mock_stub; 101 MockInputStub mock_stub;
118 InputEventTracker input_tracker(&mock_stub); 102 InputEventTracker input_tracker(&mock_stub);
119 RemoteInputFilter input_filter(&input_tracker); 103 RemoteInputFilter input_filter(&input_tracker);
120 104
121 EXPECT_CALL(mock_stub, InjectMouseEvent(_)) 105 EXPECT_CALL(mock_stub, InjectMouseEvent(_)).Times(5);
122 .Times(5);
123 106
124 for (int i = 0; i < 10; ++i) { 107 for (int i = 0; i < 10; ++i) {
125 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0)); 108 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0));
126 input_filter.LocalMouseMoved(webrtc::DesktopVector(0, 0)); 109 input_filter.LocalMouseMoved(webrtc::DesktopVector(0, 0));
127 if (i == 4) 110 if (i == 4)
128 input_filter.LocalMouseMoved(webrtc::DesktopVector(1, 1)); 111 input_filter.LocalMouseMoved(webrtc::DesktopVector(1, 1));
129 } 112 }
130 } 113 }
131 114
132 // Verify that local activity also causes buttons, keys, and touches to be 115 // Verify that local activity also causes buttons, keys, and touches to be
133 // released. 116 // released.
134 TEST(RemoteInputFilterTest, LocalActivityReleasesAll) { 117 TEST(RemoteInputFilterTest, LocalActivityReleasesAll) {
135 MockInputStub mock_stub; 118 MockInputStub mock_stub;
136 InputEventTracker input_tracker(&mock_stub); 119 InputEventTracker input_tracker(&mock_stub);
137 RemoteInputFilter input_filter(&input_tracker); 120 RemoteInputFilter input_filter(&input_tracker);
138 121
139 EXPECT_CALL(mock_stub, InjectMouseEvent(_)) 122 EXPECT_CALL(mock_stub, InjectMouseEvent(_)).Times(5);
140 .Times(5);
141 123
142 // Use release of a key as a proxy for InputEventTracker::ReleaseAll() 124 // Use release of a key as a proxy for InputEventTracker::ReleaseAll()
143 // having been called, rather than mocking it. 125 // having been called, rather than mocking it.
144 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(0, true))); 126 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsKeyEvent(0, true)));
145 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsUsbEvent(0, false))); 127 EXPECT_CALL(mock_stub, InjectKeyEvent(EqualsKeyEvent(0, false)));
146 input_filter.InjectKeyEvent(UsbKeyEvent(0, true)); 128 input_filter.InjectKeyEvent(UsbKeyEvent(0, true));
147 129
148 // Touch points that are down should be canceled. 130 // Touch points that are down should be canceled.
149 EXPECT_CALL(mock_stub, InjectTouchEvent(EqualsTouchEvent( 131 EXPECT_CALL(mock_stub, InjectTouchEvent(EqualsTouchEventTypeAndId(
150 protocol::TouchEvent::TOUCH_POINT_START, 0u))); 132 protocol::TouchEvent::TOUCH_POINT_START, 0u)));
151 EXPECT_CALL(mock_stub, InjectTouchEvent(EqualsTouchEvent( 133 EXPECT_CALL(mock_stub, InjectTouchEvent(EqualsTouchEventTypeAndId(
152 protocol::TouchEvent::TOUCH_POINT_CANCEL, 0u))); 134 protocol::TouchEvent::TOUCH_POINT_CANCEL, 0u)));
153 input_filter.InjectTouchEvent(TouchStartEvent(0u)); 135 input_filter.InjectTouchEvent(TouchStartEvent(0u));
154 136
155 for (int i = 0; i < 10; ++i) { 137 for (int i = 0; i < 10; ++i) {
156 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0)); 138 input_filter.InjectMouseEvent(MouseMoveEvent(0, 0));
157 input_filter.LocalMouseMoved(webrtc::DesktopVector(0, 0)); 139 input_filter.LocalMouseMoved(webrtc::DesktopVector(0, 0));
158 if (i == 4) 140 if (i == 4)
159 input_filter.LocalMouseMoved(webrtc::DesktopVector(1, 1)); 141 input_filter.LocalMouseMoved(webrtc::DesktopVector(1, 1));
160 } 142 }
161 } 143 }
162 144
163 } // namespace remoting 145 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/ipc_desktop_environment_unittest.cc ('k') | remoting/protocol/clipboard_echo_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698