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

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

Issue 9856016: Using random wallpaper until user select one (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Merge and Fix license header 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 11f007827063772ec106512d35f4b39c5a5ea095..42b8b8eb9a792070ac0dfe2f9c15f5f5f764074d 100644
--- a/chrome/browser/chromeos/login/user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/user_manager_impl.cc
@@ -325,6 +325,9 @@ const UserList& UserManagerImpl::GetUsers() const {
}
void UserManagerImpl::UserLoggedIn(const std::string& email) {
+ // Get a random wallpaper each time a user logged in.
+ current_user_wallpaper_index_ = ash::GetDefaultWallpaperIndex();
+
// Remove the stub user if it is still around.
if (logged_in_user_) {
DCHECK(IsLoggedInAsStub());
@@ -422,6 +425,8 @@ void UserManagerImpl::DemoUserLoggedIn() {
void UserManagerImpl::GuestUserLoggedIn() {
is_current_user_ephemeral_ = true;
+ // Guest user always uses the same wallpaper.
+ current_user_wallpaper_index_ = ash::GetGuestWallpaperIndex();
logged_in_user_ = new User(kGuestUser, true);
NotifyOnLogin();
}
@@ -921,10 +926,13 @@ void UserManagerImpl::SetInitialUserImage(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())
+ // If at login screen, use the default guest wallpaper.
+ if (!IsUserLoggedIn())
return ash::GetGuestWallpaperIndex();
+ // If logged in as other ephemeral users (Demo/Stub/Normal user with
+ // ephemeral policy enabled/Guest), use the index in memory.
+ if (IsCurrentUserEphemeral())
+ return current_user_wallpaper_index_;
const chromeos::User& user = GetLoggedInUser();
std::string username = user.email();
@@ -933,9 +941,9 @@ int UserManagerImpl::GetUserWallpaperIndex() {
PrefService* local_state = g_browser_process->local_state();
const DictionaryValue* user_wallpapers =
local_state->GetDictionary(UserManager::kUserWallpapers);
- int index = ash::GetDefaultWallpaperIndex();
+ int index;
if (!user_wallpapers->GetIntegerWithoutPathExpansion(username, &index))
- SaveUserWallpaperIndex(index);
+ index = current_user_wallpaper_index_;
DCHECK(index >=0 && index < ash::GetWallpaperCount());
return index;
@@ -943,11 +951,13 @@ int UserManagerImpl::GetUserWallpaperIndex() {
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())
+
+ current_user_wallpaper_index_ = wallpaper_index;
+ // Ephemeral users can not save data to local state. We just cache the index
+ // in memory for them.
+ if (IsCurrentUserEphemeral() || !IsUserLoggedIn()) {
return;
+ }
const chromeos::User& user = GetLoggedInUser();
std::string username = user.email();
« no previous file with comments | « chrome/browser/chromeos/login/user_manager_impl.h ('k') | chrome/browser/resources/chromeos/user_images_grid.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698