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

Unified Diff: chrome/browser/ui/webui/settings/profile_info_handler.cc

Issue 2062503002: Settings People Revamp: Add 'Manage Supervised Users' row (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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: chrome/browser/ui/webui/settings/profile_info_handler.cc
diff --git a/chrome/browser/ui/webui/settings/profile_info_handler.cc b/chrome/browser/ui/webui/settings/profile_info_handler.cc
index b58c20fcbf525d8a9850d114406419a1734fbf67..c330b724b65a0578096e62f9a0d6d3ab41aa8ff6 100644
--- a/chrome/browser/ui/webui/settings/profile_info_handler.cc
+++ b/chrome/browser/ui/webui/settings/profile_info_handler.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_attributes_entry.h"
#include "chrome/browser/ui/user_manager.h"
+#include "chrome/common/pref_names.h"
#include "ui/base/webui/web_ui_util.h"
#if defined(OS_CHROMEOS)
@@ -30,6 +31,9 @@ namespace settings {
// static
const char ProfileInfoHandler::kProfileInfoChangedEventName[] =
"profile-info-changed";
+const char
+ ProfileInfoHandler::kProfileManagesSupervisedUsersChangedEventName[] =
+ "profile-manages-supervised-users-changed";
ProfileInfoHandler::ProfileInfoHandler(Profile* profile)
: profile_(profile),
@@ -41,12 +45,23 @@ void ProfileInfoHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"getProfileInfo", base::Bind(&ProfileInfoHandler::HandleGetProfileInfo,
base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
+ "getProfileManagesSupervisedUsers",
+ base::Bind(&ProfileInfoHandler::HandleGetProfileManagesSupervisedUsers,
+ base::Unretained(this)));
}
void ProfileInfoHandler::OnJavascriptAllowed() {
profile_observer_.Add(
&g_browser_process->profile_manager()->GetProfileAttributesStorage());
+ PrefService* prefs = profile_->GetPrefs();
+ profile_pref_registrar_.Init(prefs);
+ profile_pref_registrar_.Add(
+ prefs::kSupervisedUsers,
+ base::Bind(&ProfileInfoHandler::PushProfileManagesSupervisedUsersStatus,
+ base::Unretained(this)));
+
#if defined(OS_CHROMEOS)
registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
content::NotificationService::AllSources());
@@ -57,6 +72,8 @@ void ProfileInfoHandler::OnJavascriptDisallowed() {
profile_observer_.Remove(
&g_browser_process->profile_manager()->GetProfileAttributesStorage());
+ profile_pref_registrar_.RemoveAll();
+
#if defined(OS_CHROMEOS)
registrar_.RemoveAll();
#endif
@@ -97,12 +114,31 @@ void ProfileInfoHandler::HandleGetProfileInfo(const base::ListValue* args) {
ResolveJavascriptCallback(*callback_id, *GetAccountNameAndIcon());
}
+void ProfileInfoHandler::HandleGetProfileManagesSupervisedUsers(
+ const base::ListValue* args) {
+ AllowJavascript();
+
+ CHECK_EQ(1U, args->GetSize());
+ const base::Value* callback_id;
+ CHECK(args->Get(0, &callback_id));
+
+ ResolveJavascriptCallback(
+ *callback_id, base::FundamentalValue(IsProfileManagingSupervisedUsers()));
+}
+
void ProfileInfoHandler::PushProfileInfo() {
CallJavascriptFunction("cr.webUIListenerCallback",
base::StringValue(kProfileInfoChangedEventName),
*GetAccountNameAndIcon());
}
+void ProfileInfoHandler::PushProfileManagesSupervisedUsersStatus() {
+ CallJavascriptFunction(
+ "cr.webUIListenerCallback",
+ base::StringValue(kProfileManagesSupervisedUsersChangedEventName),
+ base::FundamentalValue(IsProfileManagingSupervisedUsers()));
+}
+
std::unique_ptr<base::DictionaryValue>
ProfileInfoHandler::GetAccountNameAndIcon() const {
std::string name;
@@ -148,4 +184,8 @@ ProfileInfoHandler::GetAccountNameAndIcon() const {
return base::WrapUnique(response);
}
+bool ProfileInfoHandler::IsProfileManagingSupervisedUsers() const {
+ return !profile_->GetPrefs()->GetDictionary(prefs::kSupervisedUsers)->empty();
+}
+
} // namespace settings

Powered by Google App Engine
This is Rietveld 408576698