Chromium Code Reviews| Index: chrome/browser/chromeos/accessibility/accessibility_manager.h |
| diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.h b/chrome/browser/chromeos/accessibility/accessibility_manager.h |
| index f805ee5576c163a2cb24524d0cef70a7d16f95f3..41fb8bc40df0414afcf2a4e5190cd5dbea90104a 100644 |
| --- a/chrome/browser/chromeos/accessibility/accessibility_manager.h |
| +++ b/chrome/browser/chromeos/accessibility/accessibility_manager.h |
| @@ -9,6 +9,7 @@ |
| #include "ash/accessibility_delegate.h" |
| #include "ash/session_state_observer.h" |
| +#include "base/callback_list.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/prefs/pref_change_registrar.h" |
| #include "base/time/time.h" |
| @@ -26,21 +27,42 @@ class Profile; |
| namespace chromeos { |
| +enum AccessibilityNotificationType { |
| + ACCESSIBILITY_MANAGER_SHUTDOWN, |
| + ACCESSIBILITY_TOGGLE_HIGH_CONTRAST_MODE, |
| + ACCESSIBILITY_TOGGLE_LARGE_CURSOR, |
| + ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER, |
| + ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK, |
| + ACCESSIBILITY_TOGGLE_VIRTUAL_KEYBOARD |
| +}; |
| + |
| struct AccessibilityStatusEventDetails { |
| AccessibilityStatusEventDetails( |
| + AccessibilityNotificationType notification_type, |
| bool enabled, |
| ash::AccessibilityNotificationVisibility notify); |
| AccessibilityStatusEventDetails( |
| + AccessibilityNotificationType notification_type, |
| bool enabled, |
| ash::MagnifierType magnifier_type, |
| ash::AccessibilityNotificationVisibility notify); |
| + AccessibilityNotificationType notification_type; |
| bool enabled; |
| ash::MagnifierType magnifier_type; |
| ash::AccessibilityNotificationVisibility notify; |
| }; |
| +typedef base::Callback<void(const AccessibilityStatusEventDetails&)> |
| + AccessibilityStatusCallback; |
| + |
| +typedef base::CallbackList<void(const AccessibilityStatusEventDetails&)> |
| + AccessibilityStatusCallbackList; |
| + |
| +typedef AccessibilityStatusCallbackList::Subscription |
| + AccessibilityStatusSubscription; |
| + |
| // AccessibilityManager changes the statuses of accessibility features |
| // watching profile notifications and pref-changes. |
| // TODO(yoshiki): merge MagnificationManager with AccessibilityManager. |
| @@ -144,6 +166,15 @@ class AccessibilityManager : public content::NotificationObserver, |
| // Injects ChromeVox scripts into given |render_view_host|. |
| void InjectChromeVox(content::RenderViewHost* render_view_host); |
| + // Register a callback to be notified when the status of an accessibility |
| + // option changes. |
| + scoped_ptr<AccessibilityStatusSubscription> RegisterCallback( |
| + const AccessibilityStatusCallback& cb); |
| + |
| + // Notify registered callbacks of a status change in an accessibility setting. |
| + void NotifyAccessibilityStatusChanged( |
| + AccessibilityStatusEventDetails& details); |
| + |
| protected: |
| AccessibilityManager(); |
| virtual ~AccessibilityManager(); |
| @@ -170,7 +201,6 @@ class AccessibilityManager : public content::NotificationObserver, |
| void ReceiveBrailleDisplayState( |
| scoped_ptr<extensions::api::braille_display_private::DisplayState> state); |
| - |
| void SetProfile(Profile* profile); |
| void UpdateChromeOSAccessibilityHistograms(); |
| @@ -222,6 +252,8 @@ class AccessibilityManager : public content::NotificationObserver, |
| bool system_sounds_enabled_; |
| + AccessibilityStatusCallbackList callback_list_; |
|
David Tseng
2014/02/21 17:42:59
I'm unclear as to the ownership of this list. It's
kevers
2014/02/21 17:52:31
External classes reset/cancel their subscriptions
David Tseng
2014/02/21 19:44:51
Ok; thanks for clarifying.
|
| + |
| DISALLOW_COPY_AND_ASSIGN(AccessibilityManager); |
| }; |