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 153ba8bcc9f354db6f45c294a0659d93a35fb4f0..de84c72e11358a72daecc3e96a3ac9dae9401158 100644 |
--- a/chrome/browser/chromeos/login/wallpaper_manager.cc |
+++ b/chrome/browser/chromeos/login/wallpaper_manager.cc |
@@ -6,8 +6,6 @@ |
#include <vector> |
-#include "ash/desktop_background/desktop_background_controller.h" |
-#include "ash/desktop_background/desktop_background_resources.h" |
#include "ash/shell.h" |
#include "base/command_line.h" |
#include "base/logging.h" |
@@ -56,16 +54,6 @@ const int kThumbnailHeight = 80; |
const int kCacheWallpaperDelayMs = 500; |
-// Default wallpaper index used in OOBE (first boot). |
-// Defined here because Chromium default index differs. |
-// Also see ash::WallpaperInfo kDefaultWallpapers in |
-// desktop_background_resources.cc |
-#if defined(GOOGLE_CHROME_BUILD) |
-const int kDefaultOOBEWallpaperIndex = 1; // IDR_AURA_WALLPAPERS_2_LANDSCAPE8 |
-#else |
-const int kDefaultOOBEWallpaperIndex = 0; // IDR_AURA_WALLPAPERS_5_GRADIENT5 |
-#endif |
- |
// A dictionary pref that maps usernames to wallpaper properties. |
const char kUserWallpapersProperties[] = "UserWallpapersProperties"; |
@@ -114,8 +102,6 @@ WallpaperManager* WallpaperManager::Get() { |
WallpaperManager::WallpaperManager() |
: loaded_wallpapers_(0), |
- ALLOW_THIS_IN_INITIALIZER_LIST(current_default_wallpaper_index_( |
- ash::GetInvalidWallpaperIndex())), |
ALLOW_THIS_IN_INITIALIZER_LIST(wallpaper_loader_( |
new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC))), |
should_cache_wallpaper_(false), |
@@ -212,7 +198,8 @@ bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) { |
if (UserManager::Get()->IsLoggedInAsStub()) { |
info->file = current_user_wallpaper_info_.file = ""; |
- info->layout = current_user_wallpaper_info_.layout = ash::CENTER_CROPPED; |
+ info->layout = current_user_wallpaper_info_.layout = |
+ ash::WALLPAPER_LAYOUT_CENTER_CROPPED; |
info->type = current_user_wallpaper_info_.type = User::DEFAULT; |
return true; |
} |
@@ -244,7 +231,7 @@ void WallpaperManager::InitializeWallpaper() { |
if (!user_manager->IsUserLoggedIn()) { |
if (!disable_new_oobe) { |
if (!WizardController::IsDeviceRegistered()) { |
- SetDefaultWallpaper(kDefaultOOBEWallpaperIndex); |
+ SetDefaultWallpaper(); |
} else { |
bool show_users = true; |
bool result = CrosSettings::Get()->GetBoolean( |
@@ -254,7 +241,7 @@ void WallpaperManager::InitializeWallpaper() { |
const chromeos::UserList& users = user_manager->GetUsers(); |
if (!show_users || users.empty()) { |
// Boot into sign in form, preload default wallpaper. |
- SetDefaultWallpaper(kDefaultOOBEWallpaperIndex); |
+ SetDefaultWallpaper(); |
return; |
} |
@@ -329,7 +316,7 @@ void WallpaperManager::ResizeAndSaveWallpaper(const UserImage& wallpaper, |
int resized_width; |
int resized_height; |
- if (layout == ash::CENTER_CROPPED) { |
+ if (layout == ash::WALLPAPER_LAYOUT_CENTER_CROPPED) { |
// Do not resize custom wallpaper if it is smaller than preferred size. |
if (!(width > preferred_width && height > preferred_height)) |
return; |
@@ -345,7 +332,7 @@ void WallpaperManager::ResizeAndSaveWallpaper(const UserImage& wallpaper, |
resized_height = |
RoundPositive(static_cast<double>(height) * horizontal_ratio); |
} |
- } else if (layout == ash::STRETCH) { |
+ } else if (layout == ash::WALLPAPER_LAYOUT_STRETCH) { |
resized_width = preferred_width; |
resized_height = preferred_height; |
} else { |
@@ -406,7 +393,7 @@ void WallpaperManager::SetCustomWallpaper(const std::string& username, |
// If decoded wallpaper is empty, we are probably failed to decode the file. |
// Use default wallpaper in this case. |
if (wallpaper.image().isNull()) { |
- SetDefaultWallpaper(ash::GetDefaultWallpaperIndex()); |
+ SetDefaultWallpaper(); |
return; |
} |
@@ -448,21 +435,32 @@ void WallpaperManager::SetCustomWallpaper(const std::string& username, |
SetUserWallpaperInfo(username, info, is_persistent); |
} |
-void WallpaperManager::SetDefaultWallpaper(int index) { |
+void WallpaperManager::SetDefaultWallpaper() { |
+ ash::DesktopBackgroundController* controller = |
+ ash::Shell::GetInstance()->desktop_background_controller(); |
+ ash::WallpaperResolution resolution = controller->GetAppropriateResolution(); |
+ ash::WallpaperInfo info; |
+ if (UserManager::Get()->IsLoggedInAsGuest()) { |
+ info = (resolution == ash::WALLPAPER_RESOLUTION_LARGE) ? |
+ ash::kGuestLargeWallpaper : ash::kGuestSmallWallpaper; |
+ } else { |
+ info = (resolution == ash::WALLPAPER_RESOLUTION_LARGE) ? |
+ ash::kDefaultLargeWallpaper : ash::kDefaultSmallWallpaper; |
+ } |
+ |
// Prevents loading of the same wallpaper as the currently loading/loaded one. |
- if (current_default_wallpaper_index_ == index) |
+ if (controller->GetWallpaperIDR() == info.idr) |
return; |
- current_default_wallpaper_index_ = index; |
+ |
current_wallpaper_path_ = FilePath(""); |
loaded_wallpapers_++; |
- ash::Shell::GetInstance()->desktop_background_controller()-> |
- SetDefaultWallpaper(index); |
+ controller->SetDefaultWallpaper(info); |
} |
void WallpaperManager::SetInitialUserWallpaper(const std::string& username, |
bool is_persistent) { |
current_user_wallpaper_info_.file = ""; |
- current_user_wallpaper_info_.layout = ash::CENTER_CROPPED; |
+ current_user_wallpaper_info_.layout = ash::WALLPAPER_LAYOUT_CENTER_CROPPED; |
current_user_wallpaper_info_.type = User::DEFAULT; |
current_user_wallpaper_info_.date = base::Time::Now().LocalMidnight(); |
@@ -472,12 +470,8 @@ void WallpaperManager::SetInitialUserWallpaper(const std::string& username, |
// 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 |
// crash and speed up the tests by avoid loading wallpaper. |
- if (ash::Shell::HasInstance()) { |
- if (username == kGuestUser) |
- SetDefaultWallpaper(ash::GetGuestWallpaperIndex()); |
- else |
- SetDefaultWallpaper(ash::GetDefaultWallpaperIndex()); |
- } |
+ if (ash::Shell::HasInstance()) |
+ SetDefaultWallpaper(); |
} |
void WallpaperManager::SetUserWallpaperInfo(const std::string& username, |
@@ -509,7 +503,7 @@ void WallpaperManager::SetLastSelectedUser( |
void WallpaperManager::SetUserWallpaper(const std::string& email) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if (email == kGuestUser) { |
- SetDefaultWallpaper(ash::GetGuestWallpaperIndex()); |
+ SetDefaultWallpaper(); |
return; |
} |
@@ -529,12 +523,11 @@ void WallpaperManager::SetUserWallpaper(const std::string& email) { |
if (info.type == User::CUSTOMIZED) { |
ash::WallpaperResolution resolution = ash::Shell::GetInstance()-> |
desktop_background_controller()->GetAppropriateResolution(); |
- bool is_small = (resolution == ash::SMALL); |
+ bool is_small = (resolution == ash::WALLPAPER_RESOLUTION_SMALL); |
FilePath wallpaper_path = GetWallpaperPathForUser(email, is_small); |
if (current_wallpaper_path_ == wallpaper_path) |
return; |
current_wallpaper_path_ = wallpaper_path; |
- current_default_wallpaper_index_ = ash::GetInvalidWallpaperIndex(); |
loaded_wallpapers_++; |
BrowserThread::PostTask( |
@@ -548,7 +541,7 @@ void WallpaperManager::SetUserWallpaper(const std::string& email) { |
if (info.file.empty()) { |
// Uses default built-in wallpaper when file is empty. Eventually, we |
// will only ship one built-in wallpaper in ChromeOS image. |
- SetDefaultWallpaper(ash::GetDefaultWallpaperIndex()); |
+ SetDefaultWallpaper(); |
return; |
} |
@@ -560,10 +553,6 @@ void WallpaperManager::SetUserWallpaper(const std::string& email) { |
} |
} |
-void WallpaperManager::SetSigninWallpaper() { |
- SetDefaultWallpaper(kDefaultOOBEWallpaperIndex); |
-} |
- |
void WallpaperManager::SetWallpaperFromImageSkia( |
const gfx::ImageSkia& wallpaper, |
ash::WallpaperLayout layout) { |
@@ -614,7 +603,7 @@ void WallpaperManager::CacheUserWallpaper(const std::string& email) { |
if (info.type == User::CUSTOMIZED) { |
ash::WallpaperResolution resolution = ash::Shell::GetInstance()-> |
desktop_background_controller()->GetAppropriateResolution(); |
- bool is_small = (resolution == ash::SMALL); |
+ bool is_small = (resolution == ash::WALLPAPER_RESOLUTION_SMALL); |
FilePath wallpaper_path = GetWallpaperPathForUser(email, is_small); |
BrowserThread::PostTask( |
BrowserThread::FILE, FROM_HERE, |
@@ -691,7 +680,8 @@ void WallpaperManager::LoadWallpaper(const std::string& email, |
desktop_background_controller()->GetAppropriateResolution(); |
// Only solid color wallpapers have stretch layout and they have only one |
// resolution. |
- if (info.layout != ash::STRETCH && resolution == ash::SMALL) { |
+ if (info.layout != ash::WALLPAPER_LAYOUT_STRETCH && |
+ resolution == ash::WALLPAPER_RESOLUTION_SMALL) { |
file_name = FilePath(file_name).InsertBeforeExtension( |
kSmallWallpaperSuffix).value(); |
} |
@@ -699,10 +689,8 @@ void WallpaperManager::LoadWallpaper(const std::string& email, |
wallpaper_path = wallpaper_dir.Append(file_name); |
if (current_wallpaper_path_ == wallpaper_path) |
return; |
- if (update_wallpaper) { |
+ if (update_wallpaper) |
current_wallpaper_path_ = wallpaper_path; |
- current_default_wallpaper_index_ = ash::GetInvalidWallpaperIndex(); |
- } |
loaded_wallpapers_++; |
StartLoad(email, info, update_wallpaper, wallpaper_path); |
} else { |
@@ -742,7 +730,7 @@ bool WallpaperManager::GetUserWallpaperInfo(const std::string& email, |
if (user_wallpapers->GetDictionaryWithoutPathExpansion( |
email, &wallpaper_info_dict)) { |
info->file = ""; |
- info->layout = ash::CENTER_CROPPED; |
+ info->layout = ash::WALLPAPER_LAYOUT_CENTER_CROPPED; |
info->type = User::UNKNOWN; |
info->date = base::Time::Now().LocalMidnight(); |
wallpaper_info_dict->GetString(kNewWallpaperFileNodeName, &(info->file)); |
@@ -816,18 +804,14 @@ void WallpaperManager::OnWallpaperDecoded(const std::string& email, |
// Updates user pref to default wallpaper. |
WallpaperInfo info = { |
"", |
- ash::CENTER_CROPPED, |
+ ash::WALLPAPER_LAYOUT_CENTER_CROPPED, |
User::DEFAULT, |
base::Time::Now().LocalMidnight() |
}; |
SetUserWallpaperInfo(email, info, true); |
- if (update_wallpaper) { |
- SetDefaultWallpaper(ash::GetDefaultWallpaperIndex()); |
- } else { |
- ash::Shell::GetInstance()->desktop_background_controller()-> |
- CacheDefaultWallpaper(ash::GetDefaultWallpaperIndex()); |
- } |
+ if (update_wallpaper) |
+ SetDefaultWallpaper(); |
return; |
} |
// Generate all reps before passing to another thread. |
@@ -898,13 +882,6 @@ void WallpaperManager::SaveCustomWallpaper(const std::string& email, |
void WallpaperManager::RecordUma(User::WallpaperType type, int index) { |
UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", type, |
User::WALLPAPER_TYPE_COUNT); |
- if (type == User::DEFAULT) { |
- if (index >= 0) { |
- // TODO(sschmitz): Remove "if" when the index for new UI is available. |
- UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.DefaultIndex", index, |
- ash::GetWallpaperCount()); |
- } |
- } |
} |
void WallpaperManager::SaveWallpaperInternal(const FilePath& path, |