spoken_feedback_toggler.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. #ifndef ASH_ACCELERATORS_SPOKEN_FEEDBACK_TOGGLER_H_
  5. #define ASH_ACCELERATORS_SPOKEN_FEEDBACK_TOGGLER_H_
  6. #include <memory>
  7. #include "ash/accelerators/key_hold_detector.h"
  8. #include "ash/ash_export.h"
  9. #include "ui/events/event_handler.h"
  10. namespace ui {
  11. class KeyEvent;
  12. }
  13. namespace ash {
  14. // A KeyHoldDetector delegate to toggle spoken feedback.
  15. class ASH_EXPORT SpokenFeedbackToggler : public KeyHoldDetector::Delegate {
  16. public:
  17. SpokenFeedbackToggler(const SpokenFeedbackToggler&) = delete;
  18. SpokenFeedbackToggler& operator=(const SpokenFeedbackToggler&) = delete;
  19. static bool IsEnabled();
  20. static void SetEnabled(bool enabled);
  21. static std::unique_ptr<ui::EventHandler> CreateHandler();
  22. // A scoped object to enable and disable the magnifier accelerator for test.
  23. class ScopedEnablerForTest {
  24. public:
  25. ScopedEnablerForTest() { SetEnabled(true); }
  26. ScopedEnablerForTest(const ScopedEnablerForTest&) = delete;
  27. ScopedEnablerForTest& operator=(const ScopedEnablerForTest&) = delete;
  28. ~ScopedEnablerForTest() { SetEnabled(false); }
  29. };
  30. private:
  31. // KeyHoldDetector overrides:
  32. bool ShouldProcessEvent(const ui::KeyEvent* event) const override;
  33. bool IsStartEvent(const ui::KeyEvent* event) const override;
  34. bool ShouldStopEventPropagation() const override;
  35. void OnKeyHold(const ui::KeyEvent* event) override;
  36. void OnKeyUnhold(const ui::KeyEvent* event) override;
  37. SpokenFeedbackToggler();
  38. ~SpokenFeedbackToggler() override;
  39. bool toggled_;
  40. };
  41. } // namespace ash
  42. #endif // ASH_ACCELERATORS_SPOKEN_FEEDBACK_TOGGLER_H_