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

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

Issue 10829381: Remove call to UserManager::Get when initializing UserManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ivan's review Created 8 years, 4 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
« no previous file with comments | « chrome/browser/chromeos/login/wallpaper_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9c6ed4bf028f2844ba1b72935605f9c635a06a82..2b03b28172f48a0ecc062993ab8f91174efb5cb7 100644
--- a/chrome/browser/chromeos/login/wallpaper_manager.cc
+++ b/chrome/browser/chromeos/login/wallpaper_manager.cc
@@ -319,16 +319,15 @@ void WallpaperManager::RestartTimer() {
}
}
-void WallpaperManager::SaveUserWallpaperProperties(const std::string& email,
- User::WallpaperType type,
- int index) {
+void WallpaperManager::SetUserWallpaperProperties(const std::string& email,
+ User::WallpaperType type,
+ int index,
+ bool is_persistent) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
current_user_wallpaper_type_ = type;
current_user_wallpaper_index_ = index;
- // Ephemeral users can not save data to local state. We just cache the index
- // in memory for them.
- if (UserManager::Get()->IsCurrentUserEphemeral())
+ if (!is_persistent)
return;
PrefService* local_state = g_browser_process->local_state();
@@ -360,15 +359,17 @@ void WallpaperManager::SetUserWallpaperFromFile(
delegate));
}
-void WallpaperManager::SetInitialUserWallpaper(const std::string& username) {
+void WallpaperManager::SetInitialUserWallpaper(const std::string& username,
+ bool is_persistent) {
current_user_wallpaper_type_ = User::DEFAULT;
if (username == kGuestUser)
current_user_wallpaper_index_ = ash::GetGuestWallpaperIndex();
else
current_user_wallpaper_index_ = ash::GetDefaultWallpaperIndex();
- SaveUserWallpaperProperties(username,
- current_user_wallpaper_type_,
- current_user_wallpaper_index_);
+ SetUserWallpaperProperties(username,
+ current_user_wallpaper_type_,
+ current_user_wallpaper_index_,
+ is_persistent);
// Some browser tests do not have shell instance. And it is not necessary to
// create a wallpaper for these tests. Add HasInstance check to prevent tests
@@ -424,7 +425,8 @@ void WallpaperManager::SetUserWallpaper(const std::string& email) {
GetUserWallpaperProperties(email, &type, &index, &date);
if (type == User::DAILY && date != base::Time::Now().LocalMidnight()) {
index = ash::GetNextWallpaperIndex(index);
- SaveUserWallpaperProperties(email, User::DAILY, index);
+ SetUserWallpaperProperties(email, User::DAILY, index,
+ ShouldPersistDataForUser(email));
} else if (type == User::CUSTOMIZED) {
// For security reason, use default wallpaper instead of custom wallpaper
// at login screen. The security issue is tracked in issue 143198. Once it
@@ -477,7 +479,7 @@ void WallpaperManager::BatchUpdateWallpaper() {
base::Time current_date = base::Time::Now().LocalMidnight();
if (type == User::DAILY && current_date != last_modification_date) {
index = ash::GetNextWallpaperIndex(index);
- SaveUserWallpaperProperties(email, type, index);
+ SetUserWallpaperProperties(email, type, index, true);
}
// Force a wallpaper update for logged in / last selected user.
// TODO(bshe): Notify lock screen, wallpaper picker UI to update wallpaper
@@ -637,12 +639,15 @@ void WallpaperManager::SetWallpaper(const std::string& username,
std::string wallpaper_path =
GetWallpaperPathForUser(username, false).value();
- // TODO(bshe): Ephemeral user should not save custom wallpaper to disk.
- BrowserThread::PostTask(
- BrowserThread::FILE,
- FROM_HERE,
- base::Bind(&WallpaperManager::SaveWallpaper,
- base::Unretained(this), wallpaper_path, wallpaper));
+ bool is_persistent = ShouldPersistDataForUser(username);
+
+ if (is_persistent) {
+ BrowserThread::PostTask(
+ BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&WallpaperManager::SaveWallpaper,
+ base::Unretained(this), wallpaper_path, wallpaper));
+ }
BrowserThread::PostTask(
BrowserThread::FILE,
@@ -653,7 +658,13 @@ void WallpaperManager::SetWallpaper(const std::string& username,
ash::Shell::GetInstance()->desktop_background_controller()->
SetCustomWallpaper(wallpaper.image(), layout);
- SaveUserWallpaperProperties(username, type, layout);
+ SetUserWallpaperProperties(username, type, layout, is_persistent);
+}
+
+bool WallpaperManager::ShouldPersistDataForUser(const std::string& email) {
+ UserManager* user_manager = UserManager::Get();
+ return !(email == user_manager->GetLoggedInUser().email() &&
+ user_manager->IsCurrentUserEphemeral());
}
void WallpaperManager::OnWallpaperLoaded(ash::WallpaperLayout layout,
« no previous file with comments | « chrome/browser/chromeos/login/wallpaper_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698