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

Side by Side Diff: chrome/browser/supervised_user/supervised_user_sync_service.cc

Issue 335833003: Rename "managed (mode|user)" to "supervised user" (part 2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: similarity 25 Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/managed_mode/managed_user_sync_service.h" 5 #include "chrome/browser/supervised_user/supervised_user_sync_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/prefs/scoped_user_pref_update.h" 9 #include "base/prefs/scoped_user_pref_update.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/profiles/profile_avatar_icon_util.h" 13 #include "chrome/browser/profiles/profile_avatar_icon_util.h"
14 #include "chrome/common/pref_names.h" 14 #include "chrome/common/pref_names.h"
15 #include "components/pref_registry/pref_registry_syncable.h" 15 #include "components/pref_registry/pref_registry_syncable.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 } 75 }
76 return SyncData::CreateLocalData(id, name, specifics); 76 return SyncData::CreateLocalData(id, name, specifics);
77 } 77 }
78 78
79 SyncData CreateSyncDataFromDictionaryEntry(const std::string& id, 79 SyncData CreateSyncDataFromDictionaryEntry(const std::string& id,
80 const base::Value& value) { 80 const base::Value& value) {
81 const base::DictionaryValue* dict = NULL; 81 const base::DictionaryValue* dict = NULL;
82 bool success = value.GetAsDictionary(&dict); 82 bool success = value.GetAsDictionary(&dict);
83 DCHECK(success); 83 DCHECK(success);
84 bool acknowledged = false; 84 bool acknowledged = false;
85 dict->GetBoolean(ManagedUserSyncService::kAcknowledged, &acknowledged); 85 dict->GetBoolean(SupervisedUserSyncService::kAcknowledged, &acknowledged);
86 std::string name; 86 std::string name;
87 dict->GetString(ManagedUserSyncService::kName, &name); 87 dict->GetString(SupervisedUserSyncService::kName, &name);
88 DCHECK(!name.empty()); 88 DCHECK(!name.empty());
89 std::string master_key; 89 std::string master_key;
90 dict->GetString(ManagedUserSyncService::kMasterKey, &master_key); 90 dict->GetString(SupervisedUserSyncService::kMasterKey, &master_key);
91 std::string chrome_avatar; 91 std::string chrome_avatar;
92 dict->GetString(ManagedUserSyncService::kChromeAvatar, &chrome_avatar); 92 dict->GetString(SupervisedUserSyncService::kChromeAvatar, &chrome_avatar);
93 std::string chromeos_avatar; 93 std::string chromeos_avatar;
94 dict->GetString(ManagedUserSyncService::kChromeOsAvatar, &chromeos_avatar); 94 dict->GetString(SupervisedUserSyncService::kChromeOsAvatar, &chromeos_avatar);
95 std::string signature; 95 std::string signature;
96 dict->GetString(ManagedUserSyncService::kPasswordSignatureKey, &signature); 96 dict->GetString(SupervisedUserSyncService::kPasswordSignatureKey, &signature);
97 std::string encryption; 97 std::string encryption;
98 dict->GetString(ManagedUserSyncService::kPasswordEncryptionKey, &encryption); 98 dict->GetString(SupervisedUserSyncService::kPasswordEncryptionKey,
99 &encryption);
99 100
100 return CreateLocalSyncData(id, 101 return CreateLocalSyncData(id,
101 name, 102 name,
102 acknowledged, 103 acknowledged,
103 master_key, 104 master_key,
104 chrome_avatar, 105 chrome_avatar,
105 chromeos_avatar, 106 chromeos_avatar,
106 signature, 107 signature,
107 encryption); 108 encryption);
108 } 109 }
109 110
110 } // namespace 111 } // namespace
111 112
112 const char ManagedUserSyncService::kAcknowledged[] = "acknowledged"; 113 const char SupervisedUserSyncService::kAcknowledged[] = "acknowledged";
113 const char ManagedUserSyncService::kChromeAvatar[] = "chromeAvatar"; 114 const char SupervisedUserSyncService::kChromeAvatar[] = "chromeAvatar";
114 const char ManagedUserSyncService::kChromeOsAvatar[] = "chromeOsAvatar"; 115 const char SupervisedUserSyncService::kChromeOsAvatar[] = "chromeOsAvatar";
115 const char ManagedUserSyncService::kMasterKey[] = "masterKey"; 116 const char SupervisedUserSyncService::kMasterKey[] = "masterKey";
116 const char ManagedUserSyncService::kName[] = "name"; 117 const char SupervisedUserSyncService::kName[] = "name";
117 const char ManagedUserSyncService::kPasswordSignatureKey[] = 118 const char SupervisedUserSyncService::kPasswordSignatureKey[] =
118 "passwordSignatureKey"; 119 "passwordSignatureKey";
119 const char ManagedUserSyncService::kPasswordEncryptionKey[] = 120 const char SupervisedUserSyncService::kPasswordEncryptionKey[] =
120 "passwordEncryptionKey"; 121 "passwordEncryptionKey";
121 const int ManagedUserSyncService::kNoAvatar = -100; 122 const int SupervisedUserSyncService::kNoAvatar = -100;
122 123
123 ManagedUserSyncService::ManagedUserSyncService(PrefService* prefs) 124 SupervisedUserSyncService::SupervisedUserSyncService(PrefService* prefs)
124 : prefs_(prefs) { 125 : prefs_(prefs) {
125 pref_change_registrar_.Init(prefs_); 126 pref_change_registrar_.Init(prefs_);
126 pref_change_registrar_.Add( 127 pref_change_registrar_.Add(
127 prefs::kGoogleServicesLastUsername, 128 prefs::kGoogleServicesLastUsername,
128 base::Bind(&ManagedUserSyncService::OnLastSignedInUsernameChange, 129 base::Bind(&SupervisedUserSyncService::OnLastSignedInUsernameChange,
129 base::Unretained(this))); 130 base::Unretained(this)));
130 } 131 }
131 132
132 ManagedUserSyncService::~ManagedUserSyncService() { 133 SupervisedUserSyncService::~SupervisedUserSyncService() {
133 } 134 }
134 135
135 // static 136 // static
136 void ManagedUserSyncService::RegisterProfilePrefs( 137 void SupervisedUserSyncService::RegisterProfilePrefs(
137 PrefRegistrySyncable* registry) { 138 PrefRegistrySyncable* registry) {
138 registry->RegisterDictionaryPref(prefs::kSupervisedUsers, 139 registry->RegisterDictionaryPref(prefs::kSupervisedUsers,
139 PrefRegistrySyncable::UNSYNCABLE_PREF); 140 PrefRegistrySyncable::UNSYNCABLE_PREF);
140 } 141 }
141 142
142 // static 143 // static
143 bool ManagedUserSyncService::GetAvatarIndex(const std::string& avatar_str, 144 bool SupervisedUserSyncService::GetAvatarIndex(const std::string& avatar_str,
144 int* avatar_index) { 145 int* avatar_index) {
145 DCHECK(avatar_index); 146 DCHECK(avatar_index);
146 if (avatar_str.empty()) { 147 if (avatar_str.empty()) {
147 *avatar_index = kNoAvatar; 148 *avatar_index = kNoAvatar;
148 return true; 149 return true;
149 } 150 }
150 #if defined(OS_CHROMEOS) 151 #if defined(OS_CHROMEOS)
151 const char* prefix = kChromeOSAvatarPrefix; 152 const char* prefix = kChromeOSAvatarPrefix;
152 #else 153 #else
153 const char* prefix = kChromeAvatarPrefix; 154 const char* prefix = kChromeAvatarPrefix;
154 #endif 155 #endif
(...skipping 21 matching lines...) Expand all
176 if (*avatar_index == kChromeOSDummyAvatarIndex) 177 if (*avatar_index == kChromeOSDummyAvatarIndex)
177 *avatar_index = kNoAvatar; 178 *avatar_index = kNoAvatar;
178 return (*avatar_index == kNoAvatar || 179 return (*avatar_index == kNoAvatar ||
179 (*avatar_index >= 0 && 180 (*avatar_index >= 0 &&
180 static_cast<size_t>(*avatar_index) < 181 static_cast<size_t>(*avatar_index) <
181 profiles::GetDefaultAvatarIconCount())); 182 profiles::GetDefaultAvatarIconCount()));
182 #endif 183 #endif
183 } 184 }
184 185
185 // static 186 // static
186 std::string ManagedUserSyncService::BuildAvatarString(int avatar_index) { 187 std::string SupervisedUserSyncService::BuildAvatarString(int avatar_index) {
187 #if defined(OS_CHROMEOS) 188 #if defined(OS_CHROMEOS)
188 const char* prefix = kChromeOSAvatarPrefix; 189 const char* prefix = kChromeOSAvatarPrefix;
189 #else 190 #else
190 const char* prefix = kChromeAvatarPrefix; 191 const char* prefix = kChromeAvatarPrefix;
191 #endif 192 #endif
192 return base::StringPrintf("%s%d", prefix, avatar_index); 193 return base::StringPrintf("%s%d", prefix, avatar_index);
193 } 194 }
194 195
195 void ManagedUserSyncService::AddObserver( 196 void SupervisedUserSyncService::AddObserver(
196 ManagedUserSyncServiceObserver* observer) { 197 SupervisedUserSyncServiceObserver* observer) {
197 observers_.AddObserver(observer); 198 observers_.AddObserver(observer);
198 } 199 }
199 200
200 void ManagedUserSyncService::RemoveObserver( 201 void SupervisedUserSyncService::RemoveObserver(
201 ManagedUserSyncServiceObserver* observer) { 202 SupervisedUserSyncServiceObserver* observer) {
202 observers_.RemoveObserver(observer); 203 observers_.RemoveObserver(observer);
203 } 204 }
204 205
205 scoped_ptr<base::DictionaryValue> ManagedUserSyncService::CreateDictionary( 206 scoped_ptr<base::DictionaryValue> SupervisedUserSyncService::CreateDictionary(
206 const std::string& name, 207 const std::string& name,
207 const std::string& master_key, 208 const std::string& master_key,
208 const std::string& signature_key, 209 const std::string& signature_key,
209 const std::string& encryption_key, 210 const std::string& encryption_key,
210 int avatar_index) { 211 int avatar_index) {
211 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue()); 212 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue());
212 result->SetString(kName, name); 213 result->SetString(kName, name);
213 result->SetString(kMasterKey, master_key); 214 result->SetString(kMasterKey, master_key);
214 result->SetString(kPasswordSignatureKey, signature_key); 215 result->SetString(kPasswordSignatureKey, signature_key);
215 result->SetString(kPasswordEncryptionKey, encryption_key); 216 result->SetString(kPasswordEncryptionKey, encryption_key);
216 // TODO(akuegel): Get rid of the avatar stuff here when Chrome OS switches 217 // TODO(akuegel): Get rid of the avatar stuff here when Chrome OS switches
217 // to the avatar index that is stored as a shared setting. 218 // to the avatar index that is stored as a shared setting.
218 std::string chrome_avatar; 219 std::string chrome_avatar;
219 std::string chromeos_avatar; 220 std::string chromeos_avatar;
220 #if defined(OS_CHROMEOS) 221 #if defined(OS_CHROMEOS)
221 chromeos_avatar = BuildAvatarString(avatar_index); 222 chromeos_avatar = BuildAvatarString(avatar_index);
222 #else 223 #else
223 chrome_avatar = BuildAvatarString(avatar_index); 224 chrome_avatar = BuildAvatarString(avatar_index);
224 #endif 225 #endif
225 result->SetString(kChromeAvatar, chrome_avatar); 226 result->SetString(kChromeAvatar, chrome_avatar);
226 result->SetString(kChromeOsAvatar, chromeos_avatar); 227 result->SetString(kChromeOsAvatar, chromeos_avatar);
227 return result.Pass(); 228 return result.Pass();
228 } 229 }
229 230
230 void ManagedUserSyncService::AddManagedUser(const std::string& id, 231 void SupervisedUserSyncService::AddSupervisedUser(
231 const std::string& name,
232 const std::string& master_key,
233 const std::string& signature_key,
234 const std::string& encryption_key,
235 int avatar_index) {
236 UpdateManagedUserImpl(id,
237 name,
238 master_key,
239 signature_key,
240 encryption_key,
241 avatar_index,
242 true /* add */);
243 }
244
245 void ManagedUserSyncService::UpdateManagedUser(
246 const std::string& id, 232 const std::string& id,
247 const std::string& name, 233 const std::string& name,
248 const std::string& master_key, 234 const std::string& master_key,
249 const std::string& signature_key, 235 const std::string& signature_key,
Pam (message me for reviews) 2014/06/16 23:51:51 FWIW, the header has these as password_signature_k
250 const std::string& encryption_key, 236 const std::string& encryption_key,
251 int avatar_index) { 237 int avatar_index) {
252 UpdateManagedUserImpl(id, 238 UpdateSupervisedUserImpl(id,
253 name, 239 name,
254 master_key, 240 master_key,
255 signature_key, 241 signature_key,
256 encryption_key, 242 encryption_key,
257 avatar_index, 243 avatar_index,
258 false /* update */); 244 true /* add */);
259 } 245 }
260 246
261 void ManagedUserSyncService::UpdateManagedUserImpl( 247 void SupervisedUserSyncService::UpdateSupervisedUser(
262 const std::string& id, 248 const std::string& id,
263 const std::string& name, 249 const std::string& name,
264 const std::string& master_key, 250 const std::string& master_key,
251 const std::string& signature_key,
252 const std::string& encryption_key,
253 int avatar_index) {
254 UpdateSupervisedUserImpl(id,
255 name,
256 master_key,
257 signature_key,
258 encryption_key,
259 avatar_index,
260 false /* update */);
261 }
262
263 void SupervisedUserSyncService::UpdateSupervisedUserImpl(
264 const std::string& id,
265 const std::string& name,
266 const std::string& master_key,
265 const std::string& signature_key, 267 const std::string& signature_key,
266 const std::string& encryption_key, 268 const std::string& encryption_key,
267 int avatar_index, 269 int avatar_index,
268 bool add_user) { 270 bool add_user) {
269 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers); 271 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
270 base::DictionaryValue* dict = update.Get(); 272 base::DictionaryValue* dict = update.Get();
271 scoped_ptr<base::DictionaryValue> value = CreateDictionary( 273 scoped_ptr<base::DictionaryValue> value = CreateDictionary(
272 name, master_key, signature_key, encryption_key, avatar_index); 274 name, master_key, signature_key, encryption_key, avatar_index);
273 275
274 DCHECK_EQ(add_user, !dict->HasKey(id)); 276 DCHECK_EQ(add_user, !dict->HasKey(id));
275 base::DictionaryValue* entry = value.get(); 277 base::DictionaryValue* entry = value.get();
276 dict->SetWithoutPathExpansion(id, value.release()); 278 dict->SetWithoutPathExpansion(id, value.release());
277 279
278 if (!sync_processor_) 280 if (!sync_processor_)
279 return; 281 return;
280 282
281 // If we're already syncing, create a new change and upload it. 283 // If we're already syncing, create a new change and upload it.
282 SyncChangeList change_list; 284 SyncChangeList change_list;
283 change_list.push_back( 285 change_list.push_back(
284 SyncChange(FROM_HERE, 286 SyncChange(FROM_HERE,
285 add_user ? SyncChange::ACTION_ADD : SyncChange::ACTION_UPDATE, 287 add_user ? SyncChange::ACTION_ADD : SyncChange::ACTION_UPDATE,
286 CreateSyncDataFromDictionaryEntry(id, *entry))); 288 CreateSyncDataFromDictionaryEntry(id, *entry)));
287 SyncError error = 289 SyncError error =
288 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); 290 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
289 DCHECK(!error.IsSet()) << error.ToString(); 291 DCHECK(!error.IsSet()) << error.ToString();
290 } 292 }
291 293
292 void ManagedUserSyncService::DeleteManagedUser(const std::string& id) { 294 void SupervisedUserSyncService::DeleteSupervisedUser(const std::string& id) {
293 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers); 295 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
294 bool success = update->RemoveWithoutPathExpansion(id, NULL); 296 bool success = update->RemoveWithoutPathExpansion(id, NULL);
295 DCHECK(success); 297 DCHECK(success);
296 298
297 if (!sync_processor_) 299 if (!sync_processor_)
298 return; 300 return;
299 301
300 SyncChangeList change_list; 302 SyncChangeList change_list;
301 change_list.push_back(SyncChange( 303 change_list.push_back(SyncChange(
302 FROM_HERE, 304 FROM_HERE,
303 SyncChange::ACTION_DELETE, 305 SyncChange::ACTION_DELETE,
304 SyncData::CreateLocalDelete(id, SUPERVISED_USERS))); 306 SyncData::CreateLocalDelete(id, SUPERVISED_USERS)));
305 SyncError sync_error = 307 SyncError sync_error =
306 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); 308 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
307 DCHECK(!sync_error.IsSet()); 309 DCHECK(!sync_error.IsSet());
308 } 310 }
309 311
310 const base::DictionaryValue* ManagedUserSyncService::GetManagedUsers() { 312 const base::DictionaryValue* SupervisedUserSyncService::GetSupervisedUsers() {
311 DCHECK(sync_processor_); 313 DCHECK(sync_processor_);
312 return prefs_->GetDictionary(prefs::kSupervisedUsers); 314 return prefs_->GetDictionary(prefs::kSupervisedUsers);
313 } 315 }
314 316
315 bool ManagedUserSyncService::UpdateManagedUserAvatarIfNeeded( 317 bool SupervisedUserSyncService::UpdateSupervisedUserAvatarIfNeeded(
316 const std::string& id, 318 const std::string& id,
317 int avatar_index) { 319 int avatar_index) {
318 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers); 320 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
319 base::DictionaryValue* dict = update.Get(); 321 base::DictionaryValue* dict = update.Get();
320 DCHECK(dict->HasKey(id)); 322 DCHECK(dict->HasKey(id));
321 base::DictionaryValue* value = NULL; 323 base::DictionaryValue* value = NULL;
322 bool success = dict->GetDictionaryWithoutPathExpansion(id, &value); 324 bool success = dict->GetDictionaryWithoutPathExpansion(id, &value);
323 DCHECK(success); 325 DCHECK(success);
324 326
325 bool acknowledged = false; 327 bool acknowledged = false;
326 value->GetBoolean(ManagedUserSyncService::kAcknowledged, &acknowledged); 328 value->GetBoolean(SupervisedUserSyncService::kAcknowledged, &acknowledged);
327 std::string name; 329 std::string name;
328 value->GetString(ManagedUserSyncService::kName, &name); 330 value->GetString(SupervisedUserSyncService::kName, &name);
329 std::string master_key; 331 std::string master_key;
330 value->GetString(ManagedUserSyncService::kMasterKey, &master_key); 332 value->GetString(SupervisedUserSyncService::kMasterKey, &master_key);
331 std::string signature; 333 std::string signature;
332 value->GetString(ManagedUserSyncService::kPasswordSignatureKey, &signature); 334 value->GetString(SupervisedUserSyncService::kPasswordSignatureKey,
335 &signature);
333 std::string encryption; 336 std::string encryption;
334 value->GetString(ManagedUserSyncService::kPasswordEncryptionKey, &encryption); 337 value->GetString(SupervisedUserSyncService::kPasswordEncryptionKey,
338 &encryption);
335 std::string chromeos_avatar; 339 std::string chromeos_avatar;
336 value->GetString(ManagedUserSyncService::kChromeOsAvatar, &chromeos_avatar); 340 value->GetString(SupervisedUserSyncService::kChromeOsAvatar,
341 &chromeos_avatar);
337 std::string chrome_avatar; 342 std::string chrome_avatar;
338 value->GetString(ManagedUserSyncService::kChromeAvatar, &chrome_avatar); 343 value->GetString(SupervisedUserSyncService::kChromeAvatar, &chrome_avatar);
339 // The following check is just for safety. We want to avoid that the existing 344 // The following check is just for safety. We want to avoid that the existing
340 // avatar selection is overwritten. Currently we don't allow the user to 345 // avatar selection is overwritten. Currently we don't allow the user to
341 // choose a different avatar in the recreation dialog, anyway, if there is 346 // choose a different avatar in the recreation dialog, anyway, if there is
342 // already an avatar selected. 347 // already an avatar selected.
343 #if defined(OS_CHROMEOS) 348 #if defined(OS_CHROMEOS)
344 if (!chromeos_avatar.empty() && avatar_index != kNoAvatar) 349 if (!chromeos_avatar.empty() && avatar_index != kNoAvatar)
345 return false; 350 return false;
346 #else 351 #else
347 if (!chrome_avatar.empty() && avatar_index != kNoAvatar) 352 if (!chrome_avatar.empty() && avatar_index != kNoAvatar)
348 return false; 353 return false;
(...skipping 16 matching lines...) Expand all
365 SyncChange::ACTION_UPDATE, 370 SyncChange::ACTION_UPDATE,
366 CreateLocalSyncData(id, name, acknowledged, master_key, 371 CreateLocalSyncData(id, name, acknowledged, master_key,
367 chrome_avatar, chromeos_avatar, 372 chrome_avatar, chromeos_avatar,
368 signature, encryption))); 373 signature, encryption)));
369 SyncError error = 374 SyncError error =
370 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); 375 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
371 DCHECK(!error.IsSet()) << error.ToString(); 376 DCHECK(!error.IsSet()) << error.ToString();
372 return true; 377 return true;
373 } 378 }
374 379
375 void ManagedUserSyncService::ClearManagedUserAvatar(const std::string& id) { 380 void SupervisedUserSyncService::ClearSupervisedUserAvatar(
376 bool cleared = UpdateManagedUserAvatarIfNeeded(id, kNoAvatar); 381 const std::string& id) {
382 bool cleared = UpdateSupervisedUserAvatarIfNeeded(id, kNoAvatar);
377 DCHECK(cleared); 383 DCHECK(cleared);
378 } 384 }
379 385
380 void ManagedUserSyncService::GetManagedUsersAsync( 386 void SupervisedUserSyncService::GetSupervisedUsersAsync(
381 const ManagedUsersCallback& callback) { 387 const SupervisedUsersCallback& callback) {
382 // If we are already syncing, just run the callback. 388 // If we are already syncing, just run the callback.
383 if (sync_processor_) { 389 if (sync_processor_) {
384 callback.Run(GetManagedUsers()); 390 callback.Run(GetSupervisedUsers());
385 return; 391 return;
386 } 392 }
387 393
388 // Otherwise queue it up until we start syncing. 394 // Otherwise queue it up until we start syncing.
389 callbacks_.push_back(callback); 395 callbacks_.push_back(callback);
390 } 396 }
391 397
392 void ManagedUserSyncService::Shutdown() { 398 void SupervisedUserSyncService::Shutdown() {
393 NotifyManagedUsersSyncingStopped(); 399 NotifySupervisedUsersSyncingStopped();
394 } 400 }
395 401
396 SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing( 402 SyncMergeResult SupervisedUserSyncService::MergeDataAndStartSyncing(
397 ModelType type, 403 ModelType type,
398 const SyncDataList& initial_sync_data, 404 const SyncDataList& initial_sync_data,
399 scoped_ptr<SyncChangeProcessor> sync_processor, 405 scoped_ptr<SyncChangeProcessor> sync_processor,
400 scoped_ptr<SyncErrorFactory> error_handler) { 406 scoped_ptr<SyncErrorFactory> error_handler) {
401 DCHECK_EQ(SUPERVISED_USERS, type); 407 DCHECK_EQ(SUPERVISED_USERS, type);
402 sync_processor_ = sync_processor.Pass(); 408 sync_processor_ = sync_processor.Pass();
403 error_handler_ = error_handler.Pass(); 409 error_handler_ = error_handler.Pass();
404 410
405 SyncChangeList change_list; 411 SyncChangeList change_list;
406 SyncMergeResult result(SUPERVISED_USERS); 412 SyncMergeResult result(SUPERVISED_USERS);
407 413
408 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers); 414 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
409 base::DictionaryValue* dict = update.Get(); 415 base::DictionaryValue* dict = update.Get();
410 result.set_num_items_before_association(dict->size()); 416 result.set_num_items_before_association(dict->size());
411 std::set<std::string> seen_ids; 417 std::set<std::string> seen_ids;
412 int num_items_added = 0; 418 int num_items_added = 0;
413 int num_items_modified = 0; 419 int num_items_modified = 0;
414 for (SyncDataList::const_iterator it = initial_sync_data.begin(); 420 for (SyncDataList::const_iterator it = initial_sync_data.begin();
415 it != initial_sync_data.end(); ++it) { 421 it != initial_sync_data.end(); ++it) {
416 DCHECK_EQ(SUPERVISED_USERS, it->GetDataType()); 422 DCHECK_EQ(SUPERVISED_USERS, it->GetDataType());
417 const ManagedUserSpecifics& managed_user = 423 const ManagedUserSpecifics& supervised_user =
418 it->GetSpecifics().managed_user(); 424 it->GetSpecifics().managed_user();
419 base::DictionaryValue* value = new base::DictionaryValue(); 425 base::DictionaryValue* value = new base::DictionaryValue();
420 value->SetString(kName, managed_user.name()); 426 value->SetString(kName, supervised_user.name());
421 value->SetBoolean(kAcknowledged, managed_user.acknowledged()); 427 value->SetBoolean(kAcknowledged, supervised_user.acknowledged());
422 value->SetString(kMasterKey, managed_user.master_key()); 428 value->SetString(kMasterKey, supervised_user.master_key());
423 value->SetString(kChromeAvatar, managed_user.chrome_avatar()); 429 value->SetString(kChromeAvatar, supervised_user.chrome_avatar());
424 value->SetString(kChromeOsAvatar, managed_user.chromeos_avatar()); 430 value->SetString(kChromeOsAvatar, supervised_user.chromeos_avatar());
425 value->SetString(kPasswordSignatureKey, 431 value->SetString(kPasswordSignatureKey,
426 managed_user.password_signature_key()); 432 supervised_user.password_signature_key());
427 value->SetString(kPasswordEncryptionKey, 433 value->SetString(kPasswordEncryptionKey,
428 managed_user.password_encryption_key()); 434 supervised_user.password_encryption_key());
429 if (dict->HasKey(managed_user.id())) 435 if (dict->HasKey(supervised_user.id()))
430 num_items_modified++; 436 num_items_modified++;
431 else 437 else
432 num_items_added++; 438 num_items_added++;
433 dict->SetWithoutPathExpansion(managed_user.id(), value); 439 dict->SetWithoutPathExpansion(supervised_user.id(), value);
434 seen_ids.insert(managed_user.id()); 440 seen_ids.insert(supervised_user.id());
435 } 441 }
436 442
437 for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance()) { 443 for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance()) {
438 if (seen_ids.find(it.key()) != seen_ids.end()) 444 if (seen_ids.find(it.key()) != seen_ids.end())
439 continue; 445 continue;
440 446
441 change_list.push_back( 447 change_list.push_back(
442 SyncChange(FROM_HERE, 448 SyncChange(FROM_HERE,
443 SyncChange::ACTION_ADD, 449 SyncChange::ACTION_ADD,
444 CreateSyncDataFromDictionaryEntry(it.key(), it.value()))); 450 CreateSyncDataFromDictionaryEntry(it.key(), it.value())));
445 } 451 }
446 result.set_error(sync_processor_->ProcessSyncChanges(FROM_HERE, change_list)); 452 result.set_error(sync_processor_->ProcessSyncChanges(FROM_HERE, change_list));
447 453
448 result.set_num_items_modified(num_items_modified); 454 result.set_num_items_modified(num_items_modified);
449 result.set_num_items_added(num_items_added); 455 result.set_num_items_added(num_items_added);
450 result.set_num_items_after_association(dict->size()); 456 result.set_num_items_after_association(dict->size());
451 457
452 DispatchCallbacks(); 458 DispatchCallbacks();
453 459
454 return result; 460 return result;
455 } 461 }
456 462
457 void ManagedUserSyncService::StopSyncing(ModelType type) { 463 void SupervisedUserSyncService::StopSyncing(ModelType type) {
458 DCHECK_EQ(SUPERVISED_USERS, type); 464 DCHECK_EQ(SUPERVISED_USERS, type);
459 // The observers may want to change the Sync data, so notify them before 465 // The observers may want to change the Sync data, so notify them before
460 // resetting the |sync_processor_|. 466 // resetting the |sync_processor_|.
461 NotifyManagedUsersSyncingStopped(); 467 NotifySupervisedUsersSyncingStopped();
462 sync_processor_.reset(); 468 sync_processor_.reset();
463 error_handler_.reset(); 469 error_handler_.reset();
464 } 470 }
465 471
466 SyncDataList ManagedUserSyncService::GetAllSyncData( 472 SyncDataList SupervisedUserSyncService::GetAllSyncData(
467 ModelType type) const { 473 ModelType type) const {
468 SyncDataList data; 474 SyncDataList data;
469 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers); 475 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
470 base::DictionaryValue* dict = update.Get(); 476 base::DictionaryValue* dict = update.Get();
471 for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance()) 477 for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance())
472 data.push_back(CreateSyncDataFromDictionaryEntry(it.key(), it.value())); 478 data.push_back(CreateSyncDataFromDictionaryEntry(it.key(), it.value()));
473 479
474 return data; 480 return data;
475 } 481 }
476 482
477 SyncError ManagedUserSyncService::ProcessSyncChanges( 483 SyncError SupervisedUserSyncService::ProcessSyncChanges(
478 const tracked_objects::Location& from_here, 484 const tracked_objects::Location& from_here,
479 const SyncChangeList& change_list) { 485 const SyncChangeList& change_list) {
480 SyncError error; 486 SyncError error;
481 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers); 487 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
482 base::DictionaryValue* dict = update.Get(); 488 base::DictionaryValue* dict = update.Get();
483 for (SyncChangeList::const_iterator it = change_list.begin(); 489 for (SyncChangeList::const_iterator it = change_list.begin();
484 it != change_list.end(); ++it) { 490 it != change_list.end(); ++it) {
485 SyncData data = it->sync_data(); 491 SyncData data = it->sync_data();
486 DCHECK_EQ(SUPERVISED_USERS, data.GetDataType()); 492 DCHECK_EQ(SUPERVISED_USERS, data.GetDataType());
487 const ManagedUserSpecifics& managed_user = 493 const ManagedUserSpecifics& supervised_user =
488 data.GetSpecifics().managed_user(); 494 data.GetSpecifics().managed_user();
489 switch (it->change_type()) { 495 switch (it->change_type()) {
490 case SyncChange::ACTION_ADD: 496 case SyncChange::ACTION_ADD:
491 case SyncChange::ACTION_UPDATE: { 497 case SyncChange::ACTION_UPDATE: {
492 // Every item we get from the server should be acknowledged. 498 // Every item we get from the server should be acknowledged.
493 DCHECK(managed_user.acknowledged()); 499 DCHECK(supervised_user.acknowledged());
494 const base::DictionaryValue* old_value = NULL; 500 const base::DictionaryValue* old_value = NULL;
495 dict->GetDictionaryWithoutPathExpansion(managed_user.id(), &old_value); 501 dict->GetDictionaryWithoutPathExpansion(supervised_user.id(),
502 &old_value);
496 503
497 // For an update action, the managed user should already exist, for an 504 // For an update action, the supervised user should already exist, for
498 // add action, it should not. 505 // an add action, it should not.
499 DCHECK_EQ( 506 DCHECK_EQ(
500 old_value ? SyncChange::ACTION_UPDATE : SyncChange::ACTION_ADD, 507 old_value ? SyncChange::ACTION_UPDATE : SyncChange::ACTION_ADD,
501 it->change_type()); 508 it->change_type());
502 509
503 // If the managed user switched from unacknowledged to acknowledged, 510 // If the supervised user switched from unacknowledged to acknowledged,
504 // we might need to continue with a registration. 511 // we might need to continue with a registration.
505 if (old_value && !old_value->HasKey(kAcknowledged)) 512 if (old_value && !old_value->HasKey(kAcknowledged))
506 NotifyManagedUserAcknowledged(managed_user.id()); 513 NotifySupervisedUserAcknowledged(supervised_user.id());
507 514
508 base::DictionaryValue* value = new base::DictionaryValue; 515 base::DictionaryValue* value = new base::DictionaryValue;
509 value->SetString(kName, managed_user.name()); 516 value->SetString(kName, supervised_user.name());
510 value->SetBoolean(kAcknowledged, managed_user.acknowledged()); 517 value->SetBoolean(kAcknowledged, supervised_user.acknowledged());
511 value->SetString(kMasterKey, managed_user.master_key()); 518 value->SetString(kMasterKey, supervised_user.master_key());
512 value->SetString(kChromeAvatar, managed_user.chrome_avatar()); 519 value->SetString(kChromeAvatar, supervised_user.chrome_avatar());
513 value->SetString(kChromeOsAvatar, managed_user.chromeos_avatar()); 520 value->SetString(kChromeOsAvatar, supervised_user.chromeos_avatar());
514 value->SetString(kPasswordSignatureKey, 521 value->SetString(kPasswordSignatureKey,
515 managed_user.password_signature_key()); 522 supervised_user.password_signature_key());
516 value->SetString(kPasswordEncryptionKey, 523 value->SetString(kPasswordEncryptionKey,
517 managed_user.password_encryption_key()); 524 supervised_user.password_encryption_key());
518 dict->SetWithoutPathExpansion(managed_user.id(), value); 525 dict->SetWithoutPathExpansion(supervised_user.id(), value);
519 526
520 NotifyManagedUsersChanged(); 527 NotifySupervisedUsersChanged();
521 break; 528 break;
522 } 529 }
523 case SyncChange::ACTION_DELETE: { 530 case SyncChange::ACTION_DELETE: {
524 DCHECK(dict->HasKey(managed_user.id())) << managed_user.id(); 531 DCHECK(dict->HasKey(supervised_user.id())) << supervised_user.id();
525 dict->RemoveWithoutPathExpansion(managed_user.id(), NULL); 532 dict->RemoveWithoutPathExpansion(supervised_user.id(), NULL);
526 break; 533 break;
527 } 534 }
528 case SyncChange::ACTION_INVALID: { 535 case SyncChange::ACTION_INVALID: {
529 NOTREACHED(); 536 NOTREACHED();
530 break; 537 break;
531 } 538 }
532 } 539 }
533 } 540 }
534 return error; 541 return error;
535 } 542 }
536 543
537 void ManagedUserSyncService::OnLastSignedInUsernameChange() { 544 void SupervisedUserSyncService::OnLastSignedInUsernameChange() {
538 DCHECK(!sync_processor_); 545 DCHECK(!sync_processor_);
539 546
540 // If the last signed in user changes, we clear all data, to avoid managed 547 // If the last signed in user changes, we clear all data, to avoid supervised
541 // users from one custodian appearing in another one's profile. 548 // users from one custodian appearing in another one's profile.
542 prefs_->ClearPref(prefs::kSupervisedUsers); 549 prefs_->ClearPref(prefs::kSupervisedUsers);
543 } 550 }
544 551
545 void ManagedUserSyncService::NotifyManagedUserAcknowledged( 552 void SupervisedUserSyncService::NotifySupervisedUserAcknowledged(
546 const std::string& managed_user_id) { 553 const std::string& supervised_user_id) {
547 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, 554 FOR_EACH_OBSERVER(SupervisedUserSyncServiceObserver, observers_,
548 OnManagedUserAcknowledged(managed_user_id)); 555 OnSupervisedUserAcknowledged(supervised_user_id));
549 } 556 }
550 557
551 void ManagedUserSyncService::NotifyManagedUsersSyncingStopped() { 558 void SupervisedUserSyncService::NotifySupervisedUsersSyncingStopped() {
552 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, 559 FOR_EACH_OBSERVER(SupervisedUserSyncServiceObserver, observers_,
553 OnManagedUsersSyncingStopped()); 560 OnSupervisedUsersSyncingStopped());
554 } 561 }
555 562
556 void ManagedUserSyncService::NotifyManagedUsersChanged() { 563 void SupervisedUserSyncService::NotifySupervisedUsersChanged() {
557 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, 564 FOR_EACH_OBSERVER(SupervisedUserSyncServiceObserver,
558 observers_, 565 observers_,
559 OnManagedUsersChanged()); 566 OnSupervisedUsersChanged());
560 } 567 }
561 568
562 void ManagedUserSyncService::DispatchCallbacks() { 569 void SupervisedUserSyncService::DispatchCallbacks() {
563 const base::DictionaryValue* managed_users = 570 const base::DictionaryValue* supervised_users =
564 prefs_->GetDictionary(prefs::kSupervisedUsers); 571 prefs_->GetDictionary(prefs::kSupervisedUsers);
565 for (std::vector<ManagedUsersCallback>::iterator it = callbacks_.begin(); 572 for (std::vector<SupervisedUsersCallback>::iterator it = callbacks_.begin();
566 it != callbacks_.end(); ++it) { 573 it != callbacks_.end(); ++it) {
567 it->Run(managed_users); 574 it->Run(supervised_users);
568 } 575 }
569 callbacks_.clear(); 576 callbacks_.clear();
570 } 577 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698