Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / ash / accelerators / spoken_feedback_toggler.h
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_SPOKEN_FEEDBACK_TOGGLER_H_
6 #define ASH_ACCELERATORS_SPOKEN_FEEDBACK_TOGGLER_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 toggle spoken feedback.
20 class ASH_EXPORT SpokenFeedbackToggler : 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   SpokenFeedbackToggler();
48   virtual ~SpokenFeedbackToggler();
49
50   bool toggled_;
51
52   DISALLOW_COPY_AND_ASSIGN(SpokenFeedbackToggler);
53 };
54
55 }  // namespace ash
56
57 #endif  // ASH_ACCELERATORS_SPOKEN_FEEDBACK_TOGGLER_H_