OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ash/sticky_keys/sticky_keys_controller.h" | 5 #include "ash/sticky_keys/sticky_keys_controller.h" |
6 | 6 |
7 #include <X11/Xlib.h> | 7 #include <X11/Xlib.h> |
8 #undef None | 8 #undef None |
9 #undef Bool | 9 #undef Bool |
10 #undef RootWindow | 10 #undef RootWindow |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 286 |
287 DISALLOW_COPY_AND_ASSIGN(StickyKeysTest); | 287 DISALLOW_COPY_AND_ASSIGN(StickyKeysTest); |
288 }; | 288 }; |
289 | 289 |
290 TEST_F(StickyKeysTest, BasicOneshotScenarioTest) { | 290 TEST_F(StickyKeysTest, BasicOneshotScenarioTest) { |
291 scoped_ptr<ui::KeyEvent> ev; | 291 scoped_ptr<ui::KeyEvent> ev; |
292 MockStickyKeysHandlerDelegate* mock_delegate = | 292 MockStickyKeysHandlerDelegate* mock_delegate = |
293 new MockStickyKeysHandlerDelegate(this); | 293 new MockStickyKeysHandlerDelegate(this); |
294 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); | 294 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); |
295 | 295 |
296 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 296 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
297 | 297 |
298 // By typing Shift key, internal state become ENABLED. | 298 // By typing Shift key, internal state become ENABLED. |
299 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); | 299 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); |
300 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 300 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
301 | 301 |
302 ev.reset(GenerateKey(true, ui::VKEY_A)); | 302 ev.reset(GenerateKey(true, ui::VKEY_A)); |
303 sticky_key.HandleKeyEvent(ev.get()); | 303 sticky_key.HandleKeyEvent(ev.get()); |
304 | 304 |
305 // Next keyboard event is shift modified. | 305 // Next keyboard event is shift modified. |
306 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); | 306 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); |
307 | 307 |
308 ev.reset(GenerateKey(false, ui::VKEY_A)); | 308 ev.reset(GenerateKey(false, ui::VKEY_A)); |
309 sticky_key.HandleKeyEvent(ev.get()); | 309 sticky_key.HandleKeyEvent(ev.get()); |
310 | 310 |
311 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 311 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
312 // Making sure Shift up keyboard event is dispatched. | 312 // Making sure Shift up keyboard event is dispatched. |
313 ASSERT_EQ(2U, mock_delegate->GetEventCount()); | 313 ASSERT_EQ(2U, mock_delegate->GetEventCount()); |
314 EXPECT_EQ(ui::ET_KEY_PRESSED, mock_delegate->GetEvent(0)->type()); | 314 EXPECT_EQ(ui::ET_KEY_PRESSED, mock_delegate->GetEvent(0)->type()); |
315 EXPECT_EQ(ui::VKEY_A, | 315 EXPECT_EQ(ui::VKEY_A, |
316 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(0)) | 316 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(0)) |
317 ->key_code()); | 317 ->key_code()); |
318 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); | 318 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); |
319 EXPECT_EQ(ui::VKEY_SHIFT, | 319 EXPECT_EQ(ui::VKEY_SHIFT, |
320 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) | 320 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) |
321 ->key_code()); | 321 ->key_code()); |
322 | 322 |
323 // Enabled state is one shot, so next key event should not be shift modified. | 323 // Enabled state is one shot, so next key event should not be shift modified. |
324 ev.reset(GenerateKey(true, ui::VKEY_A)); | 324 ev.reset(GenerateKey(true, ui::VKEY_A)); |
325 sticky_key.HandleKeyEvent(ev.get()); | 325 sticky_key.HandleKeyEvent(ev.get()); |
326 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN); | 326 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN); |
327 | 327 |
328 ev.reset(GenerateKey(false, ui::VKEY_A)); | 328 ev.reset(GenerateKey(false, ui::VKEY_A)); |
329 sticky_key.HandleKeyEvent(ev.get()); | 329 sticky_key.HandleKeyEvent(ev.get()); |
330 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN); | 330 EXPECT_FALSE(ev->flags() & ui::EF_SHIFT_DOWN); |
331 } | 331 } |
332 | 332 |
333 TEST_F(StickyKeysTest, BasicLockedScenarioTest) { | 333 TEST_F(StickyKeysTest, BasicLockedScenarioTest) { |
334 scoped_ptr<ui::KeyEvent> ev; | 334 scoped_ptr<ui::KeyEvent> ev; |
335 MockStickyKeysHandlerDelegate* mock_delegate = | 335 MockStickyKeysHandlerDelegate* mock_delegate = |
336 new MockStickyKeysHandlerDelegate(this); | 336 new MockStickyKeysHandlerDelegate(this); |
337 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); | 337 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); |
338 | 338 |
339 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 339 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
340 | 340 |
341 // By typing shift key, internal state become ENABLED. | 341 // By typing shift key, internal state become ENABLED. |
342 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); | 342 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); |
343 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 343 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
344 | 344 |
345 // By typing shift key again, internal state become LOCKED. | 345 // By typing shift key again, internal state become LOCKED. |
346 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); | 346 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); |
347 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 347 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
348 | 348 |
349 // All keyboard events including keyUp become shift modified. | 349 // All keyboard events including keyUp become shift modified. |
350 ev.reset(GenerateKey(true, ui::VKEY_A)); | 350 ev.reset(GenerateKey(true, ui::VKEY_A)); |
351 sticky_key.HandleKeyEvent(ev.get()); | 351 sticky_key.HandleKeyEvent(ev.get()); |
352 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); | 352 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); |
353 | 353 |
354 ev.reset(GenerateKey(false, ui::VKEY_A)); | 354 ev.reset(GenerateKey(false, ui::VKEY_A)); |
355 sticky_key.HandleKeyEvent(ev.get()); | 355 sticky_key.HandleKeyEvent(ev.get()); |
356 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); | 356 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); |
357 | 357 |
358 // Locked state keeps after normal keyboard event. | 358 // Locked state keeps after normal keyboard event. |
359 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 359 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
360 | 360 |
361 ev.reset(GenerateKey(true, ui::VKEY_B)); | 361 ev.reset(GenerateKey(true, ui::VKEY_B)); |
362 sticky_key.HandleKeyEvent(ev.get()); | 362 sticky_key.HandleKeyEvent(ev.get()); |
363 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); | 363 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); |
364 | 364 |
365 ev.reset(GenerateKey(false, ui::VKEY_B)); | 365 ev.reset(GenerateKey(false, ui::VKEY_B)); |
366 sticky_key.HandleKeyEvent(ev.get()); | 366 sticky_key.HandleKeyEvent(ev.get()); |
367 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); | 367 EXPECT_TRUE(ev->flags() & ui::EF_SHIFT_DOWN); |
368 | 368 |
369 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 369 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
370 | 370 |
371 // By typing shift key again, internal state become back to DISABLED. | 371 // By typing shift key again, internal state become back to DISABLED. |
372 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); | 372 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); |
373 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 373 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
374 } | 374 } |
375 | 375 |
376 TEST_F(StickyKeysTest, NonTargetModifierTest) { | 376 TEST_F(StickyKeysTest, NonTargetModifierTest) { |
377 scoped_ptr<ui::KeyEvent> ev; | 377 scoped_ptr<ui::KeyEvent> ev; |
378 MockStickyKeysHandlerDelegate* mock_delegate = | 378 MockStickyKeysHandlerDelegate* mock_delegate = |
379 new MockStickyKeysHandlerDelegate(this); | 379 new MockStickyKeysHandlerDelegate(this); |
380 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); | 380 StickyKeysHandler sticky_key(ui::EF_SHIFT_DOWN, mock_delegate); |
381 | 381 |
382 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 382 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
383 | 383 |
384 // Non target modifier key does not affect internal state | 384 // Non target modifier key does not affect internal state |
385 ev.reset(GenerateKey(true, ui::VKEY_MENU)); | 385 ev.reset(GenerateKey(true, ui::VKEY_MENU)); |
386 sticky_key.HandleKeyEvent(ev.get()); | 386 sticky_key.HandleKeyEvent(ev.get()); |
387 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 387 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
388 | 388 |
389 ev.reset(GenerateKey(false, ui::VKEY_MENU)); | 389 ev.reset(GenerateKey(false, ui::VKEY_MENU)); |
390 sticky_key.HandleKeyEvent(ev.get()); | 390 sticky_key.HandleKeyEvent(ev.get()); |
391 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 391 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
392 | 392 |
393 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); | 393 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); |
394 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 394 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
395 | 395 |
396 // Non target modifier key does not affect internal state | 396 // Non target modifier key does not affect internal state |
397 ev.reset(GenerateKey(true, ui::VKEY_MENU)); | 397 ev.reset(GenerateKey(true, ui::VKEY_MENU)); |
398 sticky_key.HandleKeyEvent(ev.get()); | 398 sticky_key.HandleKeyEvent(ev.get()); |
399 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 399 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
400 | 400 |
401 ev.reset(GenerateKey(false, ui::VKEY_MENU)); | 401 ev.reset(GenerateKey(false, ui::VKEY_MENU)); |
402 sticky_key.HandleKeyEvent(ev.get()); | 402 sticky_key.HandleKeyEvent(ev.get()); |
403 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 403 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
404 | 404 |
405 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); | 405 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_SHIFT); |
406 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 406 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
407 | 407 |
408 // Non target modifier key does not affect internal state | 408 // Non target modifier key does not affect internal state |
409 ev.reset(GenerateKey(true, ui::VKEY_MENU)); | 409 ev.reset(GenerateKey(true, ui::VKEY_MENU)); |
410 sticky_key.HandleKeyEvent(ev.get()); | 410 sticky_key.HandleKeyEvent(ev.get()); |
411 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 411 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
412 | 412 |
413 ev.reset(GenerateKey(false, ui::VKEY_MENU)); | 413 ev.reset(GenerateKey(false, ui::VKEY_MENU)); |
414 sticky_key.HandleKeyEvent(ev.get()); | 414 sticky_key.HandleKeyEvent(ev.get()); |
415 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 415 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
416 } | 416 } |
417 | 417 |
418 TEST_F(StickyKeysTest, NormalShortcutTest) { | 418 TEST_F(StickyKeysTest, NormalShortcutTest) { |
419 // Sticky keys should not be enabled if we perform a normal shortcut. | 419 // Sticky keys should not be enabled if we perform a normal shortcut. |
420 scoped_ptr<ui::KeyEvent> ev; | 420 scoped_ptr<ui::KeyEvent> ev; |
421 MockStickyKeysHandlerDelegate* mock_delegate = | 421 MockStickyKeysHandlerDelegate* mock_delegate = |
422 new MockStickyKeysHandlerDelegate(this); | 422 new MockStickyKeysHandlerDelegate(this); |
423 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 423 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
424 | 424 |
425 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 425 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
426 | 426 |
427 // Perform ctrl+n shortcut. | 427 // Perform ctrl+n shortcut. |
428 ev.reset(GenerateKey(true, ui::VKEY_CONTROL)); | 428 ev.reset(GenerateKey(true, ui::VKEY_CONTROL)); |
429 sticky_key.HandleKeyEvent(ev.get()); | 429 sticky_key.HandleKeyEvent(ev.get()); |
430 ev.reset(GenerateKey(true, ui::VKEY_N)); | 430 ev.reset(GenerateKey(true, ui::VKEY_N)); |
431 sticky_key.HandleKeyEvent(ev.get()); | 431 sticky_key.HandleKeyEvent(ev.get()); |
432 ev.reset(GenerateKey(false, ui::VKEY_N)); | 432 ev.reset(GenerateKey(false, ui::VKEY_N)); |
433 sticky_key.HandleKeyEvent(ev.get()); | 433 sticky_key.HandleKeyEvent(ev.get()); |
434 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 434 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
435 | 435 |
436 // Sticky keys should not be enabled afterwards. | 436 // Sticky keys should not be enabled afterwards. |
437 ev.reset(GenerateKey(false, ui::VKEY_CONTROL)); | 437 ev.reset(GenerateKey(false, ui::VKEY_CONTROL)); |
438 sticky_key.HandleKeyEvent(ev.get()); | 438 sticky_key.HandleKeyEvent(ev.get()); |
439 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 439 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
440 } | 440 } |
441 | 441 |
442 TEST_F(StickyKeysTest, NormalModifiedClickTest) { | 442 TEST_F(StickyKeysTest, NormalModifiedClickTest) { |
443 scoped_ptr<ui::KeyEvent> kev; | 443 scoped_ptr<ui::KeyEvent> kev; |
444 scoped_ptr<ui::MouseEvent> mev; | 444 scoped_ptr<ui::MouseEvent> mev; |
445 MockStickyKeysHandlerDelegate* mock_delegate = | 445 MockStickyKeysHandlerDelegate* mock_delegate = |
446 new MockStickyKeysHandlerDelegate(this); | 446 new MockStickyKeysHandlerDelegate(this); |
447 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 447 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
448 | 448 |
449 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 449 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
450 | 450 |
451 // Perform ctrl+click. | 451 // Perform ctrl+click. |
452 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); | 452 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); |
453 sticky_key.HandleKeyEvent(kev.get()); | 453 sticky_key.HandleKeyEvent(kev.get()); |
454 mev.reset(GenerateMouseEvent(true)); | 454 mev.reset(GenerateMouseEvent(true)); |
455 sticky_key.HandleMouseEvent(mev.get()); | 455 sticky_key.HandleMouseEvent(mev.get()); |
456 mev.reset(GenerateMouseEvent(false)); | 456 mev.reset(GenerateMouseEvent(false)); |
457 sticky_key.HandleMouseEvent(mev.get()); | 457 sticky_key.HandleMouseEvent(mev.get()); |
458 | 458 |
459 // Sticky keys should not be enabled afterwards. | 459 // Sticky keys should not be enabled afterwards. |
460 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); | 460 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); |
461 sticky_key.HandleKeyEvent(kev.get()); | 461 sticky_key.HandleKeyEvent(kev.get()); |
462 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 462 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
463 } | 463 } |
464 | 464 |
465 TEST_F(StickyKeysTest, MouseMovedModifierTest) { | 465 TEST_F(StickyKeysTest, MouseMovedModifierTest) { |
466 scoped_ptr<ui::KeyEvent> kev; | 466 scoped_ptr<ui::KeyEvent> kev; |
467 scoped_ptr<ui::MouseEvent> mev; | 467 scoped_ptr<ui::MouseEvent> mev; |
468 MockStickyKeysHandlerDelegate* mock_delegate = | 468 MockStickyKeysHandlerDelegate* mock_delegate = |
469 new MockStickyKeysHandlerDelegate(this); | 469 new MockStickyKeysHandlerDelegate(this); |
470 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 470 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
471 | 471 |
472 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 472 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
473 | 473 |
474 // Press ctrl and handle mouse move events. | 474 // Press ctrl and handle mouse move events. |
475 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); | 475 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); |
476 sticky_key.HandleKeyEvent(kev.get()); | 476 sticky_key.HandleKeyEvent(kev.get()); |
477 mev.reset(GenerateSynthesizedMouseEvent(0, 0)); | 477 mev.reset(GenerateSynthesizedMouseEvent(0, 0)); |
478 sticky_key.HandleMouseEvent(mev.get()); | 478 sticky_key.HandleMouseEvent(mev.get()); |
479 mev.reset(GenerateSynthesizedMouseEvent(100, 100)); | 479 mev.reset(GenerateSynthesizedMouseEvent(100, 100)); |
480 sticky_key.HandleMouseEvent(mev.get()); | 480 sticky_key.HandleMouseEvent(mev.get()); |
481 | 481 |
482 // Sticky keys should be enabled afterwards. | 482 // Sticky keys should be enabled afterwards. |
483 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); | 483 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); |
484 sticky_key.HandleKeyEvent(kev.get()); | 484 sticky_key.HandleKeyEvent(kev.get()); |
485 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 485 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
486 } | 486 } |
487 | 487 |
488 TEST_F(StickyKeysTest, NormalModifiedScrollTest) { | 488 TEST_F(StickyKeysTest, NormalModifiedScrollTest) { |
489 ui::SetUpScrollDeviceForTest(kScrollDeviceId); | 489 ui::SetUpScrollDeviceForTest(kScrollDeviceId); |
490 | 490 |
491 scoped_ptr<ui::KeyEvent> kev; | 491 scoped_ptr<ui::KeyEvent> kev; |
492 scoped_ptr<ui::ScrollEvent> sev; | 492 scoped_ptr<ui::ScrollEvent> sev; |
493 MockStickyKeysHandlerDelegate* mock_delegate = | 493 MockStickyKeysHandlerDelegate* mock_delegate = |
494 new MockStickyKeysHandlerDelegate(this); | 494 new MockStickyKeysHandlerDelegate(this); |
495 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 495 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
496 | 496 |
497 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 497 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
498 | 498 |
499 // Perform ctrl+scroll. | 499 // Perform ctrl+scroll. |
500 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); | 500 kev.reset(GenerateKey(true, ui::VKEY_CONTROL)); |
501 sev.reset(GenerateFlingScrollEvent(0, true)); | 501 sev.reset(GenerateFlingScrollEvent(0, true)); |
502 sticky_key.HandleScrollEvent(sev.get()); | 502 sticky_key.HandleScrollEvent(sev.get()); |
503 sev.reset(GenerateScrollEvent(10)); | 503 sev.reset(GenerateScrollEvent(10)); |
504 sticky_key.HandleScrollEvent(sev.get()); | 504 sticky_key.HandleScrollEvent(sev.get()); |
505 sev.reset(GenerateFlingScrollEvent(10, false)); | 505 sev.reset(GenerateFlingScrollEvent(10, false)); |
506 sticky_key.HandleScrollEvent(sev.get()); | 506 sticky_key.HandleScrollEvent(sev.get()); |
507 | 507 |
508 // Sticky keys should not be enabled afterwards. | 508 // Sticky keys should not be enabled afterwards. |
509 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); | 509 kev.reset(GenerateKey(false, ui::VKEY_CONTROL)); |
510 sticky_key.HandleKeyEvent(kev.get()); | 510 sticky_key.HandleKeyEvent(kev.get()); |
511 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 511 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
512 } | 512 } |
513 | 513 |
514 TEST_F(StickyKeysTest, MouseEventOneshot) { | 514 TEST_F(StickyKeysTest, MouseEventOneshot) { |
515 scoped_ptr<ui::MouseEvent> ev; | 515 scoped_ptr<ui::MouseEvent> ev; |
516 scoped_ptr<ui::KeyEvent> kev; | 516 scoped_ptr<ui::KeyEvent> kev; |
517 MockStickyKeysHandlerDelegate* mock_delegate = | 517 MockStickyKeysHandlerDelegate* mock_delegate = |
518 new MockStickyKeysHandlerDelegate(this); | 518 new MockStickyKeysHandlerDelegate(this); |
519 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 519 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
520 | 520 |
521 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 521 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
522 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 522 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
523 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 523 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
524 | 524 |
525 // We should still be in the ENABLED state until we get the mouse | 525 // We should still be in the ENABLED state until we get the mouse |
526 // release event. | 526 // release event. |
527 ev.reset(GenerateMouseEvent(true)); | 527 ev.reset(GenerateMouseEvent(true)); |
528 sticky_key.HandleMouseEvent(ev.get()); | 528 sticky_key.HandleMouseEvent(ev.get()); |
529 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 529 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
530 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 530 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
531 | 531 |
532 ev.reset(GenerateMouseEvent(false)); | 532 ev.reset(GenerateMouseEvent(false)); |
533 sticky_key.HandleMouseEvent(ev.get()); | 533 sticky_key.HandleMouseEvent(ev.get()); |
534 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 534 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
535 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 535 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
536 | 536 |
537 // Making sure modifier key release event is dispatched in the right order. | 537 // Making sure modifier key release event is dispatched in the right order. |
538 ASSERT_EQ(2u, mock_delegate->GetEventCount()); | 538 ASSERT_EQ(2u, mock_delegate->GetEventCount()); |
539 EXPECT_EQ(ui::ET_MOUSE_RELEASED, mock_delegate->GetEvent(0)->type()); | 539 EXPECT_EQ(ui::ET_MOUSE_RELEASED, mock_delegate->GetEvent(0)->type()); |
540 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); | 540 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); |
541 EXPECT_EQ(ui::VKEY_CONTROL, | 541 EXPECT_EQ(ui::VKEY_CONTROL, |
542 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) | 542 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) |
543 ->key_code()); | 543 ->key_code()); |
544 | 544 |
545 // Enabled state is one shot, so next click should not be control modified. | 545 // Enabled state is one shot, so next click should not be control modified. |
546 ev.reset(GenerateMouseEvent(true)); | 546 ev.reset(GenerateMouseEvent(true)); |
547 sticky_key.HandleMouseEvent(ev.get()); | 547 sticky_key.HandleMouseEvent(ev.get()); |
548 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); | 548 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); |
549 | 549 |
550 ev.reset(GenerateMouseEvent(false)); | 550 ev.reset(GenerateMouseEvent(false)); |
551 sticky_key.HandleMouseEvent(ev.get()); | 551 sticky_key.HandleMouseEvent(ev.get()); |
552 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); | 552 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); |
553 } | 553 } |
554 | 554 |
555 TEST_F(StickyKeysTest, MouseEventLocked) { | 555 TEST_F(StickyKeysTest, MouseEventLocked) { |
556 scoped_ptr<ui::MouseEvent> ev; | 556 scoped_ptr<ui::MouseEvent> ev; |
557 scoped_ptr<ui::KeyEvent> kev; | 557 scoped_ptr<ui::KeyEvent> kev; |
558 MockStickyKeysHandlerDelegate* mock_delegate = | 558 MockStickyKeysHandlerDelegate* mock_delegate = |
559 new MockStickyKeysHandlerDelegate(this); | 559 new MockStickyKeysHandlerDelegate(this); |
560 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 560 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
561 | 561 |
562 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 562 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
563 | 563 |
564 // Pressing modifier key twice should make us enter lock state. | 564 // Pressing modifier key twice should make us enter lock state. |
565 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 565 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
566 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 566 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
567 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 567 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
568 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 568 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
569 | 569 |
570 // Mouse events should not disable locked mode. | 570 // Mouse events should not disable locked mode. |
571 for (int i = 0; i < 3; ++i) { | 571 for (int i = 0; i < 3; ++i) { |
572 ev.reset(GenerateMouseEvent(true)); | 572 ev.reset(GenerateMouseEvent(true)); |
573 sticky_key.HandleMouseEvent(ev.get()); | 573 sticky_key.HandleMouseEvent(ev.get()); |
574 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 574 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
575 ev.reset(GenerateMouseEvent(false)); | 575 ev.reset(GenerateMouseEvent(false)); |
576 sticky_key.HandleMouseEvent(ev.get()); | 576 sticky_key.HandleMouseEvent(ev.get()); |
577 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 577 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
578 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 578 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
579 } | 579 } |
580 | 580 |
581 // Test with mouse wheel. | 581 // Test with mouse wheel. |
582 for (int i = 0; i < 3; ++i) { | 582 for (int i = 0; i < 3; ++i) { |
583 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); | 583 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); |
584 sticky_key.HandleMouseEvent(ev.get()); | 584 sticky_key.HandleMouseEvent(ev.get()); |
585 ev.reset(GenerateMouseWheelEvent(-ui::MouseWheelEvent::kWheelDelta)); | 585 ev.reset(GenerateMouseWheelEvent(-ui::MouseWheelEvent::kWheelDelta)); |
586 sticky_key.HandleMouseEvent(ev.get()); | 586 sticky_key.HandleMouseEvent(ev.get()); |
587 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 587 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
588 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 588 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
589 } | 589 } |
590 | 590 |
591 // Test mixed case with mouse events and key events. | 591 // Test mixed case with mouse events and key events. |
592 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); | 592 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); |
593 sticky_key.HandleMouseEvent(ev.get()); | 593 sticky_key.HandleMouseEvent(ev.get()); |
594 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 594 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
595 kev.reset(GenerateKey(true, ui::VKEY_N)); | 595 kev.reset(GenerateKey(true, ui::VKEY_N)); |
596 sticky_key.HandleKeyEvent(kev.get()); | 596 sticky_key.HandleKeyEvent(kev.get()); |
597 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); | 597 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); |
598 kev.reset(GenerateKey(false, ui::VKEY_N)); | 598 kev.reset(GenerateKey(false, ui::VKEY_N)); |
599 sticky_key.HandleKeyEvent(kev.get()); | 599 sticky_key.HandleKeyEvent(kev.get()); |
600 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); | 600 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); |
601 | 601 |
602 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 602 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
603 } | 603 } |
604 | 604 |
605 TEST_F(StickyKeysTest, ScrollEventOneshot) { | 605 TEST_F(StickyKeysTest, ScrollEventOneshot) { |
606 ui::SetUpScrollDeviceForTest(kScrollDeviceId); | 606 ui::SetUpScrollDeviceForTest(kScrollDeviceId); |
607 // Disable Australlian scrolling. | 607 // Disable Australlian scrolling. |
608 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); | 608 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); |
609 | 609 |
610 scoped_ptr<ui::ScrollEvent> ev; | 610 scoped_ptr<ui::ScrollEvent> ev; |
611 scoped_ptr<ui::KeyEvent> kev; | 611 scoped_ptr<ui::KeyEvent> kev; |
612 MockStickyKeysHandlerDelegate* mock_delegate = | 612 MockStickyKeysHandlerDelegate* mock_delegate = |
613 new MockStickyKeysHandlerDelegate(this); | 613 new MockStickyKeysHandlerDelegate(this); |
614 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 614 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
615 | 615 |
616 int scroll_deltas[] = {-10, 10}; | 616 int scroll_deltas[] = {-10, 10}; |
617 for (int i = 0; i < 2; ++i) { | 617 for (int i = 0; i < 2; ++i) { |
618 mock_delegate->ClearEvents(); | 618 mock_delegate->ClearEvents(); |
619 | 619 |
620 // Enable sticky keys. | 620 // Enable sticky keys. |
621 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 621 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
622 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 622 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
623 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 623 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
624 | 624 |
625 // Test a scroll sequence. Sticky keys should only be disabled at the end | 625 // Test a scroll sequence. Sticky keys should only be disabled at the end |
626 // of the scroll sequence. Fling cancel event starts the scroll sequence. | 626 // of the scroll sequence. Fling cancel event starts the scroll sequence. |
627 ev.reset(GenerateFlingScrollEvent(0, true)); | 627 ev.reset(GenerateFlingScrollEvent(0, true)); |
628 sticky_key.HandleScrollEvent(ev.get()); | 628 sticky_key.HandleScrollEvent(ev.get()); |
629 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 629 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
630 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 630 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
631 | 631 |
632 // Scrolls should all be modified but not disable sticky keys. | 632 // Scrolls should all be modified but not disable sticky keys. |
633 for (int j = 0; j < 3; ++j) { | 633 for (int j = 0; j < 3; ++j) { |
634 ev.reset(GenerateScrollEvent(scroll_deltas[i])); | 634 ev.reset(GenerateScrollEvent(scroll_deltas[i])); |
635 sticky_key.HandleScrollEvent(ev.get()); | 635 sticky_key.HandleScrollEvent(ev.get()); |
636 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 636 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
637 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 637 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
638 } | 638 } |
639 | 639 |
640 // Fling start event ends scroll sequence. | 640 // Fling start event ends scroll sequence. |
641 ev.reset(GenerateFlingScrollEvent(scroll_deltas[i], false)); | 641 ev.reset(GenerateFlingScrollEvent(scroll_deltas[i], false)); |
642 sticky_key.HandleScrollEvent(ev.get()); | 642 sticky_key.HandleScrollEvent(ev.get()); |
643 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 643 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
644 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 644 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
645 | 645 |
646 ASSERT_EQ(2U, mock_delegate->GetEventCount()); | 646 ASSERT_EQ(2U, mock_delegate->GetEventCount()); |
647 EXPECT_EQ(ui::ET_SCROLL_FLING_START, mock_delegate->GetEvent(0)->type()); | 647 EXPECT_EQ(ui::ET_SCROLL_FLING_START, mock_delegate->GetEvent(0)->type()); |
648 EXPECT_FLOAT_EQ(scroll_deltas[i], | 648 EXPECT_FLOAT_EQ(scroll_deltas[i], |
649 static_cast<const ui::ScrollEvent*>( | 649 static_cast<const ui::ScrollEvent*>( |
650 mock_delegate->GetEvent(0))->y_offset()); | 650 mock_delegate->GetEvent(0))->y_offset()); |
651 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); | 651 EXPECT_EQ(ui::ET_KEY_RELEASED, mock_delegate->GetEvent(1)->type()); |
652 EXPECT_EQ(ui::VKEY_CONTROL, | 652 EXPECT_EQ(ui::VKEY_CONTROL, |
653 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) | 653 static_cast<const ui::KeyEvent*>(mock_delegate->GetEvent(1)) |
654 ->key_code()); | 654 ->key_code()); |
655 } | 655 } |
656 } | 656 } |
657 | 657 |
658 TEST_F(StickyKeysTest, ScrollDirectionChanged) { | 658 TEST_F(StickyKeysTest, ScrollDirectionChanged) { |
659 ui::SetUpScrollDeviceForTest(kScrollDeviceId); | 659 ui::SetUpScrollDeviceForTest(kScrollDeviceId); |
660 // Disable Australlian scrolling. | 660 // Disable Australlian scrolling. |
661 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); | 661 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); |
662 | 662 |
663 scoped_ptr<ui::ScrollEvent> ev; | 663 scoped_ptr<ui::ScrollEvent> ev; |
664 scoped_ptr<ui::KeyEvent> kev; | 664 scoped_ptr<ui::KeyEvent> kev; |
665 MockStickyKeysHandlerDelegate* mock_delegate = | 665 MockStickyKeysHandlerDelegate* mock_delegate = |
666 new MockStickyKeysHandlerDelegate(this); | 666 new MockStickyKeysHandlerDelegate(this); |
667 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 667 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
668 | 668 |
669 // Test direction change with both boundary value and negative value. | 669 // Test direction change with both boundary value and negative value. |
670 const int direction_change_values[2] = {0, -10}; | 670 const int direction_change_values[2] = {0, -10}; |
671 for (int i = 0; i < 2; ++i) { | 671 for (int i = 0; i < 2; ++i) { |
672 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 672 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
673 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 673 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
674 | 674 |
675 // Fling cancel starts scroll sequence. | 675 // Fling cancel starts scroll sequence. |
676 ev.reset(GenerateFlingScrollEvent(0, true)); | 676 ev.reset(GenerateFlingScrollEvent(0, true)); |
677 sticky_key.HandleScrollEvent(ev.get()); | 677 sticky_key.HandleScrollEvent(ev.get()); |
678 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 678 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
679 | 679 |
680 // Test that changing directions in a scroll sequence will | 680 // Test that changing directions in a scroll sequence will |
681 // return sticky keys to DISABLED state. | 681 // return sticky keys to DISABLED state. |
682 for (int j = 0; j < 3; ++j) { | 682 for (int j = 0; j < 3; ++j) { |
683 ev.reset(GenerateScrollEvent(10)); | 683 ev.reset(GenerateScrollEvent(10)); |
684 sticky_key.HandleScrollEvent(ev.get()); | 684 sticky_key.HandleScrollEvent(ev.get()); |
685 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 685 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
686 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 686 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
687 } | 687 } |
688 | 688 |
689 ev.reset(GenerateScrollEvent(direction_change_values[i])); | 689 ev.reset(GenerateScrollEvent(direction_change_values[i])); |
690 sticky_key.HandleScrollEvent(ev.get()); | 690 sticky_key.HandleScrollEvent(ev.get()); |
691 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); | 691 EXPECT_FALSE(ev->flags() & ui::EF_CONTROL_DOWN); |
692 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 692 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
693 } | 693 } |
694 } | 694 } |
695 | 695 |
696 TEST_F(StickyKeysTest, ScrollEventLocked) { | 696 TEST_F(StickyKeysTest, ScrollEventLocked) { |
697 ui::SetUpScrollDeviceForTest(kScrollDeviceId); | 697 ui::SetUpScrollDeviceForTest(kScrollDeviceId); |
698 // Disable Australlian scrolling. | 698 // Disable Australlian scrolling. |
699 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); | 699 ui::DeviceDataManager::GetInstance()->set_natural_scroll_enabled(true); |
700 | 700 |
701 scoped_ptr<ui::ScrollEvent> ev; | 701 scoped_ptr<ui::ScrollEvent> ev; |
702 scoped_ptr<ui::KeyEvent> kev; | 702 scoped_ptr<ui::KeyEvent> kev; |
703 MockStickyKeysHandlerDelegate* mock_delegate = | 703 MockStickyKeysHandlerDelegate* mock_delegate = |
704 new MockStickyKeysHandlerDelegate(this); | 704 new MockStickyKeysHandlerDelegate(this); |
705 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 705 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
706 | 706 |
707 // Lock sticky keys. | 707 // Lock sticky keys. |
708 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 708 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
709 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 709 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
710 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 710 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
711 | 711 |
712 // Test scroll events are correctly modified in locked state. | 712 // Test scroll events are correctly modified in locked state. |
713 for (int i = 0; i < 5; ++i) { | 713 for (int i = 0; i < 5; ++i) { |
714 // Fling cancel starts scroll sequence. | 714 // Fling cancel starts scroll sequence. |
715 ev.reset(GenerateFlingScrollEvent(0, true)); | 715 ev.reset(GenerateFlingScrollEvent(0, true)); |
716 sticky_key.HandleScrollEvent(ev.get()); | 716 sticky_key.HandleScrollEvent(ev.get()); |
717 | 717 |
718 ev.reset(GenerateScrollEvent(10)); | 718 ev.reset(GenerateScrollEvent(10)); |
719 sticky_key.HandleScrollEvent(ev.get()); | 719 sticky_key.HandleScrollEvent(ev.get()); |
720 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 720 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
721 ev.reset(GenerateScrollEvent(-10)); | 721 ev.reset(GenerateScrollEvent(-10)); |
722 sticky_key.HandleScrollEvent(ev.get()); | 722 sticky_key.HandleScrollEvent(ev.get()); |
723 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); | 723 EXPECT_TRUE(ev->flags() & ui::EF_CONTROL_DOWN); |
724 | 724 |
725 // Fling start ends scroll sequence. | 725 // Fling start ends scroll sequence. |
726 ev.reset(GenerateFlingScrollEvent(-10, false)); | 726 ev.reset(GenerateFlingScrollEvent(-10, false)); |
727 sticky_key.HandleScrollEvent(ev.get()); | 727 sticky_key.HandleScrollEvent(ev.get()); |
728 } | 728 } |
729 | 729 |
730 EXPECT_EQ(StickyKeysHandler::LOCKED, sticky_key.current_state()); | 730 EXPECT_EQ(STICKY_KEY_STATE_LOCKED, sticky_key.current_state()); |
731 } | 731 } |
732 | 732 |
733 TEST_F(StickyKeysTest, EventTargetDestroyed) { | 733 TEST_F(StickyKeysTest, EventTargetDestroyed) { |
734 scoped_ptr<ui::KeyEvent> ev; | 734 scoped_ptr<ui::KeyEvent> ev; |
735 MockStickyKeysHandlerDelegate* mock_delegate = | 735 MockStickyKeysHandlerDelegate* mock_delegate = |
736 new MockStickyKeysHandlerDelegate(this); | 736 new MockStickyKeysHandlerDelegate(this); |
737 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 737 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
738 | 738 |
739 target()->Focus(); | 739 target()->Focus(); |
740 | 740 |
741 // Go into ENABLED state. | 741 // Go into ENABLED state. |
742 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 742 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
743 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 743 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
744 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 744 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
745 | 745 |
746 // CTRL+J is a special shortcut that will destroy the event target. | 746 // CTRL+J is a special shortcut that will destroy the event target. |
747 ev.reset(GenerateKey(true, ui::VKEY_J)); | 747 ev.reset(GenerateKey(true, ui::VKEY_J)); |
748 sticky_key.HandleKeyEvent(ev.get()); | 748 sticky_key.HandleKeyEvent(ev.get()); |
749 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 749 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
750 EXPECT_FALSE(target()); | 750 EXPECT_FALSE(target()); |
751 } | 751 } |
752 | 752 |
753 TEST_F(StickyKeysTest, SynthesizedEvents) { | 753 TEST_F(StickyKeysTest, SynthesizedEvents) { |
754 // Non-native, internally generated events should be properly handled | 754 // Non-native, internally generated events should be properly handled |
755 // by sticky keys. | 755 // by sticky keys. |
756 MockStickyKeysHandlerDelegate* mock_delegate = | 756 MockStickyKeysHandlerDelegate* mock_delegate = |
757 new MockStickyKeysHandlerDelegate(this); | 757 new MockStickyKeysHandlerDelegate(this); |
758 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); | 758 StickyKeysHandler sticky_key(ui::EF_CONTROL_DOWN, mock_delegate); |
759 | 759 |
760 // Test non-native key events. | 760 // Test non-native key events. |
761 scoped_ptr<ui::KeyEvent> kev; | 761 scoped_ptr<ui::KeyEvent> kev; |
762 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 762 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
763 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 763 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
764 | 764 |
765 kev.reset(GenerateSynthesizedKeyEvent(true, ui::VKEY_K)); | 765 kev.reset(GenerateSynthesizedKeyEvent(true, ui::VKEY_K)); |
766 sticky_key.HandleKeyEvent(kev.get()); | 766 sticky_key.HandleKeyEvent(kev.get()); |
767 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); | 767 EXPECT_TRUE(kev->flags() & ui::EF_CONTROL_DOWN); |
768 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 768 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
769 | 769 |
770 kev.reset(GenerateSynthesizedKeyEvent(false, ui::VKEY_K)); | 770 kev.reset(GenerateSynthesizedKeyEvent(false, ui::VKEY_K)); |
771 sticky_key.HandleKeyEvent(kev.get()); | 771 sticky_key.HandleKeyEvent(kev.get()); |
772 EXPECT_FALSE(kev->flags() & ui::EF_CONTROL_DOWN); | 772 EXPECT_FALSE(kev->flags() & ui::EF_CONTROL_DOWN); |
773 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 773 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
774 | 774 |
775 // Test non-native mouse events. | 775 // Test non-native mouse events. |
776 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); | 776 SendActivateStickyKeyPattern(&sticky_key, ui::VKEY_CONTROL); |
777 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 777 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
778 | 778 |
779 scoped_ptr<ui::MouseEvent> mev; | 779 scoped_ptr<ui::MouseEvent> mev; |
780 mev.reset(GenerateSynthesizedMouseEvent(true)); | 780 mev.reset(GenerateSynthesizedMouseEvent(true)); |
781 sticky_key.HandleMouseEvent(mev.get()); | 781 sticky_key.HandleMouseEvent(mev.get()); |
782 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); | 782 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); |
783 EXPECT_EQ(StickyKeysHandler::ENABLED, sticky_key.current_state()); | 783 EXPECT_EQ(STICKY_KEY_STATE_ENABLED, sticky_key.current_state()); |
784 | 784 |
785 mev.reset(GenerateSynthesizedMouseEvent(false)); | 785 mev.reset(GenerateSynthesizedMouseEvent(false)); |
786 sticky_key.HandleMouseEvent(mev.get()); | 786 sticky_key.HandleMouseEvent(mev.get()); |
787 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); | 787 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); |
788 EXPECT_EQ(StickyKeysHandler::DISABLED, sticky_key.current_state()); | 788 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); |
789 } | 789 } |
790 | 790 |
791 TEST_F(StickyKeysTest, KeyEventDispatchImpl) { | 791 TEST_F(StickyKeysTest, KeyEventDispatchImpl) { |
792 // Test the actual key event dispatch implementation. | 792 // Test the actual key event dispatch implementation. |
793 EventBuffer buffer; | 793 EventBuffer buffer; |
794 ScopedVector<ui::Event> events; | 794 ScopedVector<ui::Event> events; |
795 aura::WindowTreeHostDelegate* delegate = Shell::GetPrimaryRootWindow() | 795 aura::WindowTreeHostDelegate* delegate = Shell::GetPrimaryRootWindow() |
796 ->GetDispatcher()->AsWindowTreeHostDelegate(); | 796 ->GetDispatcher()->AsWindowTreeHostDelegate(); |
797 Shell::GetInstance()->AddPreTargetHandler(&buffer); | 797 Shell::GetInstance()->AddPreTargetHandler(&buffer); |
798 Shell::GetInstance()->sticky_keys_controller()->Enable(true); | 798 Shell::GetInstance()->sticky_keys_controller()->Enable(true); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset()); | 904 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset()); |
905 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); | 905 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); |
906 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); | 906 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); |
907 EXPECT_EQ(ui::VKEY_CONTROL, | 907 EXPECT_EQ(ui::VKEY_CONTROL, |
908 static_cast<ui::KeyEvent*>(events[1])->key_code()); | 908 static_cast<ui::KeyEvent*>(events[1])->key_code()); |
909 | 909 |
910 Shell::GetInstance()->RemovePreTargetHandler(&buffer); | 910 Shell::GetInstance()->RemovePreTargetHandler(&buffer); |
911 } | 911 } |
912 | 912 |
913 } // namespace ash | 913 } // namespace ash |
OLD | NEW |