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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/login/user_manager_impl.h" 5 #include "chrome/browser/chromeos/login/user_manager_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/desktop_background/desktop_background_controller.h" 10 #include "ash/desktop_background/desktop_background_controller.h"
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 if (is_current_user_ephemeral_) 318 if (is_current_user_ephemeral_)
319 delete logged_in_user_; 319 delete logged_in_user_;
320 } 320 }
321 321
322 const UserList& UserManagerImpl::GetUsers() const { 322 const UserList& UserManagerImpl::GetUsers() const {
323 const_cast<UserManagerImpl*>(this)->EnsureUsersLoaded(); 323 const_cast<UserManagerImpl*>(this)->EnsureUsersLoaded();
324 return users_; 324 return users_;
325 } 325 }
326 326
327 void UserManagerImpl::UserLoggedIn(const std::string& email) { 327 void UserManagerImpl::UserLoggedIn(const std::string& email) {
328 // Get a random wallpaper each time a user logged in.
329 current_user_wallpaper_index_ = ash::GetDefaultWallpaperIndex();
330
328 // Remove the stub user if it is still around. 331 // Remove the stub user if it is still around.
329 if (logged_in_user_) { 332 if (logged_in_user_) {
330 DCHECK(IsLoggedInAsStub()); 333 DCHECK(IsLoggedInAsStub());
331 delete logged_in_user_; 334 delete logged_in_user_;
332 logged_in_user_ = NULL; 335 logged_in_user_ = NULL;
333 is_current_user_ephemeral_ = false; 336 is_current_user_ephemeral_ = false;
334 } 337 }
335 338
336 if (email == kGuestUser) { 339 if (email == kGuestUser) {
337 GuestUserLoggedIn(); 340 GuestUserLoggedIn();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 void UserManagerImpl::DemoUserLoggedIn() { 418 void UserManagerImpl::DemoUserLoggedIn() {
416 is_current_user_new_ = true; 419 is_current_user_new_ = true;
417 is_current_user_ephemeral_ = true; 420 is_current_user_ephemeral_ = true;
418 logged_in_user_ = new User(kDemoUser, false); 421 logged_in_user_ = new User(kDemoUser, false);
419 SetInitialUserImage(kDemoUser); 422 SetInitialUserImage(kDemoUser);
420 NotifyOnLogin(); 423 NotifyOnLogin();
421 } 424 }
422 425
423 void UserManagerImpl::GuestUserLoggedIn() { 426 void UserManagerImpl::GuestUserLoggedIn() {
424 is_current_user_ephemeral_ = true; 427 is_current_user_ephemeral_ = true;
428 // Guest user always uses the same wallpaper.
429 current_user_wallpaper_index_ = ash::GetGuestWallpaperIndex();
425 logged_in_user_ = new User(kGuestUser, true); 430 logged_in_user_ = new User(kGuestUser, true);
426 NotifyOnLogin(); 431 NotifyOnLogin();
427 } 432 }
428 433
429 void UserManagerImpl::EphemeralUserLoggedIn(const std::string& email) { 434 void UserManagerImpl::EphemeralUserLoggedIn(const std::string& email) {
430 is_current_user_new_ = true; 435 is_current_user_new_ = true;
431 is_current_user_ephemeral_ = true; 436 is_current_user_ephemeral_ = true;
432 logged_in_user_ = CreateUser(email); 437 logged_in_user_ = CreateUser(email);
433 SetInitialUserImage(email); 438 SetInitialUserImage(email);
434 NotifyOnLogin(); 439 NotifyOnLogin();
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 919
915 void UserManagerImpl::SetInitialUserImage(const std::string& username) { 920 void UserManagerImpl::SetInitialUserImage(const std::string& username) {
916 // Choose a random default image. 921 // Choose a random default image.
917 int image_id = base::RandInt(0, kDefaultImagesCount - 1); 922 int image_id = base::RandInt(0, kDefaultImagesCount - 1);
918 SaveUserDefaultImageIndex(username, image_id); 923 SaveUserDefaultImageIndex(username, image_id);
919 } 924 }
920 925
921 int UserManagerImpl::GetUserWallpaperIndex() { 926 int UserManagerImpl::GetUserWallpaperIndex() {
922 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 927 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
923 928
924 // If at login screen or logged in as a guest/incognito user, then use the 929 // If at login screen, use the default guest wallpaper.
925 // randomly generated wallpaper. 930 if (!IsUserLoggedIn())
926 if (IsLoggedInAsGuest() || !IsUserLoggedIn())
927 return ash::GetGuestWallpaperIndex(); 931 return ash::GetGuestWallpaperIndex();
932 // If logged in as other ephemeral users (Demo/Stub/Normal user with
933 // ephemeral policy enabled/Guest), use the index in memory.
934 if (IsCurrentUserEphemeral())
935 return current_user_wallpaper_index_;
928 936
929 const chromeos::User& user = GetLoggedInUser(); 937 const chromeos::User& user = GetLoggedInUser();
930 std::string username = user.email(); 938 std::string username = user.email();
931 DCHECK(!username.empty()); 939 DCHECK(!username.empty());
932 940
933 PrefService* local_state = g_browser_process->local_state(); 941 PrefService* local_state = g_browser_process->local_state();
934 const DictionaryValue* user_wallpapers = 942 const DictionaryValue* user_wallpapers =
935 local_state->GetDictionary(UserManager::kUserWallpapers); 943 local_state->GetDictionary(UserManager::kUserWallpapers);
936 int index = ash::GetDefaultWallpaperIndex(); 944 int index;
937 if (!user_wallpapers->GetIntegerWithoutPathExpansion(username, &index)) 945 if (!user_wallpapers->GetIntegerWithoutPathExpansion(username, &index))
938 SaveUserWallpaperIndex(index); 946 index = current_user_wallpaper_index_;
939 947
940 DCHECK(index >=0 && index < ash::GetWallpaperCount()); 948 DCHECK(index >=0 && index < ash::GetWallpaperCount());
941 return index; 949 return index;
942 } 950 }
943 951
944 void UserManagerImpl::SaveUserWallpaperIndex(int wallpaper_index) { 952 void UserManagerImpl::SaveUserWallpaperIndex(int wallpaper_index) {
945 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 953 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
946 // If at login screen or logged in as a guest/incognito user, then return. 954
947 // Guest/incognito user can not change wallpaper according to chromium-os 955 current_user_wallpaper_index_ = wallpaper_index;
948 // issue 26900. 956 // Ephemeral users can not save data to local state. We just cache the index
949 if (IsLoggedInAsGuest() || !IsUserLoggedIn()) 957 // in memory for them.
958 if (IsCurrentUserEphemeral() || !IsUserLoggedIn()) {
950 return; 959 return;
960 }
951 961
952 const chromeos::User& user = GetLoggedInUser(); 962 const chromeos::User& user = GetLoggedInUser();
953 std::string username = user.email(); 963 std::string username = user.email();
954 DCHECK(!username.empty()); 964 DCHECK(!username.empty());
955 965
956 PrefService* local_state = g_browser_process->local_state(); 966 PrefService* local_state = g_browser_process->local_state();
957 DictionaryPrefUpdate wallpapers_update(local_state, 967 DictionaryPrefUpdate wallpapers_update(local_state,
958 UserManager::kUserWallpapers); 968 UserManager::kUserWallpapers);
959 wallpapers_update->SetWithoutPathExpansion(username, 969 wallpapers_update->SetWithoutPathExpansion(username,
960 new base::FundamentalValue(wallpaper_index)); 970 new base::FundamentalValue(wallpaper_index));
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 BrowserThread::PostTask( 1256 BrowserThread::PostTask(
1247 BrowserThread::FILE, 1257 BrowserThread::FILE,
1248 FROM_HERE, 1258 FROM_HERE,
1249 base::Bind(&UserManagerImpl::DeleteUserImage, 1259 base::Bind(&UserManagerImpl::DeleteUserImage,
1250 base::Unretained(this), 1260 base::Unretained(this),
1251 image_path)); 1261 image_path));
1252 } 1262 }
1253 } 1263 }
1254 1264
1255 } // namespace chromeos 1265 } // namespace chromeos
OLDNEW
« 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