Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(325)

Unified Diff: ash/system/chromeos/supervised/tray_supervised_user.cc

Issue 627593003: Adding infrastructure for possibility of changing manager names for the supervised accounts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Specific observer class introduced. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698