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

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

Issue 11968044: Fix login visual hitch on chromebook (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 11 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
« no previous file with comments | « chrome/browser/chromeos/login/wallpaper_manager.h ('k') | chrome/browser/image_decoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..d58b89b58ae52d9eecf0ded7f3b5f567e52e0d8e 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),
+ : no_observers_(true),
+ loaded_wallpapers_(0),
ALLOW_THIS_IN_INITIALIZER_LIST(wallpaper_loader_(
new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC))),
should_cache_wallpaper_(false),
@@ -121,6 +122,22 @@ WallpaperManager::WallpaperManager()
base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
}
+WallpaperManager::~WallpaperManager() {
+ // TODO(bshe): Lifetime of WallpaperManager needs more consideration.
+ // http://crbug.com/171694
+ DCHECK(no_observers_);
+ ClearObsoleteWallpaperPrefs();
+ weak_factory_.InvalidateWeakPtrs();
+}
+
+void WallpaperManager::Shutdown() {
+ DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
+ system::TimezoneSettings::GetInstance()->RemoveObserver(this);
+ CrosSettings::Get()->RemoveSettingsObserver(
+ kAccountsPrefShowUserNamesOnSignIn, this);
+ no_observers_ = true;
+}
+
// static
void WallpaperManager::RegisterPrefs(PrefServiceSimple* local_state) {
local_state->RegisterDictionaryPref(prefs::kUsersWallpaperInfo);
@@ -131,6 +148,9 @@ void WallpaperManager::RegisterPrefs(PrefServiceSimple* local_state) {
void WallpaperManager::AddObservers() {
DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
system::TimezoneSettings::GetInstance()->AddObserver(this);
+ CrosSettings::Get()->AddSettingsObserver(kAccountsPrefShowUserNamesOnSignIn,
+ this);
+ no_observers_ = false;
}
void WallpaperManager::EnsureLoggedInUserWallpaperLoaded() {
@@ -267,6 +287,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 +580,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 +670,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;
« no previous file with comments | « chrome/browser/chromeos/login/wallpaper_manager.h ('k') | chrome/browser/image_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698