OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <errno.h> | 5 #include <errno.h> |
6 #include <fcntl.h> | 6 #include <fcntl.h> |
7 #include <linux/input.h> | 7 #include <linux/input.h> |
8 #include <unistd.h> | 8 #include <unistd.h> |
9 | 9 |
10 #include <vector> | 10 #include <vector> |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 dev->ReadNow(); | 172 dev->ReadNow(); |
173 EXPECT_EQ(1u, dev->size()); | 173 EXPECT_EQ(1u, dev->size()); |
174 | 174 |
175 ui::TouchEvent* event = dev->event(0); | 175 ui::TouchEvent* event = dev->event(0); |
176 EXPECT_FALSE(event == NULL); | 176 EXPECT_FALSE(event == NULL); |
177 | 177 |
178 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event->type()); | 178 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event->type()); |
179 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 179 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
180 EXPECT_EQ(42, event->x()); | 180 EXPECT_EQ(42, event->x()); |
181 EXPECT_EQ(51, event->y()); | 181 EXPECT_EQ(51, event->y()); |
182 EXPECT_EQ(0, event->touch_id()); | 182 EXPECT_EQ(684, event->touch_id()); |
183 EXPECT_FLOAT_EQ(.5f, event->force()); | 183 EXPECT_FLOAT_EQ(.5f, event->force()); |
184 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 184 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
185 } | 185 } |
186 | 186 |
187 TEST_F(TouchEventConverterEvdevTest, NoEvents) { | 187 TEST_F(TouchEventConverterEvdevTest, NoEvents) { |
188 ui::MockTouchEventConverterEvdev* dev = device(); | 188 ui::MockTouchEventConverterEvdev* dev = device(); |
189 dev->ConfigureReadMock(NULL, 0, 0); | 189 dev->ConfigureReadMock(NULL, 0, 0); |
190 EXPECT_EQ(0u, dev->size()); | 190 EXPECT_EQ(0u, dev->size()); |
191 } | 191 } |
192 | 192 |
(...skipping 26 matching lines...) Expand all Loading... |
219 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0); | 219 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0); |
220 dev->ReadNow(); | 220 dev->ReadNow(); |
221 EXPECT_EQ(2u, dev->size()); | 221 EXPECT_EQ(2u, dev->size()); |
222 ui::TouchEvent* event = dev->event(1); | 222 ui::TouchEvent* event = dev->event(1); |
223 EXPECT_FALSE(event == NULL); | 223 EXPECT_FALSE(event == NULL); |
224 | 224 |
225 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); | 225 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); |
226 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 226 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
227 EXPECT_EQ(42, event->x()); | 227 EXPECT_EQ(42, event->x()); |
228 EXPECT_EQ(43, event->y()); | 228 EXPECT_EQ(43, event->y()); |
229 EXPECT_EQ(0, event->touch_id()); | 229 EXPECT_EQ(684, event->touch_id()); |
230 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); | 230 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); |
231 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 231 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
232 | 232 |
233 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0); | 233 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0); |
234 dev->ReadNow(); | 234 dev->ReadNow(); |
235 EXPECT_EQ(3u, dev->size()); | 235 EXPECT_EQ(3u, dev->size()); |
236 event = dev->event(2); | 236 event = dev->event(2); |
237 EXPECT_FALSE(event == NULL); | 237 EXPECT_FALSE(event == NULL); |
238 | 238 |
239 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); | 239 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); |
240 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 240 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
241 EXPECT_EQ(42, event->x()); | 241 EXPECT_EQ(42, event->x()); |
242 EXPECT_EQ(42, event->y()); | 242 EXPECT_EQ(42, event->y()); |
243 EXPECT_EQ(0, event->touch_id()); | 243 EXPECT_EQ(684, event->touch_id()); |
244 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); | 244 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); |
245 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 245 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
246 } | 246 } |
247 | 247 |
248 TEST_F(TouchEventConverterEvdevTest, TouchRelease) { | 248 TEST_F(TouchEventConverterEvdevTest, TouchRelease) { |
249 ui::MockTouchEventConverterEvdev* dev = device(); | 249 ui::MockTouchEventConverterEvdev* dev = device(); |
250 | 250 |
251 struct input_event mock_kernel_queue_press[] = { | 251 struct input_event mock_kernel_queue_press[] = { |
252 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, | 252 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, |
253 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, | 253 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, |
(...skipping 16 matching lines...) Expand all Loading... |
270 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0); | 270 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0); |
271 dev->ReadNow(); | 271 dev->ReadNow(); |
272 EXPECT_EQ(2u, dev->size()); | 272 EXPECT_EQ(2u, dev->size()); |
273 event = dev->event(1); | 273 event = dev->event(1); |
274 EXPECT_FALSE(event == NULL); | 274 EXPECT_FALSE(event == NULL); |
275 | 275 |
276 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event->type()); | 276 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event->type()); |
277 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); | 277 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); |
278 EXPECT_EQ(42, event->x()); | 278 EXPECT_EQ(42, event->x()); |
279 EXPECT_EQ(51, event->y()); | 279 EXPECT_EQ(51, event->y()); |
280 EXPECT_EQ(0, event->touch_id()); | 280 EXPECT_EQ(684, event->touch_id()); |
281 EXPECT_FLOAT_EQ(.5f, event->force()); | 281 EXPECT_FLOAT_EQ(.5f, event->force()); |
282 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); | 282 EXPECT_FLOAT_EQ(0.f, event->rotation_angle()); |
283 } | 283 } |
284 | 284 |
285 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) { | 285 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) { |
286 ui::MockTouchEventConverterEvdev* dev = device(); | 286 ui::MockTouchEventConverterEvdev* dev = device(); |
287 | 287 |
288 ui::TouchEvent* ev0; | 288 ui::TouchEvent* ev0; |
289 ui::TouchEvent* ev1; | 289 ui::TouchEvent* ev1; |
290 | 290 |
(...skipping 30 matching lines...) Expand all Loading... |
321 dev->ReadNow(); | 321 dev->ReadNow(); |
322 EXPECT_EQ(4u, dev->size()); | 322 EXPECT_EQ(4u, dev->size()); |
323 ev0 = dev->event(2); | 323 ev0 = dev->event(2); |
324 ev1 = dev->event(3); | 324 ev1 = dev->event(3); |
325 | 325 |
326 // Move | 326 // Move |
327 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); | 327 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); |
328 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); | 328 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); |
329 EXPECT_EQ(40, ev0->x()); | 329 EXPECT_EQ(40, ev0->x()); |
330 EXPECT_EQ(51, ev0->y()); | 330 EXPECT_EQ(51, ev0->y()); |
331 EXPECT_EQ(0, ev0->touch_id()); | 331 EXPECT_EQ(684, ev0->touch_id()); |
332 EXPECT_FLOAT_EQ(.5f, ev0->force()); | 332 EXPECT_FLOAT_EQ(.5f, ev0->force()); |
333 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); | 333 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); |
334 | 334 |
335 // Press | 335 // Press |
336 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1->type()); | 336 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1->type()); |
337 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 337 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
338 EXPECT_EQ(101, ev1->x()); | 338 EXPECT_EQ(101, ev1->x()); |
339 EXPECT_EQ(102, ev1->y()); | 339 EXPECT_EQ(102, ev1->y()); |
340 EXPECT_EQ(1, ev1->touch_id()); | 340 EXPECT_EQ(686, ev1->touch_id()); |
341 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 341 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
342 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 342 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
343 | 343 |
344 // Stationary 0, Moves 1. | 344 // Stationary 0, Moves 1. |
345 struct input_event mock_kernel_queue_stationary0_move1[] = { | 345 struct input_event mock_kernel_queue_stationary0_move1[] = { |
346 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} | 346 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} |
347 }; | 347 }; |
348 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0); | 348 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0); |
349 dev->ReadNow(); | 349 dev->ReadNow(); |
350 EXPECT_EQ(5u, dev->size()); | 350 EXPECT_EQ(5u, dev->size()); |
351 ev1 = dev->event(4); | 351 ev1 = dev->event(4); |
352 | 352 |
353 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); | 353 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); |
354 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 354 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
355 EXPECT_EQ(40, ev1->x()); | 355 EXPECT_EQ(40, ev1->x()); |
356 EXPECT_EQ(102, ev1->y()); | 356 EXPECT_EQ(102, ev1->y()); |
357 EXPECT_EQ(1, ev1->touch_id()); | 357 EXPECT_EQ(686, ev1->touch_id()); |
358 | 358 |
359 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 359 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
360 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 360 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
361 | 361 |
362 // Move 0, stationary 1. | 362 // Move 0, stationary 1. |
363 struct input_event mock_kernel_queue_move0_stationary1[] = { | 363 struct input_event mock_kernel_queue_move0_stationary1[] = { |
364 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39}, | 364 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39}, |
365 {{0, 0}, EV_SYN, SYN_REPORT, 0} | 365 {{0, 0}, EV_SYN, SYN_REPORT, 0} |
366 }; | 366 }; |
367 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0); | 367 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0); |
368 dev->ReadNow(); | 368 dev->ReadNow(); |
369 EXPECT_EQ(6u, dev->size()); | 369 EXPECT_EQ(6u, dev->size()); |
370 ev0 = dev->event(5); | 370 ev0 = dev->event(5); |
371 | 371 |
372 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); | 372 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); |
373 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); | 373 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); |
374 EXPECT_EQ(39, ev0->x()); | 374 EXPECT_EQ(39, ev0->x()); |
375 EXPECT_EQ(51, ev0->y()); | 375 EXPECT_EQ(51, ev0->y()); |
376 EXPECT_EQ(0, ev0->touch_id()); | 376 EXPECT_EQ(684, ev0->touch_id()); |
377 EXPECT_FLOAT_EQ(.5f, ev0->force()); | 377 EXPECT_FLOAT_EQ(.5f, ev0->force()); |
378 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); | 378 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); |
379 | 379 |
380 // Release 0, move 1. | 380 // Release 0, move 1. |
381 struct input_event mock_kernel_queue_release0_move1[] = { | 381 struct input_event mock_kernel_queue_release0_move1[] = { |
382 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, | 382 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, |
383 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0} | 383 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0} |
384 }; | 384 }; |
385 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0); | 385 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0); |
386 dev->ReadNow(); | 386 dev->ReadNow(); |
387 EXPECT_EQ(8u, dev->size()); | 387 EXPECT_EQ(8u, dev->size()); |
388 ev0 = dev->event(6); | 388 ev0 = dev->event(6); |
389 ev1 = dev->event(7); | 389 ev1 = dev->event(7); |
390 | 390 |
391 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0->type()); | 391 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0->type()); |
392 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); | 392 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); |
393 EXPECT_EQ(39, ev0->x()); | 393 EXPECT_EQ(39, ev0->x()); |
394 EXPECT_EQ(51, ev0->y()); | 394 EXPECT_EQ(51, ev0->y()); |
395 EXPECT_EQ(0, ev0->touch_id()); | 395 EXPECT_EQ(684, ev0->touch_id()); |
396 EXPECT_FLOAT_EQ(.5f, ev0->force()); | 396 EXPECT_FLOAT_EQ(.5f, ev0->force()); |
397 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); | 397 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle()); |
398 | 398 |
399 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); | 399 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); |
400 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 400 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
401 EXPECT_EQ(38, ev1->x()); | 401 EXPECT_EQ(38, ev1->x()); |
402 EXPECT_EQ(102, ev1->y()); | 402 EXPECT_EQ(102, ev1->y()); |
403 EXPECT_EQ(1, ev1->touch_id()); | 403 EXPECT_EQ(686, ev1->touch_id()); |
404 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 404 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
405 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 405 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
406 | 406 |
407 // Release 1. | 407 // Release 1. |
408 struct input_event mock_kernel_queue_release1[] = { | 408 struct input_event mock_kernel_queue_release1[] = { |
409 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, | 409 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, |
410 }; | 410 }; |
411 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0); | 411 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0); |
412 dev->ReadNow(); | 412 dev->ReadNow(); |
413 EXPECT_EQ(9u, dev->size()); | 413 EXPECT_EQ(9u, dev->size()); |
414 ev1 = dev->event(8); | 414 ev1 = dev->event(8); |
415 | 415 |
416 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1->type()); | 416 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1->type()); |
417 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); | 417 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); |
418 EXPECT_EQ(38, ev1->x()); | 418 EXPECT_EQ(38, ev1->x()); |
419 EXPECT_EQ(102, ev1->y()); | 419 EXPECT_EQ(102, ev1->y()); |
420 EXPECT_EQ(1, ev1->touch_id()); | 420 EXPECT_EQ(686, ev1->touch_id()); |
421 EXPECT_FLOAT_EQ(.5f, ev1->force()); | 421 EXPECT_FLOAT_EQ(.5f, ev1->force()); |
422 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); | 422 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle()); |
423 } | 423 } |
424 | 424 |
425 TEST_F(TouchEventConverterEvdevTest, TypeA) { | 425 TEST_F(TouchEventConverterEvdevTest, TypeA) { |
426 ui::MockTouchEventConverterEvdev* dev = device(); | 426 ui::MockTouchEventConverterEvdev* dev = device(); |
427 | 427 |
428 struct input_event mock_kernel_queue_press0[] = { | 428 struct input_event mock_kernel_queue_press0[] = { |
429 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, | 429 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, |
430 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, | 430 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
507 dev->ReadNow(); | 507 dev->ReadNow(); |
508 | 508 |
509 const unsigned int kExpectedEventCount = 2; | 509 const unsigned int kExpectedEventCount = 2; |
510 EXPECT_EQ(kExpectedEventCount, dev->size()); | 510 EXPECT_EQ(kExpectedEventCount, dev->size()); |
511 if (kExpectedEventCount != dev->size()) | 511 if (kExpectedEventCount != dev->size()) |
512 return; | 512 return; |
513 | 513 |
514 ui::TouchEvent* ev0 = dev->event(0); | 514 ui::TouchEvent* ev0 = dev->event(0); |
515 ui::TouchEvent* ev1 = dev->event(1); | 515 ui::TouchEvent* ev1 = dev->event(1); |
516 | 516 |
517 EXPECT_EQ(0, ev0->touch_id()); | 517 EXPECT_EQ(100, ev0->touch_id()); |
518 EXPECT_EQ(999, ev0->x()); | 518 EXPECT_EQ(999, ev0->x()); |
519 EXPECT_EQ(888, ev0->y()); | 519 EXPECT_EQ(888, ev0->y()); |
520 EXPECT_FLOAT_EQ(0.8333333f, ev0->force()); | 520 EXPECT_FLOAT_EQ(0.8333333f, ev0->force()); |
521 | 521 |
522 EXPECT_EQ(1, ev1->touch_id()); | 522 EXPECT_EQ(200, ev1->touch_id()); |
523 EXPECT_EQ(777, ev1->x()); | 523 EXPECT_EQ(777, ev1->x()); |
524 EXPECT_EQ(666, ev1->y()); | 524 EXPECT_EQ(666, ev1->y()); |
525 EXPECT_FLOAT_EQ(0.4666666f, ev1->force()); | 525 EXPECT_FLOAT_EQ(0.4666666f, ev1->force()); |
526 } | 526 } |
OLD | NEW |