| 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 d5cd91ca77c9a4dfc8edf85da5cbe0490795434e..0d7b5a404d07e86e3d6349d946cce9c72f9bb432 100644
|
| --- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc
|
| +++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
|
| @@ -291,7 +291,6 @@ AccessibilityManager::AccessibilityManager()
|
| chrome_vox_loaded_on_lock_screen_(false),
|
| chrome_vox_loaded_on_user_screen_(false),
|
| large_cursor_pref_handler_(prefs::kLargeCursorEnabled),
|
| - spoken_feedback_pref_handler_(prefs::kSpokenFeedbackEnabled),
|
| high_contrast_pref_handler_(prefs::kHighContrastEnabled),
|
| autoclick_pref_handler_(prefs::kAutoclickEnabled),
|
| autoclick_delay_pref_handler_(prefs::kAutoclickDelayMs),
|
| @@ -352,6 +351,13 @@ AccessibilityManager::~AccessibilityManager() {
|
| }
|
|
|
| bool AccessibilityManager::ShouldShowAccessibilityMenu() {
|
| + if (!g_browser_process)
|
| + return false;
|
| +
|
| + PrefService* global_pref_service = g_browser_process->local_state();
|
| + if (global_pref_service->GetBoolean(prefs::kSpokenFeedbackEnabled))
|
| + return true;
|
| +
|
| // If any of the loaded profiles has an accessibility feature turned on - or
|
| // enforced to always show the menu - we return true to show the menu.
|
| std::vector<Profile*> profiles =
|
| @@ -362,7 +368,6 @@ bool AccessibilityManager::ShouldShowAccessibilityMenu() {
|
| PrefService* pref_service = (*it)->GetPrefs();
|
| if (pref_service->GetBoolean(prefs::kStickyKeysEnabled) ||
|
| pref_service->GetBoolean(prefs::kLargeCursorEnabled) ||
|
| - pref_service->GetBoolean(prefs::kSpokenFeedbackEnabled) ||
|
| pref_service->GetBoolean(prefs::kHighContrastEnabled) ||
|
| pref_service->GetBoolean(prefs::kAutoclickEnabled) ||
|
| pref_service->GetBoolean(prefs::kShouldAlwaysShowAccessibilityMenu) ||
|
| @@ -448,7 +453,7 @@ void AccessibilityManager::UpdateStickyKeysFromPref() {
|
| void AccessibilityManager::EnableSpokenFeedback(
|
| bool enabled,
|
| ash::AccessibilityNotificationVisibility notify) {
|
| - if (!profile_)
|
| + if (!g_browser_process)
|
| return;
|
|
|
| ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction(
|
| @@ -457,20 +462,21 @@ void AccessibilityManager::EnableSpokenFeedback(
|
|
|
| spoken_feedback_notification_ = notify;
|
|
|
| - PrefService* pref_service = profile_->GetPrefs();
|
| - pref_service->SetBoolean(
|
| - prefs::kSpokenFeedbackEnabled, enabled);
|
| - pref_service->CommitPendingWrite();
|
| + PrefService* global_pref_service = g_browser_process->local_state();
|
| + global_pref_service->SetBoolean(
|
| + prefs::kSpokenFeedbackEnabled, enabled);
|
| + global_pref_service->CommitPendingWrite();
|
|
|
| spoken_feedback_notification_ = ash::A11Y_NOTIFICATION_NONE;
|
| }
|
|
|
| void AccessibilityManager::UpdateSpokenFeedbackFromPref() {
|
| - if (!profile_)
|
| + if (!g_browser_process)
|
| return;
|
|
|
| + PrefService* global_pref_service = g_browser_process->local_state();
|
| const bool enabled =
|
| - profile_->GetPrefs()->GetBoolean(prefs::kSpokenFeedbackEnabled);
|
| + global_pref_service->GetBoolean(prefs::kSpokenFeedbackEnabled);
|
|
|
| if (spoken_feedback_enabled_ == enabled)
|
| return;
|
| @@ -526,6 +532,9 @@ void AccessibilityManager::LoadChromeVoxToUserScreen() {
|
| if (web_ui_login_view)
|
| login_web_ui = web_ui_login_view->GetWebUI();
|
| }
|
| +
|
| + // Lock screen uses the signin progile.
|
| + chrome_vox_loaded_on_lock_screen_ = true;
|
| }
|
|
|
| LoadChromeVoxExtension(profile_, login_web_ui);
|
| @@ -709,10 +718,6 @@ void AccessibilityManager::SetProfile(Profile* profile) {
|
| base::Bind(&AccessibilityManager::UpdateStickyKeysFromPref,
|
| base::Unretained(this)));
|
| pref_change_registrar_->Add(
|
| - prefs::kSpokenFeedbackEnabled,
|
| - base::Bind(&AccessibilityManager::UpdateSpokenFeedbackFromPref,
|
| - base::Unretained(this)));
|
| - pref_change_registrar_->Add(
|
| prefs::kHighContrastEnabled,
|
| base::Bind(&AccessibilityManager::UpdateHighContrastFromPref,
|
| base::Unretained(this)));
|
| @@ -728,6 +733,10 @@ void AccessibilityManager::SetProfile(Profile* profile) {
|
| local_state_pref_change_registrar_.reset(new PrefChangeRegistrar);
|
| local_state_pref_change_registrar_->Init(g_browser_process->local_state());
|
| local_state_pref_change_registrar_->Add(
|
| + prefs::kSpokenFeedbackEnabled,
|
| + base::Bind(&AccessibilityManager::UpdateSpokenFeedbackFromPref,
|
| + base::Unretained(this)));
|
| + local_state_pref_change_registrar_->Add(
|
| prefs::kApplicationLocale,
|
| base::Bind(&AccessibilityManager::LocalePrefChanged,
|
| base::Unretained(this)));
|
| @@ -739,7 +748,6 @@ void AccessibilityManager::SetProfile(Profile* profile) {
|
| }
|
|
|
| large_cursor_pref_handler_.HandleProfileChanged(profile_, profile);
|
| - spoken_feedback_pref_handler_.HandleProfileChanged(profile_, profile);
|
| high_contrast_pref_handler_.HandleProfileChanged(profile_, profile);
|
| autoclick_pref_handler_.HandleProfileChanged(profile_, profile);
|
| autoclick_delay_pref_handler_.HandleProfileChanged(profile_, profile);
|
| @@ -868,12 +876,7 @@ void AccessibilityManager::Observe(
|
| // this as well.
|
| LoadChromeVoxToUserScreen();
|
| } else {
|
| - // Lock screen destroys its resources; no need for us to explicitly
|
| - // unload ChromeVox.
|
| - chrome_vox_loaded_on_lock_screen_ = false;
|
| -
|
| - // However, if spoken feedback was enabled, also enable it on the user
|
| - // screen.
|
| + // If spoken feedback was enabled, also enable it on the user screen.
|
| LoadChromeVoxToUserScreen();
|
| }
|
| }
|
|
|