| Index: chrome/browser/chromeos/login/user_manager_impl.h
|
| diff --git a/chrome/browser/chromeos/login/user_manager_impl.h b/chrome/browser/chromeos/login/user_manager_impl.h
|
| index 1abfdcc7c55a6f9f443a012aba108ed8d83db561..e03f8112aa19c281cb44104a0b209207deb9104c 100644
|
| --- a/chrome/browser/chromeos/login/user_manager_impl.h
|
| +++ b/chrome/browser/chromeos/login/user_manager_impl.h
|
| @@ -71,6 +71,7 @@ class UserManagerImpl : public UserManager,
|
| virtual void DownloadProfileImage(const std::string& reason) OVERRIDE;
|
| virtual bool IsCurrentUserOwner() const OVERRIDE;
|
| virtual bool IsCurrentUserNew() const OVERRIDE;
|
| + virtual bool IsCurrentUserEphemeral() const OVERRIDE;
|
| virtual bool IsUserLoggedIn() const OVERRIDE;
|
| virtual bool IsLoggedInAsDemoUser() const OVERRIDE;
|
| virtual bool IsLoggedInAsGuest() const OVERRIDE;
|
| @@ -96,11 +97,29 @@ class UserManagerImpl : public UserManager,
|
|
|
| private:
|
| friend class UserManagerImplWrapper;
|
| + friend class UserManagerTest;
|
|
|
| // Loads |users_| from Local State if the list has not been loaded yet.
|
| // Subsequent calls have no effect. Must be called on the UI thread.
|
| void EnsureUsersLoaded();
|
|
|
| + // Retrieves trusted device policies and removes users from the persistent
|
| + // list if ephemeral users are enabled. Schedules a callback to itself if
|
| + // trusted device policies are not yet available.
|
| + void RetrieveTrustedDevicePolicies();
|
| +
|
| + // Returns true if trusted device policies have successfully been retrieved
|
| + // and ephemeral users are enabled.
|
| + bool AreEphemeralUsersEnabled() const;
|
| +
|
| + // Returns true if the user with the given email address is to be treated as
|
| + // ephemeral.
|
| + bool IsEphemeralUser(const std::string& email) const;
|
| +
|
| + // Returns the user with the given email address if found in the persistent
|
| + // list. Returns |NULL| otherwise.
|
| + const User* FindUserInList(const std::string& email) const;
|
| +
|
| // Makes stub user the current logged-in user (for test paths).
|
| void StubUserLoggedIn();
|
|
|
| @@ -169,11 +188,15 @@ class UserManagerImpl : public UserManager,
|
| // Creates a new User instance.
|
| User* CreateUser(const std::string& email) const;
|
|
|
| + // Removes the user from the persistent list only. Also removes the user's
|
| + // picture.
|
| + void RemoveUserFromListInternal(const std::string& email);
|
| +
|
| // Loads user image from its file.
|
| scoped_refptr<UserImageLoader> image_loader_;
|
|
|
| // List of all known users. User instances are owned by |this| and deleted
|
| - // when a user is removed with |RemoveUser|.
|
| + // when users are removed by |RemoveUserFromListInternal|.
|
| mutable UserList users_;
|
|
|
| // Map of users' display names used to determine which users have unique
|
| @@ -190,8 +213,9 @@ class UserManagerImpl : public UserManager,
|
| User stub_user_;
|
|
|
| // The logged-in user. NULL until a user has logged in, then points to one
|
| - // of the User instances in |users_| or to the |guest_user_| instance.
|
| - // In test paths without login points to the |stub_user_| instance.
|
| + // of the User instances in |users_|, the |guest_user_| instance or an
|
| + // ephemeral user instance. In test paths without login points to the
|
| + // |stub_user_| instance.
|
| User* logged_in_user_;
|
|
|
| // Cached flag of whether currently logged-in user is owner or not.
|
| @@ -203,9 +227,23 @@ class UserManagerImpl : public UserManager,
|
| // login.
|
| bool is_current_user_new_;
|
|
|
| + // Cached flag of whether the currently logged-in user is ephemeral. Storage
|
| + // of persistent information is avoided for such users by not adding them to
|
| + // the user list in local state, not downloading their custom user images and
|
| + // mounting their cryptohomes using tmpfs.
|
| + bool is_current_user_ephemeral_;
|
| +
|
| // Cached flag of whether any user is logged in at the moment.
|
| bool is_user_logged_in_;
|
|
|
| + // Cached flag indicating whether ephemeral users are enabled. Defaults to
|
| + // |false| if the value has not been read from trusted device policy yet.
|
| + bool ephemeral_users_enabled_;
|
| +
|
| + // Cached name of device owner. Defaults to empty string if the value has not
|
| + // been read from trusted device policy yet.
|
| + std::string owner_email_;
|
| +
|
| content::NotificationRegistrar registrar_;
|
|
|
| // Profile sync service which is observed to take actions after sync
|
|
|