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

Side by Side Diff: ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc

Issue 1048333005: ozone: Map TouchEvent::touch_id_ into expected range (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Push all touch id management into EventFactoryEvdev Created 5 years, 8 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
« no previous file with comments | « ui/events/ozone/evdev/event_factory_evdev.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 dev->ConfigureReadMock(mock_kernel_queue_press, 249 dev->ConfigureReadMock(mock_kernel_queue_press,
250 arraysize(mock_kernel_queue_press), 0); 250 arraysize(mock_kernel_queue_press), 0);
251 dev->ReadNow(); 251 dev->ReadNow();
252 EXPECT_EQ(1u, size()); 252 EXPECT_EQ(1u, size());
253 ui::TouchEventParams event = dispatched_event(0); 253 ui::TouchEventParams event = dispatched_event(0);
254 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event.type); 254 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event.type);
255 EXPECT_EQ(base::TimeDelta::FromMicroseconds(1427323282019203), 255 EXPECT_EQ(base::TimeDelta::FromMicroseconds(1427323282019203),
256 event.timestamp); 256 event.timestamp);
257 EXPECT_EQ(295, event.location.x()); 257 EXPECT_EQ(295, event.location.x());
258 EXPECT_EQ(421, event.location.y()); 258 EXPECT_EQ(421, event.location.y());
259 EXPECT_EQ(0, event.touch_id); 259 EXPECT_EQ(0, event.slot);
260 EXPECT_FLOAT_EQ(58.f, event.radii.x()); 260 EXPECT_FLOAT_EQ(58.f, event.radii.x());
261 EXPECT_FLOAT_EQ(0.13333334f, event.pressure); 261 EXPECT_FLOAT_EQ(0.13333334f, event.pressure);
262 262
263 // Move. 263 // Move.
264 dev->ConfigureReadMock(mock_kernel_queue_move, 264 dev->ConfigureReadMock(mock_kernel_queue_move,
265 arraysize(mock_kernel_queue_move), 0); 265 arraysize(mock_kernel_queue_move), 0);
266 dev->ReadNow(); 266 dev->ReadNow();
267 EXPECT_EQ(2u, size()); 267 EXPECT_EQ(2u, size());
268 event = dispatched_event(1); 268 event = dispatched_event(1);
269 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type); 269 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type);
270 EXPECT_EQ(base::TimeDelta::FromMicroseconds(1427323282034693), 270 EXPECT_EQ(base::TimeDelta::FromMicroseconds(1427323282034693),
271 event.timestamp); 271 event.timestamp);
272 EXPECT_EQ(312, event.location.x()); 272 EXPECT_EQ(312, event.location.x());
273 EXPECT_EQ(432, event.location.y()); 273 EXPECT_EQ(432, event.location.y());
274 EXPECT_EQ(0, event.touch_id); 274 EXPECT_EQ(0, event.slot);
275 EXPECT_FLOAT_EQ(50.f, event.radii.x()); 275 EXPECT_FLOAT_EQ(50.f, event.radii.x());
276 EXPECT_FLOAT_EQ(0.16862745f, event.pressure); 276 EXPECT_FLOAT_EQ(0.16862745f, event.pressure);
277 277
278 // Release. 278 // Release.
279 dev->ConfigureReadMock(mock_kernel_queue_release, 279 dev->ConfigureReadMock(mock_kernel_queue_release,
280 arraysize(mock_kernel_queue_release), 0); 280 arraysize(mock_kernel_queue_release), 0);
281 dev->ReadNow(); 281 dev->ReadNow();
282 EXPECT_EQ(3u, size()); 282 EXPECT_EQ(3u, size());
283 event = dispatched_event(2); 283 event = dispatched_event(2);
284 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event.type); 284 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event.type);
285 EXPECT_EQ(base::TimeDelta::FromMicroseconds(1427323282144540), 285 EXPECT_EQ(base::TimeDelta::FromMicroseconds(1427323282144540),
286 event.timestamp); 286 event.timestamp);
287 EXPECT_EQ(312, event.location.x()); 287 EXPECT_EQ(312, event.location.x());
288 EXPECT_EQ(432, event.location.y()); 288 EXPECT_EQ(432, event.location.y());
289 EXPECT_EQ(0, event.touch_id); 289 EXPECT_EQ(0, event.slot);
290 EXPECT_FLOAT_EQ(50.f, event.radii.x()); 290 EXPECT_FLOAT_EQ(50.f, event.radii.x());
291 EXPECT_FLOAT_EQ(0.16862745f, event.pressure); 291 EXPECT_FLOAT_EQ(0.16862745f, event.pressure);
292 } 292 }
293 293
294 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) { 294 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) {
295 ui::MockTouchEventConverterEvdev* dev = device(); 295 ui::MockTouchEventConverterEvdev* dev = device();
296 296
297 InitPixelTouchscreen(dev); 297 InitPixelTouchscreen(dev);
298 298
299 struct input_event mock_kernel_queue_press0[] = { 299 struct input_event mock_kernel_queue_press0[] = {
(...skipping 29 matching lines...) Expand all
329 dev->ReadNow(); 329 dev->ReadNow();
330 EXPECT_EQ(4u, size()); 330 EXPECT_EQ(4u, size());
331 ui::TouchEventParams ev0 = dispatched_event(2); 331 ui::TouchEventParams ev0 = dispatched_event(2);
332 ui::TouchEventParams ev1 = dispatched_event(3); 332 ui::TouchEventParams ev1 = dispatched_event(3);
333 333
334 // Move 334 // Move
335 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type); 335 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type);
336 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp); 336 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
337 EXPECT_EQ(40, ev0.location.x()); 337 EXPECT_EQ(40, ev0.location.x());
338 EXPECT_EQ(51, ev0.location.y()); 338 EXPECT_EQ(51, ev0.location.y());
339 EXPECT_EQ(0, ev0.touch_id); 339 EXPECT_EQ(0, ev0.slot);
340 EXPECT_FLOAT_EQ(0.17647059f, ev0.pressure); 340 EXPECT_FLOAT_EQ(0.17647059f, ev0.pressure);
341 341
342 // Press 342 // Press
343 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1.type); 343 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1.type);
344 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 344 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
345 EXPECT_EQ(101, ev1.location.x()); 345 EXPECT_EQ(101, ev1.location.x());
346 EXPECT_EQ(102, ev1.location.y()); 346 EXPECT_EQ(102, ev1.location.y());
347 EXPECT_EQ(1, ev1.touch_id); 347 EXPECT_EQ(1, ev1.slot);
348 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure); 348 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure);
349 349
350 // Stationary 0, Moves 1. 350 // Stationary 0, Moves 1.
351 struct input_event mock_kernel_queue_stationary0_move1[] = { 351 struct input_event mock_kernel_queue_stationary0_move1[] = {
352 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 352 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
353 }; 353 };
354 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0); 354 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0);
355 dev->ReadNow(); 355 dev->ReadNow();
356 EXPECT_EQ(5u, size()); 356 EXPECT_EQ(5u, size());
357 ev1 = dispatched_event(4); 357 ev1 = dispatched_event(4);
358 358
359 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type); 359 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type);
360 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 360 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
361 EXPECT_EQ(40, ev1.location.x()); 361 EXPECT_EQ(40, ev1.location.x());
362 EXPECT_EQ(102, ev1.location.y()); 362 EXPECT_EQ(102, ev1.location.y());
363 EXPECT_EQ(1, ev1.touch_id); 363 EXPECT_EQ(1, ev1.slot);
364 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure); 364 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure);
365 365
366 // Move 0, stationary 1. 366 // Move 0, stationary 1.
367 struct input_event mock_kernel_queue_move0_stationary1[] = { 367 struct input_event mock_kernel_queue_move0_stationary1[] = {
368 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39}, 368 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39},
369 {{0, 0}, EV_SYN, SYN_REPORT, 0} 369 {{0, 0}, EV_SYN, SYN_REPORT, 0}
370 }; 370 };
371 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0); 371 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0);
372 dev->ReadNow(); 372 dev->ReadNow();
373 EXPECT_EQ(6u, size()); 373 EXPECT_EQ(6u, size());
374 ev0 = dispatched_event(5); 374 ev0 = dispatched_event(5);
375 375
376 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type); 376 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type);
377 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp); 377 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
378 EXPECT_EQ(39, ev0.location.x()); 378 EXPECT_EQ(39, ev0.location.x());
379 EXPECT_EQ(51, ev0.location.y()); 379 EXPECT_EQ(51, ev0.location.y());
380 EXPECT_EQ(0, ev0.touch_id); 380 EXPECT_EQ(0, ev0.slot);
381 EXPECT_FLOAT_EQ(0.17647059f, ev0.pressure); 381 EXPECT_FLOAT_EQ(0.17647059f, ev0.pressure);
382 382
383 // Release 0, move 1. 383 // Release 0, move 1.
384 struct input_event mock_kernel_queue_release0_move1[] = { 384 struct input_event mock_kernel_queue_release0_move1[] = {
385 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, 385 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1},
386 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 386 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
387 }; 387 };
388 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0); 388 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0);
389 dev->ReadNow(); 389 dev->ReadNow();
390 EXPECT_EQ(8u, size()); 390 EXPECT_EQ(8u, size());
391 ev0 = dispatched_event(6); 391 ev0 = dispatched_event(6);
392 ev1 = dispatched_event(7); 392 ev1 = dispatched_event(7);
393 393
394 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0.type); 394 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0.type);
395 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp); 395 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
396 EXPECT_EQ(39, ev0.location.x()); 396 EXPECT_EQ(39, ev0.location.x());
397 EXPECT_EQ(51, ev0.location.y()); 397 EXPECT_EQ(51, ev0.location.y());
398 EXPECT_EQ(0, ev0.touch_id); 398 EXPECT_EQ(0, ev0.slot);
399 EXPECT_FLOAT_EQ(0.17647059f, ev0.pressure); 399 EXPECT_FLOAT_EQ(0.17647059f, ev0.pressure);
400 400
401 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type); 401 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type);
402 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 402 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
403 EXPECT_EQ(38, ev1.location.x()); 403 EXPECT_EQ(38, ev1.location.x());
404 EXPECT_EQ(102, ev1.location.y()); 404 EXPECT_EQ(102, ev1.location.y());
405 EXPECT_EQ(1, ev1.touch_id); 405 EXPECT_EQ(1, ev1.slot);
406 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure); 406 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure);
407 407
408 // Release 1. 408 // Release 1.
409 struct input_event mock_kernel_queue_release1[] = { 409 struct input_event mock_kernel_queue_release1[] = {
410 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, 410 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0},
411 }; 411 };
412 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0); 412 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0);
413 dev->ReadNow(); 413 dev->ReadNow();
414 EXPECT_EQ(9u, size()); 414 EXPECT_EQ(9u, size());
415 ev1 = dispatched_event(8); 415 ev1 = dispatched_event(8);
416 416
417 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1.type); 417 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1.type);
418 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 418 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
419 EXPECT_EQ(38, ev1.location.x()); 419 EXPECT_EQ(38, ev1.location.x());
420 EXPECT_EQ(102, ev1.location.y()); 420 EXPECT_EQ(102, ev1.location.y());
421 EXPECT_EQ(1, ev1.touch_id); 421 EXPECT_EQ(1, ev1.slot);
422 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure); 422 EXPECT_FLOAT_EQ(0.17647059f, ev1.pressure);
423 } 423 }
424 424
425 TEST_F(TouchEventConverterEvdevTest, Unsync) { 425 TEST_F(TouchEventConverterEvdevTest, Unsync) {
426 ui::MockTouchEventConverterEvdev* dev = device(); 426 ui::MockTouchEventConverterEvdev* dev = device();
427 427
428 InitPixelTouchscreen(dev); 428 InitPixelTouchscreen(dev);
429 429
430 struct input_event mock_kernel_queue_press0[] = { 430 struct input_event mock_kernel_queue_press0[] = {
431 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 431 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 481 {{0, 0}, EV_SYN, SYN_REPORT, 0},
482 }; 482 };
483 483
484 dev->ConfigureReadMock(mock_kernel_queue_empty_report, 484 dev->ConfigureReadMock(mock_kernel_queue_empty_report,
485 arraysize(mock_kernel_queue_empty_report), 0); 485 arraysize(mock_kernel_queue_empty_report), 0);
486 dev->ReadNow(); 486 dev->ReadNow();
487 EXPECT_EQ(1u, size()); 487 EXPECT_EQ(1u, size());
488 488
489 ui::TouchEventParams ev = dispatched_event(0); 489 ui::TouchEventParams ev = dispatched_event(0);
490 EXPECT_EQ(ET_TOUCH_PRESSED, ev.type); 490 EXPECT_EQ(ET_TOUCH_PRESSED, ev.type);
491 EXPECT_EQ(0, ev.touch_id); 491 EXPECT_EQ(0, ev.slot);
492 EXPECT_FLOAT_EQ(50.f, ev.radii.x()); 492 EXPECT_FLOAT_EQ(50.f, ev.radii.x());
493 EXPECT_FLOAT_EQ(0.f, ev.radii.y()); 493 EXPECT_FLOAT_EQ(0.f, ev.radii.y());
494 EXPECT_FLOAT_EQ(0.50196081f, ev.pressure); 494 EXPECT_FLOAT_EQ(0.50196081f, ev.pressure);
495 } 495 }
496 496
497 // crbug.com/407386 497 // crbug.com/407386
498 TEST_F(TouchEventConverterEvdevTest, 498 TEST_F(TouchEventConverterEvdevTest,
499 DontChangeMultitouchPositionFromLegacyAxes) { 499 DontChangeMultitouchPositionFromLegacyAxes) {
500 ui::MockTouchEventConverterEvdev* dev = device(); 500 ui::MockTouchEventConverterEvdev* dev = device();
501 501
(...skipping 21 matching lines...) Expand all
523 dev->ReadNow(); 523 dev->ReadNow();
524 524
525 const unsigned int kExpectedEventCount = 2; 525 const unsigned int kExpectedEventCount = 2;
526 EXPECT_EQ(kExpectedEventCount, size()); 526 EXPECT_EQ(kExpectedEventCount, size());
527 if (kExpectedEventCount != size()) 527 if (kExpectedEventCount != size())
528 return; 528 return;
529 529
530 ui::TouchEventParams ev0 = dispatched_event(0); 530 ui::TouchEventParams ev0 = dispatched_event(0);
531 ui::TouchEventParams ev1 = dispatched_event(1); 531 ui::TouchEventParams ev1 = dispatched_event(1);
532 532
533 EXPECT_EQ(0, ev0.touch_id); 533 EXPECT_EQ(0, ev0.slot);
534 EXPECT_EQ(999, ev0.location.x()); 534 EXPECT_EQ(999, ev0.location.x());
535 EXPECT_EQ(888, ev0.location.y()); 535 EXPECT_EQ(888, ev0.location.y());
536 EXPECT_FLOAT_EQ(0.21568628f, ev0.pressure); 536 EXPECT_FLOAT_EQ(0.21568628f, ev0.pressure);
537 537
538 EXPECT_EQ(1, ev1.touch_id); 538 EXPECT_EQ(1, ev1.slot);
539 EXPECT_EQ(777, ev1.location.x()); 539 EXPECT_EQ(777, ev1.location.x());
540 EXPECT_EQ(666, ev1.location.y()); 540 EXPECT_EQ(666, ev1.location.y());
541 EXPECT_FLOAT_EQ(0.17254902f, ev1.pressure); 541 EXPECT_FLOAT_EQ(0.17254902f, ev1.pressure);
542 } 542 }
543 543
544 // crbug.com/446939 544 // crbug.com/446939
545 TEST_F(TouchEventConverterEvdevTest, CheckSlotLimit) { 545 TEST_F(TouchEventConverterEvdevTest, CheckSlotLimit) {
546 ui::MockTouchEventConverterEvdev* dev = device(); 546 ui::MockTouchEventConverterEvdev* dev = device();
547 547
548 struct input_event mock_kernel_queue[] = { 548 struct input_event mock_kernel_queue[] = {
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 ASSERT_EQ(0u, size()); 722 ASSERT_EQ(0u, size());
723 723
724 EventTypeTouchNoiseFilter* filter = 724 EventTypeTouchNoiseFilter* filter =
725 static_cast<EventTypeTouchNoiseFilter*>(first_filter()); 725 static_cast<EventTypeTouchNoiseFilter*>(first_filter());
726 EXPECT_EQ(1u, filter->num_events(ET_TOUCH_PRESSED)); 726 EXPECT_EQ(1u, filter->num_events(ET_TOUCH_PRESSED));
727 EXPECT_EQ(2u, filter->num_events(ET_TOUCH_MOVED)); 727 EXPECT_EQ(2u, filter->num_events(ET_TOUCH_MOVED));
728 EXPECT_EQ(1u, filter->num_events(ET_TOUCH_RELEASED)); 728 EXPECT_EQ(1u, filter->num_events(ET_TOUCH_RELEASED));
729 } 729 }
730 730
731 } // namespace ui 731 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/event_factory_evdev.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698