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 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 531 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
532 return is_current_user_new_; | 532 return is_current_user_new_; |
533 } | 533 } |
534 | 534 |
535 bool UserManagerBase::IsCurrentUserNonCryptohomeDataEphemeral() const { | 535 bool UserManagerBase::IsCurrentUserNonCryptohomeDataEphemeral() const { |
536 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 536 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
537 return IsUserLoggedIn() && | 537 return IsUserLoggedIn() && |
538 IsUserNonCryptohomeDataEphemeral(GetLoggedInUser()->GetAccountId()); | 538 IsUserNonCryptohomeDataEphemeral(GetLoggedInUser()->GetAccountId()); |
539 } | 539 } |
540 | 540 |
| 541 bool UserManagerBase::IsCurrentUserCryptohomeDataEphemeral() const { |
| 542 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 543 return IsUserLoggedIn() && |
| 544 IsUserCryptohomeDataEphemeral(GetActiveUser()->GetAccountId()); |
| 545 } |
| 546 |
541 bool UserManagerBase::CanCurrentUserLock() const { | 547 bool UserManagerBase::CanCurrentUserLock() const { |
542 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 548 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
543 return IsUserLoggedIn() && active_user_->can_lock(); | 549 return IsUserLoggedIn() && active_user_->can_lock(); |
544 } | 550 } |
545 | 551 |
546 bool UserManagerBase::IsUserLoggedIn() const { | 552 bool UserManagerBase::IsUserLoggedIn() const { |
547 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 553 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
548 return active_user_; | 554 return active_user_; |
549 } | 555 } |
550 | 556 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 } | 620 } |
615 | 621 |
616 // Data belonging to any other user is ephemeral when: | 622 // Data belonging to any other user is ephemeral when: |
617 // a) Going through the regular login flow and the ephemeral users policy is | 623 // a) Going through the regular login flow and the ephemeral users policy is |
618 // enabled. | 624 // enabled. |
619 // - or - | 625 // - or - |
620 // b) The browser is restarting after a crash. | 626 // b) The browser is restarting after a crash. |
621 return AreEphemeralUsersEnabled() || HasBrowserRestarted(); | 627 return AreEphemeralUsersEnabled() || HasBrowserRestarted(); |
622 } | 628 } |
623 | 629 |
| 630 bool UserManagerBase::IsUserCryptohomeDataEphemeral( |
| 631 const AccountId& account_id) const { |
| 632 // Don't consider stub users data as ephemeral. |
| 633 if (IsStubAccountId(account_id)) |
| 634 return false; |
| 635 |
| 636 // Data belonging to the guest and demo users is always ephemeral. |
| 637 if (IsGuestAccountId(account_id) || IsDemoApp(account_id)) |
| 638 return true; |
| 639 |
| 640 // Data belonging to the public accounts is always ephemeral. |
| 641 const User* user = FindUser(account_id); |
| 642 if (user && user->GetType() == USER_TYPE_PUBLIC_ACCOUNT) |
| 643 return true; |
| 644 |
| 645 // Ephemeral users. |
| 646 if (user && user->GetType() == USER_TYPE_REGULAR && |
| 647 FindUserInList(account_id) == nullptr) { |
| 648 return true; |
| 649 } |
| 650 |
| 651 return false; |
| 652 } |
| 653 |
624 void UserManagerBase::AddObserver(UserManager::Observer* obs) { | 654 void UserManagerBase::AddObserver(UserManager::Observer* obs) { |
625 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 655 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
626 observer_list_.AddObserver(obs); | 656 observer_list_.AddObserver(obs); |
627 } | 657 } |
628 | 658 |
629 void UserManagerBase::RemoveObserver(UserManager::Observer* obs) { | 659 void UserManagerBase::RemoveObserver(UserManager::Observer* obs) { |
630 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 660 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
631 observer_list_.RemoveObserver(obs); | 661 observer_list_.RemoveObserver(obs); |
632 } | 662 } |
633 | 663 |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 } | 1073 } |
1044 | 1074 |
1045 void UserManagerBase::DeleteUser(User* user) { | 1075 void UserManagerBase::DeleteUser(User* user) { |
1046 const bool is_active_user = (user == active_user_); | 1076 const bool is_active_user = (user == active_user_); |
1047 delete user; | 1077 delete user; |
1048 if (is_active_user) | 1078 if (is_active_user) |
1049 active_user_ = nullptr; | 1079 active_user_ = nullptr; |
1050 } | 1080 } |
1051 | 1081 |
1052 } // namespace user_manager | 1082 } // namespace user_manager |
OLD | NEW |