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

Side by Side Diff: remoting/client/plugin/normalizing_input_filter_mac_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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/client/plugin/normalizing_input_filter_mac.h" 5 #include "remoting/client/plugin/normalizing_input_filter_mac.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::InSequence; 13 using ::testing::InSequence;
13 using remoting::protocol::InputStub; 14 using remoting::protocol::InputStub;
14 using remoting::protocol::KeyEvent; 15 using remoting::protocol::KeyEvent;
15 using remoting::protocol::MockInputStub; 16 using remoting::protocol::MockInputStub;
16 using remoting::protocol::MouseEvent; 17 using remoting::protocol::MouseEvent;
18 using remoting::protocol::test::EqualsKeyEventWithNumLock;
17 19
18 namespace remoting { 20 namespace remoting {
19 21
20 namespace { 22 namespace {
21 23
22 const unsigned int kUsbCapsLock = 0x070039; 24 const unsigned int kUsbCapsLock = 0x070039;
23 const unsigned int kUsbLeftShift = 0x0700e1; 25 const unsigned int kUsbLeftShift = 0x0700e1;
24 const unsigned int kUsbLeftOption = 0x0700e2; 26 const unsigned int kUsbLeftOption = 0x0700e2;
25 const unsigned int kUsbLeftCmd = 0x0700e3; 27 const unsigned int kUsbLeftCmd = 0x0700e3;
26 const unsigned int kUsbRightCmd = 0x0700e7; 28 const unsigned int kUsbRightCmd = 0x0700e7;
27 29
28 // A hardcoded value used to verify |lock_states| is preserved.
29 static const uint32 kTestLockStates = protocol::KeyEvent::LOCK_STATES_NUMLOCK;
30
31 MATCHER_P2(EqualsUsbEvent, usb_keycode, pressed, "") {
32 return arg.usb_keycode() == static_cast<uint32>(usb_keycode) &&
33 arg.pressed() == pressed &&
34 arg.lock_states() == kTestLockStates;
35 }
36
37 KeyEvent MakeKeyEvent(uint32 keycode, bool pressed) { 30 KeyEvent MakeKeyEvent(uint32 keycode, bool pressed) {
38 KeyEvent event; 31 KeyEvent event;
39 event.set_usb_keycode(keycode); 32 event.set_usb_keycode(keycode);
40 event.set_pressed(pressed); 33 event.set_pressed(pressed);
41 event.set_lock_states(kTestLockStates); 34 event.set_lock_states(KeyEvent::LOCK_STATES_NUMLOCK);
42 return event; 35 return event;
43 } 36 }
44 37
45 } // namespace 38 } // namespace
46 39
47 // Test CapsLock press/release. 40 // Test CapsLock press/release.
48 TEST(NormalizingInputFilterMacTest, CapsLock) { 41 TEST(NormalizingInputFilterMacTest, CapsLock) {
49 MockInputStub stub; 42 MockInputStub stub;
50 scoped_ptr<protocol::InputFilter> processor( 43 scoped_ptr<protocol::InputFilter> processor(
51 new NormalizingInputFilterMac(&stub)); 44 new NormalizingInputFilterMac(&stub));
52 45
53 { 46 {
54 InSequence s; 47 InSequence s;
55 48
56 // Verifies the generated CapsLock up/down events. 49 // Verifies the generated CapsLock up/down events.
57 EXPECT_CALL(stub, InjectKeyEvent(EqualsUsbEvent(kUsbCapsLock, true))); 50 EXPECT_CALL(stub,
58 EXPECT_CALL(stub, InjectKeyEvent(EqualsUsbEvent(kUsbCapsLock, false))); 51 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbCapsLock, true)));
52 EXPECT_CALL(stub,
53 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbCapsLock, false)));
59 } 54 }
60 55
61 // Injecting a CapsLock down event with NumLock on. 56 // Injecting a CapsLock down event with NumLock on.
62 processor->InjectKeyEvent(MakeKeyEvent(kUsbCapsLock, true)); 57 processor->InjectKeyEvent(MakeKeyEvent(kUsbCapsLock, true));
63 } 58 }
64 59
65 // Test without pressing command key. 60 // Test without pressing command key.
66 TEST(NormalizingInputFilterMacTest, NoInjection) { 61 TEST(NormalizingInputFilterMacTest, NoInjection) {
67 MockInputStub stub; 62 MockInputStub stub;
68 scoped_ptr<protocol::InputFilter> processor( 63 scoped_ptr<protocol::InputFilter> processor(
69 new NormalizingInputFilterMac(&stub)); 64 new NormalizingInputFilterMac(&stub));
70 65
71 { 66 {
72 InSequence s; 67 InSequence s;
73 68
74 EXPECT_CALL(stub, InjectKeyEvent( 69 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', true)));
75 EqualsUsbEvent('C', true))); 70 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', false)));
76 EXPECT_CALL(stub, InjectKeyEvent(
77 EqualsUsbEvent('C', false)));
78 } 71 }
79 72
80 // C Down and C Up. 73 // C Down and C Up.
81 processor->InjectKeyEvent(MakeKeyEvent('C', true)); 74 processor->InjectKeyEvent(MakeKeyEvent('C', true));
82 processor->InjectKeyEvent(MakeKeyEvent('C', false)); 75 processor->InjectKeyEvent(MakeKeyEvent('C', false));
83 } 76 }
84 77
85 // Test pressing command key and other normal keys. 78 // Test pressing command key and other normal keys.
86 TEST(NormalizingInputFilterMacTest, CmdKey) { 79 TEST(NormalizingInputFilterMacTest, CmdKey) {
87 MockInputStub stub; 80 MockInputStub stub;
88 scoped_ptr<protocol::InputFilter> processor( 81 scoped_ptr<protocol::InputFilter> processor(
89 new NormalizingInputFilterMac(&stub)); 82 new NormalizingInputFilterMac(&stub));
90 83
91 { 84 {
92 InSequence s; 85 InSequence s;
93 86
94 // Left command key. 87 // Left command key.
95 EXPECT_CALL(stub, InjectKeyEvent( 88 EXPECT_CALL(stub,
96 EqualsUsbEvent(kUsbLeftCmd, true))); 89 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, true)));
97 EXPECT_CALL(stub, InjectKeyEvent( 90 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', true)));
98 EqualsUsbEvent('C', true))); 91 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', false)));
99 EXPECT_CALL(stub, InjectKeyEvent( 92 EXPECT_CALL(stub,
100 EqualsUsbEvent('C', false))); 93 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, false)));
101 EXPECT_CALL(stub, InjectKeyEvent(
102 EqualsUsbEvent(kUsbLeftCmd, false)));
103 94
104 // Right command key. 95 // Right command key.
105 EXPECT_CALL(stub, InjectKeyEvent( 96 EXPECT_CALL(stub,
106 EqualsUsbEvent(kUsbRightCmd, true))); 97 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbRightCmd, true)));
107 EXPECT_CALL(stub, InjectKeyEvent( 98 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', true)));
108 EqualsUsbEvent('C', true))); 99 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', false)));
109 EXPECT_CALL(stub, InjectKeyEvent( 100 EXPECT_CALL(stub,
110 EqualsUsbEvent('C', false))); 101 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbRightCmd, false)));
111 EXPECT_CALL(stub, InjectKeyEvent(
112 EqualsUsbEvent(kUsbRightCmd, false)));
113 102
114 // More than one keys after CMD. 103 // More than one keys after CMD.
115 EXPECT_CALL(stub, InjectKeyEvent( 104 EXPECT_CALL(stub,
116 EqualsUsbEvent(kUsbRightCmd, true))); 105 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbRightCmd, true)));
117 EXPECT_CALL(stub, InjectKeyEvent( 106 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', true)));
118 EqualsUsbEvent('C', true))); 107 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('V', true)));
119 EXPECT_CALL(stub, InjectKeyEvent( 108 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', false)));
120 EqualsUsbEvent('V', true))); 109 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('V', false)));
121 EXPECT_CALL(stub, InjectKeyEvent( 110 EXPECT_CALL(stub,
122 EqualsUsbEvent('C', false))); 111 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbRightCmd, false)));
123 EXPECT_CALL(stub, InjectKeyEvent(
124 EqualsUsbEvent('V', false)));
125 EXPECT_CALL(stub, InjectKeyEvent(
126 EqualsUsbEvent(kUsbRightCmd, false)));
127 } 112 }
128 113
129 // Left command key. 114 // Left command key.
130 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true)); 115 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true));
131 processor->InjectKeyEvent(MakeKeyEvent('C', true)); 116 processor->InjectKeyEvent(MakeKeyEvent('C', true));
132 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false)); 117 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false));
133 118
134 // Right command key. 119 // Right command key.
135 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true)); 120 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true));
136 processor->InjectKeyEvent(MakeKeyEvent('C', true)); 121 processor->InjectKeyEvent(MakeKeyEvent('C', true));
137 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, false)); 122 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, false));
138 123
139 // More than one keys after CMD. 124 // More than one keys after CMD.
140 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true)); 125 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true));
141 processor->InjectKeyEvent(MakeKeyEvent('C', true)); 126 processor->InjectKeyEvent(MakeKeyEvent('C', true));
142 processor->InjectKeyEvent(MakeKeyEvent('V', true)); 127 processor->InjectKeyEvent(MakeKeyEvent('V', true));
143 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, false)); 128 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, false));
144 } 129 }
145 130
146 // Test pressing command and special keys. 131 // Test pressing command and special keys.
147 TEST(NormalizingInputFilterMacTest, SpecialKeys) { 132 TEST(NormalizingInputFilterMacTest, SpecialKeys) {
148 MockInputStub stub; 133 MockInputStub stub;
149 scoped_ptr<protocol::InputFilter> processor( 134 scoped_ptr<protocol::InputFilter> processor(
150 new NormalizingInputFilterMac(&stub)); 135 new NormalizingInputFilterMac(&stub));
151 136
152 { 137 {
153 InSequence s; 138 InSequence s;
154 139
155 // Command + Shift. 140 // Command + Shift.
156 EXPECT_CALL(stub, InjectKeyEvent( 141 EXPECT_CALL(stub,
157 EqualsUsbEvent(kUsbLeftCmd, true))); 142 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, true)));
158 EXPECT_CALL(stub, InjectKeyEvent( 143 EXPECT_CALL(stub,
159 EqualsUsbEvent(kUsbLeftShift, true))); 144 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftShift, true)));
160 EXPECT_CALL(stub, InjectKeyEvent( 145 EXPECT_CALL(stub,
161 EqualsUsbEvent(kUsbLeftCmd, false))); 146 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, false)));
162 EXPECT_CALL(stub, InjectKeyEvent( 147 EXPECT_CALL(
163 EqualsUsbEvent(kUsbLeftShift, false))); 148 stub, InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftShift, false)));
164 149
165 // Command + Option. 150 // Command + Option.
166 EXPECT_CALL(stub, InjectKeyEvent( 151 EXPECT_CALL(stub,
167 EqualsUsbEvent(kUsbLeftCmd, true))); 152 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, true)));
168 EXPECT_CALL(stub, InjectKeyEvent( 153 EXPECT_CALL(
169 EqualsUsbEvent(kUsbLeftOption, true))); 154 stub, InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftOption, true)));
170 EXPECT_CALL(stub, InjectKeyEvent( 155 EXPECT_CALL(stub,
171 EqualsUsbEvent(kUsbLeftCmd, false))); 156 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, false)));
172 EXPECT_CALL(stub, InjectKeyEvent( 157 EXPECT_CALL(
173 EqualsUsbEvent(kUsbLeftOption, false))); 158 stub, InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftOption, false)));
174 } 159 }
175 160
176 // Command + Shift. 161 // Command + Shift.
177 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true)); 162 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true));
178 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftShift, true)); 163 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftShift, true));
179 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false)); 164 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false));
180 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftShift, false)); 165 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftShift, false));
181 166
182 // Command + Option. 167 // Command + Option.
183 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true)); 168 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true));
184 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftOption, true)); 169 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftOption, true));
185 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false)); 170 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false));
186 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftOption, false)); 171 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftOption, false));
187 } 172 }
188 173
189 // Test pressing multiple command keys. 174 // Test pressing multiple command keys.
190 TEST(NormalizingInputFilterMacTest, MultipleCmdKeys) { 175 TEST(NormalizingInputFilterMacTest, MultipleCmdKeys) {
191 MockInputStub stub; 176 MockInputStub stub;
192 scoped_ptr<protocol::InputFilter> processor( 177 scoped_ptr<protocol::InputFilter> processor(
193 new NormalizingInputFilterMac(&stub)); 178 new NormalizingInputFilterMac(&stub));
194 179
195 { 180 {
196 InSequence s; 181 InSequence s;
197 182
198 EXPECT_CALL(stub, InjectKeyEvent( 183 EXPECT_CALL(stub,
199 EqualsUsbEvent(kUsbLeftCmd, true))); 184 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, true)));
200 EXPECT_CALL(stub, InjectKeyEvent( 185 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', true)));
201 EqualsUsbEvent('C', true))); 186 EXPECT_CALL(stub,
202 EXPECT_CALL(stub, InjectKeyEvent( 187 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbRightCmd, true)));
203 EqualsUsbEvent(kUsbRightCmd, true))); 188 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', false)));
204 EXPECT_CALL(stub, InjectKeyEvent( 189 EXPECT_CALL(stub,
205 EqualsUsbEvent('C', false))); 190 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbLeftCmd, false)));
206 EXPECT_CALL(stub, InjectKeyEvent(
207 EqualsUsbEvent(kUsbLeftCmd, false)));
208 } 191 }
209 192
210 // Test multiple CMD keys at the same time. 193 // Test multiple CMD keys at the same time.
211 // L CMD Down, C Down, R CMD Down, L CMD Up. 194 // L CMD Down, C Down, R CMD Down, L CMD Up.
212 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true)); 195 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, true));
213 processor->InjectKeyEvent(MakeKeyEvent('C', true)); 196 processor->InjectKeyEvent(MakeKeyEvent('C', true));
214 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true)); 197 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true));
215 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false)); 198 processor->InjectKeyEvent(MakeKeyEvent(kUsbLeftCmd, false));
216 } 199 }
217 200
218 // Test press C key before command key. 201 // Test press C key before command key.
219 TEST(NormalizingInputFilterMacTest, BeforeCmdKey) { 202 TEST(NormalizingInputFilterMacTest, BeforeCmdKey) {
220 MockInputStub stub; 203 MockInputStub stub;
221 scoped_ptr<protocol::InputFilter> processor( 204 scoped_ptr<protocol::InputFilter> processor(
222 new NormalizingInputFilterMac(&stub)); 205 new NormalizingInputFilterMac(&stub));
223 206
224 { 207 {
225 InSequence s; 208 InSequence s;
226 209
227 EXPECT_CALL(stub, InjectKeyEvent( 210 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', true)));
228 EqualsUsbEvent('C', true))); 211 EXPECT_CALL(stub,
229 EXPECT_CALL(stub, InjectKeyEvent( 212 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbRightCmd, true)));
230 EqualsUsbEvent(kUsbRightCmd, true))); 213 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', false)));
231 EXPECT_CALL(stub, InjectKeyEvent( 214 EXPECT_CALL(stub,
232 EqualsUsbEvent('C', false))); 215 InjectKeyEvent(EqualsKeyEventWithNumLock(kUsbRightCmd, false)));
233 EXPECT_CALL(stub, InjectKeyEvent( 216 EXPECT_CALL(stub, InjectKeyEvent(EqualsKeyEventWithNumLock('C', false)));
234 EqualsUsbEvent(kUsbRightCmd, false)));
235 EXPECT_CALL(stub, InjectKeyEvent(
236 EqualsUsbEvent('C', false)));
237 } 217 }
238 218
239 // Press C before command key. 219 // Press C before command key.
240 processor->InjectKeyEvent(MakeKeyEvent('C', true)); 220 processor->InjectKeyEvent(MakeKeyEvent('C', true));
241 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true)); 221 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, true));
242 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, false)); 222 processor->InjectKeyEvent(MakeKeyEvent(kUsbRightCmd, false));
243 processor->InjectKeyEvent(MakeKeyEvent('C', false)); 223 processor->InjectKeyEvent(MakeKeyEvent('C', false));
244 } 224 }
245 225
246 } // namespace remoting 226 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698