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..100d5dda1af048fd528d8b6bd46e84c3131aca52 100644 |
| --- a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc |
| +++ b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc |
| @@ -275,45 +275,8 @@ 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(); |
| DCHECK(!show_user_name_on_signin_subscription_); |
| user_manager::UserManager::Get()->RemoveSessionStateObserver(this); |
| @@ -322,6 +285,20 @@ WallpaperManager::~WallpaperManager() { |
| weak_factory_.InvalidateWeakPtrs(); |
| } |
| +// static |
| +WallpaperManager* WallpaperManager::Get() { |
|
oshima
2015/03/13 22:16:41
is it possible to have explicit Init(ialize) metho
|
| + if (!g_wallpaper_manager) |
| + g_wallpaper_manager = new WallpaperManager(); |
| + return g_wallpaper_manager; |
| +} |
| + |
| +// static |
| +void WallpaperManager::Shutdown() { |
| + CHECK(g_wallpaper_manager); |
| + delete g_wallpaper_manager; |
| + g_wallpaper_manager = NULL; |
| +} |
| + |
| WallpaperManager::WallpaperResolution |
| WallpaperManager::GetAppropriateResolution() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| @@ -333,10 +310,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 +719,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) { |