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

Unified Diff: chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc

Issue 1010443003: Make the lifetime of wallpaper manager more clear. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
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) {
« no previous file with comments | « chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h ('k') | components/wallpaper/wallpaper_manager_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698