| 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/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" |
| 11 | 11 |
| 12 #if defined(USE_X11) | 12 #if defined(USE_X11) |
| 13 #include <X11/Xlib.h> | 13 #include <X11/Xlib.h> |
| 14 #include "ui/events/test/events_test_utils_x11.h" | 14 #include "ui/events/test/events_test_utils_x11.h" |
| 15 #include "ui/gfx/x/x11_types.h" | 15 #include "ui/gfx/x/x11_types.h" |
| 16 #endif | 16 #endif |
| 17 | 17 |
| 18 namespace ui { | 18 namespace ui { |
| 19 | 19 |
| 20 TEST(EventTest, NoNativeEvent) { | 20 TEST(EventTest, NoNativeEvent) { |
| 21 KeyEvent keyev(ET_KEY_PRESSED, VKEY_SPACE, 0, false); | 21 KeyEvent keyev(ET_KEY_PRESSED, VKEY_SPACE, EF_NONE); |
| 22 EXPECT_FALSE(keyev.HasNativeEvent()); | 22 EXPECT_FALSE(keyev.HasNativeEvent()); |
| 23 } | 23 } |
| 24 | 24 |
| 25 TEST(EventTest, NativeEvent) { | 25 TEST(EventTest, NativeEvent) { |
| 26 #if defined(OS_WIN) | 26 #if defined(OS_WIN) |
| 27 MSG native_event = { NULL, WM_KEYUP, VKEY_A, 0 }; | 27 MSG native_event = { NULL, WM_KEYUP, VKEY_A, 0 }; |
| 28 KeyEvent keyev(native_event, false); | 28 KeyEvent keyev(native_event); |
| 29 EXPECT_TRUE(keyev.HasNativeEvent()); | 29 EXPECT_TRUE(keyev.HasNativeEvent()); |
| 30 #elif defined(USE_X11) | 30 #elif defined(USE_X11) |
| 31 ScopedXI2Event event; | 31 ScopedXI2Event event; |
| 32 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_A, 0); | 32 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_A, EF_NONE); |
| 33 KeyEvent keyev(event, false); | 33 KeyEvent keyev(event); |
| 34 EXPECT_TRUE(keyev.HasNativeEvent()); | 34 EXPECT_TRUE(keyev.HasNativeEvent()); |
| 35 #endif | 35 #endif |
| 36 } | 36 } |
| 37 | 37 |
| 38 TEST(EventTest, GetCharacter) { | 38 TEST(EventTest, GetCharacter) { |
| 39 // Check if Control+Enter returns 10. | 39 // Check if Control+Enter returns 10. |
| 40 KeyEvent keyev1(ET_KEY_PRESSED, VKEY_RETURN, EF_CONTROL_DOWN, false); | 40 KeyEvent keyev1(ET_KEY_PRESSED, VKEY_RETURN, EF_CONTROL_DOWN); |
| 41 EXPECT_EQ(10, keyev1.GetCharacter()); | 41 EXPECT_EQ(10, keyev1.GetCharacter()); |
| 42 // Check if Enter returns 13. | 42 // Check if Enter returns 13. |
| 43 KeyEvent keyev2(ET_KEY_PRESSED, VKEY_RETURN, 0, false); | 43 KeyEvent keyev2(ET_KEY_PRESSED, VKEY_RETURN, EF_NONE); |
| 44 EXPECT_EQ(13, keyev2.GetCharacter()); | 44 EXPECT_EQ(13, keyev2.GetCharacter()); |
| 45 | 45 |
| 46 #if defined(USE_X11) | 46 #if defined(USE_X11) |
| 47 // For X11, test the functions with native_event() as well. crbug.com/107837 | 47 // For X11, test the functions with native_event() as well. crbug.com/107837 |
| 48 ScopedXI2Event event; | 48 ScopedXI2Event event; |
| 49 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_RETURN, EF_CONTROL_DOWN); | 49 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_RETURN, EF_CONTROL_DOWN); |
| 50 KeyEvent keyev3(event, false); | 50 KeyEvent keyev3(event); |
| 51 EXPECT_EQ(10, keyev3.GetCharacter()); | 51 EXPECT_EQ(10, keyev3.GetCharacter()); |
| 52 | 52 |
| 53 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_RETURN, 0); | 53 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_RETURN, EF_NONE); |
| 54 KeyEvent keyev4(event, false); | 54 KeyEvent keyev4(event); |
| 55 EXPECT_EQ(13, keyev4.GetCharacter()); | 55 EXPECT_EQ(13, keyev4.GetCharacter()); |
| 56 #endif | 56 #endif |
| 57 } | 57 } |
| 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()); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 { VKEY_OEM_COMMA, EF_SHIFT_DOWN, '<' }, | 231 { VKEY_OEM_COMMA, EF_SHIFT_DOWN, '<' }, |
| 232 { VKEY_OEM_PERIOD, EF_CONTROL_DOWN, '\0' }, | 232 { VKEY_OEM_PERIOD, EF_CONTROL_DOWN, '\0' }, |
| 233 { VKEY_OEM_PERIOD, EF_SHIFT_DOWN, '>' }, | 233 { VKEY_OEM_PERIOD, EF_SHIFT_DOWN, '>' }, |
| 234 { VKEY_OEM_3, EF_CONTROL_DOWN, '\0' }, | 234 { VKEY_OEM_3, EF_CONTROL_DOWN, '\0' }, |
| 235 { VKEY_OEM_3, EF_SHIFT_DOWN, '~' }, | 235 { VKEY_OEM_3, EF_SHIFT_DOWN, '~' }, |
| 236 }; | 236 }; |
| 237 | 237 |
| 238 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestData); ++i) { | 238 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestData); ++i) { |
| 239 KeyEvent key(ET_KEY_PRESSED, | 239 KeyEvent key(ET_KEY_PRESSED, |
| 240 kTestData[i].key_code, | 240 kTestData[i].key_code, |
| 241 kTestData[i].flags, | 241 kTestData[i].flags); |
| 242 false); | |
| 243 EXPECT_EQ(kTestData[i].character, key.GetCharacter()) | 242 EXPECT_EQ(kTestData[i].character, key.GetCharacter()) |
| 244 << " Index:" << i << " key_code:" << kTestData[i].key_code; | 243 << " Index:" << i << " key_code:" << kTestData[i].key_code; |
| 245 } | 244 } |
| 246 } | 245 } |
| 247 | 246 |
| 248 TEST(EventTest, KeyEventDirectUnicode) { | 247 TEST(EventTest, KeyEventDirectUnicode) { |
| 249 KeyEvent key(ET_KEY_PRESSED, VKEY_UNKNOWN, EF_SHIFT_DOWN, false); | 248 KeyEvent key(0x1234U, ui::VKEY_UNKNOWN, ui::EF_NONE); |
| 250 key.set_character(0x1234U); | |
| 251 EXPECT_EQ(0x1234U, key.GetCharacter()); | 249 EXPECT_EQ(0x1234U, key.GetCharacter()); |
| 252 KeyEvent key2(ET_KEY_RELEASED, VKEY_UNKNOWN, EF_CONTROL_DOWN, false); | 250 EXPECT_EQ(ET_KEY_PRESSED, key.type()); |
| 253 key2.set_character(0x4321U); | 251 EXPECT_TRUE(key.is_char()); |
| 254 EXPECT_EQ(0x4321U, key2.GetCharacter()); | |
| 255 } | 252 } |
| 256 | 253 |
| 257 TEST(EventTest, NormalizeKeyEventFlags) { | 254 TEST(EventTest, NormalizeKeyEventFlags) { |
| 258 #if defined(USE_X11) | 255 #if defined(USE_X11) |
| 259 // Normalize flags when KeyEvent is created from XEvent. | 256 // Normalize flags when KeyEvent is created from XEvent. |
| 260 ScopedXI2Event event; | 257 ScopedXI2Event event; |
| 261 { | 258 { |
| 262 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_SHIFT, EF_SHIFT_DOWN); | 259 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_SHIFT, EF_SHIFT_DOWN); |
| 263 KeyEvent keyev(event, false); | 260 KeyEvent keyev(event); |
| 264 EXPECT_EQ(EF_SHIFT_DOWN, keyev.flags()); | 261 EXPECT_EQ(EF_SHIFT_DOWN, keyev.flags()); |
| 265 } | 262 } |
| 266 { | 263 { |
| 267 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_SHIFT, EF_SHIFT_DOWN); | 264 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_SHIFT, EF_SHIFT_DOWN); |
| 268 KeyEvent keyev(event, false); | 265 KeyEvent keyev(event); |
| 269 EXPECT_EQ(EF_NONE, keyev.flags()); | 266 EXPECT_EQ(EF_NONE, keyev.flags()); |
| 270 } | 267 } |
| 271 { | 268 { |
| 272 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, EF_CONTROL_DOWN); | 269 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, EF_CONTROL_DOWN); |
| 273 KeyEvent keyev(event, false); | 270 KeyEvent keyev(event); |
| 274 EXPECT_EQ(EF_CONTROL_DOWN, keyev.flags()); | 271 EXPECT_EQ(EF_CONTROL_DOWN, keyev.flags()); |
| 275 } | 272 } |
| 276 { | 273 { |
| 277 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_CONTROL, EF_CONTROL_DOWN); | 274 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_CONTROL, EF_CONTROL_DOWN); |
| 278 KeyEvent keyev(event, false); | 275 KeyEvent keyev(event); |
| 279 EXPECT_EQ(EF_NONE, keyev.flags()); | 276 EXPECT_EQ(EF_NONE, keyev.flags()); |
| 280 } | 277 } |
| 281 { | 278 { |
| 282 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_MENU, EF_ALT_DOWN); | 279 event.InitKeyEvent(ET_KEY_PRESSED, VKEY_MENU, EF_ALT_DOWN); |
| 283 KeyEvent keyev(event, false); | 280 KeyEvent keyev(event); |
| 284 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); | 281 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); |
| 285 } | 282 } |
| 286 { | 283 { |
| 287 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN); | 284 event.InitKeyEvent(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN); |
| 288 KeyEvent keyev(event, false); | 285 KeyEvent keyev(event); |
| 289 EXPECT_EQ(EF_NONE, keyev.flags()); | 286 EXPECT_EQ(EF_NONE, keyev.flags()); |
| 290 } | 287 } |
| 291 #endif | 288 #endif |
| 292 | 289 |
| 293 // Do not normalize flags for synthesized events without | 290 // Do not normalize flags for synthesized events without |
| 294 // KeyEvent::NormalizeFlags called explicitly. | 291 // KeyEvent::NormalizeFlags called explicitly. |
| 295 { | 292 { |
| 296 KeyEvent keyev(ET_KEY_PRESSED, VKEY_SHIFT, EF_SHIFT_DOWN, false); | 293 KeyEvent keyev(ET_KEY_PRESSED, VKEY_SHIFT, EF_SHIFT_DOWN); |
| 297 EXPECT_EQ(EF_SHIFT_DOWN, keyev.flags()); | 294 EXPECT_EQ(EF_SHIFT_DOWN, keyev.flags()); |
| 298 } | 295 } |
| 299 { | 296 { |
| 300 KeyEvent keyev(ET_KEY_RELEASED, VKEY_SHIFT, EF_SHIFT_DOWN, false); | 297 KeyEvent keyev(ET_KEY_RELEASED, VKEY_SHIFT, EF_SHIFT_DOWN); |
| 301 EXPECT_EQ(EF_SHIFT_DOWN, keyev.flags()); | 298 EXPECT_EQ(EF_SHIFT_DOWN, keyev.flags()); |
| 302 keyev.NormalizeFlags(); | 299 keyev.NormalizeFlags(); |
| 303 EXPECT_EQ(EF_NONE, keyev.flags()); | 300 EXPECT_EQ(EF_NONE, keyev.flags()); |
| 304 } | 301 } |
| 305 { | 302 { |
| 306 KeyEvent keyev(ET_KEY_PRESSED, VKEY_CONTROL, EF_CONTROL_DOWN, false); | 303 KeyEvent keyev(ET_KEY_PRESSED, VKEY_CONTROL, EF_CONTROL_DOWN); |
| 307 EXPECT_EQ(EF_CONTROL_DOWN, keyev.flags()); | 304 EXPECT_EQ(EF_CONTROL_DOWN, keyev.flags()); |
| 308 } | 305 } |
| 309 { | 306 { |
| 310 KeyEvent keyev(ET_KEY_RELEASED, VKEY_CONTROL, EF_CONTROL_DOWN, false); | 307 KeyEvent keyev(ET_KEY_RELEASED, VKEY_CONTROL, EF_CONTROL_DOWN); |
| 311 EXPECT_EQ(EF_CONTROL_DOWN, keyev.flags()); | 308 EXPECT_EQ(EF_CONTROL_DOWN, keyev.flags()); |
| 312 keyev.NormalizeFlags(); | 309 keyev.NormalizeFlags(); |
| 313 EXPECT_EQ(EF_NONE, keyev.flags()); | 310 EXPECT_EQ(EF_NONE, keyev.flags()); |
| 314 } | 311 } |
| 315 { | 312 { |
| 316 KeyEvent keyev(ET_KEY_PRESSED, VKEY_MENU, EF_ALT_DOWN, false); | 313 KeyEvent keyev(ET_KEY_PRESSED, VKEY_MENU, EF_ALT_DOWN); |
| 317 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); | 314 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); |
| 318 } | 315 } |
| 319 { | 316 { |
| 320 KeyEvent keyev(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN, false); | 317 KeyEvent keyev(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN); |
| 321 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); | 318 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); |
| 322 keyev.NormalizeFlags(); | 319 keyev.NormalizeFlags(); |
| 323 EXPECT_EQ(EF_NONE, keyev.flags()); | 320 EXPECT_EQ(EF_NONE, keyev.flags()); |
| 324 } | 321 } |
| 325 } | 322 } |
| 326 | 323 |
| 327 TEST(EventTest, KeyEventCopy) { | 324 TEST(EventTest, KeyEventCopy) { |
| 328 KeyEvent key(ET_KEY_PRESSED, VKEY_A, EF_NONE, false); | 325 KeyEvent key(ET_KEY_PRESSED, VKEY_A, EF_NONE); |
| 329 scoped_ptr<KeyEvent> copied_key(new KeyEvent(key)); | 326 scoped_ptr<KeyEvent> copied_key(new KeyEvent(key)); |
| 330 EXPECT_EQ(copied_key->type(), key.type()); | 327 EXPECT_EQ(copied_key->type(), key.type()); |
| 331 EXPECT_EQ(copied_key->key_code(), key.key_code()); | 328 EXPECT_EQ(copied_key->key_code(), key.key_code()); |
| 332 } | 329 } |
| 333 | 330 |
| 334 TEST(EventTest, KeyEventCode) { | 331 TEST(EventTest, KeyEventCode) { |
| 335 KeycodeConverter* conv = KeycodeConverter::GetInstance(); | 332 KeycodeConverter* conv = KeycodeConverter::GetInstance(); |
| 336 | 333 |
| 337 const char kCodeForSpace[] = "Space"; | 334 const char kCodeForSpace[] = "Space"; |
| 338 const uint16 kNativeCodeSpace = conv->CodeToNativeKeycode(kCodeForSpace); | 335 const uint16 kNativeCodeSpace = conv->CodeToNativeKeycode(kCodeForSpace); |
| 339 ASSERT_NE(conv->InvalidNativeKeycode(), kNativeCodeSpace); | 336 ASSERT_NE(conv->InvalidNativeKeycode(), kNativeCodeSpace); |
| 340 | 337 |
| 341 { | 338 { |
| 342 KeyEvent key(ET_KEY_PRESSED, VKEY_SPACE, kCodeForSpace, EF_NONE, false); | 339 KeyEvent key(ET_KEY_PRESSED, VKEY_SPACE, kCodeForSpace, EF_NONE); |
| 343 EXPECT_EQ(kCodeForSpace, key.code()); | 340 EXPECT_EQ(kCodeForSpace, key.code()); |
| 344 } | 341 } |
| 345 { | 342 { |
| 346 // Regardless the KeyEvent.key_code (VKEY_RETURN), code should be | 343 // Regardless the KeyEvent.key_code (VKEY_RETURN), code should be |
| 347 // the specified value. | 344 // the specified value. |
| 348 KeyEvent key(ET_KEY_PRESSED, VKEY_RETURN, kCodeForSpace, EF_NONE, false); | 345 KeyEvent key(ET_KEY_PRESSED, VKEY_RETURN, kCodeForSpace, EF_NONE); |
| 349 EXPECT_EQ(kCodeForSpace, key.code()); | 346 EXPECT_EQ(kCodeForSpace, key.code()); |
| 350 } | 347 } |
| 351 { | 348 { |
| 352 // If the synthetic event is initialized without code, it returns | 349 // If the synthetic event is initialized without code, it returns |
| 353 // an empty string. | 350 // an empty string. |
| 354 // TODO(komatsu): Fill a fallback value assuming the US keyboard layout. | 351 // TODO(komatsu): Fill a fallback value assuming the US keyboard layout. |
| 355 KeyEvent key(ET_KEY_PRESSED, VKEY_SPACE, EF_NONE, false); | 352 KeyEvent key(ET_KEY_PRESSED, VKEY_SPACE, EF_NONE); |
| 356 EXPECT_TRUE(key.code().empty()); | 353 EXPECT_TRUE(key.code().empty()); |
| 357 } | 354 } |
| 358 #if defined(USE_X11) | 355 #if defined(USE_X11) |
| 359 { | 356 { |
| 360 // KeyEvent converts from the native keycode (XKB) to the code. | 357 // KeyEvent converts from the native keycode (XKB) to the code. |
| 361 ScopedXI2Event xevent; | 358 ScopedXI2Event xevent; |
| 362 xevent.InitKeyEvent(ET_KEY_PRESSED, VKEY_SPACE, kNativeCodeSpace); | 359 xevent.InitKeyEvent(ET_KEY_PRESSED, VKEY_SPACE, kNativeCodeSpace); |
| 363 KeyEvent key(xevent, false); | 360 KeyEvent key(xevent); |
| 364 EXPECT_EQ(kCodeForSpace, key.code()); | 361 EXPECT_EQ(kCodeForSpace, key.code()); |
| 365 } | 362 } |
| 366 #endif // USE_X11 | 363 #endif // USE_X11 |
| 367 #if defined(OS_WIN) | 364 #if defined(OS_WIN) |
| 368 { | 365 { |
| 369 // Test a non extended key. | 366 // Test a non extended key. |
| 370 ASSERT_EQ((kNativeCodeSpace & 0xFF), kNativeCodeSpace); | 367 ASSERT_EQ((kNativeCodeSpace & 0xFF), kNativeCodeSpace); |
| 371 | 368 |
| 372 const LPARAM lParam = GetLParamFromScanCode(kNativeCodeSpace); | 369 const LPARAM lParam = GetLParamFromScanCode(kNativeCodeSpace); |
| 373 MSG native_event = { NULL, WM_KEYUP, VKEY_SPACE, lParam }; | 370 MSG native_event = { NULL, WM_KEYUP, VKEY_SPACE, lParam }; |
| 374 KeyEvent key(native_event, false); | 371 KeyEvent key(native_event); |
| 375 | 372 |
| 376 // KeyEvent converts from the native keycode (scan code) to the code. | 373 // KeyEvent converts from the native keycode (scan code) to the code. |
| 377 EXPECT_EQ(kCodeForSpace, key.code()); | 374 EXPECT_EQ(kCodeForSpace, key.code()); |
| 378 } | 375 } |
| 379 { | 376 { |
| 380 const char kCodeForHome[] = "Home"; | 377 const char kCodeForHome[] = "Home"; |
| 381 const uint16 kNativeCodeHome = 0xe047; | 378 const uint16 kNativeCodeHome = 0xe047; |
| 382 | 379 |
| 383 // 'Home' is an extended key with 0xe000 bits. | 380 // 'Home' is an extended key with 0xe000 bits. |
| 384 ASSERT_NE((kNativeCodeHome & 0xFF), kNativeCodeHome); | 381 ASSERT_NE((kNativeCodeHome & 0xFF), kNativeCodeHome); |
| 385 const LPARAM lParam = GetLParamFromScanCode(kNativeCodeHome); | 382 const LPARAM lParam = GetLParamFromScanCode(kNativeCodeHome); |
| 386 | 383 |
| 387 MSG native_event = { NULL, WM_KEYUP, VKEY_HOME, lParam }; | 384 MSG native_event = { NULL, WM_KEYUP, VKEY_HOME, lParam }; |
| 388 KeyEvent key(native_event, false); | 385 KeyEvent key(native_event); |
| 389 | 386 |
| 390 // KeyEvent converts from the native keycode (scan code) to the code. | 387 // KeyEvent converts from the native keycode (scan code) to the code. |
| 391 EXPECT_EQ(kCodeForHome, key.code()); | 388 EXPECT_EQ(kCodeForHome, key.code()); |
| 392 } | 389 } |
| 393 #endif // OS_WIN | 390 #endif // OS_WIN |
| 394 } | 391 } |
| 395 | 392 |
| 396 #if defined(USE_X11) || defined(OS_WIN) | 393 #if defined(USE_X11) || defined(OS_WIN) |
| 397 TEST(EventTest, AutoRepeat) { | 394 TEST(EventTest, AutoRepeat) { |
| 398 KeycodeConverter* conv = KeycodeConverter::GetInstance(); | 395 KeycodeConverter* conv = KeycodeConverter::GetInstance(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 412 // IBUS-GTK uses the mask (1 << 25) to detect reposted event. | 409 // IBUS-GTK uses the mask (1 << 25) to detect reposted event. |
| 413 static_cast<XEvent*>(native_event_a_pressed_nonstandard_state)->xkey.state |= | 410 static_cast<XEvent*>(native_event_a_pressed_nonstandard_state)->xkey.state |= |
| 414 1 << 25; | 411 1 << 25; |
| 415 #elif defined(OS_WIN) | 412 #elif defined(OS_WIN) |
| 416 const LPARAM lParam_a = GetLParamFromScanCode(kNativeCodeA); | 413 const LPARAM lParam_a = GetLParamFromScanCode(kNativeCodeA); |
| 417 const LPARAM lParam_b = GetLParamFromScanCode(kNativeCodeB); | 414 const LPARAM lParam_b = GetLParamFromScanCode(kNativeCodeB); |
| 418 MSG native_event_a_pressed = { NULL, WM_KEYDOWN, VKEY_A, lParam_a }; | 415 MSG native_event_a_pressed = { NULL, WM_KEYDOWN, VKEY_A, lParam_a }; |
| 419 MSG native_event_a_released = { NULL, WM_KEYUP, VKEY_A, lParam_a }; | 416 MSG native_event_a_released = { NULL, WM_KEYUP, VKEY_A, lParam_a }; |
| 420 MSG native_event_b_pressed = { NULL, WM_KEYUP, VKEY_B, lParam_b }; | 417 MSG native_event_b_pressed = { NULL, WM_KEYUP, VKEY_B, lParam_b }; |
| 421 #endif | 418 #endif |
| 422 KeyEvent key_a1(native_event_a_pressed, false); | 419 KeyEvent key_a1(native_event_a_pressed); |
| 423 EXPECT_FALSE(key_a1.IsRepeat()); | 420 EXPECT_FALSE(key_a1.IsRepeat()); |
| 424 KeyEvent key_a1_released(native_event_a_released, false); | 421 KeyEvent key_a1_released(native_event_a_released); |
| 425 EXPECT_FALSE(key_a1_released.IsRepeat()); | 422 EXPECT_FALSE(key_a1_released.IsRepeat()); |
| 426 | 423 |
| 427 KeyEvent key_a2(native_event_a_pressed, false); | 424 KeyEvent key_a2(native_event_a_pressed); |
| 428 EXPECT_FALSE(key_a2.IsRepeat()); | 425 EXPECT_FALSE(key_a2.IsRepeat()); |
| 429 KeyEvent key_a2_repeated(native_event_a_pressed, false); | 426 KeyEvent key_a2_repeated(native_event_a_pressed); |
| 430 EXPECT_TRUE(key_a2_repeated.IsRepeat()); | 427 EXPECT_TRUE(key_a2_repeated.IsRepeat()); |
| 431 KeyEvent key_a2_released(native_event_a_released, false); | 428 KeyEvent key_a2_released(native_event_a_released); |
| 432 EXPECT_FALSE(key_a2_released.IsRepeat()); | 429 EXPECT_FALSE(key_a2_released.IsRepeat()); |
| 433 | 430 |
| 434 KeyEvent key_a3(native_event_a_pressed, false); | 431 KeyEvent key_a3(native_event_a_pressed); |
| 435 EXPECT_FALSE(key_a3.IsRepeat()); | 432 EXPECT_FALSE(key_a3.IsRepeat()); |
| 436 KeyEvent key_b(native_event_b_pressed, false); | 433 KeyEvent key_b(native_event_b_pressed); |
| 437 EXPECT_FALSE(key_b.IsRepeat()); | 434 EXPECT_FALSE(key_b.IsRepeat()); |
| 438 KeyEvent key_a3_again(native_event_a_pressed, false); | 435 KeyEvent key_a3_again(native_event_a_pressed); |
| 439 EXPECT_FALSE(key_a3_again.IsRepeat()); | 436 EXPECT_FALSE(key_a3_again.IsRepeat()); |
| 440 KeyEvent key_a3_repeated(native_event_a_pressed, false); | 437 KeyEvent key_a3_repeated(native_event_a_pressed); |
| 441 EXPECT_TRUE(key_a3_repeated.IsRepeat()); | 438 EXPECT_TRUE(key_a3_repeated.IsRepeat()); |
| 442 KeyEvent key_a3_repeated2(native_event_a_pressed, false); | 439 KeyEvent key_a3_repeated2(native_event_a_pressed); |
| 443 EXPECT_TRUE(key_a3_repeated2.IsRepeat()); | 440 EXPECT_TRUE(key_a3_repeated2.IsRepeat()); |
| 444 KeyEvent key_a3_released(native_event_a_released, false); | 441 KeyEvent key_a3_released(native_event_a_released); |
| 445 EXPECT_FALSE(key_a3_released.IsRepeat()); | 442 EXPECT_FALSE(key_a3_released.IsRepeat()); |
| 446 | 443 |
| 447 #if defined(USE_X11) | 444 #if defined(USE_X11) |
| 448 KeyEvent key_a4_pressed(native_event_a_pressed, false); | 445 KeyEvent key_a4_pressed(native_event_a_pressed); |
| 449 EXPECT_FALSE(key_a4_pressed.IsRepeat()); | 446 EXPECT_FALSE(key_a4_pressed.IsRepeat()); |
| 450 | 447 |
| 451 KeyEvent key_a4_pressed_nonstandard_state( | 448 KeyEvent key_a4_pressed_nonstandard_state( |
| 452 native_event_a_pressed_nonstandard_state, false); | 449 native_event_a_pressed_nonstandard_state); |
| 453 EXPECT_FALSE(key_a4_pressed_nonstandard_state.IsRepeat()); | 450 EXPECT_FALSE(key_a4_pressed_nonstandard_state.IsRepeat()); |
| 454 #endif | 451 #endif |
| 455 } | 452 } |
| 456 #endif // USE_X11 || OS_WIN | 453 #endif // USE_X11 || OS_WIN |
| 457 | 454 |
| 458 } // namespace ui | 455 } // namespace ui |
| OLD | NEW |