Chromium Code Reviews| Index: chrome/browser/chromeos/login/wallpaper_manager.h |
| diff --git a/chrome/browser/chromeos/login/wallpaper_manager.h b/chrome/browser/chromeos/login/wallpaper_manager.h |
| index 8aea9ba6074052a24cadd6c80c0324dced90649a..63c9c2e8fce0c8d2f0d94d7b4963d7ec6132c0e3 100644 |
| --- a/chrome/browser/chromeos/login/wallpaper_manager.h |
| +++ b/chrome/browser/chromeos/login/wallpaper_manager.h |
| @@ -7,17 +7,28 @@ |
| #include <string> |
| +#include "ash/desktop_background/desktop_background_resources.h" |
| +#include "base/memory/weak_ptr.h" |
| +#include "base/time.h" |
| #include "base/timer.h" |
| +#include "chrome/browser/chromeos/login/user.h" |
| +#include "chrome/browser/chromeos/login/wallpaper_loader.h" |
| #include "chrome/browser/chromeos/power/resume_observer.h" |
| #include "chrome/browser/chromeos/system/timezone_settings.h" |
| +#include "chrome/browser/ui/webui/options2/chromeos/set_wallpaper_options_handler.h" |
| +#include "content/public/browser/notification_observer.h" |
| +#include "content/public/browser/notification_registrar.h" |
| #include "unicode/timezone.h" |
| namespace chromeos { |
| +class UserImage; |
| + |
| // This class maintains wallpapers for users who have logged into this Chrome |
| // OS device. |
| class WallpaperManager: public system::TimezoneSettings::Observer, |
| - public chromeos::ResumeObserver { |
| + public chromeos::ResumeObserver, |
| + public content::NotificationObserver { |
| public: |
| static WallpaperManager* Get(); |
| @@ -27,16 +38,68 @@ class WallpaperManager: public system::TimezoneSettings::Observer, |
| // PowerManagerClient initialized. |
| void AddPowerManagerClientObserver(); |
| + // Caches |email|'s wallpaper to memory if it is custom wallpaper. |
| + void CacheIfCustomWallpaper(const std::string& email); |
| + |
| + // Loads wallpaper asynchronously if the current wallpaper is not the |
| + // wallpaper of logged in user. |
| + void EnsureLoggedInUserWallpaperLoaded(); |
| + |
| + // Fetches |email|'s wallpaper from local disk. |
| + void FetchCustomWallpaper(const std::string& email); |
| + |
| + // Gets encoded custom wallpaper from cache. Returns true if success. |
| + bool GetCustomWallpaperFromCache(const std::string& email, |
| + SkBitmap* wallpaper); |
| + |
| + // Gets the thumbnail of custom wallpaper from cache. |
| + SkBitmap GetCustomWallpaperThumbnail(const std::string& email); |
| + |
| + // Sets |type| and |index| to the value saved in local state for logged in |
| + // user. |
| + void GetLoggedInUserWallpaperProperties(User::WallpaperType* type, |
| + int* index, |
| + base::Time* last_modification_date); |
| + |
| + // Initializes wallpaper. If logged in, loads user's wallpaper. If not logged |
| + // in, uses a solid color wallpaper. If logged in as a stub user, uses an |
| + // empty wallpaper. |
| + void InitializeWallpaper(); |
| + |
| + // NotificationObserver overrides: |
| + virtual void Observe(int type, |
| + const content::NotificationSource& source, |
| + const content::NotificationDetails& details) OVERRIDE; |
| + |
| // Starts a one shot timer which calls BatchUpdateWallpaper at next midnight. |
| // Cancel any previous timer if any. |
| void RestartTimer(); |
| + // Tries to load user image from disk; if successful, sets it for the user, |
| + // and updates Local State. |
| + void SetUserWallpaperFromFile(const std::string& username, |
| + const FilePath& path, |
| + ash::WallpaperLayout layout, |
| + base::WeakPtr<WallpaperDelegate> delegate); |
| + |
| + // Set |email|'s wallpaper |type|, |index| and local date to local state. |
| + void SaveUserWallpaperProperties(const std::string& email, |
| + User::WallpaperType type, |
| + int index); |
| + |
| + // Sets one of the default wallpapers for the specified user and saves this |
| + // settings in local state. |
| + void SetInitialUserWallpaper(const std::string& username); |
| + |
| // Sets last selected user on user pod row. |
| void SetLastSelectedUser(const std::string& last_selected_user); |
| // User was deselected at login screen, reset wallpaper if needed. |
| void UserDeselected(); |
| + // User |email| was selected at login screen, load wallpaper. |
| + void UserSelected(const std::string& email); |
| + |
| private: |
| virtual ~WallpaperManager(); |
| @@ -45,15 +108,74 @@ class WallpaperManager: public system::TimezoneSettings::Observer, |
| // at 0am if chromeos device is on. |
| void BatchUpdateWallpaper(); |
| + // Caches the decoded wallpaper to memory. |
| + void CacheCallback(const std::string& email, const SkBitmap& wallpaper); |
|
Ivan Korotkov
2012/07/27 23:02:02
Please remove 'Callback' sufffix from names. Somet
bshe
2012/07/31 14:27:54
Done.
|
| + |
| + // Generates a 128x80 thumbnail and caches it. |
| + void CacheThumbnail(const std::string& email, const SkBitmap& wallpaper); |
| + |
| + // Sets wallpaper to the decoded wallpaper. |
| + void FetchCallback(const std::string& email, |
| + ash::WallpaperLayout layout, |
| + const SkBitmap& wallpaper); |
| + |
| + // Generates a 128x80 thumbnail and notifies delegate when ready. |
| + void GenerateUserWallpaperThumbnail(const std::string& email, |
| + User::WallpaperType type, |
| + base::WeakPtr<WallpaperDelegate> delegate, |
| + const SkBitmap& wallpaper); |
| + |
| + // Get wallpaper |type|, |index| and |last_modification_date| of |email| |
| + // from local state. |
| + void GetUserWallpaperProperties(const std::string& email, |
| + User::WallpaperType* type, |
| + int* index, |
| + base::Time* last_modification_date); |
| + |
| + // Loads the custom wallpaper of user |email|. |
| + void LoadCustomWallpaperFromFile(const std::string& email, |
| + const LoadedCallback& loaded_cb); |
| + |
| + // Updates the custom wallpaper thumbnail in wallpaper picker UI. |
| + void OnThumbnailUpdated(base::WeakPtr<WallpaperDelegate> delegate); |
| + |
| + // Saves wallpaper to file, post task to generate thumbnail and updates local |
| + // state preferences. |
| + void SetCallback(const std::string& username, |
| + ash::WallpaperLayout layout, |
| + User::WallpaperType type, |
| + base::WeakPtr<WallpaperDelegate> delegate, |
| + const SkBitmap& wallpaper); |
| + |
| // Overridden from chromeos::ResumeObserver |
| virtual void SystemResumed() OVERRIDE; |
| // Overridden from system::TimezoneSettings::Observer. |
| virtual void TimezoneChanged(const icu::TimeZone& timezone) OVERRIDE; |
| + // Loads user wallpaper from its file. |
| + scoped_refptr<WallpaperLoader> wallpaper_loader_; |
| + |
| + // Stores logged in user wallpaper type. |
| + User::WallpaperType current_user_wallpaper_type_; |
| + |
| + // Stores logged in user wallpaper index. |
|
Ivan Korotkov
2012/07/27 23:02:02
Please remove word 'stores' from field description
bshe
2012/07/31 14:27:54
On 2012/07/27 23:02:02, Ivan Korotkov wrote:
> Ple
|
| + int current_user_wallpaper_index_; |
| + |
| + typedef std::map<std::string, SkBitmap> CustomWallpaperMap; |
|
Ivan Korotkov
2012/07/27 23:02:02
typedefs go before methods and fields.
bshe
2012/07/31 14:27:54
Done.
|
| + |
| + // Caches custom wallpapers of users. Accessed only on UI thread. |
| + CustomWallpaperMap custom_wallpaper_cache_; |
| + |
| + CustomWallpaperMap custom_wallpaper_thumbnail_cache_; |
| + |
| // The last selected user on user pod row. |
| std::string last_selected_user_; |
| + base::WeakPtrFactory<WallpaperManager> weak_factory_; |
| + |
| + content::NotificationRegistrar registrar_; |
| + |
| base::OneShotTimer<WallpaperManager> timer_; |
| DISALLOW_COPY_AND_ASSIGN(WallpaperManager); |