OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/user_manager/user_manager_base.h" | 5 #include "components/user_manager/user_manager_base.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <set> | 8 #include <set> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 user->set_oauth_token_status(oauth_token_status); | 367 user->set_oauth_token_status(oauth_token_status); |
368 | 368 |
369 // Do not update local state if data stored or cached outside the user's | 369 // Do not update local state if data stored or cached outside the user's |
370 // cryptohome is to be treated as ephemeral. | 370 // cryptohome is to be treated as ephemeral. |
371 if (IsUserNonCryptohomeDataEphemeral(account_id)) | 371 if (IsUserNonCryptohomeDataEphemeral(account_id)) |
372 return; | 372 return; |
373 | 373 |
374 { | 374 { |
375 DictionaryPrefUpdate oauth_status_update(GetLocalState(), | 375 DictionaryPrefUpdate oauth_status_update(GetLocalState(), |
376 kUserOAuthTokenStatus); | 376 kUserOAuthTokenStatus); |
377 oauth_status_update->SetWithoutPathExpansion( | 377 oauth_status_update->SetIntegerWithoutPathExpansion( |
378 account_id.GetUserEmail(), | 378 account_id.GetUserEmail(), static_cast<int>(oauth_token_status)); |
379 new base::Value(static_cast<int>(oauth_token_status))); | |
380 } | 379 } |
381 GetLocalState()->CommitPendingWrite(); | 380 GetLocalState()->CommitPendingWrite(); |
382 } | 381 } |
383 | 382 |
384 void UserManagerBase::SaveForceOnlineSignin(const AccountId& account_id, | 383 void UserManagerBase::SaveForceOnlineSignin(const AccountId& account_id, |
385 bool force_online_signin) { | 384 bool force_online_signin) { |
386 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 385 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
387 | 386 |
388 // Do not update local state if data stored or cached outside the user's | 387 // Do not update local state if data stored or cached outside the user's |
389 // cryptohome is to be treated as ephemeral. | 388 // cryptohome is to be treated as ephemeral. |
(...skipping 14 matching lines...) Expand all Loading... |
404 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 403 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
405 | 404 |
406 if (User* user = FindUserAndModify(account_id)) { | 405 if (User* user = FindUserAndModify(account_id)) { |
407 user->set_display_name(display_name); | 406 user->set_display_name(display_name); |
408 | 407 |
409 // Do not update local state if data stored or cached outside the user's | 408 // Do not update local state if data stored or cached outside the user's |
410 // cryptohome is to be treated as ephemeral. | 409 // cryptohome is to be treated as ephemeral. |
411 if (!IsUserNonCryptohomeDataEphemeral(account_id)) { | 410 if (!IsUserNonCryptohomeDataEphemeral(account_id)) { |
412 DictionaryPrefUpdate display_name_update(GetLocalState(), | 411 DictionaryPrefUpdate display_name_update(GetLocalState(), |
413 kUserDisplayName); | 412 kUserDisplayName); |
414 display_name_update->SetWithoutPathExpansion( | 413 display_name_update->SetStringWithoutPathExpansion( |
415 account_id.GetUserEmail(), new base::Value(display_name)); | 414 account_id.GetUserEmail(), display_name); |
416 } | 415 } |
417 } | 416 } |
418 } | 417 } |
419 | 418 |
420 base::string16 UserManagerBase::GetUserDisplayName( | 419 base::string16 UserManagerBase::GetUserDisplayName( |
421 const AccountId& account_id) const { | 420 const AccountId& account_id) const { |
422 const User* user = FindUser(account_id); | 421 const User* user = FindUser(account_id); |
423 return user ? user->display_name() : base::string16(); | 422 return user ? user->display_name() : base::string16(); |
424 } | 423 } |
425 | 424 |
426 void UserManagerBase::SaveUserDisplayEmail(const AccountId& account_id, | 425 void UserManagerBase::SaveUserDisplayEmail(const AccountId& account_id, |
427 const std::string& display_email) { | 426 const std::string& display_email) { |
428 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 427 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
429 | 428 |
430 User* user = FindUserAndModify(account_id); | 429 User* user = FindUserAndModify(account_id); |
431 if (!user) { | 430 if (!user) { |
432 LOG(ERROR) << "User not found: " << account_id.GetUserEmail(); | 431 LOG(ERROR) << "User not found: " << account_id.GetUserEmail(); |
433 return; // Ignore if there is no such user. | 432 return; // Ignore if there is no such user. |
434 } | 433 } |
435 | 434 |
436 user->set_display_email(display_email); | 435 user->set_display_email(display_email); |
437 | 436 |
438 // Do not update local state if data stored or cached outside the user's | 437 // Do not update local state if data stored or cached outside the user's |
439 // cryptohome is to be treated as ephemeral. | 438 // cryptohome is to be treated as ephemeral. |
440 if (IsUserNonCryptohomeDataEphemeral(account_id)) | 439 if (IsUserNonCryptohomeDataEphemeral(account_id)) |
441 return; | 440 return; |
442 | 441 |
443 DictionaryPrefUpdate display_email_update(GetLocalState(), kUserDisplayEmail); | 442 DictionaryPrefUpdate display_email_update(GetLocalState(), kUserDisplayEmail); |
444 display_email_update->SetWithoutPathExpansion(account_id.GetUserEmail(), | 443 display_email_update->SetStringWithoutPathExpansion(account_id.GetUserEmail(), |
445 new base::Value(display_email)); | 444 display_email); |
446 } | 445 } |
447 | 446 |
448 std::string UserManagerBase::GetUserDisplayEmail( | 447 std::string UserManagerBase::GetUserDisplayEmail( |
449 const AccountId& account_id) const { | 448 const AccountId& account_id) const { |
450 const User* user = FindUser(account_id); | 449 const User* user = FindUser(account_id); |
451 return user ? user->display_email() : account_id.GetUserEmail(); | 450 return user ? user->display_email() : account_id.GetUserEmail(); |
452 } | 451 } |
453 | 452 |
454 void UserManagerBase::SaveUserType(const AccountId& account_id, | 453 void UserManagerBase::SaveUserType(const AccountId& account_id, |
455 const UserType& user_type) { | 454 const UserType& user_type) { |
456 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 455 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
457 | 456 |
458 User* user = FindUserAndModify(account_id); | 457 User* user = FindUserAndModify(account_id); |
459 if (!user) { | 458 if (!user) { |
460 LOG(ERROR) << "User not found: " << account_id.GetUserEmail(); | 459 LOG(ERROR) << "User not found: " << account_id.GetUserEmail(); |
461 return; // Ignore if there is no such user. | 460 return; // Ignore if there is no such user. |
462 } | 461 } |
463 | 462 |
464 // Do not update local state if data stored or cached outside the user's | 463 // Do not update local state if data stored or cached outside the user's |
465 // cryptohome is to be treated as ephemeral. | 464 // cryptohome is to be treated as ephemeral. |
466 if (IsUserNonCryptohomeDataEphemeral(account_id)) | 465 if (IsUserNonCryptohomeDataEphemeral(account_id)) |
467 return; | 466 return; |
468 | 467 |
469 DictionaryPrefUpdate user_type_update(GetLocalState(), kUserType); | 468 DictionaryPrefUpdate user_type_update(GetLocalState(), kUserType); |
470 user_type_update->SetWithoutPathExpansion( | 469 user_type_update->SetIntegerWithoutPathExpansion(account_id.GetUserEmail(), |
471 account_id.GetUserEmail(), new base::Value(static_cast<int>(user_type))); | 470 static_cast<int>(user_type)); |
472 GetLocalState()->CommitPendingWrite(); | 471 GetLocalState()->CommitPendingWrite(); |
473 } | 472 } |
474 | 473 |
475 void UserManagerBase::UpdateUserAccountData( | 474 void UserManagerBase::UpdateUserAccountData( |
476 const AccountId& account_id, | 475 const AccountId& account_id, |
477 const UserAccountData& account_data) { | 476 const UserAccountData& account_data) { |
478 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 477 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
479 | 478 |
480 SaveUserDisplayName(account_id, account_data.display_name()); | 479 SaveUserDisplayName(account_id, account_data.display_name()); |
481 | 480 |
482 if (User* user = FindUserAndModify(account_id)) { | 481 if (User* user = FindUserAndModify(account_id)) { |
483 base::string16 given_name = account_data.given_name(); | 482 base::string16 given_name = account_data.given_name(); |
484 user->set_given_name(given_name); | 483 user->set_given_name(given_name); |
485 if (!IsUserNonCryptohomeDataEphemeral(account_id)) { | 484 if (!IsUserNonCryptohomeDataEphemeral(account_id)) { |
486 DictionaryPrefUpdate given_name_update(GetLocalState(), kUserGivenName); | 485 DictionaryPrefUpdate given_name_update(GetLocalState(), kUserGivenName); |
487 given_name_update->SetWithoutPathExpansion(account_id.GetUserEmail(), | 486 given_name_update->SetStringWithoutPathExpansion( |
488 new base::Value(given_name)); | 487 account_id.GetUserEmail(), given_name); |
489 } | 488 } |
490 } | 489 } |
491 | 490 |
492 UpdateUserAccountLocale(account_id, account_data.locale()); | 491 UpdateUserAccountLocale(account_id, account_data.locale()); |
493 } | 492 } |
494 | 493 |
495 void UserManagerBase::ParseUserList(const base::ListValue& users_list, | 494 void UserManagerBase::ParseUserList(const base::ListValue& users_list, |
496 const std::set<AccountId>& existing_users, | 495 const std::set<AccountId>& existing_users, |
497 std::vector<AccountId>* users_vector, | 496 std::vector<AccountId>* users_vector, |
498 std::set<AccountId>* users_set) { | 497 std::set<AccountId>* users_set) { |
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 } | 1094 } |
1096 | 1095 |
1097 void UserManagerBase::DeleteUser(User* user) { | 1096 void UserManagerBase::DeleteUser(User* user) { |
1098 const bool is_active_user = (user == active_user_); | 1097 const bool is_active_user = (user == active_user_); |
1099 delete user; | 1098 delete user; |
1100 if (is_active_user) | 1099 if (is_active_user) |
1101 active_user_ = nullptr; | 1100 active_user_ = nullptr; |
1102 } | 1101 } |
1103 | 1102 |
1104 } // namespace user_manager | 1103 } // namespace user_manager |
OLD | NEW |