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

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

Issue 130983007: Creating multi profile animations for switching users and teleporting of windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Created 6 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
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 1758d2916bc74fd596ebadf63a846f25da8c9d4e..12394ad3273e9ca33c22d644d9c39ad6a2bb2dbe 100644
--- a/chrome/browser/chromeos/login/wallpaper_manager.cc
+++ b/chrome/browser/chromeos/login/wallpaper_manager.cc
@@ -702,6 +702,9 @@ void WallpaperManager::SetUserWallpaperNow(const std::string& email) {
void WallpaperManager::ScheduleSetUserWallpaper(const std::string& email,
bool delayed) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ // Some unit tests come here without a UserManager.
+ if (!UserManager::IsInitialized())
+ return;
// There is no visible background in kiosk mode.
if (UserManager::Get()->IsLoggedInAsKioskApp())
return;
@@ -1033,7 +1036,9 @@ bool WallpaperManager::GetUserWallpaperInfo(const std::string& email,
WallpaperInfo* info){
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (UserManager::Get()->IsUserNonCryptohomeDataEphemeral(email)) {
+ // Some unit tests come here with no browser local state attached.
+ if (UserManager::Get()->IsUserNonCryptohomeDataEphemeral(email) ||
+ !g_browser_process->local_state()) {
// Default to the values cached in memory.
*info = current_user_wallpaper_info_;
@@ -1193,10 +1198,12 @@ void WallpaperManager::OnWallpaperDecoded(
return;
}
- // Only cache user wallpaper at login screen.
- if (!UserManager::Get()->IsUserLoggedIn()) {
- wallpaper_cache_.insert(std::make_pair(email, wallpaper.image()));
+ // Only cache the user wallpaper at login screen and for multi profile users.
+ if (!UserManager::Get()->IsUserLoggedIn() ||
+ (UserManager::Get()->GetLoggedInUsers().size() > 1)) {
Nikita (slow) 2014/01/30 14:03:40 I've found that this doesn't quite work. 1. Add c
+ wallpaper_cache_[email] = wallpaper.image();
}
+
if (update_wallpaper) {
ash::Shell::GetInstance()->desktop_background_controller()->
SetCustomWallpaper(wallpaper.image(), layout);

Powered by Google App Engine
This is Rietveld 408576698