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 812a005ca4e3bdef30c45fce90ca8c4712cee532..cdb652d32be94a390c125734a96c360249dee7a6 100644 |
--- a/chrome/browser/managed_mode/managed_user_sync_service.cc |
+++ b/chrome/browser/managed_mode/managed_user_sync_service.cc |
@@ -52,8 +52,6 @@ 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()) |
@@ -115,9 +113,6 @@ void ManagedUserSyncService::RegisterProfilePrefs( |
// static |
bool ManagedUserSyncService::GetAvatarIndex(const std::string& avatar_str, |
int* avatar_index) { |
- // TODO(ibraaaa): when chrome OS supports supervised users avatar syncing |
- // then update this method to support extracting the avatar index |
- // for chrome OS as well. |
DCHECK(avatar_index); |
if (avatar_str.empty()) { |
*avatar_index = kNoAvatar; |
@@ -232,18 +227,29 @@ bool ManagedUserSyncService::UpdateManagedUserAvatarIfNeeded( |
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); |
+ // The following check is just for safety. We want to avoid that the existing |
+ // avatar selection is overwritten. Currently we don't allow the user to |
+ // choose a different avatar in the recreation dialog, anyway, if there is |
+ // already an avatar selected. |
+#if defined(OS_CHROMEOS) |
+ if (!chromeos_avatar.empty() && avatar_index != kNoAvatar) |
+ return false; |
+#else |
if (!chrome_avatar.empty() && avatar_index != kNoAvatar) |
return false; |
+#endif |
chrome_avatar = avatar_index == kNoAvatar ? |
std::string() : BuildAvatarString(avatar_index); |
+#if defined(OS_CHROMEOS) |
+ value->SetString(kChromeOsAvatar, chrome_avatar); |
+#else |
value->SetString(kChromeAvatar, chrome_avatar); |
+#endif |
if (!sync_processor_) |
return true; |