OLD | NEW |
---|---|
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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
7 #include "ui/events/event.h" | 7 #include "ui/events/event.h" |
8 #include "ui/events/event_utils.h" | 8 #include "ui/events/event_utils.h" |
9 #include "ui/events/keycodes/dom3/dom_code.h" | 9 #include "ui/events/keycodes/dom3/dom_code.h" |
10 #include "ui/events/keycodes/dom4/keycode_converter.h" | 10 #include "ui/events/keycodes/dom4/keycode_converter.h" |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
399 } | 399 } |
400 #endif // OS_WIN | 400 #endif // OS_WIN |
401 } | 401 } |
402 | 402 |
403 namespace { | 403 namespace { |
404 #if defined(USE_X11) | 404 #if defined(USE_X11) |
405 void SetKeyEventTimestamp(XEvent* event, long time) { | 405 void SetKeyEventTimestamp(XEvent* event, long time) { |
406 event->xkey.time = time; | 406 event->xkey.time = time; |
407 } | 407 } |
408 | 408 |
409 void AdvanceKeyEventTimestamp(XEvent* event) { | |
410 event->xkey.time++; | |
411 } | |
412 | |
409 #elif defined(OS_WIN) | 413 #elif defined(OS_WIN) |
410 void SetKeyEventTimestamp(MSG& msg, long time) { | 414 void SetKeyEventTimestamp(MSG& msg, long time) { |
411 msg.time = time; | 415 msg.time = time; |
412 } | 416 } |
417 | |
418 void AdvanceKeyEventTimestamp(MSG& msg) { | |
419 msg.time++; | |
420 } | |
413 #endif | 421 #endif |
414 } // namespace | 422 } // namespace |
415 | 423 |
416 #if defined(USE_X11) || defined(OS_WIN) | 424 #if defined(USE_X11) || defined(OS_WIN) |
417 TEST(EventTest, AutoRepeat) { | 425 TEST(EventTest, AutoRepeat) { |
418 const uint16 kNativeCodeA = ui::KeycodeConverter::CodeToNativeKeycode("KeyA"); | 426 const uint16 kNativeCodeA = ui::KeycodeConverter::CodeToNativeKeycode("KeyA"); |
419 const uint16 kNativeCodeB = ui::KeycodeConverter::CodeToNativeKeycode("KeyB"); | 427 const uint16 kNativeCodeB = ui::KeycodeConverter::CodeToNativeKeycode("KeyB"); |
oshima
2015/03/19 00:46:04
I though about changing this test to use EventGene
sadrul
2015/03/19 10:36:53
Sounds good.
| |
420 #if defined(USE_X11) | 428 #if defined(USE_X11) |
421 ScopedXI2Event native_event_a_pressed; | 429 ScopedXI2Event native_event_a_pressed; |
422 native_event_a_pressed.InitKeyEvent(ET_KEY_PRESSED, VKEY_A, kNativeCodeA); | 430 native_event_a_pressed.InitKeyEvent(ET_KEY_PRESSED, VKEY_A, kNativeCodeA); |
423 ScopedXI2Event native_event_a_pressed_1500; | 431 ScopedXI2Event native_event_a_pressed_1500; |
424 native_event_a_pressed_1500.InitKeyEvent( | 432 native_event_a_pressed_1500.InitKeyEvent( |
425 ET_KEY_PRESSED, VKEY_A, kNativeCodeA); | 433 ET_KEY_PRESSED, VKEY_A, kNativeCodeA); |
426 ScopedXI2Event native_event_a_pressed_3000; | 434 ScopedXI2Event native_event_a_pressed_3000; |
427 native_event_a_pressed_3000.InitKeyEvent( | 435 native_event_a_pressed_3000.InitKeyEvent( |
428 ET_KEY_PRESSED, VKEY_A, kNativeCodeA); | 436 ET_KEY_PRESSED, VKEY_A, kNativeCodeA); |
429 | 437 |
(...skipping 15 matching lines...) Expand all Loading... | |
445 MSG native_event_a_pressed_3000 = { NULL, WM_KEYDOWN, VKEY_A, lParam_a }; | 453 MSG native_event_a_pressed_3000 = { NULL, WM_KEYDOWN, VKEY_A, lParam_a }; |
446 MSG native_event_a_released = { NULL, WM_KEYUP, VKEY_A, lParam_a }; | 454 MSG native_event_a_released = { NULL, WM_KEYUP, VKEY_A, lParam_a }; |
447 MSG native_event_b_pressed = { NULL, WM_KEYUP, VKEY_B, lParam_b }; | 455 MSG native_event_b_pressed = { NULL, WM_KEYUP, VKEY_B, lParam_b }; |
448 #endif | 456 #endif |
449 SetKeyEventTimestamp(native_event_a_pressed_1500, 1500); | 457 SetKeyEventTimestamp(native_event_a_pressed_1500, 1500); |
450 SetKeyEventTimestamp(native_event_a_pressed_3000, 3000); | 458 SetKeyEventTimestamp(native_event_a_pressed_3000, 3000); |
451 | 459 |
452 { | 460 { |
453 KeyEvent key_a1(native_event_a_pressed); | 461 KeyEvent key_a1(native_event_a_pressed); |
454 EXPECT_FALSE(key_a1.IsRepeat()); | 462 EXPECT_FALSE(key_a1.IsRepeat()); |
463 | |
464 KeyEvent key_a1_with_same_event(native_event_a_pressed); | |
465 EXPECT_FALSE(key_a1_with_same_event.IsRepeat()); | |
466 | |
455 KeyEvent key_a1_released(native_event_a_released); | 467 KeyEvent key_a1_released(native_event_a_released); |
456 EXPECT_FALSE(key_a1_released.IsRepeat()); | 468 EXPECT_FALSE(key_a1_released.IsRepeat()); |
457 | 469 |
458 KeyEvent key_a2(native_event_a_pressed); | 470 KeyEvent key_a2(native_event_a_pressed); |
459 EXPECT_FALSE(key_a2.IsRepeat()); | 471 EXPECT_FALSE(key_a2.IsRepeat()); |
472 | |
473 AdvanceKeyEventTimestamp(native_event_a_pressed); | |
460 KeyEvent key_a2_repeated(native_event_a_pressed); | 474 KeyEvent key_a2_repeated(native_event_a_pressed); |
461 EXPECT_TRUE(key_a2_repeated.IsRepeat()); | 475 EXPECT_TRUE(key_a2_repeated.IsRepeat()); |
476 | |
462 KeyEvent key_a2_released(native_event_a_released); | 477 KeyEvent key_a2_released(native_event_a_released); |
463 EXPECT_FALSE(key_a2_released.IsRepeat()); | 478 EXPECT_FALSE(key_a2_released.IsRepeat()); |
464 } | 479 } |
465 | 480 |
481 // Interleaved with different key press. | |
466 { | 482 { |
467 KeyEvent key_a3(native_event_a_pressed); | 483 KeyEvent key_a3(native_event_a_pressed); |
468 EXPECT_FALSE(key_a3.IsRepeat()); | 484 EXPECT_FALSE(key_a3.IsRepeat()); |
485 | |
469 KeyEvent key_b(native_event_b_pressed); | 486 KeyEvent key_b(native_event_b_pressed); |
470 EXPECT_FALSE(key_b.IsRepeat()); | 487 EXPECT_FALSE(key_b.IsRepeat()); |
488 | |
489 AdvanceKeyEventTimestamp(native_event_a_pressed); | |
471 KeyEvent key_a3_again(native_event_a_pressed); | 490 KeyEvent key_a3_again(native_event_a_pressed); |
472 EXPECT_FALSE(key_a3_again.IsRepeat()); | 491 EXPECT_FALSE(key_a3_again.IsRepeat()); |
492 | |
493 AdvanceKeyEventTimestamp(native_event_a_pressed); | |
473 KeyEvent key_a3_repeated(native_event_a_pressed); | 494 KeyEvent key_a3_repeated(native_event_a_pressed); |
474 EXPECT_TRUE(key_a3_repeated.IsRepeat()); | 495 EXPECT_TRUE(key_a3_repeated.IsRepeat()); |
496 | |
497 AdvanceKeyEventTimestamp(native_event_a_pressed); | |
475 KeyEvent key_a3_repeated2(native_event_a_pressed); | 498 KeyEvent key_a3_repeated2(native_event_a_pressed); |
476 EXPECT_TRUE(key_a3_repeated2.IsRepeat()); | 499 EXPECT_TRUE(key_a3_repeated2.IsRepeat()); |
500 | |
477 KeyEvent key_a3_released(native_event_a_released); | 501 KeyEvent key_a3_released(native_event_a_released); |
478 EXPECT_FALSE(key_a3_released.IsRepeat()); | 502 EXPECT_FALSE(key_a3_released.IsRepeat()); |
479 } | 503 } |
480 | 504 |
481 // Hold the key longer than max auto repeat timeout. | 505 // Hold the key longer than max auto repeat timeout. |
482 { | 506 { |
483 KeyEvent key_a4_0(native_event_a_pressed); | 507 KeyEvent key_a4_0(native_event_a_pressed); |
484 EXPECT_FALSE(key_a4_0.IsRepeat()); | 508 EXPECT_FALSE(key_a4_0.IsRepeat()); |
509 | |
485 KeyEvent key_a4_1500(native_event_a_pressed_1500); | 510 KeyEvent key_a4_1500(native_event_a_pressed_1500); |
486 EXPECT_TRUE(key_a4_1500.IsRepeat()); | 511 EXPECT_TRUE(key_a4_1500.IsRepeat()); |
512 | |
487 KeyEvent key_a4_3000(native_event_a_pressed_3000); | 513 KeyEvent key_a4_3000(native_event_a_pressed_3000); |
488 EXPECT_TRUE(key_a4_3000.IsRepeat()); | 514 EXPECT_TRUE(key_a4_3000.IsRepeat()); |
515 | |
489 KeyEvent key_a4_released(native_event_a_released); | 516 KeyEvent key_a4_released(native_event_a_released); |
490 EXPECT_FALSE(key_a4_released.IsRepeat()); | 517 EXPECT_FALSE(key_a4_released.IsRepeat()); |
491 } | 518 } |
492 | 519 |
493 #if defined(USE_X11) | 520 #if defined(USE_X11) |
494 { | 521 { |
495 KeyEvent key_a4_pressed(native_event_a_pressed); | 522 KeyEvent key_a4_pressed(native_event_a_pressed); |
496 EXPECT_FALSE(key_a4_pressed.IsRepeat()); | 523 EXPECT_FALSE(key_a4_pressed.IsRepeat()); |
497 | 524 |
498 KeyEvent key_a4_pressed_nonstandard_state( | 525 KeyEvent key_a4_pressed_nonstandard_state( |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
561 | 588 |
562 { | 589 { |
563 const float angle_too_big = 400; | 590 const float angle_too_big = 400; |
564 TouchEvent event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, | 591 TouchEvent event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, |
565 radius_x, radius_y, angle_too_big, 0); | 592 radius_x, radius_y, angle_too_big, 0); |
566 EXPECT_FLOAT_EQ(400 - 360, event.rotation_angle()); | 593 EXPECT_FLOAT_EQ(400 - 360, event.rotation_angle()); |
567 } | 594 } |
568 } | 595 } |
569 | 596 |
570 } // namespace ui | 597 } // namespace ui |
OLD | NEW |