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

Unified Diff: chrome/browser/chromeos/login/users/avatar/user_image_loader.h

Issue 931993002: Make image_decoder a Leaky LazyInstance (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a few comments Created 5 years, 9 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
Index: chrome/browser/chromeos/login/users/avatar/user_image_loader.h
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_loader.h b/chrome/browser/chromeos/login/users/avatar/user_image_loader.h
index 10c7be458e2e89630835d0ca95f05666b40e3a52..ebaab5b42a8ba7941132cadb2b55d436e2f48da9 100644
--- a/chrome/browser/chromeos/login/users/avatar/user_image_loader.h
+++ b/chrome/browser/chromeos/login/users/avatar/user_image_loader.h
@@ -5,7 +5,6 @@
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_AVATAR_USER_IMAGE_LOADER_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_AVATAR_USER_IMAGE_LOADER_H_
-#include <map>
#include <string>
#include "base/callback.h"
@@ -27,8 +26,7 @@ namespace chromeos {
// Helper that reads, decodes and optionally resizes an image on a background
// thread. Returns the image in the form of an SkBitmap.
-class UserImageLoader : public base::RefCountedThreadSafe<UserImageLoader>,
- public ImageDecoder::Delegate {
+class UserImageLoader : public base::RefCountedThreadSafe<UserImageLoader> {
public:
// Callback used to return the result of an image load operation.
typedef base::Callback<void(const user_manager::UserImage& user_image)>
@@ -67,9 +65,26 @@ class UserImageLoader : public base::RefCountedThreadSafe<UserImageLoader>,
const LoadedCallback loaded_cb;
};
- typedef std::map<const ImageDecoder*, ImageInfo> ImageInfoMap;
+ class UserImageRequest : public ImageDecoder::ImageRequest {
+ public:
+ UserImageRequest(const ImageInfo& image_info,
+ const std::string& image_data,
+ UserImageLoader* user_image_loader);
- ~UserImageLoader() override;
+ // ImageDecoder::ImageRequest implementation. These callbacks will only be
+ // invoked via user_image_loader_'s background_task_runner_.
+ void OnImageDecoded(const SkBitmap& decoded_image) override;
+ void OnDecodeImageFailed() override;
+
+ private:
+ ~UserImageRequest() override;
+
+ const ImageInfo image_info_;
+ std::vector<unsigned char> image_data_;
+ UserImageLoader* user_image_loader_;
+ };
+
+ ~UserImageLoader();
// Reads the image from |image_info.file_path| and starts the decoding
// process. This method may only be invoked via the |background_task_runner_|.
@@ -80,12 +95,6 @@ class UserImageLoader : public base::RefCountedThreadSafe<UserImageLoader>,
void DecodeImage(const scoped_ptr<std::string> data,
const ImageInfo& image_info);
- // ImageDecoder::Delegate implementation. These callbacks will only be invoked
- // via the |background_task_runner_|.
- void OnImageDecoded(const ImageDecoder* decoder,
- const SkBitmap& decoded_image) override;
- void OnDecodeImageFailed(const ImageDecoder* decoder) override;
-
// The foreground task runner on which |this| is instantiated, Start() is
// called and LoadedCallbacks are invoked.
scoped_refptr<base::SequencedTaskRunner> foreground_task_runner_;
@@ -97,10 +106,6 @@ class UserImageLoader : public base::RefCountedThreadSafe<UserImageLoader>,
// Specify how the file should be decoded in the utility process.
const ImageDecoder::ImageCodec image_codec_;
- // Holds information about the images currently being decoded. Accessed via
- // |background_task_runner_| only.
- ImageInfoMap image_info_map_;
-
DISALLOW_COPY_AND_ASSIGN(UserImageLoader);
};

Powered by Google App Engine
This is Rietveld 408576698