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

Side by Side Diff: ui/events/event_unittest.cc

Issue 1017323002: make IsRepeated work even when a KeyEvent is created from the same native event. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 (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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698