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

Unified Diff: chrome/browser/managed_mode/managed_user_sync_service.cc

Issue 23691045: Update managed user registration to allow updating the avatar (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bauerb@+ Created 7 years, 3 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/managed_mode/managed_user_sync_service.cc
diff --git a/chrome/browser/managed_mode/managed_user_sync_service.cc b/chrome/browser/managed_mode/managed_user_sync_service.cc
index 177e2b79133b4d332f864ce96d92b90f3b9d4997..5ce6b4d608b8f3fd047af2ec235e3adcf474db9b 100644
--- a/chrome/browser/managed_mode/managed_user_sync_service.cc
+++ b/chrome/browser/managed_mode/managed_user_sync_service.cc
@@ -49,6 +49,8 @@ SyncData CreateLocalSyncData(const std::string& id,
specifics.mutable_managed_user()->set_name(name);
if (!chrome_avatar.empty())
specifics.mutable_managed_user()->set_chrome_avatar(chrome_avatar);
+ else
+ specifics.mutable_managed_user()->clear_chrome_avatar();
if (!chromeos_avatar.empty())
specifics.mutable_managed_user()->set_chromeos_avatar(chromeos_avatar);
if (!master_key.empty())
@@ -84,8 +86,9 @@ SyncData CreateSyncDataFromDictionaryEntry(
const char ManagedUserSyncService::kAcknowledged[] = "acknowledged";
const char ManagedUserSyncService::kChromeAvatar[] = "chromeAvatar";
const char ManagedUserSyncService::kChromeOsAvatar[] = "chromeOsAvatar";
-const char ManagedUserSyncService::kName[] = "name";
const char ManagedUserSyncService::kMasterKey[] = "masterKey";
+const char ManagedUserSyncService::kName[] = "name";
+const int ManagedUserSyncService::kNoAvatar = -100;
ManagedUserSyncService::ManagedUserSyncService(PrefService* prefs)
: prefs_(prefs) {
@@ -114,7 +117,7 @@ bool ManagedUserSyncService::GetAvatarIndex(const std::string& avatar_str,
// for chrome OS as well.
DCHECK(avatar_index);
if (avatar_str.empty()) {
- *avatar_index = -1;
+ *avatar_index = kNoAvatar;
return true;
}
@@ -184,6 +187,10 @@ void ManagedUserSyncService::AddManagedUser(const std::string& id,
}
void ManagedUserSyncService::DeleteManagedUser(const std::string& id) {
+ DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers);
+ bool success = update->RemoveWithoutPathExpansion(id, NULL);
+ DCHECK(success);
+
if (!sync_processor_)
return;
@@ -202,6 +209,55 @@ const DictionaryValue* ManagedUserSyncService::GetManagedUsers() {
return prefs_->GetDictionary(prefs::kManagedUsers);
}
+bool ManagedUserSyncService::UpdateManagedUserAvatarIfNeeded(
+ const std::string& id,
+ int avatar_index) {
+ DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers);
+ DictionaryValue* dict = update.Get();
+ DCHECK(dict->HasKey(id));
+ DictionaryValue* value = NULL;
+ bool success = dict->GetDictionaryWithoutPathExpansion(id, &value);
+ DCHECK(success);
+
+ bool acknowledged = false;
+ value->GetBoolean(ManagedUserSyncService::kAcknowledged, &acknowledged);
+ std::string name;
+ value->GetString(ManagedUserSyncService::kName, &name);
+ std::string master_key;
+ value->GetString(ManagedUserSyncService::kMasterKey, &master_key);
+ // TODO(ibraaaa): this should be updated when avatar syncing for
+ // supervised users is implemented on Chrome OS.
+ std::string chromeos_avatar;
+ value->GetString(ManagedUserSyncService::kChromeOsAvatar, &chromeos_avatar);
+ std::string chrome_avatar;
+ value->GetString(ManagedUserSyncService::kChromeAvatar, &chrome_avatar);
+ if (!chrome_avatar.empty() && avatar_index != kNoAvatar)
+ return false;
+
+ chrome_avatar = avatar_index == kNoAvatar ?
+ std::string() : BuildAvatarString(avatar_index);
+ value->SetString(kChromeAvatar, chrome_avatar);
+
+ if (!sync_processor_)
+ return true;
+
+ SyncChangeList change_list;
+ change_list.push_back(SyncChange(
+ FROM_HERE,
+ SyncChange::ACTION_UPDATE,
+ CreateLocalSyncData(id, name, acknowledged, master_key,
+ chrome_avatar, chromeos_avatar)));
+ SyncError error =
+ sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
+ DCHECK(!error.IsSet()) << error.ToString();
+ return true;
+}
+
+void ManagedUserSyncService::ClearManagedUserAvatar(const std::string& id) {
+ bool cleared = UpdateManagedUserAvatarIfNeeded(id, kNoAvatar);
+ DCHECK(cleared);
+}
+
void ManagedUserSyncService::GetManagedUsersAsync(
const ManagedUsersCallback& callback) {
// If we are already syncing, just run the callback.

Powered by Google App Engine
This is Rietveld 408576698