Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4337)

Unified Diff: chrome/browser/chromeos/accessibility/accessibility_manager.cc

Issue 42743003: Adjust ChromeVox (spoken feedback) strings and make it possible for announcemen (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 12bb4780261358920edf6c631995ea3e5a3c5b5d..21275eaa495deac05d8f5fdf226f0c7cc75adbd5 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
@@ -32,6 +32,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/speech/tts_controller.h"
+#include "chrome/common/extensions/api/experimental_accessibility.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_messages.h"
#include "chrome/common/extensions/manifest_handlers/content_scripts_handler.h"
@@ -287,8 +288,8 @@ AccessibilityManager::AccessibilityManager()
high_contrast_enabled_(false),
autoclick_delay_ms_(ash::AutoclickController::kDefaultAutoclickDelayMs),
spoken_feedback_notification_(ash::A11Y_NOTIFICATION_NONE),
- weak_ptr_factory_(this) {
-
+ weak_ptr_factory_(this),
+ should_speak_chrome_vox_announcements_on_user_screen_(true) {
notification_registrar_.Add(this,
chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE,
content::NotificationService::AllSources());
@@ -409,10 +410,6 @@ void AccessibilityManager::UpdateSpokenFeedbackFromPref() {
spoken_feedback_enabled_ = enabled;
- Speak(l10n_util::GetStringUTF8(
- enabled ? IDS_CHROMEOS_ACC_SPOKEN_FEEDBACK_ENABLED :
- IDS_CHROMEOS_ACC_SPOKEN_FEEDBACK_DISABLED).c_str());
-
ExtensionAccessibilityEventRouter::GetInstance()->
SetAccessibilityEnabled(enabled);
@@ -423,10 +420,20 @@ void AccessibilityManager::UpdateSpokenFeedbackFromPref() {
content::NotificationService::AllSources(),
content::Details<AccessibilityStatusEventDetails>(&details));
- if (enabled)
+ if (enabled) {
LoadChromeVox();
- else
- UnloadChromeVox();
+ ExtensionAccessibilityEventRouter::GetInstance()->
+ OnChromeVoxLoadStateChanged(profile_,
+ true,
+ chrome_vox_loaded_on_lock_screen_ ||
+ should_speak_chrome_vox_announcements_on_user_screen_);
+
+ should_speak_chrome_vox_announcements_on_user_screen_ =
+ chrome_vox_loaded_on_lock_screen_;
+ } else {
+ ExtensionAccessibilityEventRouter::GetInstance()->
+ OnChromeVoxLoadStateChanged(profile_, false, false);
+ }
}
void AccessibilityManager::LoadChromeVox() {
@@ -686,6 +693,10 @@ void AccessibilityManager::SetProfile(Profile* profile) {
base::Bind(
&AccessibilityManager::UpdateChromeOSAccessibilityHistograms,
base::Unretained(this)));
+
+ extensions::ExtensionSystem::Get(profile)->event_router()->RegisterObserver(
+ this, extensions::api::experimental_accessibility::
+ OnChromeVoxLoadStateChanged::kEventName);
}
large_cursor_pref_handler_.HandleProfileChanged(profile_, profile);
@@ -769,6 +780,9 @@ void AccessibilityManager::Observe(
case chrome::NOTIFICATION_SESSION_STARTED:
// Update |profile_| when entering a session.
SetProfile(ProfileManager::GetDefaultProfile());
+
+ // Ensure ChromeVox makes announcements at the start of new sessions.
+ should_speak_chrome_vox_announcements_on_user_screen_ = true;
break;
case chrome::NOTIFICATION_PROFILE_DESTROYED: {
// Update |profile_| when exiting a session or shutting down.
@@ -797,4 +811,28 @@ void AccessibilityManager::OnDisplayStateChanged(
if (display_state.available)
EnableSpokenFeedback(true, ash::A11Y_NOTIFICATION_SHOW);
}
+
+void AccessibilityManager::OnListenerAdded(
+ const extensions::EventListenerInfo& details) {
+ if (details.extension_id != extension_misc::kChromeVoxExtensionId)
+ return;
+
+ ExtensionAccessibilityEventRouter::GetInstance()->
+ OnChromeVoxLoadStateChanged(profile_,
+ IsSpokenFeedbackEnabled(),
+ chrome_vox_loaded_on_lock_screen_ ||
+ should_speak_chrome_vox_announcements_on_user_screen_);
+
+ should_speak_chrome_vox_announcements_on_user_screen_ =
+ chrome_vox_loaded_on_lock_screen_;
+}
+
+void AccessibilityManager::OnListenerRemoved(
+ const extensions::EventListenerInfo& details) {
+ if (details.extension_id != extension_misc::kChromeVoxExtensionId)
+ return;
+
+ UnloadChromeVox();
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698