summaryrefslogtreecommitdiff
path: root/chromium/components/image_fetcher
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/components/image_fetcher
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/image_fetcher')
-rw-r--r--chromium/components/image_fetcher/core/cache/image_data_store_disk.cc1
-rw-r--r--chromium/components/image_fetcher/core/cached_image_fetcher.cc37
-rw-r--r--chromium/components/image_fetcher/core/image_fetcher.h2
3 files changed, 22 insertions, 18 deletions
diff --git a/chromium/components/image_fetcher/core/cache/image_data_store_disk.cc b/chromium/components/image_fetcher/core/cache/image_data_store_disk.cc
index b08bb07be15..d44f30c399b 100644
--- a/chromium/components/image_fetcher/core/cache/image_data_store_disk.cc
+++ b/chromium/components/image_fetcher/core/cache/image_data_store_disk.cc
@@ -11,6 +11,7 @@
#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
+#include "base/logging.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task_runner_util.h"
#include "base/threading/sequenced_task_runner_handle.h"
diff --git a/chromium/components/image_fetcher/core/cached_image_fetcher.cc b/chromium/components/image_fetcher/core/cached_image_fetcher.cc
index 1e41467716a..c056c970a2f 100644
--- a/chromium/components/image_fetcher/core/cached_image_fetcher.cc
+++ b/chromium/components/image_fetcher/core/cached_image_fetcher.cc
@@ -10,6 +10,7 @@
#include "base/bind_helpers.h"
#include "base/metrics/histogram_macros.h"
#include "base/task/post_task.h"
+#include "base/task/thread_pool.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/timer/elapsed_timer.h"
#include "components/image_fetcher/core/cache/image_cache.h"
@@ -26,7 +27,7 @@ struct CachedImageFetcherRequest {
// The url to be fetched.
const GURL url;
- const ImageFetcherParams params;
+ ImageFetcherParams params;
// Analytic events below.
@@ -34,7 +35,7 @@ struct CachedImageFetcherRequest {
bool cache_hit_before_network_request;
// The start time of the fetch sequence.
- const base::Time start_time;
+ base::Time start_time;
};
namespace {
@@ -108,8 +109,9 @@ void CachedImageFetcher::FetchImageAndData(
ImageFetcherMetricsReporter::ReportEvent(request.params.uma_client_name(),
ImageFetcherEvent::kImageRequest);
- if (params.skip_disk_cache_read()) {
- EnqueueFetchImageFromNetwork(request, std::move(image_data_callback),
+ if (request.params.skip_disk_cache_read()) {
+ EnqueueFetchImageFromNetwork(std::move(request),
+ std::move(image_data_callback),
std::move(image_callback));
} else {
// First, try to load the image from the cache, then try the network.
@@ -151,8 +153,7 @@ void CachedImageFetcher::OnImageFetchedFromCache(
image_data, gfx::Size(),
base::BindOnce(&CachedImageFetcher::OnImageDecodedFromCache,
weak_ptr_factory_.GetWeakPtr(), std::move(request),
- std::move(image_data_callback),
- std::move(image_callback),
+ ImageDataFetcherCallback(), std::move(image_callback),
cache_result_needs_transcoding));
}
}
@@ -165,15 +166,15 @@ void CachedImageFetcher::OnImageDecodedFromCache(
bool cache_result_needs_transcoding,
const gfx::Image& image) {
if (image.IsEmpty()) {
+ ImageFetcherMetricsReporter::ReportEvent(
+ request.params.uma_client_name(),
+ ImageFetcherEvent::kCacheDecodingError);
+
// Upon failure, fetch from the network.
request.cache_hit_before_network_request = true;
EnqueueFetchImageFromNetwork(std::move(request),
std::move(image_data_callback),
std::move(image_callback));
-
- ImageFetcherMetricsReporter::ReportEvent(
- request.params.uma_client_name(),
- ImageFetcherEvent::kCacheDecodingError);
} else {
ImageCallbackIfPresent(std::move(image_callback), image, RequestMetadata());
ImageFetcherMetricsReporter::ReportImageLoadFromCacheTime(
@@ -182,12 +183,12 @@ void CachedImageFetcher::OnImageDecodedFromCache(
// If cache_result_needs_transcoding is true, then this should be stored
// again to replace the image data already on disk with the transcoded data.
if (cache_result_needs_transcoding) {
- EncodeAndStoreData(/* cache_result_needs_transcoding */ true,
- /* is_image_data_transcoded */ true,
- std::move(request), image);
ImageFetcherMetricsReporter::ReportEvent(
request.params.uma_client_name(),
ImageFetcherEvent::kImageQueuedForTranscodingDecoded);
+ EncodeAndStoreData(/* cache_result_needs_transcoding */ true,
+ /* is_image_data_transcoded */ true,
+ std::move(request), image);
}
}
}
@@ -214,6 +215,7 @@ void CachedImageFetcher::FetchImageFromNetwork(
ImageFetcherCallback wrapper_image_callback;
bool skip_transcoding = request.params.skip_transcoding();
+ ImageFetcherParams params_copy(request.params);
if (skip_transcoding) {
wrapper_data_callback =
base::BindOnce(&CachedImageFetcher::OnImageFetchedWithoutTranscoding,
@@ -223,8 +225,9 @@ void CachedImageFetcher::FetchImageFromNetwork(
// Transcode the image when its downloaded from the network.
// 1. Download the data.
// 2. Decode the data to a gfx::Image in a utility process.
- // 3. Encode the data as a PNG in the browser process using base::PostTask.
- // 3. Cache the result.
+ // 3. Encode the data as a PNG in the browser process using
+ // base::ThreadPool.
+ // 4. Cache the result.
wrapper_data_callback = std::move(image_data_callback);
wrapper_image_callback =
base::BindOnce(&CachedImageFetcher::OnImageFetchedForTranscoding,
@@ -233,7 +236,7 @@ void CachedImageFetcher::FetchImageFromNetwork(
}
image_fetcher_->FetchImageAndData(url, std::move(wrapper_data_callback),
std::move(wrapper_image_callback),
- std::move(request.params));
+ std::move(params_copy));
}
void CachedImageFetcher::OnImageFetchedWithoutTranscoding(
@@ -290,7 +293,7 @@ void CachedImageFetcher::EncodeAndStoreData(bool cache_result_needs_transcoding,
} else {
std::string uma_client_name = request.params.uma_client_name();
// Post a task to another thread to encode the image data downloaded.
- base::PostTaskAndReplyWithResult(
+ base::ThreadPool::PostTaskAndReplyWithResult(
FROM_HERE,
base::BindOnce(&EncodeSkBitmapToPNG, uma_client_name, *bitmap),
base::BindOnce(&CachedImageFetcher::StoreData,
diff --git a/chromium/components/image_fetcher/core/image_fetcher.h b/chromium/components/image_fetcher/core/image_fetcher.h
index 8e7be1f32e6..0d59dc8584c 100644
--- a/chromium/components/image_fetcher/core/image_fetcher.h
+++ b/chromium/components/image_fetcher/core/image_fetcher.h
@@ -83,7 +83,7 @@ class ImageFetcherParams {
skip_transcoding_ = skip_transcoding;
}
- bool skip_disk_cache_read() { return skip_disk_cache_read_; }
+ bool skip_disk_cache_read() const { return skip_disk_cache_read_; }
void set_skip_disk_cache_read(bool skip_disk_cache_read) {
skip_disk_cache_read_ = skip_disk_cache_read;