Index: chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
diff --git a/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc b/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
index 2d5e39f57bd3c8e410f65eadc322c8e86da473f5..f07e9023cf36974611c60d2ed257fc7efa4f134c 100644 |
--- a/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
+++ b/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
@@ -70,6 +70,8 @@ |
#include "chrome/browser/chromeos/ui/choose_mobile_network_dialog.h" |
#include "chrome/browser/lifetime/application_lifetime.h" |
#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/browser/supervised_user/supervised_user_service.h" |
+#include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
#include "chrome/browser/ui/ash/multi_user/multi_user_util.h" |
#include "chrome/browser/ui/ash/user_accounts_delegate_chromeos.h" |
#include "chrome/browser/ui/ash/volume_controller_chromeos.h" |
@@ -308,6 +310,7 @@ SystemTrayDelegateChromeOS::~SystemTrayDelegateChromeOS() { |
BrowserList::RemoveObserver(this); |
StopObservingAppWindowRegistry(); |
+ StopObservingCustodianInfoChanges(); |
policy::BrowserPolicyConnectorChromeOS* connector = |
g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
@@ -374,31 +377,30 @@ const base::string16 SystemTrayDelegateChromeOS::GetEnterpriseMessage() const { |
} |
const std::string SystemTrayDelegateChromeOS::GetSupervisedUserManager() const { |
- if (GetUserLoginStatus() != ash::user::LOGGED_IN_SUPERVISED) |
+ if (!IsUserSupervised()) |
return std::string(); |
- return ChromeUserManager::Get() |
- ->GetSupervisedUserManager() |
- ->GetManagerDisplayEmail( |
- user_manager::UserManager::Get()->GetActiveUser()->email()); |
+ return SupervisedUserServiceFactory::GetForProfile(user_profile_)-> |
+ GetCustodianEmailAddress(); |
} |
const base::string16 |
SystemTrayDelegateChromeOS::GetSupervisedUserManagerName() const { |
- if (GetUserLoginStatus() != ash::user::LOGGED_IN_SUPERVISED) |
+ if (!IsUserSupervised()) |
return base::string16(); |
- return ChromeUserManager::Get() |
- ->GetSupervisedUserManager() |
- ->GetManagerDisplayName( |
- user_manager::UserManager::Get()->GetActiveUser()->email()); |
+ return base::UTF8ToUTF16(SupervisedUserServiceFactory::GetForProfile( |
+ user_profile_)->GetCustodianName()); |
} |
const base::string16 SystemTrayDelegateChromeOS::GetSupervisedUserMessage() |
const { |
if (!IsUserSupervised()) |
return base::string16(); |
+ std::string user_manager_name = GetSupervisedUserManager(); |
+ LOG_IF(WARNING, user_manager_name.empty()) << |
+ "Returning incomplete supervised user message as manager not known yet."; |
return l10n_util::GetStringFUTF16( |
IDS_USER_IS_SUPERVISED_BY_NOTICE, |
- base::UTF8ToUTF16(GetSupervisedUserManager())); |
+ base::UTF8ToUTF16(user_manager_name)); |
} |
bool SystemTrayDelegateChromeOS::IsUserSupervised() const { |
@@ -869,11 +871,17 @@ void SystemTrayDelegateChromeOS::SetProfile(Profile* profile) { |
// Stop observing the AppWindowRegistry of the current |user_profile_|. |
StopObservingAppWindowRegistry(); |
+ // Stop observing custodian info changes of the current |user_profile_|. |
+ StopObservingCustodianInfoChanges(); |
+ |
user_profile_ = profile; |
// Start observing the AppWindowRegistry of the newly set |user_profile_|. |
extensions::AppWindowRegistry::Get(user_profile_)->AddObserver(this); |
+ // Start observing custodian info changes of the newly set |user_profile_|. |
+ SupervisedUserServiceFactory::GetForProfile(profile)->AddObserver(this); |
+ |
PrefService* prefs = profile->GetPrefs(); |
user_pref_registrar_.reset(new PrefChangeRegistrar); |
user_pref_registrar_->Init(prefs); |
@@ -917,6 +925,7 @@ void SystemTrayDelegateChromeOS::SetProfile(Profile* profile) { |
UpdateShowLogoutButtonInTray(); |
UpdateLogoutDialogDuration(); |
UpdatePerformanceTracing(); |
+ OnCustodianInfoChanged(); |
search_key_mapped_to_ = |
profile->GetPrefs()->GetInteger(prefs::kLanguageRemapSearchKeyTo); |
} |
@@ -1021,6 +1030,16 @@ void SystemTrayDelegateChromeOS::StopObservingAppWindowRegistry() { |
registry->RemoveObserver(this); |
} |
+void SystemTrayDelegateChromeOS::StopObservingCustodianInfoChanges() { |
+ if (!user_profile_) |
+ return; |
+ |
+ SupervisedUserService* service = SupervisedUserServiceFactory::GetForProfile( |
+ user_profile_); |
+ if (service) |
+ service->RemoveObserver(this); |
+} |
+ |
void SystemTrayDelegateChromeOS::NotifyIfLastWindowClosed() { |
if (!user_profile_) |
return; |
@@ -1289,6 +1308,23 @@ void SystemTrayDelegateChromeOS::OnAppWindowRemoved( |
NotifyIfLastWindowClosed(); |
} |
+// Overridden from SupervisedUserServiceObserver. |
+void SystemTrayDelegateChromeOS::OnCustodianInfoChanged() { |
+ FOR_EACH_OBSERVER( |
+ ash::CustodianInfoTrayObserver, custodian_info_changed_observers_, |
+ OnCustodianInfoChanged()); |
+} |
+ |
+void SystemTrayDelegateChromeOS::AddObserver( |
Daniel Erat
2014/10/07 16:16:00
please move this and RemoveObserver so they match
merkulova
2014/10/08 09:19:37
Done.
|
+ ash::CustodianInfoTrayObserver* observer) { |
+ custodian_info_changed_observers_.AddObserver(observer); |
+} |
+ |
+void SystemTrayDelegateChromeOS::RemoveObserver( |
+ ash::CustodianInfoTrayObserver* observer) { |
+ custodian_info_changed_observers_.RemoveObserver(observer); |
+} |
+ |
void SystemTrayDelegateChromeOS::OnAccessibilityStatusChanged( |
const AccessibilityStatusEventDetails& details) { |
if (details.notification_type == ACCESSIBILITY_MANAGER_SHUTDOWN) |