Chromium Code Reviews| Index: chrome/browser/chromeos/login/wallpaper_manager.cc |
| diff --git a/chrome/browser/chromeos/login/wallpaper_manager.cc b/chrome/browser/chromeos/login/wallpaper_manager.cc |
| index 4d816268b438a443befa612a408d080c71b33620..920c1c5efa18656ad9d68c4a17f39a0032a24b40 100644 |
| --- a/chrome/browser/chromeos/login/wallpaper_manager.cc |
| +++ b/chrome/browser/chromeos/login/wallpaper_manager.cc |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| @@ -98,7 +98,8 @@ WallpaperManager* WallpaperManager::Get() { |
| } |
| WallpaperManager::WallpaperManager() |
| - : loaded_wallpapers_(0), |
| + : called_shutdown_(false), |
| + loaded_wallpapers_(0), |
| ALLOW_THIS_IN_INITIALIZER_LIST(wallpaper_loader_( |
| new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC))), |
| should_cache_wallpaper_(false), |
| @@ -121,6 +122,21 @@ WallpaperManager::WallpaperManager() |
| base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| } |
| +WallpaperManager::~WallpaperManager() { |
| + // TODO(bshe): Lifetime of WallpaperManager needs more consideration. |
|
Nikita (slow)
2013/01/23 16:28:17
Issue #?
bshe
2013/01/23 17:11:45
Done.
|
| + DCHECK(called_shutdown_); |
| + ClearObsoleteWallpaperPrefs(); |
| + weak_factory_.InvalidateWeakPtrs(); |
| +} |
| + |
| +void WallpaperManager::Shutdown() { |
| + DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this); |
| + system::TimezoneSettings::GetInstance()->RemoveObserver(this); |
| + CrosSettings::Get()->RemoveSettingsObserver( |
| + kAccountsPrefShowUserNamesOnSignIn, this); |
| + called_shutdown_ = true; |
| +} |
| + |
| // static |
| void WallpaperManager::RegisterPrefs(PrefServiceSimple* local_state) { |
| local_state->RegisterDictionaryPref(prefs::kUsersWallpaperInfo); |
| @@ -131,6 +147,8 @@ void WallpaperManager::RegisterPrefs(PrefServiceSimple* local_state) { |
| void WallpaperManager::AddObservers() { |
| DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this); |
| system::TimezoneSettings::GetInstance()->AddObserver(this); |
| + CrosSettings::Get()->AddSettingsObserver(kAccountsPrefShowUserNamesOnSignIn, |
| + this); |
| } |
| void WallpaperManager::EnsureLoggedInUserWallpaperLoaded() { |
| @@ -267,6 +285,13 @@ void WallpaperManager::Observe(int type, |
| } |
| break; |
| } |
| + case chrome::NOTIFICATION_SYSTEM_SETTING_CHANGED: { |
| + if (*content::Details<const std::string>(details).ptr() == |
| + kAccountsPrefShowUserNamesOnSignIn) { |
| + InitializeRegisteredDeviceWallpaper(); |
| + } |
| + break; |
| + } |
| default: |
| NOTREACHED() << "Unexpected notification " << type; |
| } |
| @@ -553,13 +578,6 @@ void WallpaperManager::UpdateWallpaper() { |
| // WallpaperManager, private: -------------------------------------------------- |
| -WallpaperManager::~WallpaperManager() { |
| - ClearObsoleteWallpaperPrefs(); |
| - DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this); |
| - system::TimezoneSettings::GetInstance()->RemoveObserver(this); |
| - weak_factory_.InvalidateWeakPtrs(); |
| -} |
| - |
| void WallpaperManager::BatchUpdateWallpaper() { |
| NOTIMPLEMENTED(); |
| } |
| @@ -650,12 +668,9 @@ void WallpaperManager::DeleteUserWallpapers(const std::string& email) { |
| } |
| void WallpaperManager::InitializeRegisteredDeviceWallpaper() { |
| - if (CrosSettingsProvider::TEMPORARILY_UNTRUSTED == |
| - CrosSettings::Get()->PrepareTrustedValues( |
| - base::Bind(&WallpaperManager::InitializeRegisteredDeviceWallpaper, |
| - base::Unretained(this)))) { |
| + if (UserManager::Get()->IsUserLoggedIn()) |
| return; |
| - } |
| + |
| bool disable_boot_animation = CommandLine::ForCurrentProcess()-> |
| HasSwitch(switches::kDisableBootAnimation); |
| bool show_users = true; |