Chromium Code Reviews| Index: chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc |
| diff --git a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc |
| index ef44c3902be4dc0fb73a1f9fddc69fbf93d22ff9..4204d02dd4b4c174174fc3f7239dec87b80b9942 100644 |
| --- a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc |
| +++ b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc |
| @@ -64,6 +64,8 @@ namespace chromeos { |
| namespace { |
| +WallpaperManager* wallpaper_manager = nullptr; |
| + |
| // The amount of delay before starts to move custom wallpapers to the new place. |
| const int kMoveCustomWallpaperDelaySeconds = 30; |
| @@ -271,49 +273,10 @@ class WallpaperManager::PendingWallpaper : |
| DISALLOW_COPY_AND_ASSIGN(PendingWallpaper); |
| }; |
| -static WallpaperManager* g_wallpaper_manager = NULL; |
| - |
| // WallpaperManager, public: --------------------------------------------------- |
| -// static |
| -WallpaperManager* WallpaperManager::Get() { |
| - if (!g_wallpaper_manager) |
| - g_wallpaper_manager = new WallpaperManager(); |
| - return g_wallpaper_manager; |
| -} |
| - |
| -WallpaperManager::WallpaperManager() |
| - : pending_inactive_(NULL), weak_factory_(this) { |
| - wallpaper::WallpaperManagerBase::SetPathIds( |
| - chrome::DIR_USER_DATA, |
| - chrome::DIR_CHROMEOS_WALLPAPERS, |
| - chrome::DIR_CHROMEOS_CUSTOM_WALLPAPERS); |
| - SetDefaultWallpaperPathsFromCommandLine( |
| - base::CommandLine::ForCurrentProcess()); |
| - registrar_.Add(this, |
| - chrome::NOTIFICATION_LOGIN_USER_CHANGED, |
| - content::NotificationService::AllSources()); |
| - registrar_.Add(this, |
| - chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, |
| - content::NotificationService::AllSources()); |
| - registrar_.Add(this, |
| - chrome::NOTIFICATION_WALLPAPER_ANIMATION_FINISHED, |
| - content::NotificationService::AllSources()); |
| - sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| - wallpaper::kWallpaperSequenceTokenName); |
| - task_runner_ = BrowserThread::GetBlockingPool()-> |
| - GetSequencedTaskRunnerWithShutdownBehavior( |
| - sequence_token_, |
| - base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| - wallpaper_loader_ = new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC, |
| - task_runner_); |
| - |
| - user_manager::UserManager::Get()->AddSessionStateObserver(this); |
| -} |
| - |
| WallpaperManager::~WallpaperManager() { |
| - // TODO(bshe): Lifetime of WallpaperManager needs more consideration. |
| - // http://crbug.com/171694 |
| + show_user_name_on_signin_subscription_.reset(); |
|
bshe
2015/03/16 18:45:40
It looks like this reset call make the following D
|
| DCHECK(!show_user_name_on_signin_subscription_); |
| user_manager::UserManager::Get()->RemoveSessionStateObserver(this); |
| @@ -322,6 +285,25 @@ WallpaperManager::~WallpaperManager() { |
| weak_factory_.InvalidateWeakPtrs(); |
| } |
| +// static |
| +void WallpaperManager::Initialize() { |
| + CHECK(!wallpaper_manager); |
| + wallpaper_manager = new WallpaperManager(); |
| +} |
| + |
| +// static |
| +WallpaperManager* WallpaperManager::Get() { |
| + DCHECK(wallpaper_manager); |
| + return wallpaper_manager; |
| +} |
| + |
| +// static |
| +void WallpaperManager::Shutdown() { |
| + CHECK(wallpaper_manager); |
| + delete wallpaper_manager; |
| + wallpaper_manager = nullptr; |
| +} |
| + |
| WallpaperManager::WallpaperResolution |
| WallpaperManager::GetAppropriateResolution() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| @@ -333,10 +315,6 @@ WallpaperManager::GetAppropriateResolution() { |
| : WALLPAPER_RESOLUTION_SMALL; |
| } |
| -void WallpaperManager::Shutdown() { |
| - show_user_name_on_signin_subscription_.reset(); |
| -} |
| - |
| void WallpaperManager::AddObservers() { |
| show_user_name_on_signin_subscription_ = |
| CrosSettings::Get()->AddSettingsObserver( |
| @@ -746,6 +724,31 @@ void WallpaperManager::SetWallpaperFromImageSkia( |
| // WallpaperManager, private: -------------------------------------------------- |
| +WallpaperManager::WallpaperManager() |
| + : pending_inactive_(NULL), weak_factory_(this) { |
| + wallpaper::WallpaperManagerBase::SetPathIds( |
| + chrome::DIR_USER_DATA, chrome::DIR_CHROMEOS_WALLPAPERS, |
| + chrome::DIR_CHROMEOS_CUSTOM_WALLPAPERS); |
| + SetDefaultWallpaperPathsFromCommandLine( |
| + base::CommandLine::ForCurrentProcess()); |
| + registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED, |
| + content::NotificationService::AllSources()); |
| + registrar_.Add(this, chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, |
| + content::NotificationService::AllSources()); |
| + registrar_.Add(this, chrome::NOTIFICATION_WALLPAPER_ANIMATION_FINISHED, |
| + content::NotificationService::AllSources()); |
| + sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| + wallpaper::kWallpaperSequenceTokenName); |
| + task_runner_ = |
| + BrowserThread::GetBlockingPool() |
| + ->GetSequencedTaskRunnerWithShutdownBehavior( |
| + sequence_token_, base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| + wallpaper_loader_ = |
| + new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC, task_runner_); |
| + |
| + user_manager::UserManager::Get()->AddSessionStateObserver(this); |
| +} |
| + |
| WallpaperManager::PendingWallpaper* WallpaperManager::GetPendingWallpaper( |
| const std::string& user_id, |
| bool delayed) { |