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

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

Issue 9839098: Fix wallpaper change to a random one when user first click "set wallpaper". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix linux_chromeos crash Created 8 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/user_manager_impl.cc
diff --git a/chrome/browser/chromeos/login/user_manager_impl.cc b/chrome/browser/chromeos/login/user_manager_impl.cc
index a5800a51771b635d33e3d4b982e0c2b4a06f7acd..0cc82d7c520f441de1cc888b172bdb7e8fcb6b80 100644
--- a/chrome/browser/chromeos/login/user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/user_manager_impl.cc
@@ -907,29 +907,46 @@ void UserManagerImpl::SetInitialUserImage(const std::string& username) {
SaveUserDefaultImageIndex(username, image_id);
}
-int UserManagerImpl::GetUserWallpaper(const std::string& username) {
+int UserManagerImpl::GetUserWallpaperIndex() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ // If at login screen or logged in as a guest/incognito user, then use the
+ // randomly generated wallpaper.
+ if (IsLoggedInAsGuest() || !IsUserLoggedIn())
Nikita (slow) 2012/03/25 21:24:08 + IsCurrentUserEphemeral() In fact you should rem
+ return ash::GetGuestWallpaperIndex();
+
+ const chromeos::User& user = GetLoggedInUser();
+ std::string username = user.email();
+ DCHECK(!username.empty());
+
PrefService* local_state = g_browser_process->local_state();
const DictionaryValue* user_wallpapers =
local_state->GetDictionary(UserManager::kUserWallpapers);
int index = ash::GetDefaultWallpaperIndex();
- user_wallpapers->GetIntegerWithoutPathExpansion(username,
- &index);
+ if (!user_wallpapers->GetIntegerWithoutPathExpansion(username, &index))
+ SaveUserWallpaperIndex(index);
+
+ DCHECK(index >=0 && index < ash::GetWallpaperCount());
return index;
}
-void UserManagerImpl::SaveWallpaperDefaultIndex(const std::string& username,
- int wallpaper_index) {
+void UserManagerImpl::SaveUserWallpaperIndex(int wallpaper_index) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ // If at login screen or logged in as a guest/incognito user, then return.
+ // Guest/incognito user can not change wallpaper according to chromium-os
+ // issue 26900.
+ if (IsLoggedInAsGuest() || !IsUserLoggedIn())
Nikita (slow) 2012/03/25 21:24:08 Change IsLoggedInAsGuest() to IsCurrentUserEphemer
+ return;
+
+ const chromeos::User& user = GetLoggedInUser();
+ std::string username = user.email();
+ DCHECK(!username.empty());
PrefService* local_state = g_browser_process->local_state();
DictionaryPrefUpdate wallpapers_update(local_state,
UserManager::kUserWallpapers);
wallpapers_update->SetWithoutPathExpansion(username,
new base::FundamentalValue(wallpaper_index));
- ash::Shell::GetInstance()->desktop_background_controller()->
- OnDesktopBackgroundChanged();
}
void UserManagerImpl::SetUserImage(const std::string& username,

Powered by Google App Engine
This is Rietveld 408576698