summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcylee <cylee@chromium.org>2015-01-08 04:25:31 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-08 12:26:21 +0000
commitb6ce38f297dc7a0788ba3c68a531f1454ce49710 (patch)
treeb9085395e0ec170bd0f3b9c18bc59003e27f80e5
parent240d0b22f67983e3d61466dfac8275d28391697c (diff)
downloadchromium_src-b6ce38f297dc7a0788ba3c68a531f1454ce49710.zip
chromium_src-b6ce38f297dc7a0788ba3c68a531f1454ce49710.tar.gz
chromium_src-b6ce38f297dc7a0788ba3c68a531f1454ce49710.tar.bz2
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}
-rw-r--r--ash/accelerators/accelerator_controller.cc8
-rw-r--r--ash/accelerators/accelerator_table.cc3
-rw-r--r--ash/accelerators/accelerator_table.h1
-rw-r--r--ash/new_window_delegate.h3
-rw-r--r--ash/shell/shell_delegate_impl.cc1
-rw-r--r--ash/test/test_shell_delegate.cc1
-rw-r--r--chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.cc9
-rw-r--r--chrome/browser/ui/ash/chrome_new_window_delegate_chromeos.h1
-rw-r--r--chrome/browser/ui/ash/chrome_shell_delegate_views.cc1
-rw-r--r--chrome/browser/ui/views/accelerator_table_unittest.cc11
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;