| 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..f3068c640c735a4e31c5b05974d565c33b12cdd2 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,17 @@ void SystemTrayDelegateChromeOS::OnAppWindowRemoved(
|
| NotifyIfLastWindowClosed();
|
| }
|
|
|
| +// Overridden from SupervisedUserServiceObserver.
|
| +void SystemTrayDelegateChromeOS::OnCustodianInfoChanged() {
|
| + for (const base::Closure& callback : custodian_info_changed_callbacks_)
|
| + callback.Run();
|
| +}
|
| +
|
| +void SystemTrayDelegateChromeOS::AddCustodianInfoChangedCallback(
|
| + const base::Closure& callback) {
|
| + custodian_info_changed_callbacks_.push_back(callback);
|
| +}
|
| +
|
| void SystemTrayDelegateChromeOS::OnAccessibilityStatusChanged(
|
| const AccessibilityStatusEventDetails& details) {
|
| if (details.notification_type == ACCESSIBILITY_MANAGER_SHUTDOWN)
|
|
|