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 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_IMPL_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_IMPL_H_ |
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_IMPL_H_ | 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_IMPL_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 | 61 |
62 // Creates ChromeUserManagerImpl instance. | 62 // Creates ChromeUserManagerImpl instance. |
63 static scoped_ptr<ChromeUserManager> CreateChromeUserManager(); | 63 static scoped_ptr<ChromeUserManager> CreateChromeUserManager(); |
64 | 64 |
65 // Registers user manager preferences. | 65 // Registers user manager preferences. |
66 static void RegisterPrefs(PrefRegistrySimple* registry); | 66 static void RegisterPrefs(PrefRegistrySimple* registry); |
67 | 67 |
68 // UserManagerInterface implementation: | 68 // UserManagerInterface implementation: |
69 BootstrapManager* GetBootstrapManager() override; | 69 BootstrapManager* GetBootstrapManager() override; |
70 MultiProfileUserController* GetMultiProfileUserController() override; | 70 MultiProfileUserController* GetMultiProfileUserController() override; |
71 UserImageManager* GetUserImageManager(const std::string& user_id) override; | 71 UserImageManager* GetUserImageManager(const user_manager::UserID& user_id) ove
rride; |
72 SupervisedUserManager* GetSupervisedUserManager() override; | 72 SupervisedUserManager* GetSupervisedUserManager() override; |
73 UserFlow* GetCurrentUserFlow() const override; | 73 UserFlow* GetCurrentUserFlow() const override; |
74 UserFlow* GetUserFlow(const std::string& user_id) const override; | 74 UserFlow* GetUserFlow(const user_manager::UserID& user_id) const override; |
75 void SetUserFlow(const std::string& user_id, UserFlow* flow) override; | 75 void SetUserFlow(const user_manager::UserID& user_id, UserFlow* flow) override
; |
76 void ResetUserFlow(const std::string& user_id) override; | 76 void ResetUserFlow(const user_manager::UserID& user_id) override; |
77 | 77 |
78 // UserManager implementation: | 78 // UserManager implementation: |
79 void Shutdown() override; | 79 void Shutdown() override; |
80 user_manager::UserList GetUsersAllowedForMultiProfile() const override; | 80 user_manager::UserList GetUsersAllowedForMultiProfile() const override; |
81 user_manager::UserList GetUsersAllowedForSupervisedUsersCreation() | 81 user_manager::UserList GetUsersAllowedForSupervisedUsersCreation() |
82 const override; | 82 const override; |
83 user_manager::UserList GetUnlockUsers() const override; | 83 user_manager::UserList GetUnlockUsers() const override; |
84 void SessionStarted() override; | 84 void SessionStarted() override; |
85 void SaveUserOAuthStatus( | 85 void SaveUserOAuthStatus( |
86 const std::string& user_id, | 86 const user_manager::UserID& user_id, |
87 user_manager::User::OAuthTokenStatus oauth_token_status) override; | 87 user_manager::User::OAuthTokenStatus oauth_token_status) override; |
88 void SaveUserDisplayName(const std::string& user_id, | 88 void SaveUserDisplayName(const user_manager::UserID& user_id, |
89 const base::string16& display_name) override; | 89 const base::string16& display_name) override; |
90 bool CanCurrentUserLock() const override; | 90 bool CanCurrentUserLock() const override; |
91 bool IsUserNonCryptohomeDataEphemeral( | 91 bool IsUserNonCryptohomeDataEphemeral( |
92 const std::string& user_id) const override; | 92 const user_manager::UserID& user_id) const override; |
93 bool AreSupervisedUsersAllowed() const override; | 93 bool AreSupervisedUsersAllowed() const override; |
94 | 94 |
95 // content::NotificationObserver implementation. | 95 // content::NotificationObserver implementation. |
96 void Observe(int type, | 96 void Observe(int type, |
97 const content::NotificationSource& source, | 97 const content::NotificationSource& source, |
98 const content::NotificationDetails& details) override; | 98 const content::NotificationDetails& details) override; |
99 | 99 |
100 // policy::CloudExternalDataPolicyObserver::Delegate: | 100 // policy::CloudExternalDataPolicyObserver::Delegate: |
101 void OnExternalDataSet(const std::string& policy, | 101 void OnExternalDataSet(const std::string& policy, |
102 const std::string& user_id) override; | 102 const user_manager::UserID& user_id) override; |
103 void OnExternalDataCleared(const std::string& policy, | 103 void OnExternalDataCleared(const std::string& policy, |
104 const std::string& user_id) override; | 104 const user_manager::UserID& user_id) override; |
105 void OnExternalDataFetched(const std::string& policy, | 105 void OnExternalDataFetched(const std::string& policy, |
106 const std::string& user_id, | 106 const user_manager::UserID& user_id, |
107 scoped_ptr<std::string> data) override; | 107 scoped_ptr<std::string> data) override; |
108 | 108 |
109 // policy::DeviceLocalAccountPolicyService::Observer implementation. | 109 // policy::DeviceLocalAccountPolicyService::Observer implementation. |
110 void OnPolicyUpdated(const std::string& user_id) override; | 110 void OnPolicyUpdated(const user_manager::UserID& user_id) override; |
111 void OnDeviceLocalAccountsChanged() override; | 111 void OnDeviceLocalAccountsChanged() override; |
112 | 112 |
113 void StopPolicyObserverForTesting(); | 113 void StopPolicyObserverForTesting(); |
114 | 114 |
115 // UserManagerBase implementation: | 115 // UserManagerBase implementation: |
116 bool AreEphemeralUsersEnabled() const override; | 116 bool AreEphemeralUsersEnabled() const override; |
117 | 117 |
118 protected: | 118 protected: |
119 const std::string& GetApplicationLocale() const override; | 119 const std::string& GetApplicationLocale() const override; |
120 PrefService* GetLocalState() const override; | 120 PrefService* GetLocalState() const override; |
121 void HandleUserOAuthTokenStatusChange( | 121 void HandleUserOAuthTokenStatusChange( |
122 const std::string& user_id, | 122 const user_manager::UserID& user_id, |
123 user_manager::User::OAuthTokenStatus status) const override; | 123 user_manager::User::OAuthTokenStatus status) const override; |
124 bool IsEnterpriseManaged() const override; | 124 bool IsEnterpriseManaged() const override; |
125 void LoadPublicAccounts(std::set<std::string>* users_set) override; | 125 void LoadPublicAccounts(std::set<std::string>* users_set) override; |
126 void NotifyOnLogin() override; | 126 void NotifyOnLogin() override; |
127 void NotifyUserAddedToSession(const user_manager::User* added_user, | 127 void NotifyUserAddedToSession(const user_manager::User* added_user, |
128 bool user_switch_pending) override; | 128 bool user_switch_pending) override; |
129 void PerformPreUserListLoadingActions() override; | 129 void PerformPreUserListLoadingActions() override; |
130 void PerformPostUserListLoadingActions() override; | 130 void PerformPostUserListLoadingActions() override; |
131 void PerformPostUserLoggedInActions(bool browser_restart) override; | 131 void PerformPostUserLoggedInActions(bool browser_restart) override; |
132 void RemoveNonCryptohomeData(const std::string& user_id) override; | 132 void RemoveNonCryptohomeData(const user_manager::UserID& user_id) override; |
133 void RemoveUserInternal(const std::string& user_email, | 133 void RemoveUserInternal(const user_manager::UserID& user_id, |
134 user_manager::RemoveUserDelegate* delegate) override; | 134 user_manager::RemoveUserDelegate* delegate) override; |
135 bool IsDemoApp(const std::string& user_id) const override; | 135 bool IsDemoApp(const user_manager::UserID& user_id) const override; |
136 bool IsKioskApp(const std::string& user_id) const override; | 136 bool IsKioskApp(const user_manager::UserID& user_id) const override; |
137 bool IsPublicAccountMarkedForRemoval( | 137 bool IsPublicAccountMarkedForRemoval( |
138 const std::string& user_id) const override; | 138 const user_manager::UserID& user_id) const override; |
139 void DemoAccountLoggedIn() override; | 139 void DemoAccountLoggedIn() override; |
140 void GuestUserLoggedIn() override; | 140 void GuestUserLoggedIn() override; |
141 void KioskAppLoggedIn(const std::string& app_id) override; | 141 void KioskAppLoggedIn(const std::string& app_id) override; |
142 void PublicAccountUserLoggedIn(user_manager::User* user) override; | 142 void PublicAccountUserLoggedIn(user_manager::User* user) override; |
143 void RegularUserLoggedIn(const std::string& user_id) override; | 143 void RegularUserLoggedIn(const user_manager::UserID& user_id) override; |
144 void RegularUserLoggedInAsEphemeral(const std::string& user_id) override; | 144 void RegularUserLoggedInAsEphemeral(const user_manager::UserID& user_id) overr
ide; |
145 void SupervisedUserLoggedIn(const std::string& user_id) override; | 145 void SupervisedUserLoggedIn(const user_manager::UserID& user_id) override; |
146 bool HasPendingBootstrap(const std::string& user_id) const override; | 146 bool HasPendingBootstrap(const user_manager::UserID& user_id) const override; |
147 | 147 |
148 private: | 148 private: |
149 friend class SupervisedUserManagerImpl; | 149 friend class SupervisedUserManagerImpl; |
150 friend class UserManagerTest; | 150 friend class UserManagerTest; |
151 friend class WallpaperManager; | 151 friend class WallpaperManager; |
152 friend class WallpaperManagerTest; | 152 friend class WallpaperManagerTest; |
153 | 153 |
154 typedef base::hash_map<std::string, linked_ptr<UserImageManager> > | 154 typedef base::hash_map<user_manager::UserID, linked_ptr<UserImageManager> > |
155 UserImageManagerMap; | 155 UserImageManagerMap; |
156 | 156 |
157 ChromeUserManagerImpl(); | 157 ChromeUserManagerImpl(); |
158 | 158 |
159 // Retrieves trusted device policies and removes users from the persistent | 159 // Retrieves trusted device policies and removes users from the persistent |
160 // list if ephemeral users are enabled. Schedules a callback to itself if | 160 // list if ephemeral users are enabled. Schedules a callback to itself if |
161 // trusted device policies are not yet available. | 161 // trusted device policies are not yet available. |
162 void RetrieveTrustedDevicePolicies(); | 162 void RetrieveTrustedDevicePolicies(); |
163 | 163 |
164 // Updates current user ownership on UI thread. | 164 // Updates current user ownership on UI thread. |
165 void UpdateOwnership(); | 165 void UpdateOwnership(); |
166 | 166 |
167 // If data for a public account is marked as pending removal and the user is | 167 // If data for a public account is marked as pending removal and the user is |
168 // no longer logged into that account, removes the data. | 168 // no longer logged into that account, removes the data. |
169 void CleanUpPublicAccountNonCryptohomeDataPendingRemoval(); | 169 void CleanUpPublicAccountNonCryptohomeDataPendingRemoval(); |
170 | 170 |
171 // Removes data belonging to public accounts that are no longer found on the | 171 // Removes data belonging to public accounts that are no longer found on the |
172 // user list. If the user is currently logged into one of these accounts, the | 172 // user list. If the user is currently logged into one of these accounts, the |
173 // data for that account is not removed immediately but marked as pending | 173 // data for that account is not removed immediately but marked as pending |
174 // removal after logout. | 174 // removal after logout. |
175 void CleanUpPublicAccountNonCryptohomeData( | 175 void CleanUpPublicAccountNonCryptohomeData( |
176 const std::vector<std::string>& old_public_accounts); | 176 const std::vector<user_manager::UserID>& old_public_accounts); |
177 | 177 |
178 // Replaces the list of public accounts with those found in | 178 // Replaces the list of public accounts with those found in |
179 // |device_local_accounts|. Ensures that data belonging to accounts no longer | 179 // |device_local_accounts|. Ensures that data belonging to accounts no longer |
180 // on the list is removed. Returns |true| if the list has changed. | 180 // on the list is removed. Returns |true| if the list has changed. |
181 // Public accounts are defined by policy. This method is called whenever an | 181 // Public accounts are defined by policy. This method is called whenever an |
182 // updated list of public accounts is received from policy. | 182 // updated list of public accounts is received from policy. |
183 bool UpdateAndCleanUpPublicAccounts( | 183 bool UpdateAndCleanUpPublicAccounts( |
184 const std::vector<policy::DeviceLocalAccount>& device_local_accounts); | 184 const std::vector<policy::DeviceLocalAccount>& device_local_accounts); |
185 | 185 |
186 // Updates the display name for public account |username| from policy settings | 186 // Updates the display name for public account |username| from policy settings |
187 // associated with that username. | 187 // associated with that username. |
188 void UpdatePublicAccountDisplayName(const std::string& user_id); | 188 void UpdatePublicAccountDisplayName(const user_manager::UserID& user_id); |
189 | 189 |
190 // Notifies the UI about a change to the user list. | 190 // Notifies the UI about a change to the user list. |
191 void NotifyUserListChanged(); | 191 void NotifyUserListChanged(); |
192 | 192 |
193 // Lazily creates default user flow. | 193 // Lazily creates default user flow. |
194 UserFlow* GetDefaultUserFlow() const; | 194 UserFlow* GetDefaultUserFlow() const; |
195 | 195 |
196 // MultiProfileUserControllerDelegate implementation: | 196 // MultiProfileUserControllerDelegate implementation: |
197 void OnUserNotAllowed(const std::string& user_email) override; | 197 void OnUserNotAllowed(const user_manager::UserID& user_id) override; |
198 | 198 |
199 // BootstrapManager::Delegate implementation: | 199 // BootstrapManager::Delegate implementation: |
200 void RemovePendingBootstrapUser(const std::string& user_id) override; | 200 void RemovePendingBootstrapUser(const user_manager::UserID& user_id) override; |
201 | 201 |
202 // Update the number of users. | 202 // Update the number of users. |
203 void UpdateNumberOfUsers(); | 203 void UpdateNumberOfUsers(); |
204 | 204 |
205 // Starts (or stops) automatic timezone refresh on geolocation, | 205 // Starts (or stops) automatic timezone refresh on geolocation, |
206 // depending on user preferences. | 206 // depending on user preferences. |
207 void UpdateUserTimeZoneRefresher(Profile* profile); | 207 void UpdateUserTimeZoneRefresher(Profile* profile); |
208 | 208 |
209 // Interface to the signed settings store. | 209 // Interface to the signed settings store. |
210 CrosSettings* cros_settings_; | 210 CrosSettings* cros_settings_; |
211 | 211 |
212 // Interface to device-local account definitions and associated policy. | 212 // Interface to device-local account definitions and associated policy. |
213 policy::DeviceLocalAccountPolicyService* device_local_account_policy_service_; | 213 policy::DeviceLocalAccountPolicyService* device_local_account_policy_service_; |
214 | 214 |
215 content::NotificationRegistrar registrar_; | 215 content::NotificationRegistrar registrar_; |
216 | 216 |
217 // User avatar managers. | 217 // User avatar managers. |
218 UserImageManagerMap user_image_managers_; | 218 UserImageManagerMap user_image_managers_; |
219 | 219 |
220 // Supervised user manager. | 220 // Supervised user manager. |
221 scoped_ptr<SupervisedUserManagerImpl> supervised_user_manager_; | 221 scoped_ptr<SupervisedUserManagerImpl> supervised_user_manager_; |
222 | 222 |
223 // Session length limiter. | 223 // Session length limiter. |
224 scoped_ptr<SessionLengthLimiter> session_length_limiter_; | 224 scoped_ptr<SessionLengthLimiter> session_length_limiter_; |
225 | 225 |
226 typedef std::map<std::string, UserFlow*> FlowMap; | 226 typedef std::map<user_manager::UserID, UserFlow*> FlowMap; |
227 | 227 |
228 // Lazy-initialized default flow. | 228 // Lazy-initialized default flow. |
229 mutable scoped_ptr<UserFlow> default_flow_; | 229 mutable scoped_ptr<UserFlow> default_flow_; |
230 | 230 |
231 // Specific flows by user e-mail. Keys should be canonicalized before | 231 // Specific flows by user id. |
232 // access. | |
233 FlowMap specific_flows_; | 232 FlowMap specific_flows_; |
234 | 233 |
235 scoped_ptr<CrosSettings::ObserverSubscription> local_accounts_subscription_; | 234 scoped_ptr<CrosSettings::ObserverSubscription> local_accounts_subscription_; |
236 | 235 |
237 scoped_ptr<MultiProfileUserController> multi_profile_user_controller_; | 236 scoped_ptr<MultiProfileUserController> multi_profile_user_controller_; |
238 | 237 |
239 // Observer for the policy that can be used to manage user images. | 238 // Observer for the policy that can be used to manage user images. |
240 scoped_ptr<policy::CloudExternalDataPolicyObserver> avatar_policy_observer_; | 239 scoped_ptr<policy::CloudExternalDataPolicyObserver> avatar_policy_observer_; |
241 | 240 |
242 // Observer for the policy that can be used to manage wallpapers. | 241 // Observer for the policy that can be used to manage wallpapers. |
243 scoped_ptr<policy::CloudExternalDataPolicyObserver> | 242 scoped_ptr<policy::CloudExternalDataPolicyObserver> |
244 wallpaper_policy_observer_; | 243 wallpaper_policy_observer_; |
245 | 244 |
246 scoped_ptr<BootstrapManager> bootstrap_manager_; | 245 scoped_ptr<BootstrapManager> bootstrap_manager_; |
247 | 246 |
248 base::WeakPtrFactory<ChromeUserManagerImpl> weak_factory_; | 247 base::WeakPtrFactory<ChromeUserManagerImpl> weak_factory_; |
249 | 248 |
250 DISALLOW_COPY_AND_ASSIGN(ChromeUserManagerImpl); | 249 DISALLOW_COPY_AND_ASSIGN(ChromeUserManagerImpl); |
251 }; | 250 }; |
252 | 251 |
253 } // namespace chromeos | 252 } // namespace chromeos |
254 | 253 |
255 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_IMPL_H_ | 254 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_IMPL_H_ |
OLD | NEW |