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

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

Issue 308023002: Add EF_IS_REPEAT flag to KeyEvent to handle repeated accelerators correctly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 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 | Annotate | Revision Log
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/dom4/keycode_converter.h" 9 #include "ui/events/keycodes/dom4/keycode_converter.h"
10 #include "ui/events/test/events_test_utils.h" 10 #include "ui/events/test/events_test_utils.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 58
59 TEST(EventTest, ClickCount) { 59 TEST(EventTest, ClickCount) {
60 const gfx::Point origin(0, 0); 60 const gfx::Point origin(0, 0);
61 MouseEvent mouseev(ET_MOUSE_PRESSED, origin, origin, 0, 0); 61 MouseEvent mouseev(ET_MOUSE_PRESSED, origin, origin, 0, 0);
62 for (int i = 1; i <=3 ; ++i) { 62 for (int i = 1; i <=3 ; ++i) {
63 mouseev.SetClickCount(i); 63 mouseev.SetClickCount(i);
64 EXPECT_EQ(i, mouseev.GetClickCount()); 64 EXPECT_EQ(i, mouseev.GetClickCount());
65 } 65 }
66 } 66 }
67 67
68 TEST(EventTest, Repeated) { 68 TEST(EventTest, RepeatedClick) {
69 const gfx::Point origin(0, 0); 69 const gfx::Point origin(0, 0);
70 MouseEvent mouse_ev1(ET_MOUSE_PRESSED, origin, origin, 0, 0); 70 MouseEvent mouse_ev1(ET_MOUSE_PRESSED, origin, origin, 0, 0);
71 MouseEvent mouse_ev2(ET_MOUSE_PRESSED, origin, origin, 0, 0); 71 MouseEvent mouse_ev2(ET_MOUSE_PRESSED, origin, origin, 0, 0);
72 LocatedEventTestApi test_ev1(&mouse_ev1); 72 LocatedEventTestApi test_ev1(&mouse_ev1);
73 LocatedEventTestApi test_ev2(&mouse_ev2); 73 LocatedEventTestApi test_ev2(&mouse_ev2);
74 74
75 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); 75 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0);
76 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); 76 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1);
77 base::TimeDelta later = start + base::TimeDelta::FromMilliseconds(1000); 77 base::TimeDelta later = start + base::TimeDelta::FromMilliseconds(1000);
78 78
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 324
325 MSG native_event = { NULL, WM_KEYUP, VKEY_HOME, lParam }; 325 MSG native_event = { NULL, WM_KEYUP, VKEY_HOME, lParam };
326 KeyEvent key(native_event, false); 326 KeyEvent key(native_event, false);
327 327
328 // KeyEvent converts from the native keycode (scan code) to the code. 328 // KeyEvent converts from the native keycode (scan code) to the code.
329 EXPECT_EQ(kCodeForHome, key.code()); 329 EXPECT_EQ(kCodeForHome, key.code());
330 } 330 }
331 #endif // OS_WIN 331 #endif // OS_WIN
332 } 332 }
333 333
334 #if defined(USE_X11) || defined(OS_WIN)
335 TEST(EventTest, AutoRepeat) {
336 KeycodeConverter* conv = KeycodeConverter::GetInstance();
337
338 const uint16 kNativeCodeA = conv->CodeToNativeKeycode("KeyA");
339 const uint16 kNativeCodeB = conv->CodeToNativeKeycode("KeyB");
340 #if defined(USE_X11)
341 ScopedXI2Event native_event_a_pressed;
342 native_event_a_pressed.InitKeyEvent(ET_KEY_PRESSED, VKEY_A, kNativeCodeA);
343 ScopedXI2Event native_event_a_released;
344 native_event_a_released.InitKeyEvent(ET_KEY_RELEASED, VKEY_A, kNativeCodeA);
345 ScopedXI2Event native_event_b_pressed;
346 native_event_b_pressed.InitKeyEvent(ET_KEY_PRESSED, VKEY_B, kNativeCodeB);
347 #elif defined(OS_WIN)
348 const LPARAM lParam_a = GetLParamFromScanCode(kNativeCodeA);
349 const LPARAM lParam_b = GetLParamFromScanCode(kNativeCodeB);
350 MSG native_event_a_pressed = { NULL, WM_KEYDOWN, VKEY_A, lParam_a };
351 MSG native_event_a_released = { NULL, WM_KEYUP, VKEY_A, lParam_a };
352 MSG native_event_b_pressed = { NULL, WM_KEYUP, VKEY_B, lParam_b };
353 #endif
354 KeyEvent key_a1(native_event_a_pressed, false);
355 DCHECK(!key_a1.IsRepeat());
356 KeyEvent key_a1_released(native_event_a_released, false);
357 DCHECK(!key_a1_released.IsRepeat());
358
359 KeyEvent key_a2(native_event_a_pressed, false);
360 DCHECK(!key_a2.IsRepeat());
361 KeyEvent key_a2_repeated(native_event_a_pressed, false);
362 DCHECK(key_a2_repeated.IsRepeat());
363 KeyEvent key_a2_released(native_event_a_released, false);
364 DCHECK(!key_a2_released.IsRepeat());
365
366 KeyEvent key_a3(native_event_a_pressed, false);
367 DCHECK(!key_a3.IsRepeat());
368 KeyEvent key_b(native_event_b_pressed, false);
369 DCHECK(!key_b.IsRepeat());
370 KeyEvent key_a3_again(native_event_a_pressed, false);
371 DCHECK(!key_a3_again.IsRepeat());
372 KeyEvent key_a3_repeated(native_event_a_pressed, false);
373 DCHECK(key_a3_repeated.IsRepeat());
374 KeyEvent key_a3_repeated2(native_event_a_pressed, false);
375 DCHECK(key_a3_repeated2.IsRepeat());
376 KeyEvent key_a3_released(native_event_a_released, false);
377 DCHECK(!key_a3_released.IsRepeat());
378 }
379 #endif // USE_X11 || OS_WIN
380
334 } // namespace ui 381 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698