| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/users/wallpaper/wallpaper_manager.h" | 5 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
| 6 | 6 |
| 7 #include <numeric> | 7 #include <numeric> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "ash/ash_constants.h" | 10 #include "ash/ash_constants.h" |
| (...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 if (!ash::Shell::HasInstance()) | 538 if (!ash::Shell::HasInstance()) |
| 539 return; | 539 return; |
| 540 | 540 |
| 541 WallpaperInfo info; | 541 WallpaperInfo info; |
| 542 if (GetLoggedInUserWallpaperInfo(&info)) { | 542 if (GetLoggedInUserWallpaperInfo(&info)) { |
| 543 // TODO(sschmitz): We need an index for default wallpapers for the new UI. | 543 // TODO(sschmitz): We need an index for default wallpapers for the new UI. |
| 544 RecordUma(info.type, -1); | 544 RecordUma(info.type, -1); |
| 545 if (info == current_user_wallpaper_info_) | 545 if (info == current_user_wallpaper_info_) |
| 546 return; | 546 return; |
| 547 } | 547 } |
| 548 SetUserWallpaperNow(UserManager::Get()->GetLoggedInUser()->email()); | 548 SetUserWallpaperNow(GetUserManager()->GetLoggedInUser()->email()); |
| 549 } | 549 } |
| 550 | 550 |
| 551 void WallpaperManager::ClearDisposableWallpaperCache() { | 551 void WallpaperManager::ClearDisposableWallpaperCache() { |
| 552 // Cancel callback for previous cache requests. | 552 // Cancel callback for previous cache requests. |
| 553 weak_factory_.InvalidateWeakPtrs(); | 553 weak_factory_.InvalidateWeakPtrs(); |
| 554 // Keep the wallpaper of logged in users in cache at multi-profile mode. | 554 // Keep the wallpaper of logged in users in cache at multi-profile mode. |
| 555 std::set<std::string> logged_in_users_names; | 555 std::set<std::string> logged_in_users_names; |
| 556 const UserList& logged_users = UserManager::Get()->GetLoggedInUsers(); | 556 const UserList& logged_users = GetUserManager()->GetLoggedInUsers(); |
| 557 for (UserList::const_iterator it = logged_users.begin(); | 557 for (UserList::const_iterator it = logged_users.begin(); |
| 558 it != logged_users.end(); | 558 it != logged_users.end(); |
| 559 ++it) { | 559 ++it) { |
| 560 logged_in_users_names.insert((*it)->email()); | 560 logged_in_users_names.insert((*it)->email()); |
| 561 } | 561 } |
| 562 | 562 |
| 563 CustomWallpaperMap logged_in_users_cache; | 563 CustomWallpaperMap logged_in_users_cache; |
| 564 for (CustomWallpaperMap::iterator it = wallpaper_cache_.begin(); | 564 for (CustomWallpaperMap::iterator it = wallpaper_cache_.begin(); |
| 565 it != wallpaper_cache_.end(); ++it) { | 565 it != wallpaper_cache_.end(); ++it) { |
| 566 if (logged_in_users_names.find(it->first) != | 566 if (logged_in_users_names.find(it->first) != |
| 567 logged_in_users_names.end()) { | 567 logged_in_users_names.end()) { |
| 568 logged_in_users_cache.insert(*it); | 568 logged_in_users_cache.insert(*it); |
| 569 } | 569 } |
| 570 } | 570 } |
| 571 wallpaper_cache_ = logged_in_users_cache; | 571 wallpaper_cache_ = logged_in_users_cache; |
| 572 } | 572 } |
| 573 | 573 |
| 574 bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) { | 574 bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) { |
| 575 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 575 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 576 | 576 |
| 577 if (UserManager::Get()->IsLoggedInAsStub()) { | 577 if (GetUserManager()->IsLoggedInAsStub()) { |
| 578 info->file = current_user_wallpaper_info_.file = ""; | 578 info->file = current_user_wallpaper_info_.file = ""; |
| 579 info->layout = current_user_wallpaper_info_.layout = | 579 info->layout = current_user_wallpaper_info_.layout = |
| 580 ash::WALLPAPER_LAYOUT_CENTER_CROPPED; | 580 ash::WALLPAPER_LAYOUT_CENTER_CROPPED; |
| 581 info->type = current_user_wallpaper_info_.type = User::DEFAULT; | 581 info->type = current_user_wallpaper_info_.type = User::DEFAULT; |
| 582 info->date = current_user_wallpaper_info_.date = | 582 info->date = current_user_wallpaper_info_.date = |
| 583 base::Time::Now().LocalMidnight(); | 583 base::Time::Now().LocalMidnight(); |
| 584 return true; | 584 return true; |
| 585 } | 585 } |
| 586 | 586 |
| 587 return GetUserWallpaperInfo(UserManager::Get()->GetLoggedInUser()->email(), | 587 return GetUserWallpaperInfo(GetUserManager()->GetLoggedInUser()->email(), |
| 588 info); | 588 info); |
| 589 } | 589 } |
| 590 | 590 |
| 591 void WallpaperManager::InitializeWallpaper() { | 591 void WallpaperManager::InitializeWallpaper() { |
| 592 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 592 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 593 UserManager* user_manager = UserManager::Get(); | 593 UserManager* user_manager = GetUserManager(); |
| 594 | 594 |
| 595 // Apply device customization. | 595 // Apply device customization. |
| 596 if (ShouldUseCustomizedDefaultWallpaper()) { | 596 if (ShouldUseCustomizedDefaultWallpaper()) { |
| 597 SetDefaultWallpaperPath( | 597 SetDefaultWallpaperPath( |
| 598 GetCustomizedWallpaperDefaultRescaledFileName(kSmallWallpaperSuffix), | 598 GetCustomizedWallpaperDefaultRescaledFileName(kSmallWallpaperSuffix), |
| 599 scoped_ptr<gfx::ImageSkia>().Pass(), | 599 scoped_ptr<gfx::ImageSkia>().Pass(), |
| 600 GetCustomizedWallpaperDefaultRescaledFileName(kLargeWallpaperSuffix), | 600 GetCustomizedWallpaperDefaultRescaledFileName(kLargeWallpaperSuffix), |
| 601 scoped_ptr<gfx::ImageSkia>().Pass()); | 601 scoped_ptr<gfx::ImageSkia>().Pass()); |
| 602 } | 602 } |
| 603 | 603 |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 827 const char* sub_dir, | 827 const char* sub_dir, |
| 828 const std::string& user_id_hash, | 828 const std::string& user_id_hash, |
| 829 const std::string& file) { | 829 const std::string& file) { |
| 830 base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir); | 830 base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir); |
| 831 return custom_wallpaper_path.Append(user_id_hash).Append(file); | 831 return custom_wallpaper_path.Append(user_id_hash).Append(file); |
| 832 } | 832 } |
| 833 | 833 |
| 834 void WallpaperManager::SetPolicyControlledWallpaper( | 834 void WallpaperManager::SetPolicyControlledWallpaper( |
| 835 const std::string& user_id, | 835 const std::string& user_id, |
| 836 const UserImage& user_image) { | 836 const UserImage& user_image) { |
| 837 const User *user = chromeos::UserManager::Get()->FindUser(user_id); | 837 const User* user = chromeos::GetUserManager()->FindUser(user_id); |
| 838 if (!user) { | 838 if (!user) { |
| 839 NOTREACHED() << "Unknown user."; | 839 NOTREACHED() << "Unknown user."; |
| 840 return; | 840 return; |
| 841 } | 841 } |
| 842 SetCustomWallpaper(user_id, | 842 SetCustomWallpaper(user_id, |
| 843 user->username_hash(), | 843 user->username_hash(), |
| 844 "policy-controlled.jpeg", | 844 "policy-controlled.jpeg", |
| 845 ash::WALLPAPER_LAYOUT_CENTER_CROPPED, | 845 ash::WALLPAPER_LAYOUT_CENTER_CROPPED, |
| 846 User::POLICY, | 846 User::POLICY, |
| 847 user_image.image(), | 847 user_image.image(), |
| 848 true /* update wallpaper */); | 848 true /* update wallpaper */); |
| 849 } | 849 } |
| 850 | 850 |
| 851 void WallpaperManager::SetCustomWallpaper(const std::string& user_id, | 851 void WallpaperManager::SetCustomWallpaper(const std::string& user_id, |
| 852 const std::string& user_id_hash, | 852 const std::string& user_id_hash, |
| 853 const std::string& file, | 853 const std::string& file, |
| 854 ash::WallpaperLayout layout, | 854 ash::WallpaperLayout layout, |
| 855 User::WallpaperType type, | 855 User::WallpaperType type, |
| 856 const gfx::ImageSkia& image, | 856 const gfx::ImageSkia& image, |
| 857 bool update_wallpaper) { | 857 bool update_wallpaper) { |
| 858 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 858 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 859 DCHECK(UserManager::Get()->IsUserLoggedIn()); | 859 DCHECK(GetUserManager()->IsUserLoggedIn()); |
| 860 | 860 |
| 861 // There is no visible background in kiosk mode. | 861 // There is no visible background in kiosk mode. |
| 862 if (UserManager::Get()->IsLoggedInAsKioskApp()) | 862 if (GetUserManager()->IsLoggedInAsKioskApp()) |
| 863 return; | 863 return; |
| 864 | 864 |
| 865 // Don't allow custom wallpapers while policy is in effect. | 865 // Don't allow custom wallpapers while policy is in effect. |
| 866 if (type != User::POLICY && IsPolicyControlled(user_id)) | 866 if (type != User::POLICY && IsPolicyControlled(user_id)) |
| 867 return; | 867 return; |
| 868 | 868 |
| 869 base::FilePath wallpaper_path = | 869 base::FilePath wallpaper_path = |
| 870 GetCustomWallpaperPath(kOriginalWallpaperSubDir, user_id_hash, file); | 870 GetCustomWallpaperPath(kOriginalWallpaperSubDir, user_id_hash, file); |
| 871 | 871 |
| 872 // If decoded wallpaper is empty, we have probably failed to decode the file. | 872 // If decoded wallpaper is empty, we have probably failed to decode the file. |
| 873 // Use default wallpaper in this case. | 873 // Use default wallpaper in this case. |
| 874 if (image.isNull()) { | 874 if (image.isNull()) { |
| 875 SetDefaultWallpaperDelayed(user_id); | 875 SetDefaultWallpaperDelayed(user_id); |
| 876 return; | 876 return; |
| 877 } | 877 } |
| 878 | 878 |
| 879 bool is_persistent = | 879 bool is_persistent = |
| 880 !UserManager::Get()->IsUserNonCryptohomeDataEphemeral(user_id); | 880 !GetUserManager()->IsUserNonCryptohomeDataEphemeral(user_id); |
| 881 | 881 |
| 882 WallpaperInfo wallpaper_info = { | 882 WallpaperInfo wallpaper_info = { |
| 883 wallpaper_path.value(), | 883 wallpaper_path.value(), |
| 884 layout, | 884 layout, |
| 885 type, | 885 type, |
| 886 // Date field is not used. | 886 // Date field is not used. |
| 887 base::Time::Now().LocalMidnight() | 887 base::Time::Now().LocalMidnight() |
| 888 }; | 888 }; |
| 889 if (is_persistent) { | 889 if (is_persistent) { |
| 890 image.EnsureRepsForSupportedScales(); | 890 image.EnsureRepsForSupportedScales(); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 927 } | 927 } |
| 928 | 928 |
| 929 void WallpaperManager::SetDefaultWallpaperDelayed(const std::string& user_id) { | 929 void WallpaperManager::SetDefaultWallpaperDelayed(const std::string& user_id) { |
| 930 GetPendingWallpaper(user_id, true)->ResetSetDefaultWallpaper(); | 930 GetPendingWallpaper(user_id, true)->ResetSetDefaultWallpaper(); |
| 931 } | 931 } |
| 932 | 932 |
| 933 void WallpaperManager::DoSetDefaultWallpaper( | 933 void WallpaperManager::DoSetDefaultWallpaper( |
| 934 const std::string& user_id, | 934 const std::string& user_id, |
| 935 MovableOnDestroyCallbackHolder on_finish) { | 935 MovableOnDestroyCallbackHolder on_finish) { |
| 936 // There is no visible background in kiosk mode. | 936 // There is no visible background in kiosk mode. |
| 937 if (UserManager::Get()->IsLoggedInAsKioskApp()) | 937 if (GetUserManager()->IsLoggedInAsKioskApp()) |
| 938 return; | 938 return; |
| 939 current_wallpaper_path_.clear(); | 939 current_wallpaper_path_.clear(); |
| 940 wallpaper_cache_.erase(user_id); | 940 wallpaper_cache_.erase(user_id); |
| 941 // Some browser tests do not have a shell instance. As no wallpaper is needed | 941 // Some browser tests do not have a shell instance. As no wallpaper is needed |
| 942 // in these tests anyway, avoid loading one, preventing crashes and speeding | 942 // in these tests anyway, avoid loading one, preventing crashes and speeding |
| 943 // up the tests. | 943 // up the tests. |
| 944 if (!ash::Shell::HasInstance()) | 944 if (!ash::Shell::HasInstance()) |
| 945 return; | 945 return; |
| 946 | 946 |
| 947 WallpaperResolution resolution = GetAppropriateResolution(); | 947 WallpaperResolution resolution = GetAppropriateResolution(); |
| 948 const bool use_small = (resolution == WALLPAPER_RESOLUTION_SMALL); | 948 const bool use_small = (resolution == WALLPAPER_RESOLUTION_SMALL); |
| 949 | 949 |
| 950 const base::FilePath* file = NULL; | 950 const base::FilePath* file = NULL; |
| 951 | 951 |
| 952 if (UserManager::Get()->IsLoggedInAsGuest()) { | 952 if (GetUserManager()->IsLoggedInAsGuest()) { |
| 953 file = | 953 file = |
| 954 use_small ? &guest_small_wallpaper_file_ : &guest_large_wallpaper_file_; | 954 use_small ? &guest_small_wallpaper_file_ : &guest_large_wallpaper_file_; |
| 955 } else { | 955 } else { |
| 956 file = use_small ? &default_small_wallpaper_file_ | 956 file = use_small ? &default_small_wallpaper_file_ |
| 957 : &default_large_wallpaper_file_; | 957 : &default_large_wallpaper_file_; |
| 958 } | 958 } |
| 959 ash::WallpaperLayout layout = use_small | 959 ash::WallpaperLayout layout = use_small |
| 960 ? ash::WALLPAPER_LAYOUT_CENTER | 960 ? ash::WALLPAPER_LAYOUT_CENTER |
| 961 : ash::WALLPAPER_LAYOUT_CENTER_CROPPED; | 961 : ash::WALLPAPER_LAYOUT_CENTER_CROPPED; |
| 962 DCHECK(file); | 962 DCHECK(file); |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 ScheduleSetUserWallpaper(user_id, false); | 1138 ScheduleSetUserWallpaper(user_id, false); |
| 1139 } | 1139 } |
| 1140 | 1140 |
| 1141 void WallpaperManager::ScheduleSetUserWallpaper(const std::string& user_id, | 1141 void WallpaperManager::ScheduleSetUserWallpaper(const std::string& user_id, |
| 1142 bool delayed) { | 1142 bool delayed) { |
| 1143 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1143 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1144 // Some unit tests come here without a UserManager or without a pref system. | 1144 // Some unit tests come here without a UserManager or without a pref system. |
| 1145 if (!UserManager::IsInitialized() || !g_browser_process->local_state()) | 1145 if (!UserManager::IsInitialized() || !g_browser_process->local_state()) |
| 1146 return; | 1146 return; |
| 1147 // There is no visible background in kiosk mode. | 1147 // There is no visible background in kiosk mode. |
| 1148 if (UserManager::Get()->IsLoggedInAsKioskApp()) | 1148 if (GetUserManager()->IsLoggedInAsKioskApp()) |
| 1149 return; | 1149 return; |
| 1150 // Guest user, regular user in ephemeral mode, or kiosk app. | 1150 // Guest user, regular user in ephemeral mode, or kiosk app. |
| 1151 const User* user = UserManager::Get()->FindUser(user_id); | 1151 const User* user = GetUserManager()->FindUser(user_id); |
| 1152 if (UserManager::Get()->IsUserNonCryptohomeDataEphemeral(user_id) || | 1152 if (GetUserManager()->IsUserNonCryptohomeDataEphemeral(user_id) || |
| 1153 (user != NULL && user->GetType() == user_manager::USER_TYPE_KIOSK_APP)) { | 1153 (user != NULL && user->GetType() == user_manager::USER_TYPE_KIOSK_APP)) { |
| 1154 InitInitialUserWallpaper(user_id, false); | 1154 InitInitialUserWallpaper(user_id, false); |
| 1155 GetPendingWallpaper(user_id, delayed)->ResetSetDefaultWallpaper(); | 1155 GetPendingWallpaper(user_id, delayed)->ResetSetDefaultWallpaper(); |
| 1156 return; | 1156 return; |
| 1157 } | 1157 } |
| 1158 | 1158 |
| 1159 if (!UserManager::Get()->IsKnownUser(user_id)) | 1159 if (!GetUserManager()->IsKnownUser(user_id)) |
| 1160 return; | 1160 return; |
| 1161 | 1161 |
| 1162 last_selected_user_ = user_id; | 1162 last_selected_user_ = user_id; |
| 1163 | 1163 |
| 1164 WallpaperInfo info; | 1164 WallpaperInfo info; |
| 1165 | 1165 |
| 1166 if (!GetUserWallpaperInfo(user_id, &info)) { | 1166 if (!GetUserWallpaperInfo(user_id, &info)) { |
| 1167 InitInitialUserWallpaper(user_id, true); | 1167 InitInitialUserWallpaper(user_id, true); |
| 1168 GetUserWallpaperInfo(user_id, &info); | 1168 GetUserWallpaperInfo(user_id, &info); |
| 1169 } | 1169 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1202 | 1202 |
| 1203 // Load downloaded ONLINE or converted DEFAULT wallpapers. | 1203 // Load downloaded ONLINE or converted DEFAULT wallpapers. |
| 1204 GetPendingWallpaper(user_id, delayed)->ResetLoadWallpaper(info); | 1204 GetPendingWallpaper(user_id, delayed)->ResetLoadWallpaper(info); |
| 1205 } | 1205 } |
| 1206 } | 1206 } |
| 1207 | 1207 |
| 1208 void WallpaperManager::SetWallpaperFromImageSkia(const std::string& user_id, | 1208 void WallpaperManager::SetWallpaperFromImageSkia(const std::string& user_id, |
| 1209 const gfx::ImageSkia& image, | 1209 const gfx::ImageSkia& image, |
| 1210 ash::WallpaperLayout layout, | 1210 ash::WallpaperLayout layout, |
| 1211 bool update_wallpaper) { | 1211 bool update_wallpaper) { |
| 1212 DCHECK(UserManager::Get()->IsUserLoggedIn()); | 1212 DCHECK(GetUserManager()->IsUserLoggedIn()); |
| 1213 | 1213 |
| 1214 // There is no visible background in kiosk mode. | 1214 // There is no visible background in kiosk mode. |
| 1215 if (UserManager::Get()->IsLoggedInAsKioskApp()) | 1215 if (GetUserManager()->IsLoggedInAsKioskApp()) |
| 1216 return; | 1216 return; |
| 1217 WallpaperInfo info; | 1217 WallpaperInfo info; |
| 1218 info.layout = layout; | 1218 info.layout = layout; |
| 1219 wallpaper_cache_[user_id] = image; | 1219 wallpaper_cache_[user_id] = image; |
| 1220 | 1220 |
| 1221 if (update_wallpaper) { | 1221 if (update_wallpaper) { |
| 1222 GetPendingWallpaper(last_selected_user_, false /* Not delayed */) | 1222 GetPendingWallpaper(last_selected_user_, false /* Not delayed */) |
| 1223 ->ResetSetWallpaperImage(image, info); | 1223 ->ResetSetWallpaperImage(image, info); |
| 1224 } | 1224 } |
| 1225 } | 1225 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1261 CustomWallpaperMap::const_iterator it = wallpaper_cache_.find(user_id); | 1261 CustomWallpaperMap::const_iterator it = wallpaper_cache_.find(user_id); |
| 1262 if (it != wallpaper_cache_.end()) { | 1262 if (it != wallpaper_cache_.end()) { |
| 1263 *image = (*it).second; | 1263 *image = (*it).second; |
| 1264 return true; | 1264 return true; |
| 1265 } | 1265 } |
| 1266 return false; | 1266 return false; |
| 1267 } | 1267 } |
| 1268 | 1268 |
| 1269 void WallpaperManager::CacheUsersWallpapers() { | 1269 void WallpaperManager::CacheUsersWallpapers() { |
| 1270 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1270 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1271 UserList users = UserManager::Get()->GetUsers(); | 1271 UserList users = GetUserManager()->GetUsers(); |
| 1272 | 1272 |
| 1273 if (!users.empty()) { | 1273 if (!users.empty()) { |
| 1274 UserList::const_iterator it = users.begin(); | 1274 UserList::const_iterator it = users.begin(); |
| 1275 // Skip the wallpaper of first user in the list. It should have been cached. | 1275 // Skip the wallpaper of first user in the list. It should have been cached. |
| 1276 it++; | 1276 it++; |
| 1277 for (int cached = 0; | 1277 for (int cached = 0; |
| 1278 it != users.end() && cached < kMaxWallpapersToCache; | 1278 it != users.end() && cached < kMaxWallpapersToCache; |
| 1279 ++it, ++cached) { | 1279 ++it, ++cached) { |
| 1280 std::string user_id = (*it)->email(); | 1280 std::string user_id = (*it)->email(); |
| 1281 CacheUserWallpaper(user_id); | 1281 CacheUserWallpaper(user_id); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1365 SetDefaultWallpaperPathsFromCommandLine(command_line); | 1365 SetDefaultWallpaperPathsFromCommandLine(command_line); |
| 1366 } | 1366 } |
| 1367 | 1367 |
| 1368 CommandLine* WallpaperManager::GetCommandLine() { | 1368 CommandLine* WallpaperManager::GetCommandLine() { |
| 1369 CommandLine* command_line = command_line_for_testing_ ? | 1369 CommandLine* command_line = command_line_for_testing_ ? |
| 1370 command_line_for_testing_ : CommandLine::ForCurrentProcess(); | 1370 command_line_for_testing_ : CommandLine::ForCurrentProcess(); |
| 1371 return command_line; | 1371 return command_line; |
| 1372 } | 1372 } |
| 1373 | 1373 |
| 1374 void WallpaperManager::InitializeRegisteredDeviceWallpaper() { | 1374 void WallpaperManager::InitializeRegisteredDeviceWallpaper() { |
| 1375 if (UserManager::Get()->IsUserLoggedIn()) | 1375 if (GetUserManager()->IsUserLoggedIn()) |
| 1376 return; | 1376 return; |
| 1377 | 1377 |
| 1378 bool disable_boot_animation = | 1378 bool disable_boot_animation = |
| 1379 GetCommandLine()->HasSwitch(switches::kDisableBootAnimation); | 1379 GetCommandLine()->HasSwitch(switches::kDisableBootAnimation); |
| 1380 bool show_users = true; | 1380 bool show_users = true; |
| 1381 bool result = CrosSettings::Get()->GetBoolean( | 1381 bool result = CrosSettings::Get()->GetBoolean( |
| 1382 kAccountsPrefShowUserNamesOnSignIn, &show_users); | 1382 kAccountsPrefShowUserNamesOnSignIn, &show_users); |
| 1383 DCHECK(result) << "Unable to fetch setting " | 1383 DCHECK(result) << "Unable to fetch setting " |
| 1384 << kAccountsPrefShowUserNamesOnSignIn; | 1384 << kAccountsPrefShowUserNamesOnSignIn; |
| 1385 const chromeos::UserList& users = UserManager::Get()->GetUsers(); | 1385 const chromeos::UserList& users = GetUserManager()->GetUsers(); |
| 1386 int public_session_user_index = FindPublicSession(users); | 1386 int public_session_user_index = FindPublicSession(users); |
| 1387 if ((!show_users && public_session_user_index == -1) || users.empty()) { | 1387 if ((!show_users && public_session_user_index == -1) || users.empty()) { |
| 1388 // Boot into sign in form, preload default wallpaper. | 1388 // Boot into sign in form, preload default wallpaper. |
| 1389 SetDefaultWallpaperDelayed(UserManager::kSignInUser); | 1389 SetDefaultWallpaperDelayed(UserManager::kSignInUser); |
| 1390 return; | 1390 return; |
| 1391 } | 1391 } |
| 1392 | 1392 |
| 1393 if (!disable_boot_animation) { | 1393 if (!disable_boot_animation) { |
| 1394 int index = public_session_user_index != -1 ? public_session_user_index : 0; | 1394 int index = public_session_user_index != -1 ? public_session_user_index : 0; |
| 1395 // Normal boot, load user wallpaper. | 1395 // Normal boot, load user wallpaper. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1459 // crosbug.com/38429. | 1459 // crosbug.com/38429. |
| 1460 LOG(ERROR) << "Wallpaper reverts to default unexpected."; | 1460 LOG(ERROR) << "Wallpaper reverts to default unexpected."; |
| 1461 DoSetDefaultWallpaper(user_id, on_finish.Pass()); | 1461 DoSetDefaultWallpaper(user_id, on_finish.Pass()); |
| 1462 } | 1462 } |
| 1463 } | 1463 } |
| 1464 | 1464 |
| 1465 bool WallpaperManager::GetUserWallpaperInfo(const std::string& user_id, | 1465 bool WallpaperManager::GetUserWallpaperInfo(const std::string& user_id, |
| 1466 WallpaperInfo* info) const { | 1466 WallpaperInfo* info) const { |
| 1467 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1467 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1468 | 1468 |
| 1469 if (UserManager::Get()->IsUserNonCryptohomeDataEphemeral(user_id)) { | 1469 if (GetUserManager()->IsUserNonCryptohomeDataEphemeral(user_id)) { |
| 1470 // Default to the values cached in memory. | 1470 // Default to the values cached in memory. |
| 1471 *info = current_user_wallpaper_info_; | 1471 *info = current_user_wallpaper_info_; |
| 1472 | 1472 |
| 1473 // Ephemeral users do not save anything to local state. But we have got | 1473 // Ephemeral users do not save anything to local state. But we have got |
| 1474 // wallpaper info from memory. Returns true. | 1474 // wallpaper info from memory. Returns true. |
| 1475 return true; | 1475 return true; |
| 1476 } | 1476 } |
| 1477 | 1477 |
| 1478 const base::DictionaryValue* info_dict; | 1478 const base::DictionaryValue* info_dict; |
| 1479 if (!g_browser_process->local_state()-> | 1479 if (!g_browser_process->local_state()-> |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1511 const std::string& user_id_hash) { | 1511 const std::string& user_id_hash) { |
| 1512 WallpaperInfo info; | 1512 WallpaperInfo info; |
| 1513 GetUserWallpaperInfo(user_id, &info); | 1513 GetUserWallpaperInfo(user_id, &info); |
| 1514 if (info.type == User::CUSTOMIZED) { | 1514 if (info.type == User::CUSTOMIZED) { |
| 1515 // New file field should include user id hash in addition to file name. | 1515 // New file field should include user id hash in addition to file name. |
| 1516 // This is needed because at login screen, user id hash is not available. | 1516 // This is needed because at login screen, user id hash is not available. |
| 1517 std::string relative_path = | 1517 std::string relative_path = |
| 1518 base::FilePath(user_id_hash).Append(info.file).value(); | 1518 base::FilePath(user_id_hash).Append(info.file).value(); |
| 1519 info.file = relative_path; | 1519 info.file = relative_path; |
| 1520 bool is_persistent = | 1520 bool is_persistent = |
| 1521 !UserManager::Get()->IsUserNonCryptohomeDataEphemeral(user_id); | 1521 !GetUserManager()->IsUserNonCryptohomeDataEphemeral(user_id); |
| 1522 SetUserWallpaperInfo(user_id, info, is_persistent); | 1522 SetUserWallpaperInfo(user_id, info, is_persistent); |
| 1523 } | 1523 } |
| 1524 } | 1524 } |
| 1525 | 1525 |
| 1526 void WallpaperManager::MoveLoggedInUserCustomWallpaper() { | 1526 void WallpaperManager::MoveLoggedInUserCustomWallpaper() { |
| 1527 const User* logged_in_user = UserManager::Get()->GetLoggedInUser(); | 1527 const User* logged_in_user = GetUserManager()->GetLoggedInUser(); |
| 1528 task_runner_->PostTask( | 1528 task_runner_->PostTask( |
| 1529 FROM_HERE, | 1529 FROM_HERE, |
| 1530 base::Bind(&WallpaperManager::MoveCustomWallpapersOnWorker, | 1530 base::Bind(&WallpaperManager::MoveCustomWallpapersOnWorker, |
| 1531 logged_in_user->email(), | 1531 logged_in_user->email(), |
| 1532 logged_in_user->username_hash(), | 1532 logged_in_user->username_hash(), |
| 1533 weak_factory_.GetWeakPtr())); | 1533 weak_factory_.GetWeakPtr())); |
| 1534 } | 1534 } |
| 1535 | 1535 |
| 1536 void WallpaperManager::OnWallpaperDecoded( | 1536 void WallpaperManager::OnWallpaperDecoded( |
| 1537 const std::string& user_id, | 1537 const std::string& user_id, |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1903 void WallpaperManager::CreateSolidDefaultWallpaper() { | 1903 void WallpaperManager::CreateSolidDefaultWallpaper() { |
| 1904 loaded_wallpapers_++; | 1904 loaded_wallpapers_++; |
| 1905 SkBitmap bitmap; | 1905 SkBitmap bitmap; |
| 1906 bitmap.allocN32Pixels(1, 1); | 1906 bitmap.allocN32Pixels(1, 1); |
| 1907 bitmap.eraseColor(kDefaultWallpaperColor); | 1907 bitmap.eraseColor(kDefaultWallpaperColor); |
| 1908 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap); | 1908 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap); |
| 1909 default_wallpaper_image_.reset(new UserImage(image)); | 1909 default_wallpaper_image_.reset(new UserImage(image)); |
| 1910 } | 1910 } |
| 1911 | 1911 |
| 1912 } // namespace chromeos | 1912 } // namespace chromeos |
| OLD | NEW |