Index: ash/magnifier/magnifier_key_scroller.cc |
diff --git a/ash/magnifier/magnifier_key_scroller.cc b/ash/magnifier/magnifier_key_scroller.cc |
deleted file mode 100644 |
index 745fe8a59c841a367e540a0d914d707d96d31d53..0000000000000000000000000000000000000000 |
--- a/ash/magnifier/magnifier_key_scroller.cc |
+++ /dev/null |
@@ -1,146 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ash/magnifier/magnifier_key_scroller.h" |
- |
-#include <X11/Xlib.h> |
- |
-#undef RootWindow |
-#undef Status |
- |
-#include "ash/ash_switches.h" |
-#include "ash/magnifier/magnification_controller.h" |
-#include "ash/shell.h" |
-#include "base/command_line.h" |
-#include "base/message_loop/message_loop.h" |
-#include "ui/aura/root_window.h" |
-#include "ui/aura/window_tracker.h" |
- |
-namespace ash { |
-namespace { |
- |
-bool magnifier_key_scroller_enabled = false; |
- |
-void ScrollScreen(ui::KeyEvent* event) { |
- MagnificationController* controller = |
- Shell::GetInstance()->magnification_controller(); |
- switch (event->key_code()) { |
- case ui::VKEY_UP: |
- controller->SetScrollDirection(MagnificationController::SCROLL_UP); |
- break; |
- case ui::VKEY_DOWN: |
- controller->SetScrollDirection(MagnificationController::SCROLL_DOWN); |
- break; |
- case ui::VKEY_LEFT: |
- controller->SetScrollDirection(MagnificationController::SCROLL_LEFT); |
- break; |
- case ui::VKEY_RIGHT: |
- controller->SetScrollDirection(MagnificationController::SCROLL_RIGHT); |
- break; |
- default: |
- NOTREACHED() << "Unknown keyboard_code:" << event->key_code(); |
- } |
-} |
- |
-void DispatchPressedEvent(XEvent native_event, |
- scoped_ptr<aura::WindowTracker> tracker) { |
- // The target window may be gone. |
- if (tracker->windows().empty()) |
- return; |
- aura::Window* target = *(tracker->windows().begin()); |
- ui::KeyEvent event(&native_event, false); |
- event.set_flags(event.flags() | ui::EF_IS_SYNTHESIZED); |
- ui::EventDispatchDetails result ALLOW_UNUSED = |
- target->GetDispatcher()->OnEventFromSource(&event); |
-} |
- |
-void PostPressedEvent(ui::KeyEvent* event) { |
- // Modify RELEASED event to PRESSED event. |
- XEvent xkey = *(event->native_event()); |
- xkey.xkey.type = KeyPress; |
- xkey.xkey.state |= ShiftMask; |
- scoped_ptr<aura::WindowTracker> tracker(new aura::WindowTracker); |
- tracker->Add(static_cast<aura::Window*>(event->target())); |
- |
- base::MessageLoopForUI::current()->PostTask( |
- FROM_HERE, |
- base::Bind(&DispatchPressedEvent, xkey, base::Passed(&tracker))); |
-} |
- |
-} // namespace |
- |
-// static |
-bool MagnifierKeyScroller::IsEnabled() { |
- return (magnifier_key_scroller_enabled || |
- CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kAshEnableMagnifierKeyScroller)) && |
- ash::Shell::GetInstance()->magnification_controller()->IsEnabled(); |
-} |
- |
-// static |
-void MagnifierKeyScroller::SetEnabled(bool enabled) { |
- magnifier_key_scroller_enabled = enabled; |
-} |
- |
-MagnifierKeyScroller::MagnifierKeyScroller() |
- : state_(INITIAL) {} |
- |
-MagnifierKeyScroller::~MagnifierKeyScroller() {} |
- |
-void MagnifierKeyScroller::OnKeyEvent( |
- ui::KeyEvent* event) { |
- if (!IsEnabled()) |
- return; |
- |
- if (event->key_code() != ui::VKEY_UP && |
- event->key_code() != ui::VKEY_DOWN && |
- event->key_code() != ui::VKEY_LEFT && |
- event->key_code() != ui::VKEY_RIGHT) { |
- return; |
- } |
- |
- if (event->type() == ui::ET_KEY_PRESSED && |
- event->flags() & ui::EF_SHIFT_DOWN) { |
- switch (state_) { |
- case INITIAL: |
- // Pass through posted event. |
- if (event->flags() & ui::EF_IS_SYNTHESIZED) { |
- event->set_flags(event->flags() & ~ui::EF_IS_SYNTHESIZED); |
- return; |
- } |
- state_ = PRESSED; |
- // Don't process ET_KEY_PRESSED event yet. The ET_KEY_PRESSED |
- // event will be generated upon ET_KEY_RELEASEED event below. |
- event->StopPropagation(); |
- break; |
- case PRESSED: |
- state_ = HOLD; |
- // pass through |
- case HOLD: |
- ScrollScreen(event); |
- event->StopPropagation(); |
- break; |
- } |
- } else if (event->type() == ui::ET_KEY_RELEASED) { |
- switch (state_) { |
- case INITIAL: |
- break; |
- case PRESSED: { |
- PostPressedEvent(event); |
- event->StopPropagation(); |
- break; |
- } |
- case HOLD: { |
- MagnificationController* controller = |
- Shell::GetInstance()->magnification_controller(); |
- controller->SetScrollDirection(MagnificationController::SCROLL_NONE); |
- event->StopPropagation(); |
- break; |
- } |
- } |
- state_ = INITIAL; |
- } |
-} |
- |
-} // namespace ash |