Index: chrome/browser/profiles/avatar_menu.cc |
diff --git a/chrome/browser/profiles/avatar_menu.cc b/chrome/browser/profiles/avatar_menu.cc |
index da41957edccb2bd1bd9f0c4525afd2e25e2fc852..e9f8860a86877792968348731b90dd6028611155 100644 |
--- a/chrome/browser/profiles/avatar_menu.cc |
+++ b/chrome/browser/profiles/avatar_menu.cc |
@@ -53,6 +53,9 @@ AvatarMenu::AvatarMenu(ProfileInfoInterface* profile_cache, |
Browser* browser) |
: profile_list_(ProfileList::Create(profile_cache)), |
menu_actions_(AvatarMenuActions::Create()), |
+#if defined(ENABLE_MANAGED_USERS) |
+ supervised_user_observer_(this), |
+#endif |
profile_info_(profile_cache), |
observer_(observer), |
browser_(browser) { |
@@ -64,6 +67,16 @@ AvatarMenu::AvatarMenu(ProfileInfoInterface* profile_cache, |
// Register this as an observer of the info cache. |
registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
content::NotificationService::AllSources()); |
+ |
+#if defined(ENABLE_MANAGED_USERS) |
+ // Register this as an observer of the SupervisedUserService to be notified |
+ // of changes to the custodian info. |
+ if (browser_) { |
+ SupervisedUserService* service = |
+ SupervisedUserServiceFactory::GetForProfile(browser_->profile()); |
+ supervised_user_observer_.Add(service); |
Bernhard Bauer
2014/09/25 16:11:19
You could even inline |service| now?
Marc Treib
2014/09/25 16:17:16
Done.
|
+ } |
+#endif |
} |
AvatarMenu::~AvatarMenu() { |
@@ -234,3 +247,11 @@ void AvatarMenu::Observe(int type, |
if (observer_) |
observer_->OnAvatarMenuChanged(this); |
} |
+ |
+#if defined(ENABLE_MANAGED_USERS) |
+void AvatarMenu::OnCustodianInfoChanged() { |
+ RebuildMenu(); |
+ if (observer_) |
+ observer_->OnAvatarMenuChanged(this); |
+} |
+#endif |