| 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..e2d9815588891d460b4d7f7b16fd66435b29cfbe 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,43 @@ class Profile;
|
|
|
| namespace chromeos {
|
|
|
| +enum AccessibilityNotificationType {
|
| + ACCESSIBILITY_NOTIFICATION_NONE,
|
| + 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 +167,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 +202,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 +253,8 @@ class AccessibilityManager : public content::NotificationObserver,
|
|
|
| bool system_sounds_enabled_;
|
|
|
| + AccessibilityStatusCallbackList callback_list_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(AccessibilityManager);
|
| };
|
|
|
|
|