OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/image_fetcher/image_data_fetcher.h" | 5 #include "components/image_fetcher/image_data_fetcher.h" |
6 | 6 |
7 #include "net/base/load_flags.h" | 7 #include "net/base/load_flags.h" |
8 #include "net/url_request/url_fetcher.h" | 8 #include "net/url_request/url_fetcher.h" |
9 #include "net/url_request/url_request.h" | 9 #include "net/url_request/url_request.h" |
10 #include "net/url_request/url_request_context_getter.h" | 10 #include "net/url_request/url_request_context_getter.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 next_url_fetcher_id_(0) {} | 39 next_url_fetcher_id_(0) {} |
40 | 40 |
41 ImageDataFetcher::~ImageDataFetcher() {} | 41 ImageDataFetcher::~ImageDataFetcher() {} |
42 | 42 |
43 void ImageDataFetcher::SetDataUseServiceName( | 43 void ImageDataFetcher::SetDataUseServiceName( |
44 DataUseServiceName data_use_service_name) { | 44 DataUseServiceName data_use_service_name) { |
45 data_use_service_name_ = data_use_service_name; | 45 data_use_service_name_ = data_use_service_name; |
46 } | 46 } |
47 | 47 |
48 void ImageDataFetcher::FetchImageData( | 48 void ImageDataFetcher::FetchImageData( |
49 const GURL& url, const ImageDataFetcherCallback& callback) { | 49 const GURL& image_url, |
50 std::unique_ptr<net::URLFetcher> url_fetcher = | 50 const ImageDataFetcherCallback& callback) { |
51 net::URLFetcher::Create( | 51 FetchImageData( |
52 next_url_fetcher_id_++, url, net::URLFetcher::GET, this); | 52 image_url, callback, /*referrer=*/std::string(), |
| 53 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE); |
| 54 } |
| 55 |
| 56 void ImageDataFetcher::FetchImageData( |
| 57 const GURL& image_url, |
| 58 const ImageDataFetcherCallback& callback, |
| 59 const std::string& referrer, |
| 60 net::URLRequest::ReferrerPolicy referrer_policy) { |
| 61 std::unique_ptr<net::URLFetcher> url_fetcher = net::URLFetcher::Create( |
| 62 next_url_fetcher_id_++, image_url, net::URLFetcher::GET, this); |
53 | 63 |
54 DataUseUserData::AttachToFetcher(url_fetcher.get(), data_use_service_name_); | 64 DataUseUserData::AttachToFetcher(url_fetcher.get(), data_use_service_name_); |
55 | 65 |
56 std::unique_ptr<ImageDataFetcherRequest> request( | 66 std::unique_ptr<ImageDataFetcherRequest> request( |
57 new ImageDataFetcherRequest(callback, std::move(url_fetcher))); | 67 new ImageDataFetcherRequest(callback, std::move(url_fetcher))); |
58 request->url_fetcher->SetRequestContext(url_request_context_getter_.get()); | 68 request->url_fetcher->SetRequestContext(url_request_context_getter_.get()); |
| 69 request->url_fetcher->SetReferrer(referrer); |
| 70 request->url_fetcher->SetReferrerPolicy(referrer_policy); |
59 request->url_fetcher->Start(); | 71 request->url_fetcher->Start(); |
60 | 72 |
61 pending_requests_[request->url_fetcher.get()] = std::move(request); | 73 pending_requests_[request->url_fetcher.get()] = std::move(request); |
62 } | 74 } |
63 | 75 |
64 void ImageDataFetcher::OnURLFetchComplete(const net::URLFetcher* source) { | 76 void ImageDataFetcher::OnURLFetchComplete(const net::URLFetcher* source) { |
65 auto request_iter = pending_requests_.find(source); | 77 auto request_iter = pending_requests_.find(source); |
66 DCHECK(request_iter != pending_requests_.end()); | 78 DCHECK(request_iter != pending_requests_.end()); |
67 | 79 |
68 std::string image_data; | 80 std::string image_data; |
69 if (source->GetStatus().status() == net::URLRequestStatus::SUCCESS) { | 81 if (source->GetStatus().status() == net::URLRequestStatus::SUCCESS) { |
70 source->GetResponseAsString(&image_data); | 82 source->GetResponseAsString(&image_data); |
71 } | 83 } |
72 request_iter->second->callback.Run(image_data); | 84 request_iter->second->callback.Run(image_data); |
73 | 85 |
74 // Remove the finished request. | 86 // Remove the finished request. |
75 pending_requests_.erase(request_iter); | 87 pending_requests_.erase(request_iter); |
76 } | 88 } |
77 | 89 |
78 } // namespace image_fetcher | 90 } // namespace image_fetcher |
OLD | NEW |