diff options
Diffstat (limited to 'chromium/components/user_manager')
-rw-r--r-- | chromium/components/user_manager/OWNERS | 1 | ||||
-rw-r--r-- | chromium/components/user_manager/fake_user_manager.cc | 5 | ||||
-rw-r--r-- | chromium/components/user_manager/fake_user_manager.h | 1 | ||||
-rw-r--r-- | chromium/components/user_manager/user.cc | 18 | ||||
-rw-r--r-- | chromium/components/user_manager/user.h | 8 | ||||
-rw-r--r-- | chromium/components/user_manager/user_manager.cc | 32 | ||||
-rw-r--r-- | chromium/components/user_manager/user_manager.h | 25 | ||||
-rw-r--r-- | chromium/components/user_manager/user_manager_base.cc | 27 | ||||
-rw-r--r-- | chromium/components/user_manager/user_manager_base.h | 5 |
9 files changed, 44 insertions, 78 deletions
diff --git a/chromium/components/user_manager/OWNERS b/chromium/components/user_manager/OWNERS index b280edc9c78..fb10e77d999 100644 --- a/chromium/components/user_manager/OWNERS +++ b/chromium/components/user_manager/OWNERS @@ -1,3 +1,4 @@ achuith@chromium.org alemate@chromium.org xiyuan@chromium.org +# COMPONENT: Enterprise diff --git a/chromium/components/user_manager/fake_user_manager.cc b/chromium/components/user_manager/fake_user_manager.cc index 97883d1b8db..100b76bf82a 100644 --- a/chromium/components/user_manager/fake_user_manager.cc +++ b/chromium/components/user_manager/fake_user_manager.cc @@ -213,11 +213,6 @@ base::string16 FakeUserManager::GetUserDisplayName( return base::string16(); } -std::string FakeUserManager::GetUserDisplayEmail( - const AccountId& account_id) const { - return std::string(); -} - bool FakeUserManager::IsCurrentUserOwner() const { return false; } diff --git a/chromium/components/user_manager/fake_user_manager.h b/chromium/components/user_manager/fake_user_manager.h index ea7d0bfe899..b4767bc0ffa 100644 --- a/chromium/components/user_manager/fake_user_manager.h +++ b/chromium/components/user_manager/fake_user_manager.h @@ -85,7 +85,6 @@ class USER_MANAGER_EXPORT FakeUserManager : public UserManagerBase { base::string16 GetUserDisplayName(const AccountId& account_id) const override; void SaveUserDisplayEmail(const AccountId& account_id, const std::string& display_email) override {} - std::string GetUserDisplayEmail(const AccountId& account_id) const override; bool IsCurrentUserOwner() const override; bool IsCurrentUserNew() const override; bool IsCurrentUserNonCryptohomeDataEphemeral() const override; diff --git a/chromium/components/user_manager/user.cc b/chromium/components/user_manager/user.cc index a23a0ae976c..2e6c2a70b07 100644 --- a/chromium/components/user_manager/user.cc +++ b/chromium/components/user_manager/user.cc @@ -263,8 +263,10 @@ bool User::has_gaia_account() const { } void User::AddProfileCreatedObserver(base::OnceClosure on_profile_created) { - DCHECK(!profile_is_created_); - on_profile_created_observers_.push_back(std::move(on_profile_created)); + if (profile_is_created_) + std::move(on_profile_created).Run(); + else + on_profile_created_observers_.push_back(std::move(on_profile_created)); } bool User::IsAffiliated() const { @@ -309,8 +311,11 @@ User* User::CreateSupervisedUser(const AccountId& account_id) { return new SupervisedUser(account_id); } -User* User::CreatePublicAccountUser(const AccountId& account_id) { - return new PublicAccountUser(account_id); +User* User::CreatePublicAccountUser(const AccountId& account_id, + bool is_using_saml) { + User* user = new PublicAccountUser(account_id); + user->set_using_saml(is_using_saml); + return user; } void User::SetAccountLocale(const std::string& resolved_account_locale) { @@ -476,7 +481,10 @@ std::string SupervisedUser::display_email() const { } PublicAccountUser::PublicAccountUser(const AccountId& account_id) - : DeviceLocalAccountUserBase(account_id) {} + : DeviceLocalAccountUserBase(account_id) { + // Public accounts do not have a real email address, so they do not set + // |display_email_|. +} PublicAccountUser::~PublicAccountUser() { } diff --git a/chromium/components/user_manager/user.h b/chromium/components/user_manager/user.h index 41462a9441b..c4033480b52 100644 --- a/chromium/components/user_manager/user.h +++ b/chromium/components/user_manager/user.h @@ -217,7 +217,8 @@ class USER_MANAGER_EXPORT User : public UserInfo { static User* CreateKioskAppUser(const AccountId& kiosk_app_account_id); static User* CreateArcKioskAppUser(const AccountId& arc_kiosk_account_id); static User* CreateSupervisedUser(const AccountId& account_id); - static User* CreatePublicAccountUser(const AccountId& account_id); + static User* CreatePublicAccountUser(const AccountId& account_id, + bool is_using_saml = false); const std::string* GetAccountLocale() const { return account_locale_.get(); } @@ -277,7 +278,10 @@ class USER_MANAGER_EXPORT User : public UserInfo { AccountId account_id_; base::string16 display_name_; base::string16 given_name_; - // The displayed user email, defaults to |email_|. + // User email for display, which may include capitals and non-significant + // periods. For example, "John.Steinbeck@gmail.com" is a display email, but + // "johnsteinbeck@gmail.com" is the canonical form. Defaults to + // account_id_.GetUserEmail(). std::string display_email_; bool using_saml_ = false; std::unique_ptr<UserImage> user_image_; diff --git a/chromium/components/user_manager/user_manager.cc b/chromium/components/user_manager/user_manager.cc index e02109fef62..caa9a2998b6 100644 --- a/chromium/components/user_manager/user_manager.cc +++ b/chromium/components/user_manager/user_manager.cc @@ -9,6 +9,8 @@ namespace user_manager { +const char kRegularUsersPref[] = "LoggedInUsers"; + UserManager* UserManager::instance = nullptr; UserManager::Observer::~Observer() = default; @@ -26,29 +28,23 @@ void UserManager::Observer::OnUserProfileImageUpdated( void UserManager::Observer::OnUsersSignInConstraintsChanged() {} void UserManager::UserSessionStateObserver::ActiveUserChanged( - const User* active_user) { -} + User* active_user) {} void UserManager::UserSessionStateObserver::UserAddedToSession( - const User* active_user) { -} + const User* active_user) {} void UserManager::UserSessionStateObserver::ActiveUserHashChanged( - const std::string& hash) { -} + const std::string& hash) {} -UserManager::UserSessionStateObserver::~UserSessionStateObserver() { -} +UserManager::UserSessionStateObserver::~UserSessionStateObserver() {} UserManager::UserAccountData::UserAccountData( const base::string16& display_name, const base::string16& given_name, const std::string& locale) - : display_name_(display_name), given_name_(given_name), locale_(locale) { -} + : display_name_(display_name), given_name_(given_name), locale_(locale) {} -UserManager::UserAccountData::~UserAccountData() { -} +UserManager::UserAccountData::~UserAccountData() {} void UserManager::Initialize() { DCHECK(!UserManager::instance); @@ -142,16 +138,4 @@ UserType UserManager::CalculateUserType(const AccountId& account_id, return USER_TYPE_REGULAR; } -ScopedUserSessionStateObserver::ScopedUserSessionStateObserver( - UserManager::UserSessionStateObserver* observer) - : observer_(observer) { - if (UserManager::IsInitialized()) - UserManager::Get()->AddSessionStateObserver(observer_); -} - -ScopedUserSessionStateObserver::~ScopedUserSessionStateObserver() { - if (UserManager::IsInitialized()) - UserManager::Get()->RemoveSessionStateObserver(observer_); -} - } // namespace user_manager diff --git a/chromium/components/user_manager/user_manager.h b/chromium/components/user_manager/user_manager.h index d13ef14307a..0d892fae197 100644 --- a/chromium/components/user_manager/user_manager.h +++ b/chromium/components/user_manager/user_manager.h @@ -22,6 +22,10 @@ namespace user_manager { class ScopedUserManager; class RemoveUserDelegate; +// A list pref of the the regular users known on this device, arranged in LRU +// order, stored in local state. +USER_MANAGER_EXPORT extern const char kRegularUsersPref[]; + // Interface for UserManagerBase - that provides base implementation for // Chrome OS user management. Typical features: // * Get list of all know users (who have logged into this Chrome OS device) @@ -62,7 +66,7 @@ class USER_MANAGER_EXPORT UserManager { class UserSessionStateObserver { public: // Called when active user has changed. - virtual void ActiveUserChanged(const User* active_user); + virtual void ActiveUserChanged(User* active_user); // Called when another user got added to the existing session. virtual void UserAddedToSession(const User* added_user); @@ -237,12 +241,6 @@ class USER_MANAGER_EXPORT UserManager { virtual void SaveUserDisplayEmail(const AccountId& account_id, const std::string& display_email) = 0; - // Returns the display email for user |account_id| if it is known (was - // previously set by a |SaveUserDisplayEmail| call). - // Otherwise, returns |account_id| itself. - virtual std::string GetUserDisplayEmail( - const AccountId& account_id) const = 0; - // Saves user's type for |user| into local state preferences. virtual void SaveUserType(const User* user) = 0; @@ -410,19 +408,6 @@ class USER_MANAGER_EXPORT UserManager { static UserManager* SetForTesting(UserManager* user_manager); }; -// TODO(xiyuan): Move this along with UserSessionStateObserver -class USER_MANAGER_EXPORT ScopedUserSessionStateObserver { - public: - explicit ScopedUserSessionStateObserver( - UserManager::UserSessionStateObserver* observer); - ~ScopedUserSessionStateObserver(); - - private: - UserManager::UserSessionStateObserver* const observer_; - - DISALLOW_COPY_AND_ASSIGN(ScopedUserSessionStateObserver); -}; - } // namespace user_manager #endif // COMPONENTS_USER_MANAGER_USER_MANAGER_H_ diff --git a/chromium/components/user_manager/user_manager_base.cc b/chromium/components/user_manager/user_manager_base.cc index 5e050b7db5e..ec0a254cf12 100644 --- a/chromium/components/user_manager/user_manager_base.cc +++ b/chromium/components/user_manager/user_manager_base.cc @@ -34,10 +34,6 @@ namespace user_manager { namespace { -// A vector pref of the the regular users known on this device, arranged in LRU -// order. -const char kRegularUsers[] = "LoggedInUsers"; - // A dictionary that maps user IDs to the displayed name. const char kUserDisplayName[] = "UserDisplayName"; @@ -98,7 +94,7 @@ const base::Feature kHideSupervisedUsers{"HideSupervisedUsers", // static void UserManagerBase::RegisterPrefs(PrefRegistrySimple* registry) { - registry->RegisterListPref(kRegularUsers); + registry->RegisterListPref(kRegularUsersPref); registry->RegisterStringPref(kLastLoggedInGaiaUser, std::string()); registry->RegisterDictionaryPref(kUserDisplayName); registry->RegisterDictionaryPref(kUserGivenName); @@ -112,7 +108,7 @@ void UserManagerBase::RegisterPrefs(PrefRegistrySimple* registry) { } UserManagerBase::UserManagerBase(scoped_refptr<base::TaskRunner> task_runner) - : task_runner_(task_runner), weak_factory_(this) {} + : task_runner_(task_runner) {} UserManagerBase::~UserManagerBase() { // Can't use STLDeleteElements because of the private destructor of User. @@ -351,7 +347,7 @@ void UserManagerBase::RemoveUserFromList(const AccountId& account_id) { DCHECK(IsSupervisedAccountId(account_id)); // Special case, removing partially-constructed supervised user during user // list loading. - ListPrefUpdate users_update(GetLocalState(), kRegularUsers); + ListPrefUpdate users_update(GetLocalState(), kRegularUsersPref); users_update->Remove(base::Value(account_id.GetUserEmail()), nullptr); OnUserRemoved(account_id); } else { @@ -489,12 +485,6 @@ void UserManagerBase::SaveUserDisplayEmail(const AccountId& account_id, base::Value(display_email)); } -std::string UserManagerBase::GetUserDisplayEmail( - const AccountId& account_id) const { - const User* user = FindUser(account_id); - return user ? user->display_email() : account_id.GetUserEmail(); -} - void UserManagerBase::SaveUserType(const User* user) { DCHECK(!task_runner_ || task_runner_->RunsTasksInCurrentSequence()); @@ -805,7 +795,7 @@ void UserManagerBase::EnsureUsersLoaded() { PrefService* local_state = GetLocalState(); const base::ListValue* prefs_regular_users = - local_state->GetList(kRegularUsers); + local_state->GetList(kRegularUsersPref); const base::DictionaryValue* prefs_display_names = local_state->GetDictionary(kUserDisplayName); @@ -879,7 +869,8 @@ const User* UserManagerBase::FindUserInList(const AccountId& account_id) const { } bool UserManagerBase::UserExistsInList(const AccountId& account_id) const { - const base::ListValue* user_list = GetLocalState()->GetList(kRegularUsers); + const base::ListValue* user_list = + GetLocalState()->GetList(kRegularUsersPref); for (size_t i = 0; i < user_list->GetSize(); ++i) { std::string email; if (user_list->GetString(i, &email) && (account_id.GetUserEmail() == email)) @@ -904,7 +895,7 @@ void UserManagerBase::GuestUserLoggedIn() { void UserManagerBase::AddUserRecord(User* user) { // Add the user to the front of the user list. - ListPrefUpdate prefs_users_update(GetLocalState(), kRegularUsers); + ListPrefUpdate prefs_users_update(GetLocalState(), kRegularUsersPref); prefs_users_update->Insert( 0, std::make_unique<base::Value>(user->GetAccountId().GetUserEmail())); users_.insert(users_.begin(), user); @@ -949,7 +940,7 @@ void UserManagerBase::RegularUserLoggedInAsEphemeral( known_user::SetIsEphemeralUser(active_user_->GetAccountId(), true); } -void UserManagerBase::NotifyActiveUserChanged(const User* active_user) { +void UserManagerBase::NotifyActiveUserChanged(User* active_user) { DCHECK(!task_runner_ || task_runner_->RunsTasksInCurrentSequence()); for (auto& observer : session_state_observer_list_) observer.ActiveUserChanged(active_user); @@ -1028,7 +1019,7 @@ void UserManagerBase::RemoveNonCryptohomeData(const AccountId& account_id) { User* UserManagerBase::RemoveRegularOrSupervisedUserFromList( const AccountId& account_id, bool notify) { - ListPrefUpdate prefs_users_update(GetLocalState(), kRegularUsers); + ListPrefUpdate prefs_users_update(GetLocalState(), kRegularUsersPref); prefs_users_update->Clear(); User* user = nullptr; for (UserList::iterator it = users_.begin(); it != users_.end();) { diff --git a/chromium/components/user_manager/user_manager_base.h b/chromium/components/user_manager/user_manager_base.h index 886191ca1bd..a4f2d8e58d2 100644 --- a/chromium/components/user_manager/user_manager_base.h +++ b/chromium/components/user_manager/user_manager_base.h @@ -79,7 +79,6 @@ class USER_MANAGER_EXPORT UserManagerBase : public UserManager { base::string16 GetUserDisplayName(const AccountId& account_id) const override; void SaveUserDisplayEmail(const AccountId& account_id, const std::string& display_email) override; - std::string GetUserDisplayEmail(const AccountId& account_id) const override; void SaveUserType(const User* user) override; void UpdateUserAccountData(const AccountId& account_id, const UserAccountData& account_data) override; @@ -169,7 +168,7 @@ class USER_MANAGER_EXPORT UserManagerBase : public UserManager { std::set<AccountId>* device_local_accounts_set) = 0; // Notifies observers that active user has changed. - void NotifyActiveUserChanged(const User* active_user); + void NotifyActiveUserChanged(User* active_user); // Notifies that user has logged in. virtual void NotifyOnLogin(); @@ -389,7 +388,7 @@ class USER_MANAGER_EXPORT UserManagerBase : public UserManager { // TaskRunner for UI thread. scoped_refptr<base::TaskRunner> task_runner_; - base::WeakPtrFactory<UserManagerBase> weak_factory_; + base::WeakPtrFactory<UserManagerBase> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(UserManagerBase); }; |