diff options
Diffstat (limited to 'chromium/components/image_fetcher')
7 files changed, 39 insertions, 2 deletions
diff --git a/chromium/components/image_fetcher/BUILD.gn b/chromium/components/image_fetcher/BUILD.gn index 19063d0f865..cd60562577b 100644 --- a/chromium/components/image_fetcher/BUILD.gn +++ b/chromium/components/image_fetcher/BUILD.gn @@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -source_set("image_fetcher") { +static_library("image_fetcher") { sources = [ "image_data_fetcher.cc", "image_data_fetcher.h", @@ -15,6 +15,7 @@ source_set("image_fetcher") { public_deps = [ "//base", + "//components/data_use_measurement/core", "//net", "//url", ] diff --git a/chromium/components/image_fetcher/DEPS b/chromium/components/image_fetcher/DEPS index 31148e3f08c..a07acff5466 100644 --- a/chromium/components/image_fetcher/DEPS +++ b/chromium/components/image_fetcher/DEPS @@ -1,4 +1,5 @@ include_rules = [ - "+url", + "+components/data_use_measurement/core", "+net", + "+url", ] diff --git a/chromium/components/image_fetcher/image_data_fetcher.cc b/chromium/components/image_fetcher/image_data_fetcher.cc index 2100fb5472c..318e755ce65 100644 --- a/chromium/components/image_fetcher/image_data_fetcher.cc +++ b/chromium/components/image_fetcher/image_data_fetcher.cc @@ -11,6 +11,8 @@ #include "net/url_request/url_request_status.h" #include "url/gurl.h" +using data_use_measurement::DataUseUserData; + namespace image_fetcher { // An active image URL fetcher request. The struct contains the related requests @@ -33,16 +35,26 @@ struct ImageDataFetcher::ImageDataFetcherRequest { ImageDataFetcher::ImageDataFetcher( net::URLRequestContextGetter* url_request_context_getter) : url_request_context_getter_(url_request_context_getter), + data_use_service_name_(DataUseUserData::NOT_TAGGED), next_url_fetcher_id_(0) {} ImageDataFetcher::~ImageDataFetcher() {} +void ImageDataFetcher::SetDataUseServiceName( + DataUseServiceName data_use_service_name) { + data_use_service_name_ = data_use_service_name; +} + void ImageDataFetcher::FetchImageData( const GURL& url, const ImageDataFetcherCallback& callback) { std::unique_ptr<net::URLFetcher> url_fetcher = net::URLFetcher::Create( next_url_fetcher_id_++, url, net::URLFetcher::GET, this); + if (data_use_service_name_ != DataUseUserData::NOT_TAGGED) { + DataUseUserData::AttachToFetcher(url_fetcher.get(), data_use_service_name_); + } + std::unique_ptr<ImageDataFetcherRequest> request( new ImageDataFetcherRequest(callback, std::move(url_fetcher))); request->url_fetcher->SetRequestContext(url_request_context_getter_.get()); diff --git a/chromium/components/image_fetcher/image_data_fetcher.h b/chromium/components/image_fetcher/image_data_fetcher.h index 94432311f34..92c5a5cf0dc 100644 --- a/chromium/components/image_fetcher/image_data_fetcher.h +++ b/chromium/components/image_fetcher/image_data_fetcher.h @@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "components/data_use_measurement/core/data_use_user_data.h" #include "net/url_request/url_fetcher_delegate.h" #include "url/gurl.h" @@ -27,10 +28,15 @@ class ImageDataFetcher : public net::URLFetcherDelegate { using ImageDataFetcherCallback = base::Callback<void(const std::string& image_data)>; + using DataUseServiceName = data_use_measurement::DataUseUserData::ServiceName; + explicit ImageDataFetcher( net::URLRequestContextGetter* url_request_context_getter); ~ImageDataFetcher() override; + // Sets a service name against which to track data usage. + void SetDataUseServiceName(DataUseServiceName data_use_service_name); + // Fetches the raw image bytes from the given |image_url| and calls the given // |callback|. The callback is run even if fetching the URL fails. In case // of an error an empty string is passed to the callback. @@ -49,6 +55,8 @@ class ImageDataFetcher : public net::URLFetcherDelegate { scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; + DataUseServiceName data_use_service_name_; + // The next ID to use for a newly created URLFetcher. Each URLFetcher gets an // id when it is created. The |url_fetcher_id_| is incremented by one for each // newly created URLFetcher. The URLFetcher ID can be used during testing to diff --git a/chromium/components/image_fetcher/image_fetcher.h b/chromium/components/image_fetcher/image_fetcher.h index f6d380f8492..69836385acf 100644 --- a/chromium/components/image_fetcher/image_fetcher.h +++ b/chromium/components/image_fetcher/image_fetcher.h @@ -9,6 +9,7 @@ #include "base/callback.h" #include "base/macros.h" +#include "components/data_use_measurement/core/data_use_user_data.h" #include "components/image_fetcher/image_fetcher_delegate.h" #include "url/gurl.h" @@ -25,8 +26,14 @@ class ImageFetcher { ImageFetcher() {} virtual ~ImageFetcher() {} + using DataUseServiceName = data_use_measurement::DataUseUserData::ServiceName; + virtual void SetImageFetcherDelegate(ImageFetcherDelegate* delegate) = 0; + // Sets a service name against which to track data usage. + virtual void SetDataUseServiceName( + DataUseServiceName data_use_service_name) = 0; + // An empty gfx::Image will be returned to the callback in case the image // could not be fetched. virtual void StartOrQueueNetworkRequest( diff --git a/chromium/components/image_fetcher/image_fetcher_impl.cc b/chromium/components/image_fetcher/image_fetcher_impl.cc index a40059bf07c..d260b2cdd2a 100644 --- a/chromium/components/image_fetcher/image_fetcher_impl.cc +++ b/chromium/components/image_fetcher/image_fetcher_impl.cc @@ -34,6 +34,11 @@ void ImageFetcherImpl::SetImageFetcherDelegate(ImageFetcherDelegate* delegate) { delegate_ = delegate; } +void ImageFetcherImpl::SetDataUseServiceName( + DataUseServiceName data_use_service_name) { + image_data_fetcher_->SetDataUseServiceName(data_use_service_name); +} + void ImageFetcherImpl::StartOrQueueNetworkRequest( const std::string& id, const GURL& image_url, diff --git a/chromium/components/image_fetcher/image_fetcher_impl.h b/chromium/components/image_fetcher/image_fetcher_impl.h index 86334301f66..05856e8b8fd 100644 --- a/chromium/components/image_fetcher/image_fetcher_impl.h +++ b/chromium/components/image_fetcher/image_fetcher_impl.h @@ -42,6 +42,9 @@ class ImageFetcherImpl : public image_fetcher::ImageFetcher { // responsibility to ensure this. void SetImageFetcherDelegate(ImageFetcherDelegate* delegate) override; + // Sets a service name against which to track data usage. + void SetDataUseServiceName(DataUseServiceName data_use_service_name) override; + void StartOrQueueNetworkRequest( const std::string& id, const GURL& image_url, |