| Index: chrome/browser/chromeos/accessibility/accessibility_manager.cc
|
| diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
|
| index b2f3ed5f7e064d822acc5d3fe1c571a5ef89cd88..aa7a0437d13f8278f9592306a2ee2a4dcb70ccf3 100644
|
| --- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc
|
| +++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
|
| @@ -209,17 +209,21 @@ void UnloadChromeVoxExtension(Profile* profile) {
|
| // AccessibilityStatusEventDetails
|
|
|
| AccessibilityStatusEventDetails::AccessibilityStatusEventDetails(
|
| + AccessibilityNotificationType notification_type,
|
| bool enabled,
|
| ash::AccessibilityNotificationVisibility notify)
|
| - : enabled(enabled),
|
| + : notification_type(notification_type),
|
| + enabled(enabled),
|
| magnifier_type(ash::kDefaultMagnifierType),
|
| notify(notify) {}
|
|
|
| AccessibilityStatusEventDetails::AccessibilityStatusEventDetails(
|
| + AccessibilityNotificationType notification_type,
|
| bool enabled,
|
| ash::MagnifierType magnifier_type,
|
| ash::AccessibilityNotificationVisibility notify)
|
| - : enabled(enabled),
|
| + : notification_type(notification_type),
|
| + enabled(enabled),
|
| magnifier_type(magnifier_type),
|
| notify(notify) {}
|
|
|
| @@ -334,6 +338,11 @@ AccessibilityManager::AccessibilityManager()
|
|
|
| AccessibilityManager::~AccessibilityManager() {
|
| CHECK(this == g_accessibility_manager);
|
| + AccessibilityStatusEventDetails details(
|
| + ACCESSIBILITY_MANAGER_SHUTDOWN,
|
| + false,
|
| + ash::A11Y_NOTIFICATION_NONE);
|
| + NotifyAccessibilityStatusChanged(details);
|
| }
|
|
|
| bool AccessibilityManager::ShouldShowAccessibilityMenu() {
|
| @@ -394,11 +403,12 @@ void AccessibilityManager::UpdateLargeCursorFromPref() {
|
|
|
| large_cursor_enabled_ = enabled;
|
|
|
| - AccessibilityStatusEventDetails details(enabled, ash::A11Y_NOTIFICATION_NONE);
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_LARGE_CURSOR,
|
| - content::NotificationService::AllSources(),
|
| - content::Details<AccessibilityStatusEventDetails>(&details));
|
| + AccessibilityStatusEventDetails details(
|
| + ACCESSIBILITY_TOGGLE_LARGE_CURSOR,
|
| + enabled,
|
| + ash::A11Y_NOTIFICATION_NONE);
|
| +
|
| + NotifyAccessibilityStatusChanged(details);
|
|
|
| #if defined(USE_ASH)
|
| // Large cursor is implemented only in ash.
|
| @@ -486,12 +496,12 @@ void AccessibilityManager::UpdateSpokenFeedbackFromPref() {
|
| ExtensionAccessibilityEventRouter::GetInstance()->
|
| SetAccessibilityEnabled(enabled);
|
|
|
| - AccessibilityStatusEventDetails details(enabled,
|
| - spoken_feedback_notification_);
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK,
|
| - content::NotificationService::AllSources(),
|
| - content::Details<AccessibilityStatusEventDetails>(&details));
|
| + AccessibilityStatusEventDetails details(
|
| + ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK,
|
| + enabled,
|
| + spoken_feedback_notification_);
|
| +
|
| + NotifyAccessibilityStatusChanged(details);
|
|
|
| if (enabled) {
|
| LoadChromeVox();
|
| @@ -601,11 +611,12 @@ void AccessibilityManager::UpdateHighContrastFromPref() {
|
|
|
| high_contrast_enabled_ = enabled;
|
|
|
| - AccessibilityStatusEventDetails detail(enabled, ash::A11Y_NOTIFICATION_NONE);
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_HIGH_CONTRAST_MODE,
|
| - content::NotificationService::AllSources(),
|
| - content::Details<AccessibilityStatusEventDetails>(&detail));
|
| + AccessibilityStatusEventDetails details(
|
| + ACCESSIBILITY_TOGGLE_HIGH_CONTRAST_MODE,
|
| + enabled,
|
| + ash::A11Y_NOTIFICATION_NONE);
|
| +
|
| + NotifyAccessibilityStatusChanged(details);
|
|
|
| #if defined(USE_ASH)
|
| ash::Shell::GetInstance()->high_contrast_controller()->SetEnabled(enabled);
|
| @@ -712,11 +723,12 @@ void AccessibilityManager::UpdateVirtualKeyboardFromPref() {
|
| return;
|
| virtual_keyboard_enabled_ = enabled;
|
|
|
| - AccessibilityStatusEventDetails detail(enabled, ash::A11Y_NOTIFICATION_NONE);
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_VIRTUAL_KEYBOARD,
|
| - content::NotificationService::AllSources(),
|
| - content::Details<AccessibilityStatusEventDetails>(&detail));
|
| + AccessibilityStatusEventDetails details(
|
| + ACCESSIBILITY_TOGGLE_VIRTUAL_KEYBOARD,
|
| + enabled,
|
| + ash::A11Y_NOTIFICATION_NONE);
|
| +
|
| + NotifyAccessibilityStatusChanged(details);
|
|
|
| #if defined(USE_ASH)
|
| keyboard::SetAccessibilityKeyboardEnabled(enabled);
|
| @@ -842,6 +854,17 @@ void AccessibilityManager::InjectChromeVox(RenderViewHost* render_view_host) {
|
| LoadChromeVoxExtension(profile_, render_view_host);
|
| }
|
|
|
| +scoped_ptr<AccessibilityStatusSubscription>
|
| + AccessibilityManager::RegisterCallback(
|
| + const AccessibilityStatusCallback& cb) {
|
| + return callback_list_.Add(cb);
|
| +}
|
| +
|
| +void AccessibilityManager::NotifyAccessibilityStatusChanged(
|
| + AccessibilityStatusEventDetails& details) {
|
| + callback_list_.Notify(details);
|
| +}
|
| +
|
| void AccessibilityManager::UpdateChromeOSAccessibilityHistograms() {
|
| UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosSpokenFeedback",
|
| IsSpokenFeedbackEnabled());
|
|
|