| 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..c24c52d99317862b263887eb4673d9e618262293 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,31 @@ 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>& task_runner,
|
| + IconLoader* icon_loader)
|
| + : ImageRequest(task_runner), 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 +256,8 @@ 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());
|
| }
|
|
|
| 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();
|
|
|