Index: chrome/browser/ui/webui/options/manage_profile_handler.cc |
diff --git a/chrome/browser/ui/webui/options/manage_profile_handler.cc b/chrome/browser/ui/webui/options/manage_profile_handler.cc |
index a7d01525c113891941a55690a761a83dc7d16313..0d54e682e536f3a216c12b55c4ace6b594915ef1 100644 |
--- a/chrome/browser/ui/webui/options/manage_profile_handler.cc |
+++ b/chrome/browser/ui/webui/options/manage_profile_handler.cc |
@@ -82,6 +82,11 @@ ManageProfileHandler::ManageProfileHandler() |
} |
ManageProfileHandler::~ManageProfileHandler() { |
+ ProfileSyncService* service = |
+ ProfileSyncServiceFactory::GetForProfile(Profile::FromWebUI(web_ui())); |
+ // Sync may be disabled in tests. |
+ if (service) |
+ service->RemoveObserver(this); |
} |
void ManageProfileHandler::GetLocalizedValues( |
@@ -140,11 +145,17 @@ void ManageProfileHandler::InitializeHandler() { |
registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
content::NotificationService::AllSources()); |
- pref_change_registrar_.Init(Profile::FromWebUI(web_ui())->GetPrefs()); |
+ Profile* profile = Profile::FromWebUI(web_ui()); |
+ pref_change_registrar_.Init(profile->GetPrefs()); |
pref_change_registrar_.Add( |
prefs::kManagedUserCreationAllowed, |
base::Bind(&ManageProfileHandler::OnCreateManagedUserPrefChange, |
base::Unretained(this))); |
+ ProfileSyncService* service = |
+ ProfileSyncServiceFactory::GetForProfile(profile); |
+ // Sync may be disabled for tests. |
+ if (service) |
+ service->AddObserver(this); |
} |
void ManageProfileHandler::InitializePage() { |
@@ -206,6 +217,10 @@ void ManageProfileHandler::Observe( |
} |
} |
+void ManageProfileHandler::OnStateChanged() { |
+ RequestCreateProfileUpdate(NULL); |
+} |
+ |
void ManageProfileHandler::RequestDefaultProfileIcons(const ListValue* args) { |
base::StringValue create_value(kCreateProfileIconGridName); |
base::StringValue manage_value(kManageProfileIconGridName); |