Chromium Code Reviews| Index: chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
| diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
| index af29edac943f459ecd0bcea887a279dc0328157e..c654c3394ac8d88eb3b9a9c83f7f09e039a3e3d9 100644 |
| --- a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
| +++ b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
| @@ -191,7 +191,7 @@ class KioskAppData::CrxLoader : public extensions::SandboxedUnpackerClient { |
| // KioskAppData::IconLoader |
| // Loads locally stored icon data and decode it. |
| -class KioskAppData::IconLoader : public ImageDecoder::Delegate { |
| +class KioskAppData::IconLoader { |
| public: |
| enum LoadResult { |
| SUCCESS, |
| @@ -219,7 +219,30 @@ class KioskAppData::IconLoader : public ImageDecoder::Delegate { |
| private: |
| friend class base::RefCountedThreadSafe<IconLoader>; |
| - ~IconLoader() override {} |
| + ~IconLoader() {} |
| + |
| + class IconImageRequest : public ImageDecoder::ImageRequest { |
| + public: |
| + IconImageRequest(const scoped_refptr<base::SequencedTaskRunner>& t, |
|
dcheng
2015/03/23 11:52:08
FWIW, some reviewers might prefer this be named a
Theresa
2015/03/23 17:33:09
Done.
|
| + IconLoader* icon_loader) |
| + : ImageRequest(t), icon_loader_(icon_loader) {} |
| + |
| + void OnImageDecoded(const SkBitmap& decoded_image) override { |
| + icon_loader_->icon_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image); |
| + icon_loader_->icon_.MakeThreadSafe(); |
| + icon_loader_->ReportResultOnBlockingPool(SUCCESS); |
| + delete this; |
| + } |
| + |
| + void OnDecodeImageFailed() override { |
| + icon_loader_->ReportResultOnBlockingPool(FAILED_TO_DECODE); |
| + delete this; |
| + } |
| + |
| + private: |
| + ~IconImageRequest() override {} |
| + IconLoader* icon_loader_; |
| + }; |
| // Loads the icon from locally stored |icon_path_| on the blocking pool |
| void LoadOnBlockingPool() { |
| @@ -232,9 +255,9 @@ class KioskAppData::IconLoader : public ImageDecoder::Delegate { |
| } |
| raw_icon_ = base::RefCountedString::TakeString(&data); |
| - scoped_refptr<ImageDecoder> image_decoder = new ImageDecoder( |
| - this, raw_icon_->data(), ImageDecoder::DEFAULT_CODEC); |
| - image_decoder->Start(task_runner_); |
| + IconImageRequest* image_request = new IconImageRequest(task_runner_, this); |
| + ImageDecoder::Start(image_request, raw_icon_->data(), |
| + ImageDecoder::DEFAULT_CODEC, false); |
| } |
| void ReportResultOnBlockingPool(LoadResult result) { |
| @@ -265,18 +288,6 @@ class KioskAppData::IconLoader : public ImageDecoder::Delegate { |
| delete this; |
| } |
| - // ImageDecoder::Delegate overrides: |
| - void OnImageDecoded(const ImageDecoder* decoder, |
| - const SkBitmap& decoded_image) override { |
| - icon_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image); |
| - icon_.MakeThreadSafe(); |
| - ReportResultOnBlockingPool(SUCCESS); |
| - } |
| - |
| - void OnDecodeImageFailed(const ImageDecoder* decoder) override { |
| - ReportResultOnBlockingPool(FAILED_TO_DECODE); |
| - } |
| - |
| base::WeakPtr<KioskAppData> client_; |
| base::FilePath icon_path_; |
| @@ -307,7 +318,6 @@ class KioskAppData::WebstoreDataParser |
| new extensions::WebstoreInstallHelper(this, |
| app_id, |
| manifest, |
| - "", // No icon data. |
| icon_url, |
| context_getter); |
| webstore_helper->Start(); |