1// Copyright 2013 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_ACCESSIBILITY_DELEGATE_H_
6#define ASH_ACCESSIBILITY_DELEGATE_H_
7
8#include "ash/ash_export.h"
9#include "ash/magnifier/magnifier_constants.h"
10#include "base/time/time.h"
11
12namespace ash {
13
14enum AccessibilityNotificationVisibility {
15  A11Y_NOTIFICATION_NONE,
16  A11Y_NOTIFICATION_SHOW,
17};
18
19enum AccessibilityAlert {
20  A11Y_ALERT_NONE,
21  A11Y_ALERT_WINDOW_NEEDED,
22  A11Y_ALERT_WINDOW_OVERVIEW_MODE_ENTERED
23};
24
25// A delegate class to control and query accessibility features.
26class ASH_EXPORT AccessibilityDelegate {
27 public:
28  virtual ~AccessibilityDelegate() {}
29
30  // Invoked to toggle spoken feedback for accessibility
31  virtual void ToggleSpokenFeedback(
32      AccessibilityNotificationVisibility notify) = 0;
33
34  // Returns true if spoken feedback is enabled.
35  virtual bool IsSpokenFeedbackEnabled() const = 0;
36
37  // Invoked to toggle high contrast mode for accessibility.
38  virtual void ToggleHighContrast() = 0;
39
40  // Returns true if high contrast mode is enabled.
41  virtual bool IsHighContrastEnabled() const = 0;
42
43  // Invoked to enable the screen magnifier.
44  virtual void SetMagnifierEnabled(bool enabled) = 0;
45
46  // Invoked to change the type of the screen magnifier.
47  virtual void SetMagnifierType(MagnifierType type) = 0;
48
49  // Returns true if the screen magnifier is enabled.
50  virtual bool IsMagnifierEnabled() const = 0;
51
52  // Returns the current screen magnifier mode.
53  virtual MagnifierType GetMagnifierType() const = 0;
54
55  // Invoked to enable Large Cursor.
56  virtual void SetLargeCursorEnabled(bool enabled) = 0;
57
58  // Returns ture if Large Cursor is enabled.
59  virtual bool IsLargeCursorEnabled() const = 0;
60
61  // Invoked to enable autoclick.
62  virtual void SetAutoclickEnabled(bool enabled) = 0;
63
64  // Returns if autoclick is enabled or not.
65  virtual bool IsAutoclickEnabled() const = 0;
66
67  // Invoked to enable or disable the a11y on-screen keyboard.
68  virtual void SetVirtualKeyboardEnabled(bool enabled) = 0;
69
70  // Returns if the a11y virtual keyboard is enabled.
71  virtual bool IsVirtualKeyboardEnabled() const = 0;
72
73  // Returns true when the accessibility menu should be shown.
74  virtual bool ShouldShowAccessibilityMenu() const = 0;
75
76  // Returns true if a braille display is connected to the system.
77  virtual bool IsBrailleDisplayConnected() const = 0;
78
79  // Cancel all current and queued speech immediately.
80  virtual void SilenceSpokenFeedback() const = 0;
81
82  // Saves the zoom scale of the full screen magnifier.
83  virtual void SaveScreenMagnifierScale(double scale) = 0;
84
85  // Gets a saved value of the zoom scale of full screen magnifier. If a value
86  // is not saved, return a negative value.
87  virtual double GetSavedScreenMagnifierScale() = 0;
88
89  // Triggers an accessibility alert to give the user feedback.
90  virtual void TriggerAccessibilityAlert(AccessibilityAlert alert) = 0;
91
92  // Gets the last accessibility alert that was triggered.
93  virtual AccessibilityAlert GetLastAccessibilityAlert() = 0;
94
95  // Plays an earcon. Earcons are brief and distinctive sounds that indicate
96  // when their mapped event has occurred. The sound key enums can be found in
97  // chromeos/audio/chromeos_sounds.h.
98  virtual void PlayEarcon(int sound_key) = 0;
99
100  // Initiates play of shutdown sound and returns it's duration.
101  virtual base::TimeDelta PlayShutdownSound() const = 0;
102};
103
104}  // namespace ash
105
106#endif  // ASH_ACCESSIBILITY_DELEGATE_H_
107