diff options
Diffstat (limited to 'chromium/components/image_fetcher/core')
6 files changed, 62 insertions, 30 deletions
diff --git a/chromium/components/image_fetcher/core/image_data_fetcher.cc b/chromium/components/image_fetcher/core/image_data_fetcher.cc index 3eac4508d21..a58fc4ac596 100644 --- a/chromium/components/image_fetcher/core/image_data_fetcher.cc +++ b/chromium/components/image_fetcher/core/image_data_fetcher.cc @@ -60,19 +60,23 @@ void ImageDataFetcher::SetImageDownloadLimit( void ImageDataFetcher::FetchImageData( const GURL& image_url, - const ImageDataFetcherCallback& callback) { + const ImageDataFetcherCallback& callback, + const net::NetworkTrafficAnnotationTag& traffic_annotation) { FetchImageData( image_url, callback, /*referrer=*/std::string(), - net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE); + net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, + traffic_annotation); } void ImageDataFetcher::FetchImageData( const GURL& image_url, const ImageDataFetcherCallback& callback, const std::string& referrer, - net::URLRequest::ReferrerPolicy referrer_policy) { - std::unique_ptr<net::URLFetcher> url_fetcher = net::URLFetcher::Create( - next_url_fetcher_id_++, image_url, net::URLFetcher::GET, this); + net::URLRequest::ReferrerPolicy referrer_policy, + const net::NetworkTrafficAnnotationTag& traffic_annotation) { + std::unique_ptr<net::URLFetcher> url_fetcher = + net::URLFetcher::Create(next_url_fetcher_id_++, image_url, + net::URLFetcher::GET, this, traffic_annotation); DataUseUserData::AttachToFetcher(url_fetcher.get(), data_use_service_name_); diff --git a/chromium/components/image_fetcher/core/image_data_fetcher.h b/chromium/components/image_fetcher/core/image_data_fetcher.h index 169ad54d2ce..503487da2b9 100644 --- a/chromium/components/image_fetcher/core/image_data_fetcher.h +++ b/chromium/components/image_fetcher/core/image_data_fetcher.h @@ -15,6 +15,7 @@ #include "base/optional.h" #include "components/data_use_measurement/core/data_use_user_data.h" #include "components/image_fetcher/core/request_metadata.h" +#include "net/traffic_annotation/network_traffic_annotation.h" #include "net/url_request/url_fetcher_delegate.h" #include "net/url_request/url_request.h" #include "url/gurl.h" @@ -52,14 +53,18 @@ class ImageDataFetcher : public net::URLFetcherDelegate { // 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. - void FetchImageData(const GURL& image_url, - const ImageDataFetcherCallback& callback); + void FetchImageData( + const GURL& image_url, + const ImageDataFetcherCallback& callback, + const net::NetworkTrafficAnnotationTag& traffic_annotation); // Like above, but lets the caller set a referrer. - void FetchImageData(const GURL& image_url, - const ImageDataFetcherCallback& callback, - const std::string& referrer, - net::URLRequest::ReferrerPolicy referrer_policy); + void FetchImageData( + const GURL& image_url, + const ImageDataFetcherCallback& callback, + const std::string& referrer, + net::URLRequest::ReferrerPolicy referrer_policy, + const net::NetworkTrafficAnnotationTag& traffic_annotation); private: struct ImageDataFetcherRequest; diff --git a/chromium/components/image_fetcher/core/image_data_fetcher_unittest.cc b/chromium/components/image_fetcher/core/image_data_fetcher_unittest.cc index de47936940e..99c45a318c6 100644 --- a/chromium/components/image_fetcher/core/image_data_fetcher_unittest.cc +++ b/chromium/components/image_fetcher/core/image_data_fetcher_unittest.cc @@ -13,6 +13,7 @@ #include "net/base/load_flags.h" #include "net/http/http_response_headers.h" #include "net/http/http_status_code.h" +#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "net/url_request/test_url_fetcher_factory.h" #include "net/url_request/url_request_status.h" #include "net/url_request/url_request_test_util.h" @@ -60,8 +61,10 @@ class ImageDataFetcherTest : public testing::Test { TEST_F(ImageDataFetcherTest, FetchImageData) { image_data_fetcher_.FetchImageData( - GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, - base::Unretained(this))); + GURL(kImageURL), + base::Bind(&ImageDataFetcherTest::OnImageDataFetched, + base::Unretained(this)), + TRAFFIC_ANNOTATION_FOR_TESTS); RequestMetadata expected_metadata; expected_metadata.mime_type = std::string("image/png"); @@ -95,8 +98,10 @@ TEST_F(ImageDataFetcherTest, FetchImageData) { TEST_F(ImageDataFetcherTest, FetchImageData_FromCache) { image_data_fetcher_.FetchImageData( - GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, - base::Unretained(this))); + GURL(kImageURL), + base::Bind(&ImageDataFetcherTest::OnImageDataFetched, + base::Unretained(this)), + TRAFFIC_ANNOTATION_FOR_TESTS); RequestMetadata expected_metadata; expected_metadata.mime_type = std::string("image/png"); @@ -128,8 +133,10 @@ TEST_F(ImageDataFetcherTest, FetchImageData_FromCache) { TEST_F(ImageDataFetcherTest, FetchImageData_NotFound) { image_data_fetcher_.FetchImageData( - GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, - base::Unretained(this))); + GURL(kImageURL), + base::Bind(&ImageDataFetcherTest::OnImageDataFetched, + base::Unretained(this)), + TRAFFIC_ANNOTATION_FOR_TESTS); RequestMetadata expected_metadata; expected_metadata.mime_type = std::string("image/png"); @@ -158,8 +165,10 @@ TEST_F(ImageDataFetcherTest, FetchImageData_NotFound) { TEST_F(ImageDataFetcherTest, FetchImageData_WithContentLocation) { image_data_fetcher_.FetchImageData( - GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, - base::Unretained(this))); + GURL(kImageURL), + base::Bind(&ImageDataFetcherTest::OnImageDataFetched, + base::Unretained(this)), + TRAFFIC_ANNOTATION_FOR_TESTS); RequestMetadata expected_metadata; expected_metadata.mime_type = std::string("image/png"); @@ -192,7 +201,8 @@ TEST_F(ImageDataFetcherTest, FetchImageData_FailedRequest) { image_data_fetcher_.FetchImageData( GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetchedFailedRequest, - base::Unretained(this))); + base::Unretained(this)), + TRAFFIC_ANNOTATION_FOR_TESTS); RequestMetadata expected_metadata; expected_metadata.http_response_code = net::URLFetcher::RESPONSE_CODE_INVALID; @@ -216,8 +226,10 @@ TEST_F(ImageDataFetcherTest, FetchImageData_MultipleRequests) { EXPECT_CALL(*this, OnImageDataFetchedMultipleRequests(testing::_, testing::_)) .Times(2); - image_data_fetcher_.FetchImageData(GURL(kImageURL), callback); - image_data_fetcher_.FetchImageData(GURL(kImageURL), callback); + image_data_fetcher_.FetchImageData(GURL(kImageURL), callback, + TRAFFIC_ANNOTATION_FOR_TESTS); + image_data_fetcher_.FetchImageData(GURL(kImageURL), callback, + TRAFFIC_ANNOTATION_FOR_TESTS); // Multiple calls to FetchImageData for the same URL will result in // multiple URLFetchers being created. @@ -238,8 +250,10 @@ TEST_F(ImageDataFetcherTest, FetchImageData_CancelFetchIfImageExceedsMaxSize) { const int64_t kMaxDownloadBytes = 1024 * 1024; image_data_fetcher_.SetImageDownloadLimit(kMaxDownloadBytes); image_data_fetcher_.FetchImageData( - GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, - base::Unretained(this))); + GURL(kImageURL), + base::Bind(&ImageDataFetcherTest::OnImageDataFetched, + base::Unretained(this)), + TRAFFIC_ANNOTATION_FOR_TESTS); // Fetching an oversized image will behave like any other failed request. // There will be exactly one call to OnImageDataFetched containing a response diff --git a/chromium/components/image_fetcher/core/image_fetcher.h b/chromium/components/image_fetcher/core/image_fetcher.h index 0284aee9f25..5cb084ed2df 100644 --- a/chromium/components/image_fetcher/core/image_fetcher.h +++ b/chromium/components/image_fetcher/core/image_fetcher.h @@ -12,6 +12,7 @@ #include "base/optional.h" #include "components/data_use_measurement/core/data_use_user_data.h" #include "components/image_fetcher/core/image_fetcher_delegate.h" +#include "net/traffic_annotation/network_traffic_annotation.h" #include "url/gurl.h" namespace gfx { @@ -64,7 +65,8 @@ class ImageFetcher { virtual void StartOrQueueNetworkRequest( const std::string& id, const GURL& image_url, - const ImageFetcherCallback& callback) = 0; + const ImageFetcherCallback& callback, + const net::NetworkTrafficAnnotationTag& traffic_annotation) = 0; virtual ImageDecoder* GetImageDecoder() = 0; diff --git a/chromium/components/image_fetcher/core/image_fetcher_impl.cc b/chromium/components/image_fetcher/core/image_fetcher_impl.cc index 567928c9a6d..ccbc25cf8d7 100644 --- a/chromium/components/image_fetcher/core/image_fetcher_impl.cc +++ b/chromium/components/image_fetcher/core/image_fetcher_impl.cc @@ -51,7 +51,8 @@ void ImageFetcherImpl::SetImageDownloadLimit( void ImageFetcherImpl::StartOrQueueNetworkRequest( const std::string& id, const GURL& image_url, - const ImageFetcherCallback& callback) { + const ImageFetcherCallback& callback, + const net::NetworkTrafficAnnotationTag& traffic_annotation) { // Before starting to fetch the image. Look for a request in progress for // |image_url|, and queue if appropriate. ImageRequestMap::iterator it = pending_net_requests_.find(image_url); @@ -62,10 +63,14 @@ void ImageFetcherImpl::StartOrQueueNetworkRequest( pending_net_requests_[image_url].swap(&request); image_data_fetcher_->FetchImageData( - image_url, base::Bind(&ImageFetcherImpl::OnImageURLFetched, - base::Unretained(this), image_url)); + image_url, + base::Bind(&ImageFetcherImpl::OnImageURLFetched, base::Unretained(this), + image_url), + traffic_annotation); } else { // Request in progress. Register as an interested callback. + // TODO(treib,markusheintz): We're not guaranteed that the ID also matches. + // We probably have to store them all. it->second.callbacks.push_back(callback); } } diff --git a/chromium/components/image_fetcher/core/image_fetcher_impl.h b/chromium/components/image_fetcher/core/image_fetcher_impl.h index 697217c7f79..d71ce20667c 100644 --- a/chromium/components/image_fetcher/core/image_fetcher_impl.h +++ b/chromium/components/image_fetcher/core/image_fetcher_impl.h @@ -16,6 +16,7 @@ #include "components/image_fetcher/core/image_data_fetcher.h" #include "components/image_fetcher/core/image_decoder.h" #include "components/image_fetcher/core/image_fetcher.h" +#include "net/traffic_annotation/network_traffic_annotation.h" #include "ui/gfx/geometry/size.h" #include "url/gurl.h" @@ -30,7 +31,7 @@ class URLRequestContextGetter; namespace image_fetcher { // The standard (non-test) implementation of ImageFetcher. -class ImageFetcherImpl : public image_fetcher::ImageFetcher { +class ImageFetcherImpl : public ImageFetcher { public: ImageFetcherImpl(std::unique_ptr<ImageDecoder> image_decoder, net::URLRequestContextGetter* url_request_context); @@ -52,7 +53,8 @@ class ImageFetcherImpl : public image_fetcher::ImageFetcher { void StartOrQueueNetworkRequest( const std::string& id, const GURL& image_url, - const ImageFetcherCallback& callback) override; + const ImageFetcherCallback& callback, + const net::NetworkTrafficAnnotationTag& traffic_annotation) override; ImageDecoder* GetImageDecoder() override; |