| 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 |