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 ImageDataFetcher::FetchImageData( |
Marc Treib
2017/02/03 14:10:30
"ImageDataFetcher::" isn't needed.
gambard
2017/02/03 14:56:47
Done.
| |
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); | |
Marc Treib
2017/02/03 14:10:30
It's unfortunate that we have to bake in the defau
gambard
2017/02/03 14:56:47
I agree this not a perfect solution. I would have
| |
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 |