Index: chrome/browser/chromeos/accessibility/magnification_manager.cc |
diff --git a/chrome/browser/chromeos/accessibility/magnification_manager.cc b/chrome/browser/chromeos/accessibility/magnification_manager.cc |
index 30519080d722aa042dda0d6582f0f27865858209..181484e5cae8445dc9095c2f0f23182b679f399c 100644 |
--- a/chrome/browser/chromeos/accessibility/magnification_manager.cc |
+++ b/chrome/browser/chromeos/accessibility/magnification_manager.cc |
@@ -8,6 +8,7 @@ |
#include "ash/magnifier/magnification_controller.h" |
#include "ash/magnifier/partial_magnification_controller.h" |
+#include "ash/session_state_delegate.h" |
#include "ash/shell.h" |
#include "ash/shell_delegate.h" |
#include "ash/system/tray/system_tray_notifier.h" |
@@ -35,7 +36,8 @@ static MagnificationManager* g_magnification_manager = NULL; |
} |
class MagnificationManagerImpl : public MagnificationManager, |
- public content::NotificationObserver { |
+ public content::NotificationObserver, |
+ public ash::SessionStateObserver { |
public: |
MagnificationManagerImpl() |
: first_time_update_(true), |
@@ -105,6 +107,11 @@ class MagnificationManagerImpl : public MagnificationManager, |
SetProfile(profile); |
} |
+ // SessionStateObserver overrides: |
+ virtual void ActiveUserChanged(const std::string& user_id) OVERRIDE { |
+ SetProfile(ProfileManager::GetActiveUserProfile()); |
+ } |
+ |
private: |
void SetProfile(Profile* profile) { |
pref_change_registrar_.reset(); |
@@ -209,6 +216,11 @@ class MagnificationManagerImpl : public MagnificationManager, |
case chrome::NOTIFICATION_SESSION_STARTED: |
// Update |profile_| when entering a session. |
SetProfile(ProfileManager::GetDefaultProfile()); |
+ |
+ // Add a session state observer to be able to monitor session changes. |
+ if (!session_state_observer_.get() && ash::Shell::HasInstance()) |
+ session_state_observer_.reset( |
+ new ash::ScopedSessionStateObserver(this)); |
break; |
case chrome::NOTIFICATION_PROFILE_DESTROYED: { |
// Update |profile_| when exiting a session or shutting down. |
@@ -229,8 +241,10 @@ class MagnificationManagerImpl : public MagnificationManager, |
ash::MagnifierType type_; |
bool enabled_; |
+ |
content::NotificationRegistrar registrar_; |
scoped_ptr<PrefChangeRegistrar> pref_change_registrar_; |
+ scoped_ptr<ash::ScopedSessionStateObserver> session_state_observer_; |
DISALLOW_COPY_AND_ASSIGN(MagnificationManagerImpl); |
}; |