• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
ScopedEnablerForTest()29     ScopedEnablerForTest() {
30       SetEnabled(true);
31     }
~ScopedEnablerForTest()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