summaryrefslogtreecommitdiffstats
path: root/ash/accelerators
diff options
context:
space:
mode:
authordtseng <dtseng@chromium.org>2015-06-25 10:54:20 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-25 17:54:54 +0000
commit459d62d31a6ba4b24c6270428ba88f6d5e9393c8 (patch)
tree7eb47a0877d7c359cb5f2cbaf548055cfd6eb6e7 /ash/accelerators
parentcb8f11d6958356069893c66d7755d9e868a59a7e (diff)
downloadchromium_src-459d62d31a6ba4b24c6270428ba88f6d5e9393c8.zip
chromium_src-459d62d31a6ba4b24c6270428ba88f6d5e9393c8.tar.gz
chromium_src-459d62d31a6ba4b24c6270428ba88f6d5e9393c8.tar.bz2
Revert of Support Compat mode inside of the desktop tree. (patchset #12 id:220001 of https://codereview.chromium.org/1191783002/)
Reason for revert: Parent change reverted. https://codereview.chromium.org/1185753008/ Original issue's description: > Support Compat mode inside of the desktop tree. > > Depends on > https://codereview.chromium.org/1185753008/ > > Removes native bindings for Search+Shift+Arrows in favor of the extension commands bindings. Enables all ChromeVox Compat/Next commands inside of the desktop tree. Adds a test to exercise next element and next button commands. > > Also, whitelists root nodes without urls for ChromeVox compat. This includes the shelf/launcher. > > TEST=SpokenFeedbackTest.* > > Committed: https://crrev.com/e7b1c72c03dcf636e50917b2c8122e5d0ef884b6 > Cr-Commit-Position: refs/heads/master@{#336181} TBR=dmazzoni@chromium.org,oshima@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1213513003 Cr-Commit-Position: refs/heads/master@{#336195}
Diffstat (limited to 'ash/accelerators')
-rw-r--r--ash/accelerators/accelerator_controller.cc40
-rw-r--r--ash/accelerators/accelerator_table.cc7
-rw-r--r--ash/accelerators/accelerator_table.h2
3 files changed, 49 insertions, 0 deletions
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index 8f1d947..6eb68a3 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -79,6 +79,37 @@ namespace {
using base::UserMetricsAction;
+bool CanHandleAccessibleFocusCycle() {
+ if (!Shell::GetInstance()->accessibility_delegate()->
+ IsSpokenFeedbackEnabled()) {
+ return false;
+ }
+ aura::Window* active_window = ash::wm::GetActiveWindow();
+ if (!active_window)
+ return false;
+ views::Widget* widget =
+ views::Widget::GetWidgetForNativeWindow(active_window);
+ if (!widget)
+ return false;
+ views::FocusManager* focus_manager = widget->GetFocusManager();
+ if (!focus_manager)
+ return false;
+ views::View* view = focus_manager->GetFocusedView();
+ return view && strcmp(view->GetClassName(), views::WebView::kViewClassName);
+}
+
+void HandleAccessibleFocusCycle(bool reverse) {
+ if (reverse)
+ base::RecordAction(UserMetricsAction("Accel_Accessible_Focus_Previous"));
+ else
+ base::RecordAction(UserMetricsAction("Accel_Accessible_Focus_Next"));
+
+ aura::Window* active_window = ash::wm::GetActiveWindow();
+ views::Widget* widget =
+ views::Widget::GetWidgetForNativeWindow(active_window);
+ widget->GetFocusManager()->AdvanceFocus(reverse);
+}
+
void HandleCycleBackwardMRU(const ui::Accelerator& accelerator) {
if (accelerator.key_code() == ui::VKEY_TAB)
base::RecordAction(base::UserMetricsAction("Accel_PrevWindow_Tab"));
@@ -849,6 +880,9 @@ bool AcceleratorController::CanPerformAction(
// false should be returned to give the web contents a chance at handling the
// accelerator.
switch (action) {
+ case ACCESSIBLE_FOCUS_NEXT:
+ case ACCESSIBLE_FOCUS_PREVIOUS:
+ return CanHandleAccessibleFocusCycle();
case DEBUG_PRINT_LAYER_HIERARCHY:
case DEBUG_PRINT_VIEW_HIERARCHY:
case DEBUG_PRINT_WINDOW_HIERARCHY:
@@ -979,6 +1013,12 @@ void AcceleratorController::PerformAction(AcceleratorAction action,
// implement it in your module's controller code (like TOGGLE_MIRROR_MODE
// below) or pull it into a HandleFoo() function above.
switch (action) {
+ case ACCESSIBLE_FOCUS_NEXT:
+ HandleAccessibleFocusCycle(false);
+ break;
+ case ACCESSIBLE_FOCUS_PREVIOUS:
+ HandleAccessibleFocusCycle(true);
+ break;
case CYCLE_BACKWARD_MRU:
HandleCycleBackwardMRU(accelerator);
break;
diff --git a/ash/accelerators/accelerator_table.cc b/ash/accelerators/accelerator_table.cc
index 446819c..93ddb01 100644
--- a/ash/accelerators/accelerator_table.cc
+++ b/ash/accelerators/accelerator_table.cc
@@ -171,6 +171,11 @@ const AcceleratorData kAcceleratorData[] = {
{ true, ui::VKEY_U, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN,
PRINT_UI_HIERARCHIES },
+ { false, ui::VKEY_HOME, ui::EF_SHIFT_DOWN, ACCESSIBLE_FOCUS_PREVIOUS},
+ { false, ui::VKEY_PRIOR, ui::EF_SHIFT_DOWN, ACCESSIBLE_FOCUS_PREVIOUS},
+ { false, ui::VKEY_END, ui::EF_SHIFT_DOWN, ACCESSIBLE_FOCUS_NEXT},
+ { false, ui::VKEY_NEXT, ui::EF_SHIFT_DOWN, ACCESSIBLE_FOCUS_NEXT},
+
// TODO(yusukes): Handle VKEY_MEDIA_STOP, and
// VKEY_MEDIA_LAUNCH_MAIL.
};
@@ -403,6 +408,8 @@ const size_t kActionsAllowedInAppModeLength =
arraysize(kActionsAllowedInAppMode);
const AcceleratorAction kActionsNeedingWindow[] = {
+ ACCESSIBLE_FOCUS_NEXT,
+ ACCESSIBLE_FOCUS_PREVIOUS,
CYCLE_BACKWARD_MRU,
CYCLE_FORWARD_MRU,
TOGGLE_OVERVIEW,
diff --git a/ash/accelerators/accelerator_table.h b/ash/accelerators/accelerator_table.h
index 86ec318..1d478a0 100644
--- a/ash/accelerators/accelerator_table.h
+++ b/ash/accelerators/accelerator_table.h
@@ -51,6 +51,8 @@ namespace ash {
// Please put if/def sections at the end of the bare section and keep the list
// within each section in alphabetical order.
enum AcceleratorAction {
+ ACCESSIBLE_FOCUS_NEXT,
+ ACCESSIBLE_FOCUS_PREVIOUS,
CYCLE_BACKWARD_MRU,
CYCLE_FORWARD_MRU,
DEBUG_PRINT_LAYER_HIERARCHY,