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 |