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 aa7a0437d13f8278f9592306a2ee2a4dcb70ccf3..24d7e263524e05d10004fef71febcfff8094104e 100644 |
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc |
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc |
@@ -323,6 +323,7 @@ AccessibilityManager::AccessibilityManager() |
content::NotificationService::AllSources()); |
GetBrailleController()->AddObserver(this); |
+ input_method::InputMethodManager::Get()->AddObserver(this); |
ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
media::SoundsManager* manager = media::SoundsManager::Get(); |
@@ -343,6 +344,7 @@ AccessibilityManager::~AccessibilityManager() { |
false, |
ash::A11Y_NOTIFICATION_NONE); |
NotifyAccessibilityStatusChanged(details); |
+ input_method::InputMethodManager::Get()->RemoveObserver(this); |
} |
bool AccessibilityManager::ShouldShowAccessibilityMenu() { |
@@ -753,6 +755,17 @@ void AccessibilityManager::ReceiveBrailleDisplayState( |
OnDisplayStateChanged(*state); |
} |
+// Overridden from InputMethodManager::Observer. |
+void AccessibilityManager::InputMethodChanged( |
+ input_method::InputMethodManager* manager, |
+ bool show_message) { |
+#if defined(USE_ASH) |
+ // Sticky keys is implemented only in ash. |
+ ash::Shell::GetInstance()->sticky_keys_controller()->SetModifiersEnabled( |
+ manager->IsMod3UsedByCurrentInputMethod(), |
+ manager->IsAltGrUsedByCurrentInputMethod()); |
+#endif |
+} |
void AccessibilityManager::SetProfile(Profile* profile) { |
pref_change_registrar_.reset(); |