Chromium Code Reviews| Index: chrome/browser/chromeos/arc/arc_wallpaper_handler.cc |
| diff --git a/chrome/browser/chromeos/arc/arc_wallpaper_handler.cc b/chrome/browser/chromeos/arc/arc_wallpaper_handler.cc |
| index 6f93b1346a6ae9711677feb9230d1e0569b9d78f..d6b3273efd5747f299a9c74d55b14581ec3075f1 100644 |
| --- a/chrome/browser/chromeos/arc/arc_wallpaper_handler.cc |
| +++ b/chrome/browser/chromeos/arc/arc_wallpaper_handler.cc |
| @@ -68,9 +68,9 @@ class ArcWallpaperHandler::ImageRequestImpl |
| // ImageDecoder::ImageRequest implementation. |
| void OnImageDecoded(const SkBitmap& bitmap) override { |
| - handler_->OnImageDecoded(this, bitmap); |
| + handler_->OnImageDecoded(bitmap); |
| } |
| - void OnDecodeImageFailed() override { handler_->OnDecodeImageFailed(this); } |
| + void OnDecodeImageFailed() override { handler_->OnDecodeImageFailed(); } |
| private: |
| ArcWallpaperHandler* const handler_; |
| @@ -82,10 +82,7 @@ ArcWallpaperHandler::ArcWallpaperHandler() = default; |
| ArcWallpaperHandler::~ArcWallpaperHandler() { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| - // Cancel in-flight requests. |
| - for (auto& request : inflight_requests_) |
| - ImageDecoder::Cancel(request.get()); |
| - inflight_requests_.clear(); |
| + CancelInflightRequest(); |
| } |
| void ArcWallpaperHandler::SetWallpaper(const std::vector<uint8_t>& jpeg_data) { |
| @@ -97,20 +94,27 @@ void ArcWallpaperHandler::SetWallpaper(const std::vector<uint8_t>& jpeg_data) { |
| reinterpret_cast<const char*>(jpeg_data.data()), jpeg_data.size()); |
| ImageDecoder::StartWithOptions(request.get(), jpeg_data_as_string, |
| ImageDecoder::ROBUST_JPEG_CODEC, true); |
| - inflight_requests_.insert(std::move(request)); |
| + CancelInflightRequest(); |
| + inflight_request_ = std::move(request); |
| } |
| -void ArcWallpaperHandler::OnImageDecoded(ImageRequestImpl* request, |
| - const SkBitmap& bitmap) { |
| +void ArcWallpaperHandler::OnImageDecoded(const SkBitmap& bitmap) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| - inflight_requests_.erase(base::WrapUnique(request)); |
| + inflight_request_.reset(); |
| SetBitmapAsWallpaper(bitmap); |
| } |
| -void ArcWallpaperHandler::OnDecodeImageFailed(ImageRequestImpl* request) { |
| +void ArcWallpaperHandler::OnDecodeImageFailed() { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| - inflight_requests_.erase(base::WrapUnique(request)); |
| + inflight_request_.reset(); |
| LOG(ERROR) << "Failed to decode wallpaper image."; |
| } |
| +void ArcWallpaperHandler::CancelInflightRequest() { |
| + if (inflight_request_.get()) { |
|
hidehiko
2016/07/25 19:17:20
DCHECK_CURRENTLY_ON(UI); here, too?
Shuhei Takahashi
2016/07/26 05:41:43
This function was removed.
|
| + ImageDecoder::Cancel(inflight_request_.get()); |
| + inflight_request_.reset(); |
| + } |
| +} |
| + |
| } // namespace arc |