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 "ash/accelerators/accelerator_controller.h" | 5 #include "ash/accelerators/accelerator_controller.h" |
6 #include "ash/caps_lock_delegate.h" | 6 #include "ash/caps_lock_delegate.h" |
7 #include "ash/ime_control_delegate.h" | 7 #include "ash/ime_control_delegate.h" |
8 #include "ash/screenshot_delegate.h" | 8 #include "ash/screenshot_delegate.h" |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 // Overridden from ui::AcceleratorTarget: | 44 // Overridden from ui::AcceleratorTarget: |
45 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; | 45 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; |
46 virtual bool CanHandleAccelerators() const OVERRIDE; | 46 virtual bool CanHandleAccelerators() const OVERRIDE; |
47 | 47 |
48 private: | 48 private: |
49 int accelerator_pressed_count_; | 49 int accelerator_pressed_count_; |
50 | 50 |
51 DISALLOW_COPY_AND_ASSIGN(TestTarget); | 51 DISALLOW_COPY_AND_ASSIGN(TestTarget); |
52 }; | 52 }; |
53 | 53 |
54 class PostImeAccelerator : public ui::Accelerator { | 54 class ReleaseAccelerator : public ui::Accelerator { |
55 public: | 55 public: |
56 PostImeAccelerator(ui::KeyboardCode keycode, | 56 ReleaseAccelerator(ui::KeyboardCode keycode, |
57 bool shift_pressed, bool ctrl_pressed, bool alt_pressed) | 57 bool shift_pressed, |
58 : ui::Accelerator(keycode, shift_pressed, ctrl_pressed, alt_pressed) { | 58 bool ctrl_pressed, |
59 set_type(ui::ET_TRANSLATED_KEY_PRESS); | 59 bool alt_pressed) |
60 } | |
61 }; | |
62 typedef ui::Accelerator PreImeAccelerator; | |
63 | |
64 class PostImeReleaseAccelerator : public ui::Accelerator { | |
65 public: | |
66 PostImeReleaseAccelerator(ui::KeyboardCode keycode, | |
67 bool shift_pressed, | |
68 bool ctrl_pressed, | |
69 bool alt_pressed) | |
70 : ui::Accelerator(keycode, shift_pressed, ctrl_pressed, alt_pressed) { | |
71 set_type(ui::ET_TRANSLATED_KEY_RELEASE); | |
72 } | |
73 }; | |
74 class PreImeReleaseAccelerator : public ui::Accelerator { | |
75 public: | |
76 PreImeReleaseAccelerator(ui::KeyboardCode keycode, | |
77 bool shift_pressed, | |
78 bool ctrl_pressed, | |
79 bool alt_pressed) | |
80 : ui::Accelerator(keycode, shift_pressed, ctrl_pressed, alt_pressed) { | 60 : ui::Accelerator(keycode, shift_pressed, ctrl_pressed, alt_pressed) { |
81 set_type(ui::ET_KEY_RELEASED); | 61 set_type(ui::ET_KEY_RELEASED); |
82 } | 62 } |
83 }; | 63 }; |
84 | 64 |
85 class DummyScreenshotDelegate : public ScreenshotDelegate { | 65 class DummyScreenshotDelegate : public ScreenshotDelegate { |
86 public: | 66 public: |
87 DummyScreenshotDelegate() | 67 DummyScreenshotDelegate() |
88 : handle_take_screenshot_count_(0), | 68 : handle_take_screenshot_count_(0), |
89 handle_take_partial_screenshot_count_(0) { | 69 handle_take_partial_screenshot_count_(0) { |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 EXPECT_TRUE(GetController()->Process(accelerator_a)); | 358 EXPECT_TRUE(GetController()->Process(accelerator_a)); |
379 EXPECT_EQ(1, target1.accelerator_pressed_count()); | 359 EXPECT_EQ(1, target1.accelerator_pressed_count()); |
380 | 360 |
381 // The non-registered accelerator is not processed. | 361 // The non-registered accelerator is not processed. |
382 const ui::Accelerator accelerator_b(ui::VKEY_B, false, false, false); | 362 const ui::Accelerator accelerator_b(ui::VKEY_B, false, false, false); |
383 EXPECT_FALSE(GetController()->Process(accelerator_b)); | 363 EXPECT_FALSE(GetController()->Process(accelerator_b)); |
384 } | 364 } |
385 | 365 |
386 #if defined(OS_WIN) || defined(USE_X11) | 366 #if defined(OS_WIN) || defined(USE_X11) |
387 TEST_F(AcceleratorControllerTest, ProcessOnce) { | 367 TEST_F(AcceleratorControllerTest, ProcessOnce) { |
388 PostImeAccelerator accelerator_a(ui::VKEY_A, false, false, false); | 368 ui::Accelerator accelerator_a(ui::VKEY_A, false, false, false); |
389 TestTarget target; | 369 TestTarget target; |
390 GetController()->Register(accelerator_a, &target); | 370 GetController()->Register(accelerator_a, &target); |
391 | 371 |
392 // The accelerator is processed only once. | 372 // The accelerator is processed only once. |
393 #if defined(OS_WIN) | 373 #if defined(OS_WIN) |
394 MSG msg1 = { NULL, WM_KEYDOWN, ui::VKEY_A, 0 }; | 374 MSG msg1 = { NULL, WM_KEYDOWN, ui::VKEY_A, 0 }; |
395 aura::TranslatedKeyEvent key_event1(msg1, false); | 375 aura::TranslatedKeyEvent key_event1(msg1, false); |
396 EXPECT_TRUE(Shell::GetRootWindow()->DispatchKeyEvent(&key_event1)); | 376 EXPECT_TRUE(Shell::GetRootWindow()->DispatchKeyEvent(&key_event1)); |
397 | 377 |
398 MSG msg2 = { NULL, WM_CHAR, L'A', 0 }; | 378 MSG msg2 = { NULL, WM_CHAR, L'A', 0 }; |
(...skipping 22 matching lines...) Expand all Loading... |
421 aura::TranslatedKeyEvent key_event3(&key_event, false); | 401 aura::TranslatedKeyEvent key_event3(&key_event, false); |
422 EXPECT_FALSE(Shell::GetRootWindow()->DispatchKeyEvent(&key_event3)); | 402 EXPECT_FALSE(Shell::GetRootWindow()->DispatchKeyEvent(&key_event3)); |
423 #endif | 403 #endif |
424 EXPECT_EQ(1, target.accelerator_pressed_count()); | 404 EXPECT_EQ(1, target.accelerator_pressed_count()); |
425 } | 405 } |
426 #endif | 406 #endif |
427 | 407 |
428 TEST_F(AcceleratorControllerTest, GlobalAccelerators) { | 408 TEST_F(AcceleratorControllerTest, GlobalAccelerators) { |
429 // CycleBackward | 409 // CycleBackward |
430 EXPECT_TRUE(GetController()->Process( | 410 EXPECT_TRUE(GetController()->Process( |
431 PostImeAccelerator(ui::VKEY_F5, true, false, false))); | 411 ui::Accelerator(ui::VKEY_F5, true, false, false))); |
432 EXPECT_TRUE(GetController()->Process( | 412 EXPECT_TRUE(GetController()->Process( |
433 PostImeAccelerator(ui::VKEY_TAB, true, false, true))); | 413 ui::Accelerator(ui::VKEY_TAB, true, false, true))); |
434 // CycleForward | 414 // CycleForward |
435 EXPECT_TRUE(GetController()->Process( | 415 EXPECT_TRUE(GetController()->Process( |
436 PostImeAccelerator(ui::VKEY_F5, false, false, false))); | 416 ui::Accelerator(ui::VKEY_F5, false, false, false))); |
437 EXPECT_TRUE(GetController()->Process( | 417 EXPECT_TRUE(GetController()->Process( |
438 PostImeAccelerator(ui::VKEY_TAB, false, false, true))); | 418 ui::Accelerator(ui::VKEY_TAB, false, false, true))); |
439 // Take screenshot / partial screenshot | 419 // Take screenshot / partial screenshot |
440 // True should always be returned regardless of the existence of the delegate. | 420 // True should always be returned regardless of the existence of the delegate. |
441 { | 421 { |
442 EXPECT_TRUE(GetController()->Process( | 422 EXPECT_TRUE(GetController()->Process( |
443 PostImeAccelerator(ui::VKEY_F5, false, true, false))); | 423 ui::Accelerator(ui::VKEY_F5, false, true, false))); |
444 EXPECT_TRUE(GetController()->Process( | 424 EXPECT_TRUE(GetController()->Process( |
445 PostImeAccelerator(ui::VKEY_PRINT, false, false, false))); | 425 ui::Accelerator(ui::VKEY_PRINT, false, false, false))); |
446 EXPECT_TRUE(GetController()->Process( | 426 EXPECT_TRUE(GetController()->Process( |
447 PostImeAccelerator(ui::VKEY_F5, true, true, false))); | 427 ui::Accelerator(ui::VKEY_F5, true, true, false))); |
448 DummyScreenshotDelegate* delegate = new DummyScreenshotDelegate; | 428 DummyScreenshotDelegate* delegate = new DummyScreenshotDelegate; |
449 GetController()->SetScreenshotDelegate( | 429 GetController()->SetScreenshotDelegate( |
450 scoped_ptr<ScreenshotDelegate>(delegate).Pass()); | 430 scoped_ptr<ScreenshotDelegate>(delegate).Pass()); |
451 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); | 431 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
452 EXPECT_EQ(0, delegate->handle_take_partial_screenshot_count()); | 432 EXPECT_EQ(0, delegate->handle_take_partial_screenshot_count()); |
453 EXPECT_TRUE(GetController()->Process( | 433 EXPECT_TRUE(GetController()->Process( |
454 PostImeAccelerator(ui::VKEY_F5, false, true, false))); | 434 ui::Accelerator(ui::VKEY_F5, false, true, false))); |
455 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); | 435 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); |
456 EXPECT_EQ(0, delegate->handle_take_partial_screenshot_count()); | 436 EXPECT_EQ(0, delegate->handle_take_partial_screenshot_count()); |
457 EXPECT_TRUE(GetController()->Process( | 437 EXPECT_TRUE(GetController()->Process( |
458 PostImeAccelerator(ui::VKEY_PRINT, false, false, false))); | 438 ui::Accelerator(ui::VKEY_PRINT, false, false, false))); |
459 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 439 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
460 EXPECT_EQ(0, delegate->handle_take_partial_screenshot_count()); | 440 EXPECT_EQ(0, delegate->handle_take_partial_screenshot_count()); |
461 EXPECT_TRUE(GetController()->Process( | 441 EXPECT_TRUE(GetController()->Process( |
462 PostImeAccelerator(ui::VKEY_F5, true, true, false))); | 442 ui::Accelerator(ui::VKEY_F5, true, true, false))); |
463 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 443 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
464 EXPECT_EQ(1, delegate->handle_take_partial_screenshot_count()); | 444 EXPECT_EQ(1, delegate->handle_take_partial_screenshot_count()); |
465 } | 445 } |
466 // ToggleCapsLock | 446 // ToggleCapsLock |
467 { | 447 { |
468 EXPECT_FALSE(GetController()->Process( | 448 EXPECT_FALSE(GetController()->Process( |
469 PostImeAccelerator(ui::VKEY_LWIN, true, false, false))); | 449 ui::Accelerator(ui::VKEY_LWIN, true, false, false))); |
470 DummyCapsLockDelegate* delegate = new DummyCapsLockDelegate(false); | 450 DummyCapsLockDelegate* delegate = new DummyCapsLockDelegate(false); |
471 GetController()->SetCapsLockDelegate( | 451 GetController()->SetCapsLockDelegate( |
472 scoped_ptr<CapsLockDelegate>(delegate).Pass()); | 452 scoped_ptr<CapsLockDelegate>(delegate).Pass()); |
473 EXPECT_EQ(0, delegate->handle_caps_lock_count()); | 453 EXPECT_EQ(0, delegate->handle_caps_lock_count()); |
474 EXPECT_FALSE(GetController()->Process( | 454 EXPECT_FALSE(GetController()->Process( |
475 PostImeAccelerator(ui::VKEY_LWIN, true, false, false))); | 455 ui::Accelerator(ui::VKEY_LWIN, true, false, false))); |
476 EXPECT_EQ(1, delegate->handle_caps_lock_count()); | 456 EXPECT_EQ(1, delegate->handle_caps_lock_count()); |
477 } | 457 } |
478 { | 458 { |
479 DummyCapsLockDelegate* delegate = new DummyCapsLockDelegate(true); | 459 DummyCapsLockDelegate* delegate = new DummyCapsLockDelegate(true); |
480 GetController()->SetCapsLockDelegate( | 460 GetController()->SetCapsLockDelegate( |
481 scoped_ptr<CapsLockDelegate>(delegate).Pass()); | 461 scoped_ptr<CapsLockDelegate>(delegate).Pass()); |
482 EXPECT_EQ(0, delegate->handle_caps_lock_count()); | 462 EXPECT_EQ(0, delegate->handle_caps_lock_count()); |
483 EXPECT_TRUE(GetController()->Process( | 463 EXPECT_TRUE(GetController()->Process( |
484 PostImeAccelerator(ui::VKEY_LWIN, true, false, false))); | 464 ui::Accelerator(ui::VKEY_LWIN, true, false, false))); |
485 EXPECT_EQ(1, delegate->handle_caps_lock_count()); | 465 EXPECT_EQ(1, delegate->handle_caps_lock_count()); |
486 } | 466 } |
487 // Volume | 467 // Volume |
488 const PostImeAccelerator f8(ui::VKEY_F8, false, false, false); | 468 const ui::Accelerator f8(ui::VKEY_F8, false, false, false); |
489 const PostImeAccelerator f9(ui::VKEY_F9, false, false, false); | 469 const ui::Accelerator f9(ui::VKEY_F9, false, false, false); |
490 const PostImeAccelerator f10(ui::VKEY_F10, false, false, false); | 470 const ui::Accelerator f10(ui::VKEY_F10, false, false, false); |
491 { | 471 { |
492 EXPECT_FALSE(GetController()->Process(f8)); | 472 EXPECT_FALSE(GetController()->Process(f8)); |
493 EXPECT_FALSE(GetController()->Process(f9)); | 473 EXPECT_FALSE(GetController()->Process(f9)); |
494 EXPECT_FALSE(GetController()->Process(f10)); | 474 EXPECT_FALSE(GetController()->Process(f10)); |
495 DummyVolumeControlDelegate* delegate = | 475 DummyVolumeControlDelegate* delegate = |
496 new DummyVolumeControlDelegate(false); | 476 new DummyVolumeControlDelegate(false); |
497 GetController()->SetVolumeControlDelegate( | 477 GetController()->SetVolumeControlDelegate( |
498 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); | 478 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
499 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 479 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
500 EXPECT_FALSE(GetController()->Process(f8)); | 480 EXPECT_FALSE(GetController()->Process(f8)); |
(...skipping 18 matching lines...) Expand all Loading... |
519 EXPECT_EQ(f8, delegate->last_accelerator()); | 499 EXPECT_EQ(f8, delegate->last_accelerator()); |
520 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 500 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
521 EXPECT_TRUE(GetController()->Process(f9)); | 501 EXPECT_TRUE(GetController()->Process(f9)); |
522 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 502 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
523 EXPECT_EQ(f9, delegate->last_accelerator()); | 503 EXPECT_EQ(f9, delegate->last_accelerator()); |
524 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 504 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
525 EXPECT_TRUE(GetController()->Process(f10)); | 505 EXPECT_TRUE(GetController()->Process(f10)); |
526 EXPECT_EQ(1, delegate->handle_volume_up_count()); | 506 EXPECT_EQ(1, delegate->handle_volume_up_count()); |
527 EXPECT_EQ(f10, delegate->last_accelerator()); | 507 EXPECT_EQ(f10, delegate->last_accelerator()); |
528 } | 508 } |
529 const PostImeAccelerator volume_mute( | 509 const ui::Accelerator volume_mute( |
530 ui::VKEY_VOLUME_MUTE, false, false, false); | 510 ui::VKEY_VOLUME_MUTE, false, false, false); |
531 const PostImeAccelerator volume_down( | 511 const ui::Accelerator volume_down( |
532 ui::VKEY_VOLUME_DOWN, false, false, false); | 512 ui::VKEY_VOLUME_DOWN, false, false, false); |
533 const PostImeAccelerator volume_up(ui::VKEY_VOLUME_UP, false, false, false); | 513 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, false, false, false); |
534 { | 514 { |
535 DummyVolumeControlDelegate* delegate = | 515 DummyVolumeControlDelegate* delegate = |
536 new DummyVolumeControlDelegate(false); | 516 new DummyVolumeControlDelegate(false); |
537 GetController()->SetVolumeControlDelegate( | 517 GetController()->SetVolumeControlDelegate( |
538 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); | 518 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
539 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 519 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
540 EXPECT_FALSE(GetController()->Process(volume_mute)); | 520 EXPECT_FALSE(GetController()->Process(volume_mute)); |
541 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | 521 EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
542 EXPECT_EQ(volume_mute, delegate->last_accelerator()); | 522 EXPECT_EQ(volume_mute, delegate->last_accelerator()); |
543 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 523 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
(...skipping 16 matching lines...) Expand all Loading... |
560 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 540 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
561 EXPECT_TRUE(GetController()->Process(volume_down)); | 541 EXPECT_TRUE(GetController()->Process(volume_down)); |
562 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 542 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
563 EXPECT_EQ(volume_down, delegate->last_accelerator()); | 543 EXPECT_EQ(volume_down, delegate->last_accelerator()); |
564 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 544 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
565 EXPECT_TRUE(GetController()->Process(volume_up)); | 545 EXPECT_TRUE(GetController()->Process(volume_up)); |
566 EXPECT_EQ(1, delegate->handle_volume_up_count()); | 546 EXPECT_EQ(1, delegate->handle_volume_up_count()); |
567 EXPECT_EQ(volume_up, delegate->last_accelerator()); | 547 EXPECT_EQ(volume_up, delegate->last_accelerator()); |
568 } | 548 } |
569 // Brightness | 549 // Brightness |
570 const PostImeAccelerator f6(ui::VKEY_F6, false, false, false); | 550 const ui::Accelerator f6(ui::VKEY_F6, false, false, false); |
571 const PostImeAccelerator f7(ui::VKEY_F7, false, false, false); | 551 const ui::Accelerator f7(ui::VKEY_F7, false, false, false); |
572 { | 552 { |
573 EXPECT_FALSE(GetController()->Process(f6)); | 553 EXPECT_FALSE(GetController()->Process(f6)); |
574 EXPECT_FALSE(GetController()->Process(f7)); | 554 EXPECT_FALSE(GetController()->Process(f7)); |
575 DummyBrightnessControlDelegate* delegate = | 555 DummyBrightnessControlDelegate* delegate = |
576 new DummyBrightnessControlDelegate(false); | 556 new DummyBrightnessControlDelegate(false); |
577 GetController()->SetBrightnessControlDelegate( | 557 GetController()->SetBrightnessControlDelegate( |
578 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); | 558 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
579 EXPECT_EQ(0, delegate->handle_brightness_down_count()); | 559 EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
580 EXPECT_FALSE(GetController()->Process(f6)); | 560 EXPECT_FALSE(GetController()->Process(f6)); |
581 EXPECT_EQ(1, delegate->handle_brightness_down_count()); | 561 EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
(...skipping 12 matching lines...) Expand all Loading... |
594 EXPECT_TRUE(GetController()->Process(f6)); | 574 EXPECT_TRUE(GetController()->Process(f6)); |
595 EXPECT_EQ(1, delegate->handle_brightness_down_count()); | 575 EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
596 EXPECT_EQ(f6, delegate->last_accelerator()); | 576 EXPECT_EQ(f6, delegate->last_accelerator()); |
597 EXPECT_EQ(0, delegate->handle_brightness_up_count()); | 577 EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
598 EXPECT_TRUE(GetController()->Process(f7)); | 578 EXPECT_TRUE(GetController()->Process(f7)); |
599 EXPECT_EQ(1, delegate->handle_brightness_up_count()); | 579 EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
600 EXPECT_EQ(f7, delegate->last_accelerator()); | 580 EXPECT_EQ(f7, delegate->last_accelerator()); |
601 } | 581 } |
602 #if defined(OS_CHROMEOS) | 582 #if defined(OS_CHROMEOS) |
603 // ui::VKEY_BRIGHTNESS_DOWN/UP are not defined on Windows. | 583 // ui::VKEY_BRIGHTNESS_DOWN/UP are not defined on Windows. |
604 const PostImeAccelerator brightness_down( | 584 const ui::Accelerator brightness_down( |
605 ui::VKEY_BRIGHTNESS_DOWN, false, false, false); | 585 ui::VKEY_BRIGHTNESS_DOWN, false, false, false); |
606 const PostImeAccelerator brightness_up( | 586 const ui::Accelerator brightness_up( |
607 ui::VKEY_BRIGHTNESS_UP, false, false, false); | 587 ui::VKEY_BRIGHTNESS_UP, false, false, false); |
608 { | 588 { |
609 DummyBrightnessControlDelegate* delegate = | 589 DummyBrightnessControlDelegate* delegate = |
610 new DummyBrightnessControlDelegate(false); | 590 new DummyBrightnessControlDelegate(false); |
611 GetController()->SetBrightnessControlDelegate( | 591 GetController()->SetBrightnessControlDelegate( |
612 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); | 592 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
613 EXPECT_EQ(0, delegate->handle_brightness_down_count()); | 593 EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
614 EXPECT_FALSE(GetController()->Process(brightness_down)); | 594 EXPECT_FALSE(GetController()->Process(brightness_down)); |
615 EXPECT_EQ(1, delegate->handle_brightness_down_count()); | 595 EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
616 EXPECT_EQ(brightness_down, delegate->last_accelerator()); | 596 EXPECT_EQ(brightness_down, delegate->last_accelerator()); |
(...skipping 13 matching lines...) Expand all Loading... |
630 EXPECT_EQ(brightness_down, delegate->last_accelerator()); | 610 EXPECT_EQ(brightness_down, delegate->last_accelerator()); |
631 EXPECT_EQ(0, delegate->handle_brightness_up_count()); | 611 EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
632 EXPECT_TRUE(GetController()->Process(brightness_up)); | 612 EXPECT_TRUE(GetController()->Process(brightness_up)); |
633 EXPECT_EQ(1, delegate->handle_brightness_up_count()); | 613 EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
634 EXPECT_EQ(brightness_up, delegate->last_accelerator()); | 614 EXPECT_EQ(brightness_up, delegate->last_accelerator()); |
635 } | 615 } |
636 #endif | 616 #endif |
637 #if !defined(NDEBUG) | 617 #if !defined(NDEBUG) |
638 // RotateScreen | 618 // RotateScreen |
639 EXPECT_TRUE(GetController()->Process( | 619 EXPECT_TRUE(GetController()->Process( |
640 PostImeAccelerator(ui::VKEY_HOME, false, true, false))); | 620 ui::Accelerator(ui::VKEY_HOME, false, true, false))); |
641 // ToggleDesktopBackgroundMode | 621 // ToggleDesktopBackgroundMode |
642 EXPECT_TRUE(GetController()->Process( | 622 EXPECT_TRUE(GetController()->Process( |
643 PostImeAccelerator(ui::VKEY_B, false, true, true))); | 623 ui::Accelerator(ui::VKEY_B, false, true, true))); |
644 #if !defined(OS_LINUX) | 624 #if !defined(OS_LINUX) |
645 // ToggleDesktopFullScreen (not implemented yet on Linux) | 625 // ToggleDesktopFullScreen (not implemented yet on Linux) |
646 EXPECT_TRUE(GetController()->Process( | 626 EXPECT_TRUE(GetController()->Process( |
647 PostImeAccelerator(ui::VKEY_F11, false, true, false))); | 627 ui::Accelerator(ui::VKEY_F11, false, true, false))); |
648 #endif // OS_LINUX | 628 #endif // OS_LINUX |
649 #endif // !NDEBUG | 629 #endif // !NDEBUG |
650 | 630 |
651 // Exit | 631 // Exit |
652 EXPECT_TRUE(GetController()->Process( | 632 EXPECT_TRUE(GetController()->Process( |
653 PostImeAccelerator(ui::VKEY_Q, true, true ,false))); | 633 ui::Accelerator(ui::VKEY_Q, true, true ,false))); |
654 | 634 |
655 // New incognito window | 635 // New incognito window |
656 EXPECT_TRUE(GetController()->Process( | 636 EXPECT_TRUE(GetController()->Process( |
657 PostImeAccelerator(ui::VKEY_N, true, true, false))); | 637 ui::Accelerator(ui::VKEY_N, true, true, false))); |
658 | 638 |
659 // New window | 639 // New window |
660 EXPECT_TRUE(GetController()->Process( | 640 EXPECT_TRUE(GetController()->Process( |
661 PostImeAccelerator(ui::VKEY_N, false, true, false))); | 641 ui::Accelerator(ui::VKEY_N, false, true, false))); |
662 | 642 |
663 #if defined(OS_CHROMEOS) | 643 #if defined(OS_CHROMEOS) |
664 EXPECT_TRUE(GetController()->Process( | 644 EXPECT_TRUE(GetController()->Process( |
665 PostImeAccelerator(ui::VKEY_L, true, true, false))); | 645 ui::Accelerator(ui::VKEY_L, true, true, false))); |
666 #endif | 646 #endif |
667 } | 647 } |
668 | 648 |
669 TEST_F(AcceleratorControllerTest, GlobalAcceleratorsPreIme) { | 649 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { |
670 // Make sure post-IME shortcuts are ignored in the pre-IME phase. | |
671 { | |
672 const PreImeAccelerator f8(ui::VKEY_F8, false, false, false); | |
673 const PostImeAccelerator f8_post(ui::VKEY_F8, false, false, false); | |
674 DummyVolumeControlDelegate* delegate = new DummyVolumeControlDelegate(true); | |
675 GetController()->SetVolumeControlDelegate( | |
676 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); | |
677 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | |
678 EXPECT_FALSE(GetController()->Process(f8)); | |
679 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | |
680 EXPECT_TRUE(GetController()->Process(f8_post)); | |
681 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | |
682 } | |
683 | |
684 // Test IME shortcuts. | 650 // Test IME shortcuts. |
685 { | 651 { |
686 const ui::Accelerator control_space(ui::VKEY_SPACE, false, true, false); | 652 const ui::Accelerator control_space(ui::VKEY_SPACE, false, true, false); |
687 const ui::Accelerator convert(ui::VKEY_CONVERT, false, false, false); | 653 const ui::Accelerator convert(ui::VKEY_CONVERT, false, false, false); |
688 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, false, false, false); | 654 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, false, false, false); |
689 const ui::Accelerator wide_half_1( | 655 const ui::Accelerator wide_half_1( |
690 ui::VKEY_DBE_SBCSCHAR, false, false, false); | 656 ui::VKEY_DBE_SBCSCHAR, false, false, false); |
691 const ui::Accelerator wide_half_2( | 657 const ui::Accelerator wide_half_2( |
692 ui::VKEY_DBE_DBCSCHAR, false, false, false); | 658 ui::VKEY_DBE_DBCSCHAR, false, false, false); |
693 const ui::Accelerator hangul(ui::VKEY_HANGUL, false, false, false); | 659 const ui::Accelerator hangul(ui::VKEY_HANGUL, false, false, false); |
(...skipping 17 matching lines...) Expand all Loading... |
711 EXPECT_TRUE(GetController()->Process(non_convert)); | 677 EXPECT_TRUE(GetController()->Process(non_convert)); |
712 EXPECT_EQ(2, delegate->handle_switch_ime_count()); | 678 EXPECT_EQ(2, delegate->handle_switch_ime_count()); |
713 EXPECT_TRUE(GetController()->Process(wide_half_1)); | 679 EXPECT_TRUE(GetController()->Process(wide_half_1)); |
714 EXPECT_EQ(3, delegate->handle_switch_ime_count()); | 680 EXPECT_EQ(3, delegate->handle_switch_ime_count()); |
715 EXPECT_TRUE(GetController()->Process(wide_half_2)); | 681 EXPECT_TRUE(GetController()->Process(wide_half_2)); |
716 EXPECT_EQ(4, delegate->handle_switch_ime_count()); | 682 EXPECT_EQ(4, delegate->handle_switch_ime_count()); |
717 EXPECT_TRUE(GetController()->Process(hangul)); | 683 EXPECT_TRUE(GetController()->Process(hangul)); |
718 EXPECT_EQ(5, delegate->handle_switch_ime_count()); | 684 EXPECT_EQ(5, delegate->handle_switch_ime_count()); |
719 EXPECT_TRUE(GetController()->Process(shift_space)); | 685 EXPECT_TRUE(GetController()->Process(shift_space)); |
720 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | 686 EXPECT_EQ(6, delegate->handle_switch_ime_count()); |
721 | |
722 // Make sure pre-IME shortcuts are ignored in the post-IME phase. | |
723 const PostImeAccelerator control_space_post( | |
724 ui::VKEY_SPACE, false, true, false); | |
725 const PostImeAccelerator convert_post( | |
726 ui::VKEY_CONVERT, false, false, false); | |
727 const PostImeAccelerator non_convert_post( | |
728 ui::VKEY_NONCONVERT, false, false, false); | |
729 const PostImeAccelerator wide_half_1_post( | |
730 ui::VKEY_DBE_SBCSCHAR, false, false, false); | |
731 const PostImeAccelerator wide_half_2_post( | |
732 ui::VKEY_DBE_DBCSCHAR, false, false, false); | |
733 const PostImeAccelerator hangul_post(ui::VKEY_HANGUL, false, false, false); | |
734 const PostImeAccelerator shift_space_post( | |
735 ui::VKEY_SPACE, true, false, false); | |
736 EXPECT_EQ(1, delegate->handle_previous_ime_count()); | |
737 EXPECT_FALSE(GetController()->Process(control_space_post)); | |
738 EXPECT_EQ(1, delegate->handle_previous_ime_count()); | |
739 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | |
740 EXPECT_FALSE(GetController()->Process(convert_post)); | |
741 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | |
742 EXPECT_FALSE(GetController()->Process(non_convert_post)); | |
743 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | |
744 EXPECT_FALSE(GetController()->Process(wide_half_1_post)); | |
745 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | |
746 EXPECT_FALSE(GetController()->Process(wide_half_2_post)); | |
747 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | |
748 EXPECT_FALSE(GetController()->Process(hangul_post)); | |
749 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | |
750 EXPECT_FALSE(GetController()->Process(shift_space_post)); | |
751 EXPECT_EQ(6, delegate->handle_switch_ime_count()); | |
752 } | 687 } |
753 | 688 |
754 // Test IME shortcuts that are triggered on key release. | 689 // Test IME shortcuts that are triggered on key release. |
755 { | 690 { |
756 const PreImeAccelerator shift_alt_press(ui::VKEY_MENU, true, false, true); | 691 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, true, false, true); |
757 const PostImeAccelerator shift_alt_press_post( | 692 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, true, false, true); |
758 ui::VKEY_MENU, true, false, true); | 693 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, true, false, true); |
759 const PreImeReleaseAccelerator shift_alt(ui::VKEY_MENU, true, false, true); | 694 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, true, false, true); |
760 | |
761 const PreImeAccelerator alt_shift_press(ui::VKEY_SHIFT, true, false, true); | |
762 const PostImeAccelerator alt_shift_press_post( | |
763 ui::VKEY_SHIFT, true, false, true); | |
764 const PreImeReleaseAccelerator alt_shift(ui::VKEY_SHIFT, true, false, true); | |
765 | 695 |
766 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); | 696 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); |
767 GetController()->SetImeControlDelegate( | 697 GetController()->SetImeControlDelegate( |
768 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 698 scoped_ptr<ImeControlDelegate>(delegate).Pass()); |
769 EXPECT_EQ(0, delegate->handle_next_ime_count()); | 699 EXPECT_EQ(0, delegate->handle_next_ime_count()); |
770 EXPECT_FALSE(GetController()->Process(shift_alt_press)); | 700 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
771 EXPECT_FALSE(GetController()->Process(shift_alt_press_post)); | |
772 EXPECT_FALSE(GetController()->Process(shift_alt)); // crbug.com/123720 | 701 EXPECT_FALSE(GetController()->Process(shift_alt)); // crbug.com/123720 |
773 EXPECT_EQ(1, delegate->handle_next_ime_count()); | 702 EXPECT_EQ(1, delegate->handle_next_ime_count()); |
774 EXPECT_FALSE(GetController()->Process(alt_shift_press)); | 703 EXPECT_FALSE(GetController()->Process(alt_shift_press)); |
775 EXPECT_FALSE(GetController()->Process(alt_shift_press_post)); | |
776 EXPECT_FALSE(GetController()->Process(alt_shift)); // crbug.com/123720 | 704 EXPECT_FALSE(GetController()->Process(alt_shift)); // crbug.com/123720 |
777 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 705 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
778 | 706 |
779 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is | 707 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is |
780 // released. | 708 // released. |
781 const PreImeAccelerator shift_alt_x_press(ui::VKEY_X, true, false, true); | 709 const ui::Accelerator shift_alt_x_press(ui::VKEY_X, true, false, true); |
782 const PostImeAccelerator shift_alt_x_press_post( | 710 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, true, false, true); |
783 ui::VKEY_X, true, false, true); | |
784 const PreImeReleaseAccelerator shift_alt_x(ui::VKEY_X, true, false, true); | |
785 const PostImeReleaseAccelerator shift_alt_x_post( | |
786 ui::VKEY_X, true, false, true); | |
787 | 711 |
788 EXPECT_FALSE(GetController()->Process(shift_alt_press)); | 712 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
789 EXPECT_FALSE(GetController()->Process(shift_alt_press_post)); | |
790 EXPECT_FALSE(GetController()->Process(shift_alt_x_press)); | 713 EXPECT_FALSE(GetController()->Process(shift_alt_x_press)); |
791 EXPECT_FALSE(GetController()->Process(shift_alt_x_press_post)); | |
792 EXPECT_FALSE(GetController()->Process(shift_alt_x)); | 714 EXPECT_FALSE(GetController()->Process(shift_alt_x)); |
793 EXPECT_FALSE(GetController()->Process(shift_alt_x_post)); | |
794 EXPECT_FALSE(GetController()->Process(shift_alt)); | 715 EXPECT_FALSE(GetController()->Process(shift_alt)); |
795 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 716 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
796 } | 717 } |
797 } | 718 } |
798 | 719 |
799 } // namespace test | 720 } // namespace test |
800 } // namespace ash | 721 } // namespace ash |
OLD | NEW |