| 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 77f478c6f3f9be985079a3fd96603518124d067c..4e17e97c25cd7df133b926b1b539759c32b0e415 100644
|
| --- a/chrome/browser/managed_mode/managed_user_sync_service.cc
|
| +++ b/chrome/browser/managed_mode/managed_user_sync_service.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/callback.h"
|
| +#include "base/strings/stringprintf.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/prefs/scoped_user_pref_update.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -35,16 +36,24 @@ using sync_pb::ManagedUserSpecifics;
|
| namespace {
|
|
|
| const char kAcknowledged[] = "acknowledged";
|
| +const char kChromeAvatar[] = "chromeAvatar";
|
| +const char kChromeOsAvatar[] = "chromeOsAvatar";
|
| const char kName[] = "name";
|
| const char kMasterKey[] = "masterKey";
|
|
|
| SyncData CreateLocalSyncData(const std::string& id,
|
| const std::string& name,
|
| bool acknowledged,
|
| - const std::string& master_key) {
|
| + const std::string& master_key,
|
| + const std::string& chrome_avatar,
|
| + const std::string& chromeos_avatar) {
|
| ::sync_pb::EntitySpecifics specifics;
|
| specifics.mutable_managed_user()->set_id(id);
|
| specifics.mutable_managed_user()->set_name(name);
|
| + if (!chrome_avatar.empty())
|
| + specifics.mutable_managed_user()->set_chrome_avatar(chrome_avatar);
|
| + if (!chromeos_avatar.empty())
|
| + specifics.mutable_managed_user()->set_chromeos_avatar(chromeos_avatar);
|
| if (!master_key.empty())
|
| specifics.mutable_managed_user()->set_master_key(master_key);
|
| if (acknowledged)
|
| @@ -52,6 +61,27 @@ SyncData CreateLocalSyncData(const std::string& id,
|
| return SyncData::CreateLocalData(id, name, specifics);
|
| }
|
|
|
| +SyncData CreateSyncDataFromDictionaryEntry(
|
| + const DictionaryValue::Iterator& it) {
|
| + const DictionaryValue* dict = NULL;
|
| + bool success = it.value().GetAsDictionary(&dict);
|
| + DCHECK(success);
|
| + bool acknowledged = false;
|
| + dict->GetBoolean(kAcknowledged, &acknowledged);
|
| + std::string name;
|
| + dict->GetString(kName, &name);
|
| + DCHECK(!name.empty());
|
| + std::string master_key;
|
| + dict->GetString(kMasterKey, &master_key);
|
| + std::string chrome_avatar;
|
| + dict->GetString(kChromeAvatar, &chrome_avatar);
|
| + std::string chromeos_avatar;
|
| + dict->GetString(kChromeOsAvatar, &chromeos_avatar);
|
| +
|
| + return CreateLocalSyncData(it.key(), name, acknowledged, master_key,
|
| + chrome_avatar, chromeos_avatar);
|
| +}
|
| +
|
| } // namespace
|
|
|
| ManagedUserSyncService::ManagedUserSyncService(PrefService* prefs)
|
| @@ -85,12 +115,27 @@ void ManagedUserSyncService::RemoveObserver(
|
|
|
| void ManagedUserSyncService::AddManagedUser(const std::string& id,
|
| const std::string& name,
|
| - const std::string& master_key) {
|
| + const std::string& master_key,
|
| + int avatar_index) {
|
| DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers);
|
| DictionaryValue* dict = update.Get();
|
| DictionaryValue* value = new DictionaryValue;
|
| value->SetString(kName, name);
|
| value->SetString(kMasterKey, master_key);
|
| + std::string chrome_avatar;
|
| +#if defined(CHROME_OS)
|
| + // This is a dummy value that is passed when a supervised user is created on
|
| + // Chrome OS.
|
| + // TODO(ibraaaa): update this to use the correct avatar index
|
| + // once avatar syncing for supervised users is implemented on Chrome OS.
|
| + DCHECK_EQ(avatar_index, -111);
|
| +#else
|
| + chrome_avatar = base::StringPrintf("chrome-avatar-index:%d", avatar_index);
|
| +#endif
|
| + value->SetString(kChromeAvatar, chrome_avatar);
|
| + // TODO(ibraaaa): this should be updated to allow supervised
|
| + // users avatar syncing on Chrome OS.
|
| + value->SetString(kChromeOsAvatar, std::string());
|
| DCHECK(!dict->HasKey(id));
|
| dict->SetWithoutPathExpansion(id, value);
|
|
|
| @@ -102,7 +147,8 @@ void ManagedUserSyncService::AddManagedUser(const std::string& id,
|
| change_list.push_back(SyncChange(
|
| FROM_HERE,
|
| SyncChange::ACTION_ADD,
|
| - CreateLocalSyncData(id, name, false, master_key)));
|
| + CreateLocalSyncData(id, name, false, master_key,
|
| + chrome_avatar, std::string())));
|
| SyncError error =
|
| sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
|
| DCHECK(!error.IsSet()) << error.ToString();
|
| @@ -170,6 +216,8 @@ SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing(
|
| value->SetString(kName, managed_user.name());
|
| value->SetBoolean(kAcknowledged, managed_user.acknowledged());
|
| value->SetString(kMasterKey, managed_user.master_key());
|
| + value->SetString(kChromeAvatar, managed_user.chrome_avatar());
|
| + value->SetString(kChromeOsAvatar, managed_user.chromeos_avatar());
|
| if (dict->HasKey(managed_user.id()))
|
| num_items_modified++;
|
| else
|
| @@ -182,19 +230,8 @@ SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing(
|
| if (seen_ids.find(it.key()) != seen_ids.end())
|
| continue;
|
|
|
| - const DictionaryValue* dict = NULL;
|
| - bool success = it.value().GetAsDictionary(&dict);
|
| - DCHECK(success);
|
| - bool acknowledged = false;
|
| - dict->GetBoolean(kAcknowledged, &acknowledged);
|
| - std::string name;
|
| - dict->GetString(kName, &name);
|
| - std::string master_key;
|
| - dict->GetString(kMasterKey, &master_key);
|
| - DCHECK(!name.empty());
|
| - change_list.push_back(
|
| - SyncChange(FROM_HERE, SyncChange::ACTION_ADD,
|
| - CreateLocalSyncData(it.key(), name, acknowledged, master_key)));
|
| + change_list.push_back(SyncChange(FROM_HERE, SyncChange::ACTION_ADD,
|
| + CreateSyncDataFromDictionaryEntry(it)));
|
| }
|
| result.set_error(sync_processor_->ProcessSyncChanges(FROM_HERE, change_list));
|
|
|
| @@ -221,19 +258,9 @@ SyncDataList ManagedUserSyncService::GetAllSyncData(
|
| SyncDataList data;
|
| DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers);
|
| DictionaryValue* dict = update.Get();
|
| - for (DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance()) {
|
| - const DictionaryValue* dict = NULL;
|
| - bool success = it.value().GetAsDictionary(&dict);
|
| - DCHECK(success);
|
| - std::string name;
|
| - dict->GetString(kName, &name);
|
| - std::string master_key;
|
| - dict->GetString(kMasterKey, &master_key);
|
| - bool acknowledged = false;
|
| - dict->GetBoolean(kAcknowledged, &acknowledged);
|
| - data.push_back(
|
| - CreateLocalSyncData(it.key(), name, acknowledged, master_key));
|
| - }
|
| + for (DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance())
|
| + data.push_back(CreateSyncDataFromDictionaryEntry(it));
|
| +
|
| return data;
|
| }
|
|
|
| @@ -272,6 +299,8 @@ SyncError ManagedUserSyncService::ProcessSyncChanges(
|
| value->SetString(kName, managed_user.name());
|
| value->SetBoolean(kAcknowledged, managed_user.acknowledged());
|
| value->SetString(kMasterKey, managed_user.master_key());
|
| + value->SetString(kChromeAvatar, managed_user.chrome_avatar());
|
| + value->SetString(kChromeOsAvatar, managed_user.chromeos_avatar());
|
| dict->SetWithoutPathExpansion(managed_user.id(), value);
|
| break;
|
| }
|
|
|