Index: chrome/browser/notifications/message_center_settings_controller.cc |
diff --git a/chrome/browser/notifications/message_center_settings_controller.cc b/chrome/browser/notifications/message_center_settings_controller.cc |
index 6a70af4a0aa87548754621c7d6f26374975dbfee..89f5e5e6ad102604f9ee2233c3af55bdd157b66d 100644 |
--- a/chrome/browser/notifications/message_center_settings_controller.cc |
+++ b/chrome/browser/notifications/message_center_settings_controller.cc |
@@ -134,10 +134,8 @@ MessageCenterSettingsController::MessageCenterSettingsController( |
registrar_.Add(this, |
chrome::NOTIFICATION_PROFILE_DESTROYED, |
content::NotificationService::AllBrowserContextsAndSources()); |
- registrar_.Add(this, |
- chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
- content::NotificationService::AllBrowserContextsAndSources()); |
- RebuildNotifierGroups(); |
+ g_browser_process->profile_manager()->GetProfileInfoCache().AddObserver(this); |
+ RebuildNotifierGroups(false); |
#if defined(OS_CHROMEOS) |
// UserManager may not exist in some tests. |
@@ -147,6 +145,8 @@ MessageCenterSettingsController::MessageCenterSettingsController( |
} |
MessageCenterSettingsController::~MessageCenterSettingsController() { |
+ g_browser_process->profile_manager()-> |
+ GetProfileInfoCache().RemoveObserver(this); |
#if defined(OS_CHROMEOS) |
// UserManager may not exist in some tests. |
if (user_manager::UserManager::IsInitialized()) |
@@ -403,7 +403,7 @@ void MessageCenterSettingsController::OnFaviconLoaded( |
#if defined(OS_CHROMEOS) |
void MessageCenterSettingsController::ActiveUserChanged( |
const user_manager::User* active_user) { |
- RebuildNotifierGroups(); |
+ RebuildNotifierGroups(false); |
} |
#endif |
@@ -426,10 +426,26 @@ void MessageCenterSettingsController::Observe( |
return; |
} |
- RebuildNotifierGroups(); |
- FOR_EACH_OBSERVER(message_center::NotifierSettingsObserver, |
- observers_, |
- NotifierGroupChanged()); |
+ RebuildNotifierGroups(true); |
+} |
+ |
+void MessageCenterSettingsController::OnProfileAdded( |
+ const base::FilePath& profile_path) { |
+ RebuildNotifierGroups(true); |
+} |
+void MessageCenterSettingsController::OnProfileWasRemoved( |
+ const base::FilePath& profile_path, |
+ const base::string16& profile_name) { |
+ RebuildNotifierGroups(true); |
+} |
+void MessageCenterSettingsController::OnProfileNameChanged( |
+ const base::FilePath& profile_path, |
+ const base::string16& old_profile_name) { |
+ RebuildNotifierGroups(true); |
+} |
+void MessageCenterSettingsController::OnProfileUserNameChanged( |
+ const base::FilePath& profile_path) { |
+ RebuildNotifierGroups(true); |
} |
#if defined(OS_CHROMEOS) |
@@ -460,12 +476,11 @@ void MessageCenterSettingsController::CreateNotifierGroupForGuestLogin() { |
} |
#endif |
-void MessageCenterSettingsController::RebuildNotifierGroups() { |
+void MessageCenterSettingsController::RebuildNotifierGroups(bool notify) { |
notifier_groups_.clear(); |
current_notifier_group_ = 0; |
const size_t count = profile_info_cache_->GetNumberOfProfiles(); |
- |
for (size_t i = 0; i < count; ++i) { |
scoped_ptr<message_center::ProfileNotifierGroup> group( |
new message_center::ProfileNotifierGroup( |
@@ -517,4 +532,10 @@ void MessageCenterSettingsController::RebuildNotifierGroups() { |
weak_factory_.GetWeakPtr())); |
} |
#endif |
+ |
+ if (notify) { |
+ FOR_EACH_OBSERVER(message_center::NotifierSettingsObserver, |
+ observers_, |
+ NotifierGroupChanged()); |
+ } |
} |