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

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

Issue 322233002: Remove more unretained (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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/users/wallpaper/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/users/wallpaper/wallpaper_manager.cc
diff --git a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc
index 6b1bd991b00819aadb3266a2b37dcbc1ddf60af5..49be4f9314496ed063e9f6cf72291bba23d761ae 100644
--- a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc
+++ b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc
@@ -173,6 +173,7 @@ void DeleteWallpaperInList(const std::vector<base::FilePath>& file_list) {
}
// Creates all new custom wallpaper directories for |user_id_hash| if not exist.
+// static
void EnsureCustomWallpaperDirectories(const std::string& user_id_hash) {
base::FilePath dir;
dir = GetCustomWallpaperDir(kSmallWallpaperSubDir);
@@ -397,12 +398,12 @@ void WallpaperManager::PendingWallpaper::ProcessRequest() {
manager->task_runner_->PostTask(
FROM_HERE,
base::Bind(&WallpaperManager::GetCustomWallpaperInternal,
- base::Unretained(manager),
user_id_,
info_,
wallpaper_path_,
true /* update wallpaper */,
- base::Passed(on_finish_.Pass())));
+ base::Passed(on_finish_.Pass()),
+ manager->weak_factory_.GetWeakPtr()));
} else if (!info_.file.empty()) {
manager->LoadWallpaper(user_id_, info_, true, on_finish_.Pass());
} else {
@@ -526,7 +527,7 @@ void WallpaperManager::AddObservers() {
CrosSettings::Get()->AddSettingsObserver(
kAccountsPrefShowUserNamesOnSignIn,
base::Bind(&WallpaperManager::InitializeRegisteredDeviceWallpaper,
- base::Unretained(this)));
+ weak_factory_.GetWeakPtr()));
}
void WallpaperManager::EnsureLoggedInUserWallpaperLoaded() {
@@ -569,14 +570,6 @@ void WallpaperManager::ClearDisposableWallpaperCache() {
wallpaper_cache_ = logged_in_users_cache;
}
-base::FilePath WallpaperManager::GetCustomWallpaperPath(
- const char* sub_dir,
- const std::string& user_id_hash,
- const std::string& file) const {
- base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir);
- return custom_wallpaper_path.Append(user_id_hash).Append(file);
-}
-
bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
@@ -828,6 +821,60 @@ WallpaperManager::GetAppropriateResolution() {
: WALLPAPER_RESOLUTION_SMALL;
}
+// static
+base::FilePath WallpaperManager::GetCustomWallpaperPath(
+ const char* sub_dir,
+ const std::string& user_id_hash,
+ const std::string& file) {
+ base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir);
+ return custom_wallpaper_path.Append(user_id_hash).Append(file);
+}
+
+// static
+void WallpaperManager::RecordUma(User::WallpaperType type, int index) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "Ash.Wallpaper.Type", type, User::WALLPAPER_TYPE_COUNT);
+}
+
+// static
+void WallpaperManager::SaveCustomWallpaper(const std::string& user_id_hash,
+ const base::FilePath& original_path,
+ ash::WallpaperLayout layout,
+ scoped_ptr<gfx::ImageSkia> image) {
+ EnsureCustomWallpaperDirectories(user_id_hash);
+ std::string file_name = original_path.BaseName().value();
+ base::FilePath small_wallpaper_path =
+ GetCustomWallpaperPath(kSmallWallpaperSubDir, user_id_hash, file_name);
+ base::FilePath large_wallpaper_path =
+ GetCustomWallpaperPath(kLargeWallpaperSubDir, user_id_hash, file_name);
+
+ // 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(*image,
+ original_path,
+ ash::WALLPAPER_LAYOUT_STRETCH,
+ image->width(),
+ image->height(),
+ NULL);
+ DeleteAllExcept(original_path);
+
+ ResizeAndSaveWallpaper(*image,
+ small_wallpaper_path,
+ layout,
+ kSmallWallpaperMaxWidth,
+ kSmallWallpaperMaxHeight,
+ NULL);
+ DeleteAllExcept(small_wallpaper_path);
+ ResizeAndSaveWallpaper(*image,
+ large_wallpaper_path,
+ layout,
+ kLargeWallpaperMaxWidth,
+ kLargeWallpaperMaxHeight,
+ NULL);
+ DeleteAllExcept(large_wallpaper_path);
+}
+
void WallpaperManager::SetPolicyControlledWallpaper(
const std::string& user_id,
const UserImage& user_image) {
@@ -896,7 +943,6 @@ void WallpaperManager::SetCustomWallpaper(const std::string& user_id,
blocking_task_runner->PostTask(
FROM_HERE,
base::Bind(&WallpaperManager::SaveCustomWallpaper,
- base::Unretained(this),
user_id_hash,
base::FilePath(wallpaper_info.file),
wallpaper_info.layout,
@@ -1181,12 +1227,12 @@ void WallpaperManager::CacheUserWallpaper(const std::string& user_id) {
task_runner_->PostTask(
FROM_HERE,
base::Bind(&WallpaperManager::GetCustomWallpaperInternal,
- base::Unretained(this),
user_id,
info,
wallpaper_path,
false /* do not update wallpaper */,
- base::Passed(MovableOnDestroyCallbackHolder())));
+ base::Passed(MovableOnDestroyCallbackHolder()),
+ weak_factory_.GetWeakPtr()));
return;
}
LoadWallpaper(user_id,
@@ -1389,9 +1435,12 @@ bool WallpaperManager::GetUserWallpaperInfo(const std::string& user_id,
void WallpaperManager::MoveCustomWallpapersOnWorker(
const std::string& user_id,
- const std::string& user_id_hash) {
+ const std::string& user_id_hash,
+ base::WeakPtr<WallpaperManager> weak_ptr) {
+ /*
DCHECK(BrowserThread::GetBlockingPool()->
IsRunningSequenceOnCurrentThread(sequence_token_));
+ */
if (MoveCustomWallpaperDirectory(
kOriginalWallpaperSubDir, user_id, user_id_hash)) {
// Consider success if the original wallpaper is moved to the new directory.
@@ -1401,7 +1450,7 @@ void WallpaperManager::MoveCustomWallpapersOnWorker(
BrowserThread::UI,
FROM_HERE,
base::Bind(&WallpaperManager::MoveCustomWallpapersSuccess,
- base::Unretained(this),
+ weak_ptr,
user_id,
user_id_hash));
}
@@ -1433,9 +1482,9 @@ void WallpaperManager::MoveLoggedInUserCustomWallpaper() {
task_runner_->PostTask(
FROM_HERE,
base::Bind(&WallpaperManager::MoveCustomWallpapersOnWorker,
- base::Unretained(this),
logged_in_user->email(),
- logged_in_user->username_hash()));
+ logged_in_user->username_hash(),
+ weak_factory_.GetWeakPtr()));
}
void WallpaperManager::GetCustomWallpaperInternal(
@@ -1443,9 +1492,12 @@ void WallpaperManager::GetCustomWallpaperInternal(
const WallpaperInfo& info,
const base::FilePath& wallpaper_path,
bool update_wallpaper,
- MovableOnDestroyCallbackHolder on_finish) {
+ MovableOnDestroyCallbackHolder on_finish,
+ base::WeakPtr<WallpaperManager> weak_ptr) {
+ /*
DCHECK(BrowserThread::GetBlockingPool()->
IsRunningSequenceOnCurrentThread(sequence_token_));
+ */
base::FilePath valid_path = wallpaper_path;
if (!base::PathExists(wallpaper_path)) {
@@ -1469,14 +1521,14 @@ void WallpaperManager::GetCustomWallpaperInternal(
BrowserThread::PostTask(BrowserThread::UI,
FROM_HERE,
base::Bind(&WallpaperManager::DoSetDefaultWallpaper,
- base::Unretained(this),
+ weak_ptr,
user_id,
base::Passed(on_finish.Pass())));
} else {
BrowserThread::PostTask(BrowserThread::UI,
FROM_HERE,
base::Bind(&WallpaperManager::StartLoad,
- base::Unretained(this),
+ weak_ptr,
user_id,
info,
update_wallpaper,
@@ -1520,52 +1572,6 @@ void WallpaperManager::OnWallpaperDecoded(
}
}
-void WallpaperManager::SaveCustomWallpaper(
- const std::string& user_id_hash,
- const base::FilePath& original_path,
- ash::WallpaperLayout layout,
- scoped_ptr<gfx::ImageSkia> image) const {
- DCHECK(BrowserThread::GetBlockingPool()->
- IsRunningSequenceOnCurrentThread(sequence_token_));
- EnsureCustomWallpaperDirectories(user_id_hash);
- std::string file_name = original_path.BaseName().value();
- base::FilePath small_wallpaper_path =
- GetCustomWallpaperPath(kSmallWallpaperSubDir, user_id_hash, file_name);
- base::FilePath large_wallpaper_path =
- GetCustomWallpaperPath(kLargeWallpaperSubDir, user_id_hash, file_name);
-
- // 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(*image,
- original_path,
- ash::WALLPAPER_LAYOUT_STRETCH,
- image->width(),
- image->height(),
- NULL);
- DeleteAllExcept(original_path);
-
- ResizeAndSaveWallpaper(*image,
- small_wallpaper_path,
- layout,
- kSmallWallpaperMaxWidth,
- kSmallWallpaperMaxHeight,
- NULL);
- DeleteAllExcept(small_wallpaper_path);
- ResizeAndSaveWallpaper(*image,
- large_wallpaper_path,
- layout,
- kLargeWallpaperMaxWidth,
- kLargeWallpaperMaxHeight,
- NULL);
- DeleteAllExcept(large_wallpaper_path);
-}
-
-void WallpaperManager::RecordUma(User::WallpaperType type, int index) const {
- UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", type,
- User::WALLPAPER_TYPE_COUNT);
-}
-
void WallpaperManager::StartLoad(const std::string& user_id,
const WallpaperInfo& info,
bool update_wallpaper,
@@ -1577,7 +1583,7 @@ void WallpaperManager::StartLoad(const std::string& user_id,
wallpaper_loader_->Start(wallpaper_path.value(),
0, // Do not crop.
base::Bind(&WallpaperManager::OnWallpaperDecoded,
- base::Unretained(this),
+ weak_factory_.GetWeakPtr(),
user_id,
info.layout,
update_wallpaper,
@@ -1673,7 +1679,6 @@ void WallpaperManager::OnCustomizedDefaultWallpaperDecoded(
// TODO(bshe): This may break if RawImage becomes RefCountedMemory.
base::Closure resize_closure =
base::Bind(&WallpaperManager::ResizeCustomizedDefaultWallpaper,
- base::Unretained(this),
base::Passed(&deep_copy),
wallpaper.raw_image(),
base::Unretained(rescaled_files.get()),
@@ -1702,9 +1707,6 @@ void WallpaperManager::ResizeCustomizedDefaultWallpaper(
bool* success,
gfx::ImageSkia* small_wallpaper_image,
gfx::ImageSkia* large_wallpaper_image) {
- DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread(
- sequence_token_));
-
*success = true;
*success &= ResizeAndSaveWallpaper(*image,
« no previous file with comments | « chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698