magnifier_key_scroller.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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_MAGNIFIER_KEY_SCROLLER_H_
  5. #define ASH_ACCELERATORS_MAGNIFIER_KEY_SCROLLER_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 control control magnified screen.
  15. class ASH_EXPORT MagnifierKeyScroller : public KeyHoldDetector::Delegate {
  16. public:
  17. MagnifierKeyScroller(const MagnifierKeyScroller&) = delete;
  18. MagnifierKeyScroller& operator=(const MagnifierKeyScroller&) = 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. MagnifierKeyScroller();
  38. ~MagnifierKeyScroller() override;
  39. };
  40. } // namespace ash
  41. #endif // ASH_ACCELERATORS_MAGNIFIER_KEY_SCROLLER_H_