Chromium Code Reviews| 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 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <iostream> | 9 #include <iostream> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 545 | 545 |
| 546 // You *MUST* return true when some action is performed. Otherwise, this | 546 // You *MUST* return true when some action is performed. Otherwise, this |
| 547 // function might be called *twice*, via BrowserView::PreHandleKeyboardEvent | 547 // function might be called *twice*, via BrowserView::PreHandleKeyboardEvent |
| 548 // and BrowserView::HandleKeyboardEvent, for a single accelerator press. | 548 // and BrowserView::HandleKeyboardEvent, for a single accelerator press. |
| 549 // | 549 // |
| 550 // If your accelerator invokes more than one line of code, please either | 550 // If your accelerator invokes more than one line of code, please either |
| 551 // implement it in your module's controller code (like TOGGLE_MIRROR_MODE | 551 // implement it in your module's controller code (like TOGGLE_MIRROR_MODE |
| 552 // below) or pull it into a HandleFoo() function above. | 552 // below) or pull it into a HandleFoo() function above. |
| 553 switch (action) { | 553 switch (action) { |
| 554 case ACCESSIBLE_FOCUS_NEXT: | 554 case ACCESSIBLE_FOCUS_NEXT: |
| 555 content::RecordAction( | |
| 556 content::UserMetricsAction("Accel_Accessible_Focus_Next")); | |
| 555 return HandleAccessibleFocusCycle(false); | 557 return HandleAccessibleFocusCycle(false); |
| 556 case ACCESSIBLE_FOCUS_PREVIOUS: | 558 case ACCESSIBLE_FOCUS_PREVIOUS: |
| 559 content::RecordAction( | |
| 560 content::UserMetricsAction("Accel_Accessible_Focus_Previous")); | |
| 557 return HandleAccessibleFocusCycle(true); | 561 return HandleAccessibleFocusCycle(true); |
| 558 case CYCLE_BACKWARD_MRU: | 562 case CYCLE_BACKWARD_MRU: |
| 559 HandleCycleBackwardMRU(accelerator); | 563 HandleCycleBackwardMRU(accelerator); |
|
SteveT
2013/11/20 18:43:17
Some of these Handle...() methods do the logging i
James Cook
2013/11/20 19:14:28
Given that this switch statement is way way way to
| |
| 560 return true; | 564 return true; |
| 561 case CYCLE_FORWARD_MRU: | 565 case CYCLE_FORWARD_MRU: |
| 562 HandleCycleForwardMRU(accelerator); | 566 HandleCycleForwardMRU(accelerator); |
| 563 return true; | 567 return true; |
| 564 case CYCLE_LINEAR: | 568 case CYCLE_LINEAR: |
| 565 HandleCycleLinear(accelerator); | 569 HandleCycleLinear(accelerator); |
| 566 return true; | 570 return true; |
| 567 #if defined(OS_CHROMEOS) | 571 #if defined(OS_CHROMEOS) |
| 568 case ADD_REMOVE_DISPLAY: | 572 case ADD_REMOVE_DISPLAY: |
| 573 content::RecordAction( | |
| 574 content::UserMetricsAction("Accel_Add_Remove_Display")); | |
| 569 Shell::GetInstance()->display_manager()->AddRemoveDisplay(); | 575 Shell::GetInstance()->display_manager()->AddRemoveDisplay(); |
| 570 return true; | 576 return true; |
| 571 case TOGGLE_MIRROR_MODE: | 577 case TOGGLE_MIRROR_MODE: |
| 578 content::RecordAction( | |
| 579 content::UserMetricsAction("Accel_Toggle_Mirror_Mode")); | |
| 572 Shell::GetInstance()->display_controller()->ToggleMirrorMode(); | 580 Shell::GetInstance()->display_controller()->ToggleMirrorMode(); |
| 573 return true; | 581 return true; |
| 574 case LOCK_SCREEN: | 582 case LOCK_SCREEN: |
| 575 if (key_code == ui::VKEY_L) | 583 if (key_code == ui::VKEY_L) |
| 576 content::RecordAction(content::UserMetricsAction("Accel_LockScreen_L")); | 584 content::RecordAction(content::UserMetricsAction("Accel_LockScreen_L")); |
| 577 return HandleLock(); | 585 return HandleLock(); |
| 578 case OPEN_FILE_MANAGER: | 586 case OPEN_FILE_MANAGER: |
| 587 content::RecordAction( | |
| 588 content::UserMetricsAction("Accel_Handle_File_Manager")); | |
| 579 return HandleFileManager(); | 589 return HandleFileManager(); |
| 580 case OPEN_CROSH: | 590 case OPEN_CROSH: |
| 591 content::RecordAction( | |
| 592 content::UserMetricsAction("Accel_Open_Crosh")); | |
| 581 return HandleCrosh(); | 593 return HandleCrosh(); |
| 582 case SILENCE_SPOKEN_FEEDBACK: | 594 case SILENCE_SPOKEN_FEEDBACK: |
| 595 content::RecordAction( | |
| 596 content::UserMetricsAction("Accel_Silence_Spoken_Feedback")); | |
| 583 HandleSilenceSpokenFeedback(); | 597 HandleSilenceSpokenFeedback(); |
| 584 break; | 598 break; |
| 585 case SWAP_PRIMARY_DISPLAY: | 599 case SWAP_PRIMARY_DISPLAY: |
| 600 content::RecordAction( | |
| 601 content::UserMetricsAction("Accel_Swap_Primary_Display")); | |
| 586 Shell::GetInstance()->display_controller()->SwapPrimaryDisplay(); | 602 Shell::GetInstance()->display_controller()->SwapPrimaryDisplay(); |
| 587 return true; | 603 return true; |
| 588 case SWITCH_TO_NEXT_USER: | 604 case SWITCH_TO_NEXT_USER: |
| 605 content::RecordAction( | |
| 606 content::UserMetricsAction("Accel_Switch_To_Next_User")); | |
| 589 return SwitchToNextUser(); | 607 return SwitchToNextUser(); |
| 590 case TOGGLE_SPOKEN_FEEDBACK: | 608 case TOGGLE_SPOKEN_FEEDBACK: |
| 609 content::RecordAction( | |
| 610 content::UserMetricsAction("Accel_Toggle_Spoken_Feedback")); | |
| 591 return HandleToggleSpokenFeedback(); | 611 return HandleToggleSpokenFeedback(); |
| 592 case TOGGLE_WIFI: | 612 case TOGGLE_WIFI: |
| 613 content::RecordAction(content::UserMetricsAction("Accel_Toggle_Wifi")); | |
|
SteveT
2013/11/20 18:43:17
Do you know anything about this hotkey? (Ctrl+Alt+
James Cook
2013/11/20 19:14:28
Ctrl+Alt+W should only exist in a Debug build. Sho
| |
| 593 Shell::GetInstance()->system_tray_notifier()->NotifyRequestToggleWifi(); | 614 Shell::GetInstance()->system_tray_notifier()->NotifyRequestToggleWifi(); |
| 594 return true; | 615 return true; |
| 595 case TOUCH_HUD_CLEAR: { | 616 case TOUCH_HUD_CLEAR: { |
| 617 content::RecordAction( | |
| 618 content::UserMetricsAction("Accel_Touch_Hud_Clear")); | |
| 596 internal::RootWindowController* controller = | 619 internal::RootWindowController* controller = |
| 597 internal::RootWindowController::ForTargetRootWindow(); | 620 internal::RootWindowController::ForTargetRootWindow(); |
| 598 if (controller->touch_hud_debug()) { | 621 if (controller->touch_hud_debug()) { |
| 599 controller->touch_hud_debug()->Clear(); | 622 controller->touch_hud_debug()->Clear(); |
| 600 return true; | 623 return true; |
| 601 } | 624 } |
| 602 return false; | 625 return false; |
| 603 } | 626 } |
| 604 case TOUCH_HUD_MODE_CHANGE: { | 627 case TOUCH_HUD_MODE_CHANGE: { |
| 628 content::RecordAction( | |
| 629 content::UserMetricsAction("Accel_Touch_Hud_Mode_Change")); | |
| 605 internal::RootWindowController* controller = | 630 internal::RootWindowController* controller = |
| 606 internal::RootWindowController::ForTargetRootWindow(); | 631 internal::RootWindowController::ForTargetRootWindow(); |
| 607 if (controller->touch_hud_debug()) { | 632 if (controller->touch_hud_debug()) { |
| 608 controller->touch_hud_debug()->ChangeToNextMode(); | 633 controller->touch_hud_debug()->ChangeToNextMode(); |
| 609 return true; | 634 return true; |
| 610 } | 635 } |
| 611 return false; | 636 return false; |
| 612 } | 637 } |
| 613 case TOUCH_HUD_PROJECTION_TOGGLE: { | 638 case TOUCH_HUD_PROJECTION_TOGGLE: { |
| 639 content::RecordAction( | |
| 640 content::UserMetricsAction("Accel_Touch_Hud_Clear")); | |
| 614 bool enabled = Shell::GetInstance()->is_touch_hud_projection_enabled(); | 641 bool enabled = Shell::GetInstance()->is_touch_hud_projection_enabled(); |
| 615 Shell::GetInstance()->SetTouchHudProjectionEnabled(!enabled); | 642 Shell::GetInstance()->SetTouchHudProjectionEnabled(!enabled); |
| 616 return true; | 643 return true; |
| 617 } | 644 } |
| 618 case DISABLE_GPU_WATCHDOG: | 645 case DISABLE_GPU_WATCHDOG: |
| 646 content::RecordAction( | |
| 647 content::UserMetricsAction("Accel_Disable_Gpu_Watchdog")); | |
| 619 content::GpuDataManager::GetInstance()->DisableGpuWatchdog(); | 648 content::GpuDataManager::GetInstance()->DisableGpuWatchdog(); |
| 620 return true; | 649 return true; |
| 621 #endif | 650 #endif |
| 622 case OPEN_FEEDBACK_PAGE: | 651 case OPEN_FEEDBACK_PAGE: |
| 652 content::RecordAction( | |
| 653 content::UserMetricsAction("Accel_Open_Feedback_Page")); | |
| 623 ash::Shell::GetInstance()->new_window_delegate()->OpenFeedbackPage(); | 654 ash::Shell::GetInstance()->new_window_delegate()->OpenFeedbackPage(); |
| 624 return true; | 655 return true; |
| 625 case EXIT: | 656 case EXIT: |
| 626 // UMA metrics are recorded in the handler. | 657 // UMA metrics are recorded in the handler. |
| 627 exit_warning_handler_.HandleAccelerator(); | 658 exit_warning_handler_.HandleAccelerator(); |
| 628 return true; | 659 return true; |
| 629 case NEW_INCOGNITO_WINDOW: { | 660 case NEW_INCOGNITO_WINDOW: { |
| 661 content::RecordAction( | |
| 662 content::UserMetricsAction("Accel_New_Incognito_Window")); | |
| 630 bool incognito_allowed = | 663 bool incognito_allowed = |
| 631 Shell::GetInstance()->delegate()->IsIncognitoAllowed(); | 664 Shell::GetInstance()->delegate()->IsIncognitoAllowed(); |
| 632 if (incognito_allowed) | 665 if (incognito_allowed) |
| 633 Shell::GetInstance()->new_window_delegate()->NewWindow( | 666 Shell::GetInstance()->new_window_delegate()->NewWindow( |
| 634 true /* is_incognito */); | 667 true /* is_incognito */); |
| 635 return incognito_allowed; | 668 return incognito_allowed; |
| 636 } | 669 } |
| 637 case NEW_TAB: | 670 case NEW_TAB: |
| 638 if (key_code == ui::VKEY_T) | 671 if (key_code == ui::VKEY_T) |
|
SteveT
2013/11/20 18:43:17
I am trying to figure out why this does an additio
James Cook
2013/11/20 19:14:28
I have no idea why this checks for 'T'. Maybe ther
| |
| 639 content::RecordAction(content::UserMetricsAction("Accel_NewTab_T")); | 672 content::RecordAction(content::UserMetricsAction("Accel_NewTab_T")); |
| 640 Shell::GetInstance()->new_window_delegate()->NewTab(); | 673 Shell::GetInstance()->new_window_delegate()->NewTab(); |
| 641 return true; | 674 return true; |
| 642 case NEW_WINDOW: | 675 case NEW_WINDOW: |
| 676 content::RecordAction(content::UserMetricsAction("Accel_New_Window")); | |
|
SteveT
2013/11/20 18:43:17
To follow up with the above comment, should I be c
James Cook
2013/11/20 19:14:28
I don't think so.
| |
| 643 Shell::GetInstance()->new_window_delegate()->NewWindow( | 677 Shell::GetInstance()->new_window_delegate()->NewWindow( |
| 644 false /* is_incognito */); | 678 false /* is_incognito */); |
| 645 return true; | 679 return true; |
| 646 case RESTORE_TAB: | 680 case RESTORE_TAB: |
| 681 content::RecordAction(content::UserMetricsAction("Accel_Restore_Tab")); | |
| 647 Shell::GetInstance()->new_window_delegate()->RestoreTab(); | 682 Shell::GetInstance()->new_window_delegate()->RestoreTab(); |
| 648 return true; | 683 return true; |
| 649 case TAKE_SCREENSHOT: | 684 case TAKE_SCREENSHOT: |
| 685 content::RecordAction( | |
| 686 content::UserMetricsAction("Accel_Take_Screenshot")); | |
| 650 if (screenshot_delegate_.get() && | 687 if (screenshot_delegate_.get() && |
| 651 screenshot_delegate_->CanTakeScreenshot()) { | 688 screenshot_delegate_->CanTakeScreenshot()) { |
| 652 screenshot_delegate_->HandleTakeScreenshotForAllRootWindows(); | 689 screenshot_delegate_->HandleTakeScreenshotForAllRootWindows(); |
| 653 } | 690 } |
| 654 // Return true to prevent propagation of the key event. | 691 // Return true to prevent propagation of the key event. |
| 655 return true; | 692 return true; |
| 656 case TAKE_PARTIAL_SCREENSHOT: | 693 case TAKE_PARTIAL_SCREENSHOT: |
| 694 content::RecordAction( | |
| 695 content::UserMetricsAction("Accel_Take_Partial_Screenshot")); | |
| 657 if (screenshot_delegate_) { | 696 if (screenshot_delegate_) { |
| 658 ash::PartialScreenshotView::StartPartialScreenshot( | 697 ash::PartialScreenshotView::StartPartialScreenshot( |
| 659 screenshot_delegate_.get()); | 698 screenshot_delegate_.get()); |
| 660 } | 699 } |
| 661 // Return true to prevent propagation of the key event because | 700 // Return true to prevent propagation of the key event because |
| 662 // this key combination is reserved for partial screenshot. | 701 // this key combination is reserved for partial screenshot. |
| 663 return true; | 702 return true; |
| 664 case TOGGLE_APP_LIST: | 703 case TOGGLE_APP_LIST: |
| 665 // If something else was pressed between the Search key (LWIN) | 704 // If something else was pressed between the Search key (LWIN) |
| 666 // being pressed and released, then ignore the release of the | 705 // being pressed and released, then ignore the release of the |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 996 keyboard_brightness_control_delegate) { | 1035 keyboard_brightness_control_delegate) { |
| 997 keyboard_brightness_control_delegate_ = | 1036 keyboard_brightness_control_delegate_ = |
| 998 keyboard_brightness_control_delegate.Pass(); | 1037 keyboard_brightness_control_delegate.Pass(); |
| 999 } | 1038 } |
| 1000 | 1039 |
| 1001 bool AcceleratorController::CanHandleAccelerators() const { | 1040 bool AcceleratorController::CanHandleAccelerators() const { |
| 1002 return true; | 1041 return true; |
| 1003 } | 1042 } |
| 1004 | 1043 |
| 1005 } // namespace ash | 1044 } // namespace ash |
| OLD | NEW |