| 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 ae98e2fe096912e5f3696bef700d0536290644b3..12d945cd4d46460d85e9414bae02d08b63bb00d4 100644
|
| --- a/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| +++ b/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| @@ -35,6 +35,7 @@
|
| #include "chrome/browser/chromeos/login/login_display_host_impl.h"
|
| #include "chrome/browser/chromeos/login/startup_utils.h"
|
| #include "chrome/browser/chromeos/login/user.h"
|
| +#include "chrome/browser/chromeos/login/user_image.h"
|
| #include "chrome/browser/chromeos/login/user_manager.h"
|
| #include "chrome/browser/chromeos/login/wizard_controller.h"
|
| #include "chrome/browser/chromeos/settings/cros_settings.h"
|
| @@ -82,9 +83,6 @@ const char kNewWallpaperLayoutNodeName[] = "layout";
|
| const char kNewWallpaperFileNodeName[] = "file";
|
| const char kNewWallpaperTypeNodeName[] = "type";
|
|
|
| -// File path suffix of the original custom wallpaper.
|
| -const char kOriginalCustomWallpaperSuffix[] = "_wallpaper";
|
| -
|
| // Maximum number of wallpapers cached by CacheUsersWallpapers().
|
| const int kMaxWallpapersToCache = 3;
|
|
|
| @@ -148,6 +146,63 @@ bool ShouldUseCustomizedDefaultWallpaper() {
|
| ->IsDefaultValue());
|
| }
|
|
|
| +// Deletes everything else except |path| in the same directory.
|
| +void DeleteAllExcept(const base::FilePath& path) {
|
| + base::FilePath dir = path.DirName();
|
| + if (base::DirectoryExists(dir)) {
|
| + base::FileEnumerator files(dir, false, base::FileEnumerator::FILES);
|
| + for (base::FilePath current = files.Next(); !current.empty();
|
| + current = files.Next()) {
|
| + if (current != path)
|
| + base::DeleteFile(current, false);
|
| + }
|
| + }
|
| +}
|
| +
|
| +// Deletes a list of wallpaper files in |file_list|.
|
| +void DeleteWallpaperInList(const std::vector<base::FilePath>& file_list) {
|
| + for (std::vector<base::FilePath>::const_iterator it = file_list.begin();
|
| + it != file_list.end(); ++it) {
|
| + base::FilePath path = *it;
|
| + // Some users may still have legacy wallpapers with png extension. We need
|
| + // to delete these wallpapers too.
|
| + if (!base::DeleteFile(path, true) &&
|
| + !base::DeleteFile(path.AddExtension(".png"), false)) {
|
| + LOG(ERROR) << "Failed to remove user wallpaper at " << path.value();
|
| + }
|
| + }
|
| +}
|
| +
|
| +// Creates all new custom wallpaper directories for |user_id_hash| if not exist.
|
| +void EnsureCustomWallpaperDirectories(const std::string& user_id_hash) {
|
| + base::FilePath dir;
|
| + dir = GetCustomWallpaperDir(kSmallWallpaperSubDir);
|
| + dir = dir.Append(user_id_hash);
|
| + if (!base::PathExists(dir))
|
| + base::CreateDirectory(dir);
|
| + dir = GetCustomWallpaperDir(kLargeWallpaperSubDir);
|
| + dir = dir.Append(user_id_hash);
|
| + if (!base::PathExists(dir))
|
| + base::CreateDirectory(dir);
|
| + dir = GetCustomWallpaperDir(kOriginalWallpaperSubDir);
|
| + dir = dir.Append(user_id_hash);
|
| + if (!base::PathExists(dir))
|
| + base::CreateDirectory(dir);
|
| + dir = GetCustomWallpaperDir(kThumbnailWallpaperSubDir);
|
| + dir = dir.Append(user_id_hash);
|
| + if (!base::PathExists(dir))
|
| + base::CreateDirectory(dir);
|
| +}
|
| +
|
| +// Saves wallpaper image raw |data| to |path| (absolute path) in file system.
|
| +// Returns true on success.
|
| +bool SaveWallpaperInternal(const base::FilePath& path,
|
| + const char* data,
|
| + int size) {
|
| + int written_bytes = base::WriteFile(path, data, size);
|
| + return written_bytes == size;
|
| +}
|
| +
|
| } // namespace
|
|
|
| const char kWallpaperSequenceTokenName[] = "wallpaper-sequence";
|
| @@ -275,9 +330,9 @@ WallpaperManager::PendingWallpaper::PendingWallpaper(
|
| WallpaperManager::PendingWallpaper::~PendingWallpaper() {}
|
|
|
| void WallpaperManager::PendingWallpaper::ResetSetWallpaperImage(
|
| - const gfx::ImageSkia& user_wallpaper,
|
| + const gfx::ImageSkia& image,
|
| const WallpaperInfo& info) {
|
| - SetMode(user_wallpaper, info, base::FilePath(), false);
|
| + SetMode(image, info, base::FilePath(), false);
|
| }
|
|
|
| void WallpaperManager::PendingWallpaper::ResetLoadWallpaper(
|
| @@ -296,11 +351,11 @@ void WallpaperManager::PendingWallpaper::ResetSetDefaultWallpaper() {
|
| }
|
|
|
| void WallpaperManager::PendingWallpaper::SetMode(
|
| - const gfx::ImageSkia& user_wallpaper,
|
| + const gfx::ImageSkia& image,
|
| const WallpaperInfo& info,
|
| const base::FilePath& wallpaper_path,
|
| const bool is_default) {
|
| - user_wallpaper_ = user_wallpaper;
|
| + user_wallpaper_ = image;
|
| info_ = info;
|
| wallpaper_path_ = wallpaper_path;
|
| default_ = is_default;
|
| @@ -519,14 +574,6 @@ base::FilePath WallpaperManager::GetCustomWallpaperPath(
|
| return custom_wallpaper_path.Append(user_id_hash).Append(file);
|
| }
|
|
|
| -base::FilePath WallpaperManager::GetOriginalWallpaperPathForUser(
|
| - const std::string& user_id) {
|
| - std::string filename = user_id + kOriginalCustomWallpaperSuffix;
|
| - base::FilePath user_data_dir;
|
| - PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
|
| - return user_data_dir.AppendASCII(filename);
|
| -}
|
| -
|
| bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| @@ -535,6 +582,8 @@ bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) {
|
| info->layout = current_user_wallpaper_info_.layout =
|
| ash::WALLPAPER_LAYOUT_CENTER_CROPPED;
|
| info->type = current_user_wallpaper_info_.type = User::DEFAULT;
|
| + info->date = current_user_wallpaper_info_.date =
|
| + base::Time::Now().LocalMidnight();
|
| return true;
|
| }
|
|
|
| @@ -638,17 +687,16 @@ void WallpaperManager::RemoveUserWallpaperInfo(const std::string& user_id) {
|
| DeleteUserWallpapers(user_id, info.file);
|
| }
|
|
|
| -bool WallpaperManager::ResizeWallpaper(
|
| - const UserImage& wallpaper,
|
| - ash::WallpaperLayout layout,
|
| - int preferred_width,
|
| - int preferred_height,
|
| - scoped_refptr<base::RefCountedBytes>* output,
|
| - gfx::ImageSkia* output_skia) const {
|
| - DCHECK(BrowserThread::GetBlockingPool()->
|
| - IsRunningSequenceOnCurrentThread(sequence_token_));
|
| - int width = wallpaper.image().width();
|
| - int height = wallpaper.image().height();
|
| +// static
|
| +bool WallpaperManager::ResizeImage(const gfx::ImageSkia& image,
|
| + ash::WallpaperLayout layout,
|
| + int preferred_width,
|
| + int preferred_height,
|
| + scoped_refptr<base::RefCountedBytes>* output,
|
| + gfx::ImageSkia* output_skia) {
|
| + DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + int width = image.width();
|
| + int height = image.height();
|
| int resized_width;
|
| int resized_height;
|
| *output = new base::RefCountedBytes();
|
| @@ -678,19 +726,20 @@ bool WallpaperManager::ResizeWallpaper(
|
| }
|
|
|
| gfx::ImageSkia resized_image = gfx::ImageSkiaOperations::CreateResizedImage(
|
| - wallpaper.image(),
|
| + image,
|
| skia::ImageOperations::RESIZE_LANCZOS3,
|
| gfx::Size(resized_width, resized_height));
|
|
|
| - SkBitmap image = *(resized_image.bitmap());
|
| - SkAutoLockPixels lock_input(image);
|
| + SkBitmap bitmap = *(resized_image.bitmap());
|
| + SkAutoLockPixels lock_input(bitmap);
|
| gfx::JPEGCodec::Encode(
|
| - reinterpret_cast<unsigned char*>(image.getAddr32(0, 0)),
|
| + reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)),
|
| gfx::JPEGCodec::FORMAT_SkBitmap,
|
| - image.width(),
|
| - image.height(),
|
| - image.width() * image.bytesPerPixel(),
|
| - kDefaultEncodingQuality, &(*output)->data());
|
| + bitmap.width(),
|
| + bitmap.height(),
|
| + bitmap.width() * bitmap.bytesPerPixel(),
|
| + kDefaultEncodingQuality,
|
| + &(*output)->data());
|
|
|
| if (output_skia) {
|
| resized_image.MakeThreadSafe();
|
| @@ -700,13 +749,13 @@ bool WallpaperManager::ResizeWallpaper(
|
| return true;
|
| }
|
|
|
| -bool WallpaperManager::ResizeAndSaveWallpaper(
|
| - const UserImage& wallpaper,
|
| - const base::FilePath& path,
|
| - ash::WallpaperLayout layout,
|
| - int preferred_width,
|
| - int preferred_height,
|
| - gfx::ImageSkia* result_out) const {
|
| +// static
|
| +bool WallpaperManager::ResizeAndSaveWallpaper(const gfx::ImageSkia& image,
|
| + const base::FilePath& path,
|
| + ash::WallpaperLayout layout,
|
| + int preferred_width,
|
| + int preferred_height,
|
| + gfx::ImageSkia* output_skia) {
|
| if (layout == ash::WALLPAPER_LAYOUT_CENTER) {
|
| // TODO(bshe): Generates cropped custom wallpaper for CENTER layout.
|
| if (base::PathExists(path))
|
| @@ -714,12 +763,12 @@ bool WallpaperManager::ResizeAndSaveWallpaper(
|
| return false;
|
| }
|
| scoped_refptr<base::RefCountedBytes> data;
|
| - if (ResizeWallpaper(wallpaper,
|
| - layout,
|
| - preferred_width,
|
| - preferred_height,
|
| - &data,
|
| - result_out)) {
|
| + if (ResizeImage(image,
|
| + layout,
|
| + preferred_width,
|
| + preferred_height,
|
| + &data,
|
| + output_skia)) {
|
| return SaveWallpaperInternal(
|
| path, reinterpret_cast<const char*>(data->front()), data->size());
|
| }
|
| @@ -778,7 +827,7 @@ WallpaperManager::GetAppropriateResolution() {
|
|
|
| void WallpaperManager::SetPolicyControlledWallpaper(
|
| const std::string& user_id,
|
| - const UserImage& wallpaper) {
|
| + const UserImage& user_image) {
|
| const User *user = chromeos::UserManager::Get()->FindUser(user_id);
|
| if (!user) {
|
| NOTREACHED() << "Unknown user.";
|
| @@ -789,7 +838,7 @@ void WallpaperManager::SetPolicyControlledWallpaper(
|
| "policy-controlled.jpeg",
|
| ash::WALLPAPER_LAYOUT_CENTER_CROPPED,
|
| User::POLICY,
|
| - wallpaper,
|
| + user_image.image(),
|
| true /* update wallpaper */);
|
| }
|
|
|
| @@ -798,7 +847,7 @@ void WallpaperManager::SetCustomWallpaper(const std::string& user_id,
|
| const std::string& file,
|
| ash::WallpaperLayout layout,
|
| User::WallpaperType type,
|
| - const UserImage& wallpaper,
|
| + const gfx::ImageSkia& image,
|
| bool update_wallpaper) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| DCHECK(UserManager::Get()->IsUserLoggedIn());
|
| @@ -816,7 +865,7 @@ void WallpaperManager::SetCustomWallpaper(const std::string& user_id,
|
|
|
| // If decoded wallpaper is empty, we have probably failed to decode the file.
|
| // Use default wallpaper in this case.
|
| - if (wallpaper.image().isNull()) {
|
| + if (image.isNull()) {
|
| SetDefaultWallpaperDelayed(user_id);
|
| return;
|
| }
|
| @@ -824,9 +873,6 @@ void WallpaperManager::SetCustomWallpaper(const std::string& user_id,
|
| bool is_persistent =
|
| !UserManager::Get()->IsUserNonCryptohomeDataEphemeral(user_id);
|
|
|
| - wallpaper.image().EnsureRepsForSupportedScales();
|
| - scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper.image().DeepCopy());
|
| -
|
| WallpaperInfo wallpaper_info = {
|
| wallpaper_path.value(),
|
| layout,
|
| @@ -834,21 +880,25 @@ void WallpaperManager::SetCustomWallpaper(const std::string& user_id,
|
| // Date field is not used.
|
| base::Time::Now().LocalMidnight()
|
| };
|
| - // Block shutdown on this task. Otherwise, we may lose the custom wallpaper
|
| - // that the user selected.
|
| - scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
|
| - BrowserThread::GetBlockingPool()->
|
| - GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_,
|
| - base::SequencedWorkerPool::BLOCK_SHUTDOWN);
|
| - // TODO(bshe): This may break if RawImage becomes RefCountedMemory.
|
| - blocking_task_runner->PostTask(FROM_HERE,
|
| - base::Bind(&WallpaperManager::ProcessCustomWallpaper,
|
| - base::Unretained(this),
|
| - user_id_hash,
|
| - is_persistent,
|
| - wallpaper_info,
|
| - base::Passed(&deep_copy),
|
| - wallpaper.raw_image()));
|
| + if (is_persistent) {
|
| + image.EnsureRepsForSupportedScales();
|
| + scoped_ptr<gfx::ImageSkia> deep_copy(image.DeepCopy());
|
| + // Block shutdown on this task. Otherwise, we may lose the custom wallpaper
|
| + // that the user selected.
|
| + scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
|
| + BrowserThread::GetBlockingPool()
|
| + ->GetSequencedTaskRunnerWithShutdownBehavior(
|
| + sequence_token_, base::SequencedWorkerPool::BLOCK_SHUTDOWN);
|
| + // TODO(bshe): This may break if RawImage becomes RefCountedMemory.
|
| + blocking_task_runner->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&WallpaperManager::SaveCustomWallpaper,
|
| + base::Unretained(this),
|
| + user_id_hash,
|
| + base::FilePath(wallpaper_info.file),
|
| + wallpaper_info.layout,
|
| + base::Passed(deep_copy.Pass())));
|
| + }
|
|
|
| std::string relative_path = base::FilePath(user_id_hash).Append(file).value();
|
| // User's custom wallpaper path is determined by relative path and the
|
| @@ -861,12 +911,11 @@ void WallpaperManager::SetCustomWallpaper(const std::string& user_id,
|
| };
|
| SetUserWallpaperInfo(user_id, info, is_persistent);
|
| if (update_wallpaper) {
|
| - GetPendingWallpaper(user_id, false)
|
| - ->ResetSetWallpaperImage(wallpaper.image(), info);
|
| + GetPendingWallpaper(user_id, false)->ResetSetWallpaperImage(image, info);
|
| }
|
|
|
| if (UserManager::IsMultipleProfilesAllowed())
|
| - wallpaper_cache_[user_id] = wallpaper.image();
|
| + wallpaper_cache_[user_id] = image;
|
| }
|
|
|
| void WallpaperManager::SetDefaultWallpaperNow(const std::string& user_id) {
|
| @@ -961,11 +1010,6 @@ void WallpaperManager::SetUserWallpaperInfo(const std::string& user_id,
|
| wallpaper_update->SetWithoutPathExpansion(user_id, wallpaper_info_dict);
|
| }
|
|
|
| -void WallpaperManager::SetLastSelectedUser(
|
| - const std::string& last_selected_user) {
|
| - last_selected_user_ = last_selected_user;
|
| -}
|
| -
|
| void WallpaperManager::SetUserWallpaperDelayed(const std::string& user_id) {
|
| ScheduleSetUserWallpaper(user_id, true);
|
| }
|
| @@ -995,7 +1039,7 @@ void WallpaperManager::ScheduleSetUserWallpaper(const std::string& user_id,
|
| if (!UserManager::Get()->IsKnownUser(user_id))
|
| return;
|
|
|
| - SetLastSelectedUser(user_id);
|
| + last_selected_user_ = user_id;
|
|
|
| WallpaperInfo info;
|
|
|
| @@ -1041,11 +1085,10 @@ void WallpaperManager::ScheduleSetUserWallpaper(const std::string& user_id,
|
| }
|
| }
|
|
|
| -void WallpaperManager::SetWallpaperFromImageSkia(
|
| - const std::string& user_id,
|
| - const gfx::ImageSkia& wallpaper,
|
| - ash::WallpaperLayout layout,
|
| - bool update_wallpaper) {
|
| +void WallpaperManager::SetWallpaperFromImageSkia(const std::string& user_id,
|
| + const gfx::ImageSkia& image,
|
| + ash::WallpaperLayout layout,
|
| + bool update_wallpaper) {
|
| DCHECK(UserManager::Get()->IsUserLoggedIn());
|
|
|
| // There is no visible background in kiosk mode.
|
| @@ -1054,11 +1097,11 @@ void WallpaperManager::SetWallpaperFromImageSkia(
|
| WallpaperInfo info;
|
| info.layout = layout;
|
| if (UserManager::IsMultipleProfilesAllowed())
|
| - wallpaper_cache_[user_id] = wallpaper;
|
| + wallpaper_cache_[user_id] = image;
|
|
|
| if (update_wallpaper) {
|
| GetPendingWallpaper(last_selected_user_, false /* Not delayed */)
|
| - ->ResetSetWallpaperImage(wallpaper, info);
|
| + ->ResetSetWallpaperImage(image, info);
|
| }
|
| }
|
|
|
| @@ -1108,11 +1151,11 @@ void WallpaperManager::NotifyAnimationFinished() {
|
| // WallpaperManager, private: --------------------------------------------------
|
|
|
| bool WallpaperManager::GetWallpaperFromCache(const std::string& user_id,
|
| - gfx::ImageSkia* wallpaper) {
|
| + gfx::ImageSkia* image) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| CustomWallpaperMap::const_iterator it = wallpaper_cache_.find(user_id);
|
| if (it != wallpaper_cache_.end()) {
|
| - *wallpaper = (*it).second;
|
| + *image = (*it).second;
|
| return true;
|
| }
|
| return false;
|
| @@ -1173,32 +1216,6 @@ void WallpaperManager::ClearObsoleteWallpaperPrefs() {
|
| wallpapers_pref->Clear();
|
| }
|
|
|
| -void WallpaperManager::DeleteAllExcept(const base::FilePath& path) {
|
| - base::FilePath dir = path.DirName();
|
| - if (base::DirectoryExists(dir)) {
|
| - base::FileEnumerator files(dir, false, base::FileEnumerator::FILES);
|
| - for (base::FilePath current = files.Next(); !current.empty();
|
| - current = files.Next()) {
|
| - if (current != path)
|
| - base::DeleteFile(current, false);
|
| - }
|
| - }
|
| -}
|
| -
|
| -void WallpaperManager::DeleteWallpaperInList(
|
| - const std::vector<base::FilePath>& file_list) {
|
| - for (std::vector<base::FilePath>::const_iterator it = file_list.begin();
|
| - it != file_list.end(); ++it) {
|
| - base::FilePath path = *it;
|
| - // Some users may still have legacy wallpapers with png extension. We need
|
| - // to delete these wallpapers too.
|
| - if (!base::DeleteFile(path, true) &&
|
| - !base::DeleteFile(path.AddExtension(".png"), false)) {
|
| - LOG(ERROR) << "Failed to remove user wallpaper at " << path.value();
|
| - }
|
| - }
|
| -}
|
| -
|
| void WallpaperManager::DeleteUserWallpapers(const std::string& user_id,
|
| const std::string& path_to_file) {
|
| std::vector<base::FilePath> file_to_remove;
|
| @@ -1230,33 +1247,10 @@ void WallpaperManager::DeleteUserWallpapers(const std::string& user_id,
|
|
|
| base::WorkerPool::PostTask(
|
| FROM_HERE,
|
| - base::Bind(&WallpaperManager::DeleteWallpaperInList,
|
| - base::Unretained(this),
|
| - file_to_remove),
|
| + base::Bind(&DeleteWallpaperInList, file_to_remove),
|
| false);
|
| }
|
|
|
| -void WallpaperManager::EnsureCustomWallpaperDirectories(
|
| - const std::string& user_id_hash) {
|
| - base::FilePath dir;
|
| - dir = GetCustomWallpaperDir(kSmallWallpaperSubDir);
|
| - dir = dir.Append(user_id_hash);
|
| - if (!base::PathExists(dir))
|
| - base::CreateDirectory(dir);
|
| - dir = GetCustomWallpaperDir(kLargeWallpaperSubDir);
|
| - dir = dir.Append(user_id_hash);
|
| - if (!base::PathExists(dir))
|
| - base::CreateDirectory(dir);
|
| - dir = GetCustomWallpaperDir(kOriginalWallpaperSubDir);
|
| - dir = dir.Append(user_id_hash);
|
| - if (!base::PathExists(dir))
|
| - base::CreateDirectory(dir);
|
| - dir = GetCustomWallpaperDir(kThumbnailWallpaperSubDir);
|
| - dir = dir.Append(user_id_hash);
|
| - if (!base::PathExists(dir))
|
| - base::CreateDirectory(dir);
|
| -}
|
| -
|
| void WallpaperManager::SetCommandLineForTesting(
|
| base::CommandLine* command_line) {
|
| command_line_for_testing_ = command_line;
|
| @@ -1487,13 +1481,13 @@ void WallpaperManager::OnWallpaperDecoded(
|
| ash::WallpaperLayout layout,
|
| bool update_wallpaper,
|
| MovableOnDestroyCallbackHolder on_finish,
|
| - const UserImage& wallpaper) {
|
| + const UserImage& user_image) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| TRACE_EVENT_ASYNC_END0("ui", "LoadAndDecodeWallpaper", this);
|
|
|
| // If decoded wallpaper is empty, we have probably failed to decode the file.
|
| // Use default wallpaper in this case.
|
| - if (wallpaper.image().isNull()) {
|
| + if (user_image.image().isNull()) {
|
| // Updates user pref to default wallpaper.
|
| WallpaperInfo info = {
|
| "",
|
| @@ -1511,35 +1505,21 @@ void WallpaperManager::OnWallpaperDecoded(
|
| // Only cache the user wallpaper at login screen and for multi profile users.
|
| if (!UserManager::Get()->IsUserLoggedIn() ||
|
| UserManager::IsMultipleProfilesAllowed()) {
|
| - wallpaper_cache_[user_id] = wallpaper.image();
|
| + wallpaper_cache_[user_id] = user_image.image();
|
| }
|
|
|
| if (update_wallpaper) {
|
| ash::Shell::GetInstance()
|
| ->desktop_background_controller()
|
| - ->SetWallpaperImage(wallpaper.image(), layout);
|
| + ->SetWallpaperImage(user_image.image(), layout);
|
| }
|
| }
|
|
|
| -void WallpaperManager::ProcessCustomWallpaper(
|
| +void WallpaperManager::SaveCustomWallpaper(
|
| const std::string& user_id_hash,
|
| - bool persistent,
|
| - const WallpaperInfo& info,
|
| - scoped_ptr<gfx::ImageSkia> image,
|
| - const UserImage::RawImage& raw_image) {
|
| - DCHECK(BrowserThread::GetBlockingPool()->
|
| - IsRunningSequenceOnCurrentThread(sequence_token_));
|
| - UserImage wallpaper(*image.get(), raw_image);
|
| - if (persistent) {
|
| - SaveCustomWallpaper(user_id_hash, base::FilePath(info.file), info.layout,
|
| - wallpaper);
|
| - }
|
| -}
|
| -
|
| -void WallpaperManager::SaveCustomWallpaper(const std::string& user_id_hash,
|
| - const base::FilePath& original_path,
|
| - ash::WallpaperLayout layout,
|
| - const UserImage& wallpaper) {
|
| + const base::FilePath& original_path,
|
| + ash::WallpaperLayout layout,
|
| + scoped_ptr<gfx::ImageSkia> image) const {
|
| DCHECK(BrowserThread::GetBlockingPool()->
|
| IsRunningSequenceOnCurrentThread(sequence_token_));
|
| EnsureCustomWallpaperDirectories(user_id_hash);
|
| @@ -1552,22 +1532,22 @@ void WallpaperManager::SaveCustomWallpaper(const std::string& user_id_hash,
|
| // Re-encode orginal file to jpeg format and saves the result in case that
|
| // resized wallpaper is not generated (i.e. chrome shutdown before resized
|
| // wallpaper is saved).
|
| - ResizeAndSaveWallpaper(wallpaper,
|
| + ResizeAndSaveWallpaper(*image,
|
| original_path,
|
| ash::WALLPAPER_LAYOUT_STRETCH,
|
| - wallpaper.image().width(),
|
| - wallpaper.image().height(),
|
| + image->width(),
|
| + image->height(),
|
| NULL);
|
| DeleteAllExcept(original_path);
|
|
|
| - ResizeAndSaveWallpaper(wallpaper,
|
| + ResizeAndSaveWallpaper(*image,
|
| small_wallpaper_path,
|
| layout,
|
| kSmallWallpaperMaxWidth,
|
| kSmallWallpaperMaxHeight,
|
| NULL);
|
| DeleteAllExcept(small_wallpaper_path);
|
| - ResizeAndSaveWallpaper(wallpaper,
|
| + ResizeAndSaveWallpaper(*image,
|
| large_wallpaper_path,
|
| layout,
|
| kLargeWallpaperMaxWidth,
|
| @@ -1581,13 +1561,6 @@ void WallpaperManager::RecordUma(User::WallpaperType type, int index) const {
|
| User::WALLPAPER_TYPE_COUNT);
|
| }
|
|
|
| -bool WallpaperManager::SaveWallpaperInternal(const base::FilePath& path,
|
| - const char* data,
|
| - int size) const {
|
| - int written_bytes = base::WriteFile(path, data, size);
|
| - return written_bytes == size;
|
| -}
|
| -
|
| void WallpaperManager::StartLoad(const std::string& user_id,
|
| const WallpaperInfo& info,
|
| bool update_wallpaper,
|
| @@ -1726,18 +1699,17 @@ void WallpaperManager::ResizeCustomizedDefaultWallpaper(
|
| gfx::ImageSkia* large_wallpaper_image) {
|
| DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread(
|
| sequence_token_));
|
| - UserImage wallpaper(*image.get(), raw_image);
|
|
|
| *success = true;
|
|
|
| - *success &= ResizeAndSaveWallpaper(wallpaper,
|
| + *success &= ResizeAndSaveWallpaper(*image,
|
| rescaled_files->path_rescaled_small(),
|
| ash::WALLPAPER_LAYOUT_STRETCH,
|
| kSmallWallpaperMaxWidth,
|
| kSmallWallpaperMaxHeight,
|
| small_wallpaper_image);
|
|
|
| - *success &= ResizeAndSaveWallpaper(wallpaper,
|
| + *success &= ResizeAndSaveWallpaper(*image,
|
| rescaled_files->path_rescaled_large(),
|
| ash::WALLPAPER_LAYOUT_STRETCH,
|
| kLargeWallpaperMaxWidth,
|
| @@ -1834,10 +1806,10 @@ void WallpaperManager::OnDefaultWallpaperDecoded(
|
| const ash::WallpaperLayout layout,
|
| scoped_ptr<chromeos::UserImage>* result_out,
|
| MovableOnDestroyCallbackHolder on_finish,
|
| - const UserImage& wallpaper) {
|
| - result_out->reset(new UserImage(wallpaper));
|
| + const UserImage& user_image) {
|
| + result_out->reset(new UserImage(user_image));
|
| ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage(
|
| - wallpaper.image(), layout);
|
| + user_image.image(), layout);
|
| }
|
|
|
| void WallpaperManager::StartLoadAndSetDefaultWallpaper(
|
|
|