summaryrefslogtreecommitdiff
path: root/chromium/components/image_fetcher/core
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/image_fetcher/core')
-rw-r--r--chromium/components/image_fetcher/core/image_data_fetcher.cc14
-rw-r--r--chromium/components/image_fetcher/core/image_data_fetcher.h17
-rw-r--r--chromium/components/image_fetcher/core/image_data_fetcher_unittest.cc40
-rw-r--r--chromium/components/image_fetcher/core/image_fetcher.h4
-rw-r--r--chromium/components/image_fetcher/core/image_fetcher_impl.cc11
-rw-r--r--chromium/components/image_fetcher/core/image_fetcher_impl.h6
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;