Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3085)

Unified Diff: ash/accelerators/accelerator_controller.cc

Issue 155493002: Add key based scrolling on magnified screen for kiosk mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/accelerators/accelerator_controller.cc
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index b7a51cfb50a6a5ea6b9fa8f107c11f879a592fe9..f660addc64135352d09717cdaa688fedaf2ed077 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -236,6 +236,17 @@ bool HandleMagnifyScreen(int delta_index) {
return true;
}
+bool HandleMagnifyScreenScroll(
+ MagnificationController::ScrollDirection direction) {
+ MagnificationController* controller =
+ ash::Shell::GetInstance()->magnification_controller();
+ if (controller->IsEnabled()) {
+ controller->SetScrollDirection(direction);
+ return true;
+ }
+ return false;
+}
+
bool HandleMediaNextTrack() {
Shell::GetInstance()->media_delegate()->HandleMediaNextTrack();
return true;
@@ -798,7 +809,7 @@ void AcceleratorController::Init() {
for (size_t i = 0; i < kActionsAllowedAtModalWindowLength; ++i)
actions_allowed_at_modal_window_.insert(kActionsAllowedAtModalWindow[i]);
for (size_t i = 0; i < kReservedActionsLength; ++i)
- reserved_actions_.insert(kReservedActions[i]);
+ AddReservedAction(kReservedActions[i]);
for (size_t i = 0; i < kNonrepeatableActionsLength; ++i)
nonrepeatable_actions_.insert(kNonrepeatableActions[i]);
for (size_t i = 0; i < kActionsAllowedInAppModeLength; ++i)
@@ -815,7 +826,7 @@ void AcceleratorController::Init() {
if (DebugShortcutsEnabled()) {
RegisterAccelerators(kDebugAcceleratorData, kDebugAcceleratorDataLength);
for (size_t i = 0; i < kReservedDebugActionsLength; ++i)
- reserved_actions_.insert(kReservedDebugActions[i]);
+ AddReservedAction(kReservedDebugActions[i]);
}
#if defined(OS_CHROMEOS)
@@ -824,6 +835,20 @@ void AcceleratorController::Init() {
#endif
}
+void AcceleratorController::InstallMagnifierAccelerators() {
+ RegisterAccelerators(kMagnifierAcceleratorData,
+ kMagnifierAcceleratorDataLength);
+ for (size_t i = 0; i < kMagnifierAcceleratorDataLength; i++)
+ AddReservedAction(kMagnifierAcceleratorData[i].action);
+}
+
+void AcceleratorController::UninstallMagnifierAccelerators() {
+ UnregisterAccelerators(kMagnifierAcceleratorData,
+ kMagnifierAcceleratorDataLength);
+ for (size_t i = 0; i < kMagnifierAcceleratorDataLength; i++)
+ RemoveReservedAction(kMagnifierAcceleratorData[i].action);
+}
+
void AcceleratorController::Register(const ui::Accelerator& accelerator,
ui::AcceleratorTarget* target) {
accelerator_manager_->Register(accelerator,
@@ -1117,6 +1142,16 @@ bool AcceleratorController::PerformAction(int action,
return HandleMagnifyScreen(1);
case MAGNIFY_SCREEN_ZOOM_OUT:
return HandleMagnifyScreen(-1);
+ case MAGNIFY_SCREEN_UP:
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_UP);
+ case MAGNIFY_SCREEN_DOWN:
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_DOWN);
+ case MAGNIFY_SCREEN_LEFT:
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_LEFT);
+ case MAGNIFY_SCREEN_RIGHT:
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_RIGHT);
+ case MAGNIFY_SCREEN_STOP_SCROLL:
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_NONE);
case MEDIA_NEXT_TRACK:
return HandleMediaNextTrack();
case MEDIA_PLAY_PAUSE:
@@ -1201,6 +1236,33 @@ void AcceleratorController::RegisterAccelerators(
}
}
+void AcceleratorController::UnregisterAccelerators(
+ const AcceleratorData accelerators[],
+ size_t accelerators_length) {
+ for (size_t i = 0; i < accelerators_length; ++i) {
+ ui::Accelerator accelerator(accelerators[i].keycode,
+ accelerators[i].modifiers);
+ accelerator.set_type(accelerators[i].trigger_on_press ?
+ ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED);
+ Unregister(accelerator, this);
+ std::map<ui::Accelerator, int>::const_iterator it =
+ accelerators_.find(accelerator);
+ DCHECK(it != accelerators_.end());
+ accelerators_.erase(it);
+ }
+}
+
+void AcceleratorController::AddReservedAction(AcceleratorAction action) {
+ if (reserved_actions_.find(action) == reserved_actions_.end())
+ reserved_actions_.insert(action);
+}
+
+void AcceleratorController::RemoveReservedAction(AcceleratorAction action) {
+ std::set<int>::const_iterator it = reserved_actions_.find(action);
+ if (it != reserved_actions_.end())
+ reserved_actions_.erase(it);
+}
+
void AcceleratorController::SetKeyboardBrightnessControlDelegate(
scoped_ptr<KeyboardBrightnessControlDelegate>
keyboard_brightness_control_delegate) {

Powered by Google App Engine
This is Rietveld 408576698