| Index: ios/chrome/browser/suggestions/image_fetcher_impl.mm
|
| diff --git a/ios/chrome/browser/suggestions/image_fetcher_impl.mm b/ios/chrome/browser/suggestions/image_fetcher_impl.mm
|
| index 70d93428d5d597d3fdd4bb2fe9b7ddd5c812bc81..9920987f21e81c2894208e8a84235a93f8f93c63 100644
|
| --- a/ios/chrome/browser/suggestions/image_fetcher_impl.mm
|
| +++ b/ios/chrome/browser/suggestions/image_fetcher_impl.mm
|
| @@ -6,9 +6,10 @@
|
|
|
| #include <UIKit/UIKit.h>
|
|
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/threading/sequenced_worker_pool.h"
|
| #include "components/image_fetcher/image_fetcher_delegate.h"
|
| -#include "ios/chrome/browser/net/image_fetcher.h"
|
| +#import "ios/web/public/image_fetcher/image_data_fetcher.h"
|
| #include "net/url_request/url_request_context_getter.h"
|
| #include "skia/ext/skia_utils_ios.h"
|
| #include "ui/gfx/image/image.h"
|
| @@ -17,9 +18,9 @@ namespace suggestions {
|
|
|
| ImageFetcherImpl::ImageFetcherImpl(
|
| net::URLRequestContextGetter* url_request_context,
|
| - base::SequencedWorkerPool* blocking_pool) {
|
| - imageFetcher_.reset(new ::ImageFetcher(blocking_pool));
|
| - imageFetcher_->SetRequestContextGetter(url_request_context);
|
| + base::SequencedWorkerPool* blocking_pool)
|
| + : image_fetcher_(base::MakeUnique<web::ImageDataFetcher>(blocking_pool)) {
|
| + image_fetcher_->SetRequestContextGetter(url_request_context);
|
| }
|
|
|
| ImageFetcherImpl::~ImageFetcherImpl() {
|
| @@ -52,27 +53,29 @@ void ImageFetcherImpl::StartOrQueueNetworkRequest(
|
| }
|
| // Copy string reference so it's retained.
|
| const std::string fetch_id(id);
|
| - ImageFetchedCallback fetcher_callback =
|
| + // If image_fetcher_ is destroyed the request will be cancelled and this block
|
| + // will never be called. A reference to delegate_ can be kept.
|
| + web::ImageFetchedCallback fetcher_callback =
|
| ^(const GURL& original_url, int response_code, NSData* data) {
|
| - if (data) {
|
| - // Most likely always returns 1x images.
|
| - UIImage* ui_image = [UIImage imageWithData:data scale:1];
|
| - if (ui_image) {
|
| - gfx::Image gfx_image(ui_image);
|
| - callback.Run(fetch_id, gfx_image);
|
| - if (delegate_) {
|
| - delegate_->OnImageFetched(fetch_id, gfx_image);
|
| + if (data) {
|
| + // Most likely always returns 1x images.
|
| + UIImage* ui_image = [UIImage imageWithData:data scale:1];
|
| + if (ui_image) {
|
| + gfx::Image gfx_image(ui_image);
|
| + callback.Run(fetch_id, gfx_image);
|
| + if (delegate_) {
|
| + delegate_->OnImageFetched(fetch_id, gfx_image);
|
| + }
|
| + return;
|
| }
|
| - return;
|
| }
|
| - }
|
| - gfx::Image empty_image;
|
| - callback.Run(fetch_id, empty_image);
|
| - if (delegate_) {
|
| - delegate_->OnImageFetched(fetch_id, empty_image);
|
| - }
|
| - };
|
| - imageFetcher_->StartDownload(image_url, fetcher_callback);
|
| + gfx::Image empty_image;
|
| + callback.Run(fetch_id, empty_image);
|
| + if (delegate_) {
|
| + delegate_->OnImageFetched(fetch_id, empty_image);
|
| + }
|
| + };
|
| + image_fetcher_->StartDownload(image_url, fetcher_callback);
|
| }
|
|
|
| } // namespace suggestions
|
|
|