Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: chrome/browser/chromeos/login/user_manager_impl.h

Issue 10832019: Speed up custom wallpaper switching time and wallpaper manager code refactor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_USER_MANAGER_IMPL_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USER_MANAGER_IMPL_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USER_MANAGER_IMPL_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USER_MANAGER_IMPL_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 public: 44 public:
45 // UserManager implementation: 45 // UserManager implementation:
46 virtual ~UserManagerImpl(); 46 virtual ~UserManagerImpl();
47 47
48 virtual const UserList& GetUsers() const OVERRIDE; 48 virtual const UserList& GetUsers() const OVERRIDE;
49 virtual void UserLoggedIn(const std::string& email, 49 virtual void UserLoggedIn(const std::string& email,
50 bool browser_restart) OVERRIDE; 50 bool browser_restart) OVERRIDE;
51 virtual void DemoUserLoggedIn() OVERRIDE; 51 virtual void DemoUserLoggedIn() OVERRIDE;
52 virtual void GuestUserLoggedIn() OVERRIDE; 52 virtual void GuestUserLoggedIn() OVERRIDE;
53 virtual void EphemeralUserLoggedIn(const std::string& email) OVERRIDE; 53 virtual void EphemeralUserLoggedIn(const std::string& email) OVERRIDE;
54 virtual void InitializeWallpaper() OVERRIDE;
55 virtual void UserSelected(const std::string& email) OVERRIDE;
56 virtual void SessionStarted() OVERRIDE; 54 virtual void SessionStarted() OVERRIDE;
57 virtual void RemoveUser(const std::string& email, 55 virtual void RemoveUser(const std::string& email,
58 RemoveUserDelegate* delegate) OVERRIDE; 56 RemoveUserDelegate* delegate) OVERRIDE;
59 virtual void RemoveUserFromList(const std::string& email) OVERRIDE; 57 virtual void RemoveUserFromList(const std::string& email) OVERRIDE;
60 virtual bool IsKnownUser(const std::string& email) const OVERRIDE; 58 virtual bool IsKnownUser(const std::string& email) const OVERRIDE;
61 virtual const User* FindUser(const std::string& email) const OVERRIDE; 59 virtual const User* FindUser(const std::string& email) const OVERRIDE;
62 virtual const User& GetLoggedInUser() const OVERRIDE; 60 virtual const User& GetLoggedInUser() const OVERRIDE;
63 virtual User& GetLoggedInUser() OVERRIDE; 61 virtual User& GetLoggedInUser() OVERRIDE;
64 virtual void SaveUserOAuthStatus( 62 virtual void SaveUserOAuthStatus(
65 const std::string& username, 63 const std::string& username,
66 User::OAuthTokenStatus oauth_token_status) OVERRIDE; 64 User::OAuthTokenStatus oauth_token_status) OVERRIDE;
67 virtual void SaveUserDisplayName(const std::string& username, 65 virtual void SaveUserDisplayName(const std::string& username,
68 const string16& display_name) OVERRIDE; 66 const string16& display_name) OVERRIDE;
69 virtual string16 GetUserDisplayName( 67 virtual string16 GetUserDisplayName(
70 const std::string& username) const OVERRIDE; 68 const std::string& username) const OVERRIDE;
71 virtual void SaveUserDisplayEmail(const std::string& username, 69 virtual void SaveUserDisplayEmail(const std::string& username,
72 const std::string& display_email) OVERRIDE; 70 const std::string& display_email) OVERRIDE;
73 virtual std::string GetUserDisplayEmail( 71 virtual std::string GetUserDisplayEmail(
74 const std::string& username) const OVERRIDE; 72 const std::string& username) const OVERRIDE;
75 virtual void GetLoggedInUserWallpaperProperties(User::WallpaperType* type,
76 int* index,
77 base::Time* last_modification_date) OVERRIDE;
78 virtual void SaveLoggedInUserWallpaperProperties(User::WallpaperType type, 73 virtual void SaveLoggedInUserWallpaperProperties(User::WallpaperType type,
79 int index) OVERRIDE; 74 int index) OVERRIDE;
80 virtual void SaveUserDefaultImageIndex(const std::string& username, 75 virtual void SaveUserDefaultImageIndex(const std::string& username,
81 int image_index) OVERRIDE; 76 int image_index) OVERRIDE;
82 virtual void SaveUserImage(const std::string& username, 77 virtual void SaveUserImage(const std::string& username,
83 const UserImage& user_image) OVERRIDE; 78 const UserImage& user_image) OVERRIDE;
84 virtual void SetLoggedInUserCustomWallpaperLayout( 79 virtual void SetLoggedInUserCustomWallpaperLayout(
85 ash::WallpaperLayout layout) OVERRIDE; 80 ash::WallpaperLayout layout) OVERRIDE;
86 virtual void SaveUserImageFromFile(const std::string& username, 81 virtual void SaveUserImageFromFile(const std::string& username,
87 const FilePath& path) OVERRIDE; 82 const FilePath& path) OVERRIDE;
88 virtual void SaveUserWallpaperFromFile(
89 const std::string& username,
90 const FilePath& path,
91 ash::WallpaperLayout layout,
92 base::WeakPtr<WallpaperDelegate> delegate) OVERRIDE;
93 virtual void SaveUserImageFromProfileImage( 83 virtual void SaveUserImageFromProfileImage(
94 const std::string& username) OVERRIDE; 84 const std::string& username) OVERRIDE;
95 virtual void DownloadProfileImage(const std::string& reason) OVERRIDE; 85 virtual void DownloadProfileImage(const std::string& reason) OVERRIDE;
96 virtual bool IsCurrentUserOwner() const OVERRIDE; 86 virtual bool IsCurrentUserOwner() const OVERRIDE;
97 virtual bool IsCurrentUserNew() const OVERRIDE; 87 virtual bool IsCurrentUserNew() const OVERRIDE;
98 virtual bool IsCurrentUserEphemeral() const OVERRIDE; 88 virtual bool IsCurrentUserEphemeral() const OVERRIDE;
99 virtual bool IsUserLoggedIn() const OVERRIDE; 89 virtual bool IsUserLoggedIn() const OVERRIDE;
100 virtual bool IsLoggedInAsDemoUser() const OVERRIDE; 90 virtual bool IsLoggedInAsDemoUser() const OVERRIDE;
101 virtual bool IsLoggedInAsGuest() const OVERRIDE; 91 virtual bool IsLoggedInAsGuest() const OVERRIDE;
102 virtual bool IsLoggedInAsStub() const OVERRIDE; 92 virtual bool IsLoggedInAsStub() const OVERRIDE;
(...skipping 10 matching lines...) Expand all
113 103
114 // ProfileSyncServiceObserver implementation. 104 // ProfileSyncServiceObserver implementation.
115 virtual void OnStateChanged() OVERRIDE; 105 virtual void OnStateChanged() OVERRIDE;
116 106
117 protected: 107 protected:
118 UserManagerImpl(); 108 UserManagerImpl();
119 109
120 // Returns image filepath for the given user. 110 // Returns image filepath for the given user.
121 FilePath GetImagePathForUser(const std::string& username); 111 FilePath GetImagePathForUser(const std::string& username);
122 112
123 // Returns wallpaper/thumbnail filepath for the given user.
124 FilePath GetWallpaperPathForUser(const std::string& username,
125 bool is_thumbnail);
126
127 private: 113 private:
128 friend class UserManagerImplWrapper; 114 friend class UserManagerImplWrapper;
129 friend class UserManagerTest; 115 friend class UserManagerTest;
130 friend class WallpaperManager; 116 friend class WallpaperManager;
131 117
132 // Loads |users_| from Local State if the list has not been loaded yet. 118 // Loads |users_| from Local State if the list has not been loaded yet.
133 // Subsequent calls have no effect. Must be called on the UI thread. 119 // Subsequent calls have no effect. Must be called on the UI thread.
134 void EnsureUsersLoaded(); 120 void EnsureUsersLoaded();
135 121
136 // Loads wallpaper asynchronously if the current wallpaper is not the
137 // wallpaper of logged in user.
138 void EnsureLoggedInUserWallpaperLoaded();
139
140 // Retrieves trusted device policies and removes users from the persistent 122 // Retrieves trusted device policies and removes users from the persistent
141 // list if ephemeral users are enabled. Schedules a callback to itself if 123 // list if ephemeral users are enabled. Schedules a callback to itself if
142 // trusted device policies are not yet available. 124 // trusted device policies are not yet available.
143 void RetrieveTrustedDevicePolicies(); 125 void RetrieveTrustedDevicePolicies();
144 126
145 // Returns true if trusted device policies have successfully been retrieved 127 // Returns true if trusted device policies have successfully been retrieved
146 // and ephemeral users are enabled. 128 // and ephemeral users are enabled.
147 bool AreEphemeralUsersEnabled() const; 129 bool AreEphemeralUsersEnabled() const;
148 130
149 // Returns true if the user with the given email address is to be treated as 131 // Returns true if the user with the given email address is to be treated as
(...skipping 10 matching lines...) Expand all
160 // Reads user's oauth token status from local state preferences. 142 // Reads user's oauth token status from local state preferences.
161 User::OAuthTokenStatus LoadUserOAuthStatus(const std::string& username) const; 143 User::OAuthTokenStatus LoadUserOAuthStatus(const std::string& username) const;
162 144
163 void SetCurrentUserIsOwner(bool is_current_user_owner); 145 void SetCurrentUserIsOwner(bool is_current_user_owner);
164 146
165 // Sets one of the default images for the specified user and saves this 147 // Sets one of the default images for the specified user and saves this
166 // setting in local state. 148 // setting in local state.
167 // Does not send LOGIN_USER_IMAGE_CHANGED notification. 149 // Does not send LOGIN_USER_IMAGE_CHANGED notification.
168 void SetInitialUserImage(const std::string& username); 150 void SetInitialUserImage(const std::string& username);
169 151
170 // Sets one of the default wallpapers for the specified user and saves this
171 // settings in local state.
172 void SetInitialUserWallpaper(const std::string& username);
173
174 // Migrate the old wallpaper index to a new wallpaper structure. 152 // Migrate the old wallpaper index to a new wallpaper structure.
175 // The new wallpaper structure is: 153 // The new wallpaper structure is:
176 // { WallpaperType: DAILY|CUSTOMIZED|DEFAULT, 154 // { WallpaperType: DAILY|CUSTOMIZED|DEFAULT,
177 // index: index of the default wallpapers } 155 // index: index of the default wallpapers }
178 void MigrateWallpaperData(); 156 void MigrateWallpaperData();
179 157
180 // Sets image for user |username| and sends LOGIN_USER_IMAGE_CHANGED 158 // Sets image for user |username| and sends LOGIN_USER_IMAGE_CHANGED
181 // notification unless this is a new user and image is set for the first time. 159 // notification unless this is a new user and image is set for the first time.
182 // If |image| is empty, sets a stub image for the user. 160 // If |image| is empty, sets a stub image for the user.
183 void SetUserImage(const std::string& username, 161 void SetUserImage(const std::string& username,
184 int image_index, 162 int image_index,
185 const GURL& image_url, 163 const GURL& image_url,
186 const UserImage& user_image); 164 const UserImage& user_image);
187 165
188 // Get wallpaper |type|, |index| and |last_modification_date| of |username|
189 // from local state.
190 void GetUserWallpaperProperties(const std::string& username,
191 User::WallpaperType* type,
192 int* index,
193 base::Time* last_modification_date);
194
195 // Set |username|'s wallpaper |type|, |index| and local date to local state.
196 void SaveUserWallpaperProperties(const std::string& username,
197 User::WallpaperType type,
198 int index);
199
200 // Saves image to file, updates local state preferences to given image index 166 // Saves image to file, updates local state preferences to given image index
201 // and sends LOGIN_USER_IMAGE_CHANGED notification. 167 // and sends LOGIN_USER_IMAGE_CHANGED notification.
202 void SaveUserImageInternal(const std::string& username, 168 void SaveUserImageInternal(const std::string& username,
203 int image_index, 169 int image_index,
204 const GURL& image_url, 170 const GURL& image_url,
205 const UserImage& user_image); 171 const UserImage& user_image);
206 172
207 // Saves wallpaper to file, post task to generate thumbnail and updates local
208 // state preferences.
209 void SaveUserWallpaperInternal(const std::string& username,
210 ash::WallpaperLayout layout,
211 User::WallpaperType type,
212 base::WeakPtr<WallpaperDelegate> delegate,
213 const UserImage& user_image);
214
215 // Sets desktop background to custom wallpaper and loads wallpaper thumbnail
216 // asynchronously.
217 void OnCustomWallpaperLoaded(const std::string& email,
218 ash::WallpaperLayout layout,
219 const UserImage& wallpaper);
220
221 // Caches the loaded wallpaper for the given user.
222 void OnCustomWallpaperThumbnailLoaded(const std::string& email,
223 const UserImage& user_image);
224
225 // Updates the custom wallpaper thumbnail in wallpaper picker UI.
226 void OnThumbnailUpdated(base::WeakPtr<WallpaperDelegate> delegate);
227
228 // Generates a 128x80 thumbnail and saves it to local file system.
229 void GenerateUserWallpaperThumbnail(const std::string& username,
230 User::WallpaperType type,
231 base::WeakPtr<WallpaperDelegate> delegate,
232 const SkBitmap& wallpaper);
233
234 // Saves image to file with specified path and sends LOGIN_USER_IMAGE_CHANGED 173 // Saves image to file with specified path and sends LOGIN_USER_IMAGE_CHANGED
235 // notification. Runs on FILE thread. Posts task for saving image info to 174 // notification. Runs on FILE thread. Posts task for saving image info to
236 // Local State on UI thread. 175 // Local State on UI thread.
237 void SaveImageToFile(const std::string& username, 176 void SaveImageToFile(const std::string& username,
238 const UserImage& user_image, 177 const UserImage& user_image,
239 const FilePath& image_path, 178 const FilePath& image_path,
240 int image_index, 179 int image_index,
241 const GURL& image_url); 180 const GURL& image_url);
242 181
243 // Saves wallpaper to file with specified path. Runs on FILE thread. Posts
244 // task for saving wallpaper info to Local State on UI thread.
245 void SaveWallpaperToFile(const std::string& username,
246 const SkBitmap& wallpaper,
247 const FilePath& wallpaper_path,
248 ash::WallpaperLayout layout,
249 User::WallpaperType type);
250
251 // Stores path to the image and its index in local state. Runs on UI thread. 182 // Stores path to the image and its index in local state. Runs on UI thread.
252 // If |is_async| is true, it has been posted from the FILE thread after 183 // If |is_async| is true, it has been posted from the FILE thread after
253 // saving the image. 184 // saving the image.
254 void SaveImageToLocalState(const std::string& username, 185 void SaveImageToLocalState(const std::string& username,
255 const std::string& image_path, 186 const std::string& image_path,
256 int image_index, 187 int image_index,
257 const GURL& image_url, 188 const GURL& image_url,
258 bool is_async); 189 bool is_async);
259 190
260 // Stores layout and type preference in local state. Runs on UI thread. 191 // Stores layout and type preference in local state. Runs on UI thread.
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 // Cached flag of whether the currently logged-in user existed before this 258 // Cached flag of whether the currently logged-in user existed before this
328 // login. 259 // login.
329 bool is_current_user_new_; 260 bool is_current_user_new_;
330 261
331 // Cached flag of whether the currently logged-in user is ephemeral. Storage 262 // Cached flag of whether the currently logged-in user is ephemeral. Storage
332 // of persistent information is avoided for such users by not adding them to 263 // of persistent information is avoided for such users by not adding them to
333 // the user list in local state, not downloading their custom user images and 264 // the user list in local state, not downloading their custom user images and
334 // mounting their cryptohomes using tmpfs. 265 // mounting their cryptohomes using tmpfs.
335 bool is_current_user_ephemeral_; 266 bool is_current_user_ephemeral_;
336 267
337 User::WallpaperType current_user_wallpaper_type_;
338
339 int current_user_wallpaper_index_;
340
341 // Cached flag indicating whether ephemeral users are enabled. Defaults to 268 // Cached flag indicating whether ephemeral users are enabled. Defaults to
342 // |false| if the value has not been read from trusted device policy yet. 269 // |false| if the value has not been read from trusted device policy yet.
343 bool ephemeral_users_enabled_; 270 bool ephemeral_users_enabled_;
344 271
345 // True if user pod row is showed at login screen. 272 // True if user pod row is showed at login screen.
346 bool show_users_; 273 bool show_users_;
347 274
348 // Cached name of device owner. Defaults to empty string if the value has not 275 // Cached name of device owner. Defaults to empty string if the value has not
349 // been read from trusted device policy yet. 276 // been read from trusted device policy yet.
350 std::string owner_email_; 277 std::string owner_email_;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 314
388 // Timer triggering DownloadProfileDataScheduled for refreshing profile data. 315 // Timer triggering DownloadProfileDataScheduled for refreshing profile data.
389 base::RepeatingTimer<UserManagerImpl> profile_download_timer_; 316 base::RepeatingTimer<UserManagerImpl> profile_download_timer_;
390 317
391 DISALLOW_COPY_AND_ASSIGN(UserManagerImpl); 318 DISALLOW_COPY_AND_ASSIGN(UserManagerImpl);
392 }; 319 };
393 320
394 } // namespace chromeos 321 } // namespace chromeos
395 322
396 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_USER_MANAGER_IMPL_H_ 323 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_USER_MANAGER_IMPL_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/user_manager.h ('k') | chrome/browser/chromeos/login/user_manager_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698