| Index: ash/system/chromeos/supervised/tray_supervised_user.cc
|
| diff --git a/ash/system/chromeos/supervised/tray_supervised_user.cc b/ash/system/chromeos/supervised/tray_supervised_user.cc
|
| index 31ddb39b299836c79801a72b2a12a4854887e12e..21dd3cd95b97c87b996d6b94fc048e4216fc2710 100644
|
| --- a/ash/system/chromeos/supervised/tray_supervised_user.cc
|
| +++ b/ash/system/chromeos/supervised/tray_supervised_user.cc
|
| @@ -11,6 +11,7 @@
|
| #include "ash/system/tray/system_tray_notifier.h"
|
| #include "ash/system/tray/tray_notification_view.h"
|
| #include "ash/system/user/login_status.h"
|
| +#include "base/bind.h"
|
| #include "base/callback.h"
|
| #include "base/logging.h"
|
| #include "grit/ash_resources.h"
|
| @@ -30,7 +31,10 @@ TraySupervisedUser::TraySupervisedUser(SystemTray* system_tray)
|
| : SystemTrayItem(system_tray),
|
| tray_view_(NULL),
|
| status_(ash::user::LOGGED_IN_NONE),
|
| - is_user_supervised_(false) {
|
| + is_user_supervised_(false),
|
| + weak_factory_observers_(this) {
|
| + Shell::GetInstance()->system_tray_delegate()->AddCustodianInfoChangedObserver(
|
| + weak_factory_observers_.GetWeakPtr());
|
| }
|
|
|
| TraySupervisedUser::~TraySupervisedUser() {
|
| @@ -75,9 +79,10 @@ void TraySupervisedUser::UpdateAfterLoginStatusChange(
|
| return;
|
|
|
| if (is_user_supervised &&
|
| - status_ != ash::user::LOGGED_IN_LOCKED) {
|
| - CreateOrUpdateNotification(delegate->GetSupervisedUserMessage());
|
| - }
|
| + status_ != ash::user::LOGGED_IN_LOCKED &&
|
| + !delegate->GetSupervisedUserManager().empty())
|
| + CreateOrUpdateSupervisedWarningNotification();
|
| +
|
| status_ = status;
|
| is_user_supervised_ = is_user_supervised;
|
| }
|
| @@ -96,4 +101,20 @@ void TraySupervisedUser::CreateOrUpdateNotification(
|
| message_center::MessageCenter::Get()->AddNotification(notification.Pass());
|
| }
|
|
|
| +void TraySupervisedUser::CreateOrUpdateSupervisedWarningNotification() {
|
| + SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate();
|
| + CreateOrUpdateNotification(delegate->GetSupervisedUserMessage());
|
| +}
|
| +
|
| +void TraySupervisedUser::OnCustodianInfoChanged() {
|
| + SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate();
|
| + std::string manager_name = delegate->GetSupervisedUserManager();
|
| + if (!manager_name.empty()) {
|
| + if (!message_center::MessageCenter::Get()->FindVisibleNotificationById(
|
| + kNotificationId))
|
| + CreateOrUpdateSupervisedWarningNotification();
|
| + UpdateMessage();
|
| + }
|
| +}
|
| +
|
| } // namespace ash
|
|
|