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

Side by Side Diff: chrome/browser/managed_mode/managed_user_sync_service.cc

Issue 316863002: Rename "managed (mode|user)" to "supervised user" (part 1) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase 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/managed_mode/managed_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"
16 #include "sync/api/sync_change.h" 16 #include "sync/api/sync_change.h"
17 #include "sync/api/sync_data.h" 17 #include "sync/api/sync_data.h"
18 #include "sync/api/sync_error.h" 18 #include "sync/api/sync_error.h"
19 #include "sync/api/sync_error_factory.h" 19 #include "sync/api/sync_error_factory.h"
20 #include "sync/api/sync_merge_result.h" 20 #include "sync/api/sync_merge_result.h"
21 #include "sync/protocol/sync.pb.h" 21 #include "sync/protocol/sync.pb.h"
22 22
23 #if defined(OS_CHROMEOS) 23 #if defined(OS_CHROMEOS)
24 #include "chrome/browser/chromeos/login/users/avatar/default_user_images.h" 24 #include "chrome/browser/chromeos/login/users/avatar/default_user_images.h"
25 #endif 25 #endif
26 26
27 using base::DictionaryValue; 27 using base::DictionaryValue;
28 using user_prefs::PrefRegistrySyncable; 28 using user_prefs::PrefRegistrySyncable;
29 using syncer::MANAGED_USERS; 29 using syncer::SUPERVISED_USERS;
30 using syncer::ModelType; 30 using syncer::ModelType;
31 using syncer::SyncChange; 31 using syncer::SyncChange;
32 using syncer::SyncChangeList; 32 using syncer::SyncChangeList;
33 using syncer::SyncChangeProcessor; 33 using syncer::SyncChangeProcessor;
34 using syncer::SyncData; 34 using syncer::SyncData;
35 using syncer::SyncDataList; 35 using syncer::SyncDataList;
36 using syncer::SyncError; 36 using syncer::SyncError;
37 using syncer::SyncErrorFactory; 37 using syncer::SyncErrorFactory;
38 using syncer::SyncMergeResult; 38 using syncer::SyncMergeResult;
39 using sync_pb::ManagedUserSpecifics; 39 using sync_pb::ManagedUserSpecifics;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 base::Bind(&ManagedUserSyncService::OnLastSignedInUsernameChange, 128 base::Bind(&ManagedUserSyncService::OnLastSignedInUsernameChange,
129 base::Unretained(this))); 129 base::Unretained(this)));
130 } 130 }
131 131
132 ManagedUserSyncService::~ManagedUserSyncService() { 132 ManagedUserSyncService::~ManagedUserSyncService() {
133 } 133 }
134 134
135 // static 135 // static
136 void ManagedUserSyncService::RegisterProfilePrefs( 136 void ManagedUserSyncService::RegisterProfilePrefs(
137 PrefRegistrySyncable* registry) { 137 PrefRegistrySyncable* registry) {
138 registry->RegisterDictionaryPref(prefs::kManagedUsers, 138 registry->RegisterDictionaryPref(prefs::kSupervisedUsers,
139 PrefRegistrySyncable::UNSYNCABLE_PREF); 139 PrefRegistrySyncable::UNSYNCABLE_PREF);
140 } 140 }
141 141
142 // static 142 // static
143 bool ManagedUserSyncService::GetAvatarIndex(const std::string& avatar_str, 143 bool ManagedUserSyncService::GetAvatarIndex(const std::string& avatar_str,
144 int* avatar_index) { 144 int* avatar_index) {
145 DCHECK(avatar_index); 145 DCHECK(avatar_index);
146 if (avatar_str.empty()) { 146 if (avatar_str.empty()) {
147 *avatar_index = kNoAvatar; 147 *avatar_index = kNoAvatar;
148 return true; 148 return true;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 259 }
260 260
261 void ManagedUserSyncService::UpdateManagedUserImpl( 261 void ManagedUserSyncService::UpdateManagedUserImpl(
262 const std::string& id, 262 const std::string& id,
263 const std::string& name, 263 const std::string& name,
264 const std::string& master_key, 264 const std::string& master_key,
265 const std::string& signature_key, 265 const std::string& signature_key,
266 const std::string& encryption_key, 266 const std::string& encryption_key,
267 int avatar_index, 267 int avatar_index,
268 bool add_user) { 268 bool add_user) {
269 DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers); 269 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
270 base::DictionaryValue* dict = update.Get(); 270 base::DictionaryValue* dict = update.Get();
271 scoped_ptr<base::DictionaryValue> value = CreateDictionary( 271 scoped_ptr<base::DictionaryValue> value = CreateDictionary(
272 name, master_key, signature_key, encryption_key, avatar_index); 272 name, master_key, signature_key, encryption_key, avatar_index);
273 273
274 DCHECK_EQ(add_user, !dict->HasKey(id)); 274 DCHECK_EQ(add_user, !dict->HasKey(id));
275 base::DictionaryValue* entry = value.get(); 275 base::DictionaryValue* entry = value.get();
276 dict->SetWithoutPathExpansion(id, value.release()); 276 dict->SetWithoutPathExpansion(id, value.release());
277 277
278 if (!sync_processor_) 278 if (!sync_processor_)
279 return; 279 return;
280 280
281 // If we're already syncing, create a new change and upload it. 281 // If we're already syncing, create a new change and upload it.
282 SyncChangeList change_list; 282 SyncChangeList change_list;
283 change_list.push_back( 283 change_list.push_back(
284 SyncChange(FROM_HERE, 284 SyncChange(FROM_HERE,
285 add_user ? SyncChange::ACTION_ADD : SyncChange::ACTION_UPDATE, 285 add_user ? SyncChange::ACTION_ADD : SyncChange::ACTION_UPDATE,
286 CreateSyncDataFromDictionaryEntry(id, *entry))); 286 CreateSyncDataFromDictionaryEntry(id, *entry)));
287 SyncError error = 287 SyncError error =
288 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); 288 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
289 DCHECK(!error.IsSet()) << error.ToString(); 289 DCHECK(!error.IsSet()) << error.ToString();
290 } 290 }
291 291
292 void ManagedUserSyncService::DeleteManagedUser(const std::string& id) { 292 void ManagedUserSyncService::DeleteManagedUser(const std::string& id) {
293 DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers); 293 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
294 bool success = update->RemoveWithoutPathExpansion(id, NULL); 294 bool success = update->RemoveWithoutPathExpansion(id, NULL);
295 DCHECK(success); 295 DCHECK(success);
296 296
297 if (!sync_processor_) 297 if (!sync_processor_)
298 return; 298 return;
299 299
300 SyncChangeList change_list; 300 SyncChangeList change_list;
301 change_list.push_back(SyncChange( 301 change_list.push_back(SyncChange(
302 FROM_HERE, 302 FROM_HERE,
303 SyncChange::ACTION_DELETE, 303 SyncChange::ACTION_DELETE,
304 SyncData::CreateLocalDelete(id, MANAGED_USERS))); 304 SyncData::CreateLocalDelete(id, SUPERVISED_USERS)));
305 SyncError sync_error = 305 SyncError sync_error =
306 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); 306 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
307 DCHECK(!sync_error.IsSet()); 307 DCHECK(!sync_error.IsSet());
308 } 308 }
309 309
310 const base::DictionaryValue* ManagedUserSyncService::GetManagedUsers() { 310 const base::DictionaryValue* ManagedUserSyncService::GetManagedUsers() {
311 DCHECK(sync_processor_); 311 DCHECK(sync_processor_);
312 return prefs_->GetDictionary(prefs::kManagedUsers); 312 return prefs_->GetDictionary(prefs::kSupervisedUsers);
313 } 313 }
314 314
315 bool ManagedUserSyncService::UpdateManagedUserAvatarIfNeeded( 315 bool ManagedUserSyncService::UpdateManagedUserAvatarIfNeeded(
316 const std::string& id, 316 const std::string& id,
317 int avatar_index) { 317 int avatar_index) {
318 DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers); 318 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
319 base::DictionaryValue* dict = update.Get(); 319 base::DictionaryValue* dict = update.Get();
320 DCHECK(dict->HasKey(id)); 320 DCHECK(dict->HasKey(id));
321 base::DictionaryValue* value = NULL; 321 base::DictionaryValue* value = NULL;
322 bool success = dict->GetDictionaryWithoutPathExpansion(id, &value); 322 bool success = dict->GetDictionaryWithoutPathExpansion(id, &value);
323 DCHECK(success); 323 DCHECK(success);
324 324
325 bool acknowledged = false; 325 bool acknowledged = false;
326 value->GetBoolean(ManagedUserSyncService::kAcknowledged, &acknowledged); 326 value->GetBoolean(ManagedUserSyncService::kAcknowledged, &acknowledged);
327 std::string name; 327 std::string name;
328 value->GetString(ManagedUserSyncService::kName, &name); 328 value->GetString(ManagedUserSyncService::kName, &name);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 391
392 void ManagedUserSyncService::Shutdown() { 392 void ManagedUserSyncService::Shutdown() {
393 NotifyManagedUsersSyncingStopped(); 393 NotifyManagedUsersSyncingStopped();
394 } 394 }
395 395
396 SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing( 396 SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing(
397 ModelType type, 397 ModelType type,
398 const SyncDataList& initial_sync_data, 398 const SyncDataList& initial_sync_data,
399 scoped_ptr<SyncChangeProcessor> sync_processor, 399 scoped_ptr<SyncChangeProcessor> sync_processor,
400 scoped_ptr<SyncErrorFactory> error_handler) { 400 scoped_ptr<SyncErrorFactory> error_handler) {
401 DCHECK_EQ(MANAGED_USERS, type); 401 DCHECK_EQ(SUPERVISED_USERS, type);
402 sync_processor_ = sync_processor.Pass(); 402 sync_processor_ = sync_processor.Pass();
403 error_handler_ = error_handler.Pass(); 403 error_handler_ = error_handler.Pass();
404 404
405 SyncChangeList change_list; 405 SyncChangeList change_list;
406 SyncMergeResult result(MANAGED_USERS); 406 SyncMergeResult result(SUPERVISED_USERS);
407 407
408 DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers); 408 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
409 base::DictionaryValue* dict = update.Get(); 409 base::DictionaryValue* dict = update.Get();
410 result.set_num_items_before_association(dict->size()); 410 result.set_num_items_before_association(dict->size());
411 std::set<std::string> seen_ids; 411 std::set<std::string> seen_ids;
412 int num_items_added = 0; 412 int num_items_added = 0;
413 int num_items_modified = 0; 413 int num_items_modified = 0;
414 for (SyncDataList::const_iterator it = initial_sync_data.begin(); 414 for (SyncDataList::const_iterator it = initial_sync_data.begin();
415 it != initial_sync_data.end(); ++it) { 415 it != initial_sync_data.end(); ++it) {
416 DCHECK_EQ(MANAGED_USERS, it->GetDataType()); 416 DCHECK_EQ(SUPERVISED_USERS, it->GetDataType());
417 const ManagedUserSpecifics& managed_user = 417 const ManagedUserSpecifics& managed_user =
418 it->GetSpecifics().managed_user(); 418 it->GetSpecifics().managed_user();
419 base::DictionaryValue* value = new base::DictionaryValue(); 419 base::DictionaryValue* value = new base::DictionaryValue();
420 value->SetString(kName, managed_user.name()); 420 value->SetString(kName, managed_user.name());
421 value->SetBoolean(kAcknowledged, managed_user.acknowledged()); 421 value->SetBoolean(kAcknowledged, managed_user.acknowledged());
422 value->SetString(kMasterKey, managed_user.master_key()); 422 value->SetString(kMasterKey, managed_user.master_key());
423 value->SetString(kChromeAvatar, managed_user.chrome_avatar()); 423 value->SetString(kChromeAvatar, managed_user.chrome_avatar());
424 value->SetString(kChromeOsAvatar, managed_user.chromeos_avatar()); 424 value->SetString(kChromeOsAvatar, managed_user.chromeos_avatar());
425 value->SetString(kPasswordSignatureKey, 425 value->SetString(kPasswordSignatureKey,
426 managed_user.password_signature_key()); 426 managed_user.password_signature_key());
(...skipping 21 matching lines...) Expand all
448 result.set_num_items_modified(num_items_modified); 448 result.set_num_items_modified(num_items_modified);
449 result.set_num_items_added(num_items_added); 449 result.set_num_items_added(num_items_added);
450 result.set_num_items_after_association(dict->size()); 450 result.set_num_items_after_association(dict->size());
451 451
452 DispatchCallbacks(); 452 DispatchCallbacks();
453 453
454 return result; 454 return result;
455 } 455 }
456 456
457 void ManagedUserSyncService::StopSyncing(ModelType type) { 457 void ManagedUserSyncService::StopSyncing(ModelType type) {
458 DCHECK_EQ(MANAGED_USERS, type); 458 DCHECK_EQ(SUPERVISED_USERS, type);
459 // The observers may want to change the Sync data, so notify them before 459 // The observers may want to change the Sync data, so notify them before
460 // resetting the |sync_processor_|. 460 // resetting the |sync_processor_|.
461 NotifyManagedUsersSyncingStopped(); 461 NotifyManagedUsersSyncingStopped();
462 sync_processor_.reset(); 462 sync_processor_.reset();
463 error_handler_.reset(); 463 error_handler_.reset();
464 } 464 }
465 465
466 SyncDataList ManagedUserSyncService::GetAllSyncData( 466 SyncDataList ManagedUserSyncService::GetAllSyncData(
467 ModelType type) const { 467 ModelType type) const {
468 SyncDataList data; 468 SyncDataList data;
469 DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers); 469 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
470 base::DictionaryValue* dict = update.Get(); 470 base::DictionaryValue* dict = update.Get();
471 for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance()) 471 for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance())
472 data.push_back(CreateSyncDataFromDictionaryEntry(it.key(), it.value())); 472 data.push_back(CreateSyncDataFromDictionaryEntry(it.key(), it.value()));
473 473
474 return data; 474 return data;
475 } 475 }
476 476
477 SyncError ManagedUserSyncService::ProcessSyncChanges( 477 SyncError ManagedUserSyncService::ProcessSyncChanges(
478 const tracked_objects::Location& from_here, 478 const tracked_objects::Location& from_here,
479 const SyncChangeList& change_list) { 479 const SyncChangeList& change_list) {
480 SyncError error; 480 SyncError error;
481 DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers); 481 DictionaryPrefUpdate update(prefs_, prefs::kSupervisedUsers);
482 base::DictionaryValue* dict = update.Get(); 482 base::DictionaryValue* dict = update.Get();
483 for (SyncChangeList::const_iterator it = change_list.begin(); 483 for (SyncChangeList::const_iterator it = change_list.begin();
484 it != change_list.end(); ++it) { 484 it != change_list.end(); ++it) {
485 SyncData data = it->sync_data(); 485 SyncData data = it->sync_data();
486 DCHECK_EQ(MANAGED_USERS, data.GetDataType()); 486 DCHECK_EQ(SUPERVISED_USERS, data.GetDataType());
487 const ManagedUserSpecifics& managed_user = 487 const ManagedUserSpecifics& managed_user =
488 data.GetSpecifics().managed_user(); 488 data.GetSpecifics().managed_user();
489 switch (it->change_type()) { 489 switch (it->change_type()) {
490 case SyncChange::ACTION_ADD: 490 case SyncChange::ACTION_ADD:
491 case SyncChange::ACTION_UPDATE: { 491 case SyncChange::ACTION_UPDATE: {
492 // Every item we get from the server should be acknowledged. 492 // Every item we get from the server should be acknowledged.
493 DCHECK(managed_user.acknowledged()); 493 DCHECK(managed_user.acknowledged());
494 const base::DictionaryValue* old_value = NULL; 494 const base::DictionaryValue* old_value = NULL;
495 dict->GetDictionaryWithoutPathExpansion(managed_user.id(), &old_value); 495 dict->GetDictionaryWithoutPathExpansion(managed_user.id(), &old_value);
496 496
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 } 532 }
533 } 533 }
534 return error; 534 return error;
535 } 535 }
536 536
537 void ManagedUserSyncService::OnLastSignedInUsernameChange() { 537 void ManagedUserSyncService::OnLastSignedInUsernameChange() {
538 DCHECK(!sync_processor_); 538 DCHECK(!sync_processor_);
539 539
540 // If the last signed in user changes, we clear all data, to avoid managed 540 // If the last signed in user changes, we clear all data, to avoid managed
541 // users from one custodian appearing in another one's profile. 541 // users from one custodian appearing in another one's profile.
542 prefs_->ClearPref(prefs::kManagedUsers); 542 prefs_->ClearPref(prefs::kSupervisedUsers);
543 } 543 }
544 544
545 void ManagedUserSyncService::NotifyManagedUserAcknowledged( 545 void ManagedUserSyncService::NotifyManagedUserAcknowledged(
546 const std::string& managed_user_id) { 546 const std::string& managed_user_id) {
547 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, 547 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_,
548 OnManagedUserAcknowledged(managed_user_id)); 548 OnManagedUserAcknowledged(managed_user_id));
549 } 549 }
550 550
551 void ManagedUserSyncService::NotifyManagedUsersSyncingStopped() { 551 void ManagedUserSyncService::NotifyManagedUsersSyncingStopped() {
552 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, 552 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_,
553 OnManagedUsersSyncingStopped()); 553 OnManagedUsersSyncingStopped());
554 } 554 }
555 555
556 void ManagedUserSyncService::NotifyManagedUsersChanged() { 556 void ManagedUserSyncService::NotifyManagedUsersChanged() {
557 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, 557 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver,
558 observers_, 558 observers_,
559 OnManagedUsersChanged()); 559 OnManagedUsersChanged());
560 } 560 }
561 561
562 void ManagedUserSyncService::DispatchCallbacks() { 562 void ManagedUserSyncService::DispatchCallbacks() {
563 const base::DictionaryValue* managed_users = 563 const base::DictionaryValue* managed_users =
564 prefs_->GetDictionary(prefs::kManagedUsers); 564 prefs_->GetDictionary(prefs::kSupervisedUsers);
565 for (std::vector<ManagedUsersCallback>::iterator it = callbacks_.begin(); 565 for (std::vector<ManagedUsersCallback>::iterator it = callbacks_.begin();
566 it != callbacks_.end(); ++it) { 566 it != callbacks_.end(); ++it) {
567 it->Run(managed_users); 567 it->Run(managed_users);
568 } 568 }
569 callbacks_.clear(); 569 callbacks_.clear();
570 } 570 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698