OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/touch_injector_win.h" | 5 #include "remoting/host/touch_injector_win.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "remoting/proto/event.pb.h" | 10 #include "remoting/proto/event.pb.h" |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 InjectTouchInput(1, EqualsSinglePointerTouchInfo(expected_touch_info))) | 129 InjectTouchInput(1, EqualsSinglePointerTouchInfo(expected_touch_info))) |
130 .WillOnce(Return(1)); | 130 .WillOnce(Return(1)); |
131 | 131 |
132 expected_touch_info.pressure = 0; // Min | 132 expected_touch_info.pressure = 0; // Min |
133 EXPECT_CALL( | 133 EXPECT_CALL( |
134 *delegate_mock, | 134 *delegate_mock, |
135 InjectTouchInput(1, EqualsSinglePointerTouchInfo(expected_touch_info))) | 135 InjectTouchInput(1, EqualsSinglePointerTouchInfo(expected_touch_info))) |
136 .WillOnce(Return(1)); | 136 .WillOnce(Return(1)); |
137 | 137 |
138 TouchInjectorWin injector; | 138 TouchInjectorWin injector; |
139 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 139 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
140 EXPECT_TRUE(injector.Init()); | 140 EXPECT_TRUE(injector.Init()); |
141 injector.InjectTouchEvent(event); | 141 injector.InjectTouchEvent(event); |
142 | 142 |
143 // Change to MOVE so that there still only one point. | 143 // Change to MOVE so that there still only one point. |
144 event.set_event_type(TouchEvent::TOUCH_POINT_MOVE); | 144 event.set_event_type(TouchEvent::TOUCH_POINT_MOVE); |
145 point->set_pressure(2.0f); | 145 point->set_pressure(2.0f); |
146 injector.InjectTouchEvent(event); | 146 injector.InjectTouchEvent(event); |
147 | 147 |
148 point->set_pressure(-3.0f); | 148 point->set_pressure(-3.0f); |
149 injector.InjectTouchEvent(event); | 149 injector.InjectTouchEvent(event); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 | 183 |
184 InSequence s; | 184 InSequence s; |
185 EXPECT_CALL(*delegate_mock, InitializeTouchInjection(_, _)) | 185 EXPECT_CALL(*delegate_mock, InitializeTouchInjection(_, _)) |
186 .WillOnce(Return(1)); | 186 .WillOnce(Return(1)); |
187 EXPECT_CALL( | 187 EXPECT_CALL( |
188 *delegate_mock, | 188 *delegate_mock, |
189 InjectTouchInput(1, EqualsSinglePointerTouchInfo(expected_touch_info))) | 189 InjectTouchInput(1, EqualsSinglePointerTouchInfo(expected_touch_info))) |
190 .WillOnce(Return(1)); | 190 .WillOnce(Return(1)); |
191 | 191 |
192 TouchInjectorWin injector; | 192 TouchInjectorWin injector; |
193 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 193 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
194 EXPECT_TRUE(injector.Init()); | 194 EXPECT_TRUE(injector.Init()); |
195 injector.InjectTouchEvent(event); | 195 injector.InjectTouchEvent(event); |
196 } | 196 } |
197 | 197 |
198 // If initialization fails, it should not call any touch injection functions. | 198 // If initialization fails, it should not call any touch injection functions. |
199 TEST(TouchInjectorWinTest, InitFailed) { | 199 TEST(TouchInjectorWinTest, InitFailed) { |
200 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( | 200 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( |
201 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); | 201 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); |
202 | 202 |
203 TouchEvent event; | 203 TouchEvent event; |
204 event.set_event_type(TouchEvent::TOUCH_POINT_START); | 204 event.set_event_type(TouchEvent::TOUCH_POINT_START); |
205 | 205 |
206 InSequence s; | 206 InSequence s; |
207 EXPECT_CALL(*delegate_mock, InitializeTouchInjection(_, _)) | 207 EXPECT_CALL(*delegate_mock, InitializeTouchInjection(_, _)) |
208 .WillOnce(Return(0)); | 208 .WillOnce(Return(0)); |
209 EXPECT_CALL(*delegate_mock, InjectTouchInput(_, _)).Times(0); | 209 EXPECT_CALL(*delegate_mock, InjectTouchInput(_, _)).Times(0); |
210 | 210 |
211 TouchInjectorWin injector; | 211 TouchInjectorWin injector; |
212 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 212 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
213 EXPECT_FALSE(injector.Init()); | 213 EXPECT_FALSE(injector.Init()); |
214 injector.InjectTouchEvent(event); | 214 injector.InjectTouchEvent(event); |
215 } | 215 } |
216 | 216 |
217 // Deinitialize and initialize should clean the state. | 217 // Deinitialize and initialize should clean the state. |
218 TEST(TouchInjectorWinTest, Reinitialize) { | 218 TEST(TouchInjectorWinTest, Reinitialize) { |
219 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock_before_deinitialize( | 219 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock_before_deinitialize( |
220 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); | 220 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); |
221 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock_after_deinitialize( | 221 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock_after_deinitialize( |
222 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); | 222 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); |
(...skipping 25 matching lines...) Expand all Loading... |
248 // After deinitializing and then initializing, previous touch points should be | 248 // After deinitializing and then initializing, previous touch points should be |
249 // gone. | 249 // gone. |
250 id_to_flags.clear(); | 250 id_to_flags.clear(); |
251 id_to_flags[1u] = kStartFlag; | 251 id_to_flags[1u] = kStartFlag; |
252 EXPECT_CALL( | 252 EXPECT_CALL( |
253 *delegate_mock_after_deinitialize, | 253 *delegate_mock_after_deinitialize, |
254 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 254 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
255 .WillOnce(Return(1)); | 255 .WillOnce(Return(1)); |
256 | 256 |
257 TouchInjectorWin injector; | 257 TouchInjectorWin injector; |
258 injector.SetInjectorDelegateForTest(delegate_mock_before_deinitialize.Pass()); | 258 injector.SetInjectorDelegateForTest( |
| 259 std::move(delegate_mock_before_deinitialize)); |
259 | 260 |
260 EXPECT_TRUE(injector.Init()); | 261 EXPECT_TRUE(injector.Init()); |
261 injector.InjectTouchEvent(first_event); | 262 injector.InjectTouchEvent(first_event); |
262 injector.Deinitialize(); | 263 injector.Deinitialize(); |
263 | 264 |
264 injector.SetInjectorDelegateForTest(delegate_mock_after_deinitialize.Pass()); | 265 injector.SetInjectorDelegateForTest( |
| 266 std::move(delegate_mock_after_deinitialize)); |
265 EXPECT_TRUE(injector.Init()); | 267 EXPECT_TRUE(injector.Init()); |
266 injector.InjectTouchEvent(second_event); | 268 injector.InjectTouchEvent(second_event); |
267 } | 269 } |
268 | 270 |
269 // Make sure that the flag is set to kStartFlag. | 271 // Make sure that the flag is set to kStartFlag. |
270 TEST(TouchInjectorWinTest, StartTouchPoint) { | 272 TEST(TouchInjectorWinTest, StartTouchPoint) { |
271 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( | 273 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( |
272 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); | 274 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); |
273 | 275 |
274 TouchEvent event; | 276 TouchEvent event; |
275 event.set_event_type(TouchEvent::TOUCH_POINT_START); | 277 event.set_event_type(TouchEvent::TOUCH_POINT_START); |
276 TouchEventPoint* point = event.add_touch_points(); | 278 TouchEventPoint* point = event.add_touch_points(); |
277 point->set_id(0u); | 279 point->set_id(0u); |
278 | 280 |
279 InSequence s; | 281 InSequence s; |
280 EXPECT_CALL(*delegate_mock, InitializeTouchInjection(_, _)) | 282 EXPECT_CALL(*delegate_mock, InitializeTouchInjection(_, _)) |
281 .WillOnce(Return(1)); | 283 .WillOnce(Return(1)); |
282 | 284 |
283 IdFlagMap id_to_flags; | 285 IdFlagMap id_to_flags; |
284 id_to_flags[0u] = kStartFlag; | 286 id_to_flags[0u] = kStartFlag; |
285 EXPECT_CALL( | 287 EXPECT_CALL( |
286 *delegate_mock, | 288 *delegate_mock, |
287 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 289 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
288 .WillOnce(Return(1)); | 290 .WillOnce(Return(1)); |
289 | 291 |
290 TouchInjectorWin injector; | 292 TouchInjectorWin injector; |
291 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 293 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
292 EXPECT_TRUE(injector.Init()); | 294 EXPECT_TRUE(injector.Init()); |
293 injector.InjectTouchEvent(event); | 295 injector.InjectTouchEvent(event); |
294 } | 296 } |
295 | 297 |
296 // Start a point and then move, make sure the flag is set to kMoveFlag. | 298 // Start a point and then move, make sure the flag is set to kMoveFlag. |
297 TEST(TouchInjectorWinTest, MoveTouchPoint) { | 299 TEST(TouchInjectorWinTest, MoveTouchPoint) { |
298 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( | 300 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( |
299 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); | 301 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); |
300 | 302 |
301 TouchEvent event; | 303 TouchEvent event; |
(...skipping 13 matching lines...) Expand all Loading... |
315 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 317 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
316 .WillOnce(Return(1)); | 318 .WillOnce(Return(1)); |
317 | 319 |
318 id_to_flags[0u] = kMoveFlag; | 320 id_to_flags[0u] = kMoveFlag; |
319 EXPECT_CALL( | 321 EXPECT_CALL( |
320 *delegate_mock, | 322 *delegate_mock, |
321 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 323 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
322 .WillOnce(Return(1)); | 324 .WillOnce(Return(1)); |
323 | 325 |
324 TouchInjectorWin injector; | 326 TouchInjectorWin injector; |
325 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 327 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
326 EXPECT_TRUE(injector.Init()); | 328 EXPECT_TRUE(injector.Init()); |
327 injector.InjectTouchEvent(event); | 329 injector.InjectTouchEvent(event); |
328 event.set_event_type(TouchEvent::TOUCH_POINT_MOVE); | 330 event.set_event_type(TouchEvent::TOUCH_POINT_MOVE); |
329 injector.InjectTouchEvent(event); | 331 injector.InjectTouchEvent(event); |
330 } | 332 } |
331 | 333 |
332 // Start a point and then move, make sure the flag is set to kEndFlag. | 334 // Start a point and then move, make sure the flag is set to kEndFlag. |
333 TEST(TouchInjectorWinTest, EndTouchPoint) { | 335 TEST(TouchInjectorWinTest, EndTouchPoint) { |
334 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( | 336 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( |
335 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); | 337 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); |
(...skipping 14 matching lines...) Expand all Loading... |
350 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 352 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
351 .WillOnce(Return(1)); | 353 .WillOnce(Return(1)); |
352 | 354 |
353 id_to_flags[0u] = kEndFlag; | 355 id_to_flags[0u] = kEndFlag; |
354 EXPECT_CALL( | 356 EXPECT_CALL( |
355 *delegate_mock, | 357 *delegate_mock, |
356 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 358 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
357 .WillOnce(Return(1)); | 359 .WillOnce(Return(1)); |
358 | 360 |
359 TouchInjectorWin injector; | 361 TouchInjectorWin injector; |
360 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 362 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
361 EXPECT_TRUE(injector.Init()); | 363 EXPECT_TRUE(injector.Init()); |
362 injector.InjectTouchEvent(event); | 364 injector.InjectTouchEvent(event); |
363 event.set_event_type(TouchEvent::TOUCH_POINT_END); | 365 event.set_event_type(TouchEvent::TOUCH_POINT_END); |
364 injector.InjectTouchEvent(event); | 366 injector.InjectTouchEvent(event); |
365 } | 367 } |
366 | 368 |
367 // Start a point and then move, make sure the flag is set to kCancelFlag. | 369 // Start a point and then move, make sure the flag is set to kCancelFlag. |
368 TEST(TouchInjectorWinTest, CancelTouchPoint) { | 370 TEST(TouchInjectorWinTest, CancelTouchPoint) { |
369 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( | 371 scoped_ptr<TouchInjectorWinDelegateMock> delegate_mock( |
370 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); | 372 new ::testing::StrictMock<TouchInjectorWinDelegateMock>()); |
(...skipping 14 matching lines...) Expand all Loading... |
385 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 387 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
386 .WillOnce(Return(1)); | 388 .WillOnce(Return(1)); |
387 | 389 |
388 id_to_flags[0u] = kCancelFlag; | 390 id_to_flags[0u] = kCancelFlag; |
389 EXPECT_CALL( | 391 EXPECT_CALL( |
390 *delegate_mock, | 392 *delegate_mock, |
391 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) | 393 InjectTouchInput(1, EqualsPointerTouchInfoFlag(id_to_flags))) |
392 .WillOnce(Return(1)); | 394 .WillOnce(Return(1)); |
393 | 395 |
394 TouchInjectorWin injector; | 396 TouchInjectorWin injector; |
395 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 397 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
396 EXPECT_TRUE(injector.Init()); | 398 EXPECT_TRUE(injector.Init()); |
397 injector.InjectTouchEvent(event); | 399 injector.InjectTouchEvent(event); |
398 event.set_event_type(TouchEvent::TOUCH_POINT_CANCEL); | 400 event.set_event_type(TouchEvent::TOUCH_POINT_CANCEL); |
399 injector.InjectTouchEvent(event); | 401 injector.InjectTouchEvent(event); |
400 } | 402 } |
401 | 403 |
402 // Note that points that haven't changed should be injected as MOVE. | 404 // Note that points that haven't changed should be injected as MOVE. |
403 // This tests: | 405 // This tests: |
404 // 1. Start first touch point. | 406 // 1. Start first touch point. |
405 // 2. Start second touch point. | 407 // 2. Start second touch point. |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 | 456 |
455 id_to_flags.erase(1u); | 457 id_to_flags.erase(1u); |
456 id_to_flags[0u] = kCancelFlag; | 458 id_to_flags[0u] = kCancelFlag; |
457 id_to_flags[2u] = kCancelFlag; | 459 id_to_flags[2u] = kCancelFlag; |
458 EXPECT_CALL( | 460 EXPECT_CALL( |
459 *delegate_mock, | 461 *delegate_mock, |
460 InjectTouchInput(2, EqualsPointerTouchInfoFlag(id_to_flags))) | 462 InjectTouchInput(2, EqualsPointerTouchInfoFlag(id_to_flags))) |
461 .WillOnce(Return(1)); | 463 .WillOnce(Return(1)); |
462 | 464 |
463 TouchInjectorWin injector; | 465 TouchInjectorWin injector; |
464 injector.SetInjectorDelegateForTest(delegate_mock.Pass()); | 466 injector.SetInjectorDelegateForTest(std::move(delegate_mock)); |
465 EXPECT_TRUE(injector.Init()); | 467 EXPECT_TRUE(injector.Init()); |
466 | 468 |
467 // Start first touch point. | 469 // Start first touch point. |
468 TouchEvent first_touch_start; | 470 TouchEvent first_touch_start; |
469 first_touch_start.set_event_type(TouchEvent::TOUCH_POINT_START); | 471 first_touch_start.set_event_type(TouchEvent::TOUCH_POINT_START); |
470 TouchEventPoint* point0 = first_touch_start.add_touch_points(); | 472 TouchEventPoint* point0 = first_touch_start.add_touch_points(); |
471 point0->set_id(0u); | 473 point0->set_id(0u); |
472 injector.InjectTouchEvent(first_touch_start); | 474 injector.InjectTouchEvent(first_touch_start); |
473 | 475 |
474 // Add second touch point. | 476 // Add second touch point. |
(...skipping 30 matching lines...) Expand all Loading... |
505 TouchEvent cancel_rest; | 507 TouchEvent cancel_rest; |
506 cancel_rest.set_event_type(TouchEvent::TOUCH_POINT_CANCEL); | 508 cancel_rest.set_event_type(TouchEvent::TOUCH_POINT_CANCEL); |
507 point0 = cancel_rest.add_touch_points(); | 509 point0 = cancel_rest.add_touch_points(); |
508 point0->set_id(0u); | 510 point0->set_id(0u); |
509 point2 = cancel_rest.add_touch_points(); | 511 point2 = cancel_rest.add_touch_points(); |
510 point2->set_id(2u); | 512 point2->set_id(2u); |
511 injector.InjectTouchEvent(cancel_rest); | 513 injector.InjectTouchEvent(cancel_rest); |
512 } | 514 } |
513 | 515 |
514 } // namespace remoting | 516 } // namespace remoting |
OLD | NEW |