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

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: Address Oshima's comments. 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..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) {
« 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