1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef ASH_ACCELERATORS_MAGNIFIER_KEY_SCROLLER_H_ 6 #define ASH_ACCELERATORS_MAGNIFIER_KEY_SCROLLER_H_ 7 8 #include "ash/accelerators/key_hold_detector.h" 9 #include "ash/ash_export.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "ui/events/event_handler.h" 12 13 namespace ui { 14 class KeyEvent; 15 } 16 17 namespace ash { 18 19 // A KeyHoldDetector delegate to control control magnified screen. 20 class ASH_EXPORT MagnifierKeyScroller : public KeyHoldDetector::Delegate { 21 public: 22 static bool IsEnabled(); 23 static void SetEnabled(bool enabled); 24 static scoped_ptr<ui::EventHandler> CreateHandler(); 25 26 // A scoped object to enable and disable the magnifier accelerator for test. 27 class ScopedEnablerForTest { 28 public: 29 ScopedEnablerForTest() { 30 SetEnabled(true); 31 } 32 ~ScopedEnablerForTest() { 33 SetEnabled(false); 34 } 35 36 private: 37 DISALLOW_COPY_AND_ASSIGN(ScopedEnablerForTest); 38 }; 39 40 private: 41 // KeyHoldDetector overrides: 42 virtual bool ShouldProcessEvent(const ui::KeyEvent* event) const OVERRIDE; 43 virtual bool IsStartEvent(const ui::KeyEvent* event) const OVERRIDE; 44 virtual void OnKeyHold(const ui::KeyEvent* event) OVERRIDE; 45 virtual void OnKeyUnhold(const ui::KeyEvent* event) OVERRIDE; 46 47 MagnifierKeyScroller(); 48 virtual ~MagnifierKeyScroller(); 49 50 DISALLOW_COPY_AND_ASSIGN(MagnifierKeyScroller); 51 }; 52 53 } // namespace ash 54 55 #endif // ASH_ACCELERATORS_MAGNIFIER_KEY_SCROLLER_H_ 56