From b6ce38f297dc7a0788ba3c68a531f1454ce49710 Mon Sep 17 00:00:00 2001 From: cylee Date: Thu, 8 Jan 2015 04:25:31 -0800 Subject: Enable keyboard accelerator for GetHelp in Ash. In the past the accelerator is handled at browser level so doesn't work if no browser window present. BUG=321568 Review URL: https://codereview.chromium.org/827253002 Cr-Commit-Position: refs/heads/master@{#310485} --- ash/accelerators/accelerator_controller.cc | 8 ++++++++ ash/accelerators/accelerator_table.cc | 3 +++ ash/accelerators/accelerator_table.h | 1 + ash/new_window_delegate.h | 3 +++ ash/shell/shell_delegate_impl.cc | 1 + ash/test/test_shell_delegate.cc | 1 + chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc | 9 ++++++++- chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.h | 1 + chrome/browser/ui/ash/chrome_shell_delegate_views.cc | 1 + chrome/browser/ui/views/accelerator_table_unittest.cc | 11 ++++++----- 10 files changed, 33 insertions(+), 6 deletions(-) diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc index 84f565c..61e00f6 100644 --- a/ash/accelerators/accelerator_controller.cc +++ b/ash/accelerators/accelerator_controller.cc @@ -564,6 +564,10 @@ void HandleFileManager() { Shell::GetInstance()->new_window_delegate()->OpenFileManager(); } +void HandleGetHelp() { + Shell::GetInstance()->new_window_delegate()->OpenGetHelp(); +} + bool CanHandleSilenceSpokenFeedback() { AccessibilityDelegate* delegate = Shell::GetInstance()->accessibility_delegate(); @@ -975,6 +979,7 @@ bool AcceleratorController::CanPerformAction( case LOCK_SCREEN: case OPEN_CROSH: case OPEN_FILE_MANAGER: + case OPEN_GET_HELP: case POWER_PRESSED: case POWER_RELEASED: case SWAP_PRIMARY_DISPLAY: @@ -1207,6 +1212,9 @@ void AcceleratorController::PerformAction(AcceleratorAction action, case OPEN_FILE_MANAGER: HandleFileManager(); break; + case OPEN_GET_HELP: + HandleGetHelp(); + break; case POWER_PRESSED: // fallthrough case POWER_RELEASED: if (!base::SysInfo::IsRunningOnChromeOS()) { diff --git a/ash/accelerators/accelerator_table.cc b/ash/accelerators/accelerator_table.cc index 3668337..0faf610 100644 --- a/ash/accelerators/accelerator_table.cc +++ b/ash/accelerators/accelerator_table.cc @@ -64,6 +64,9 @@ const AcceleratorData kAcceleratorData[] = { { false, ui::VKEY_POWER, ui::EF_NONE, POWER_RELEASED }, { true, ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, OPEN_FILE_MANAGER }, + { true, ui::VKEY_OEM_2, ui::EF_CONTROL_DOWN, OPEN_GET_HELP }, + { true, ui::VKEY_OEM_2, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, + OPEN_GET_HELP }, { true, ui::VKEY_T, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, OPEN_CROSH }, { true, ui::VKEY_G, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, DISABLE_GPU_WATCHDOG }, diff --git a/ash/accelerators/accelerator_table.h b/ash/accelerators/accelerator_table.h index 9f7fae2..1d478a0 100644 --- a/ash/accelerators/accelerator_table.h +++ b/ash/accelerators/accelerator_table.h @@ -123,6 +123,7 @@ enum AcceleratorAction { LOCK_SCREEN, OPEN_CROSH, OPEN_FILE_MANAGER, + OPEN_GET_HELP, POWER_PRESSED, POWER_RELEASED, SILENCE_SPOKEN_FEEDBACK, diff --git a/ash/new_window_delegate.h b/ash/new_window_delegate.h index 57319af..dc88772 100644 --- a/ash/new_window_delegate.h +++ b/ash/new_window_delegate.h @@ -25,6 +25,9 @@ class NewWindowDelegate { // Invoked when the user opens Crosh. virtual void OpenCrosh() = 0; + // Invoked when an accelerator is used to open help center. + virtual void OpenGetHelp() = 0; + // Invoked when the user uses Shift+Ctrl+T to restore the closed tab. virtual void RestoreTab() = 0; diff --git a/ash/shell/shell_delegate_impl.cc b/ash/shell/shell_delegate_impl.cc index c9de885..dc081c6 100644 --- a/ash/shell/shell_delegate_impl.cc +++ b/ash/shell/shell_delegate_impl.cc @@ -45,6 +45,7 @@ class NewWindowDelegateImpl : public NewWindowDelegate { } void OpenFileManager() override {} void OpenCrosh() override {} + void OpenGetHelp() override {} void RestoreTab() override {} void ShowKeyboardOverlay() override {} void ShowTaskManager() override {} diff --git a/ash/test/test_shell_delegate.cc b/ash/test/test_shell_delegate.cc index 49c59a5d6..bb712be 100644 --- a/ash/test/test_shell_delegate.cc +++ b/ash/test/test_shell_delegate.cc @@ -46,6 +46,7 @@ class NewWindowDelegateImpl : public NewWindowDelegate { void NewWindow(bool incognito) override {} void OpenFileManager() override {} void OpenCrosh() override {} + void OpenGetHelp() override {} void RestoreTab() override {} void ShowKeyboardOverlay() override {} void ShowTaskManager() override {} diff --git a/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc b/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc index 56d7d24..8aad0a4 100644 --- a/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc +++ b/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc @@ -12,6 +12,7 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" @@ -40,7 +41,13 @@ void ChromeNewWindowDelegateChromeos::OpenFileManager() { service->GetInstalledExtension(kFileManagerAppId); OpenApplication(AppLaunchParams(profile, extension, CURRENT_TAB, chrome::HOST_DESKTOP_TYPE_ASH, - extensions::SOURCE_CHROME_INTERNAL)); + extensions::SOURCE_KEYBOARD)); +} + +void ChromeNewWindowDelegateChromeos::OpenGetHelp() { + Profile* const profile = ProfileManager::GetActiveUserProfile(); + chrome::ShowHelpForProfile( + profile, chrome::HOST_DESKTOP_TYPE_ASH, chrome::HELP_SOURCE_KEYBOARD); } void ChromeNewWindowDelegateChromeos::OpenCrosh() { diff --git a/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.h b/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.h index b8a46ba..e53a7da 100644 --- a/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.h +++ b/chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.h @@ -15,6 +15,7 @@ class ChromeNewWindowDelegateChromeos : public ChromeNewWindowDelegate { // Overridden from ash::NewWindowDelegate: virtual void OpenFileManager() override; virtual void OpenCrosh() override; + virtual void OpenGetHelp() override; virtual void ShowKeyboardOverlay() override; private: diff --git a/chrome/browser/ui/ash/chrome_shell_delegate_views.cc b/chrome/browser/ui/ash/chrome_shell_delegate_views.cc index 5e0703c..de13bd2 100644 --- a/chrome/browser/ui/ash/chrome_shell_delegate_views.cc +++ b/chrome/browser/ui/ash/chrome_shell_delegate_views.cc @@ -44,6 +44,7 @@ class NewWindowDelegateImpl : public ChromeNewWindowDelegate { // Overridden from ash::NewWindowDelegate: void OpenFileManager() override {} void OpenCrosh() override {} + void OpenGetHelp() override {} void ShowKeyboardOverlay() override {} private: diff --git a/chrome/browser/ui/views/accelerator_table_unittest.cc b/chrome/browser/ui/views/accelerator_table_unittest.cc index 38db3cd..156dd9b 100644 --- a/chrome/browser/ui/views/accelerator_table_unittest.cc +++ b/chrome/browser/ui/views/accelerator_table_unittest.cc @@ -56,13 +56,14 @@ TEST(AcceleratorTableTest, CheckDuplicatedAcceleratorsAsh) { const ash::AcceleratorData& ash_entry = ash::kAcceleratorData[i]; if (!ash_entry.trigger_on_press) continue; // kAcceleratorMap does not have any release accelerators. - // The shortcuts to toggle minimized state, to show the task manager, and - // to toggle touch HUD are defined on browser side as well as ash side by - // design so that web contents can consume these short cuts. (see - // crbug.com/309915, 370019, 412435 and CL) + // The shortcuts to toggle minimized state, to show the task manager, + // to toggle touch HUD, and to open help page are defined on browser side + // as well as ash side by design so that web contents can consume these + // short cuts. (see crbug.com/309915, 370019, 412435, 321568 and CL) if (ash_entry.action == ash::WINDOW_MINIMIZE || ash_entry.action == ash::SHOW_TASK_MANAGER || - ash_entry.action == ash::TOUCH_HUD_PROJECTION_TOGGLE) + ash_entry.action == ash::TOUCH_HUD_PROJECTION_TOGGLE || + ash_entry.action == ash::OPEN_GET_HELP) continue; AcceleratorMapping entry; entry.keycode = ash_entry.keycode; -- cgit v1.1