Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: content/browser/download/download_request_core.cc

Issue 2880933002: Download driver for components/download. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/download/download_request_core.h" 5 #include "content/browser/download/download_request_core.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 static void Attach(net::URLRequest* request, 55 static void Attach(net::URLRequest* request,
56 DownloadUrlParameters* download_parameters, 56 DownloadUrlParameters* download_parameters,
57 uint32_t download_id); 57 uint32_t download_id);
58 static DownloadRequestData* Get(net::URLRequest* request); 58 static DownloadRequestData* Get(net::URLRequest* request);
59 static void Detach(net::URLRequest* request); 59 static void Detach(net::URLRequest* request);
60 60
61 std::unique_ptr<DownloadSaveInfo> TakeSaveInfo() { 61 std::unique_ptr<DownloadSaveInfo> TakeSaveInfo() {
62 return std::move(save_info_); 62 return std::move(save_info_);
63 } 63 }
64 uint32_t download_id() const { return download_id_; } 64 uint32_t download_id() const { return download_id_; }
65 std::string guid() const { return guid_; }
65 bool is_transient() const { return transient_; } 66 bool is_transient() const { return transient_; }
66 const DownloadUrlParameters::OnStartedCallback& callback() const { 67 const DownloadUrlParameters::OnStartedCallback& callback() const {
67 return on_started_callback_; 68 return on_started_callback_;
68 } 69 }
69 70
70 private: 71 private:
71 static const int kKey; 72 static const int kKey;
72 73
73 std::unique_ptr<DownloadSaveInfo> save_info_; 74 std::unique_ptr<DownloadSaveInfo> save_info_;
74 uint32_t download_id_ = DownloadItem::kInvalidId; 75 uint32_t download_id_ = DownloadItem::kInvalidId;
76 std::string guid_;
75 bool transient_ = false; 77 bool transient_ = false;
76 DownloadUrlParameters::OnStartedCallback on_started_callback_; 78 DownloadUrlParameters::OnStartedCallback on_started_callback_;
77 }; 79 };
78 80
79 // static 81 // static
80 const int DownloadRequestData::kKey = 0; 82 const int DownloadRequestData::kKey = 0;
81 83
82 // static 84 // static
83 void DownloadRequestData::Attach(net::URLRequest* request, 85 void DownloadRequestData::Attach(net::URLRequest* request,
84 DownloadUrlParameters* parameters, 86 DownloadUrlParameters* parameters,
85 uint32_t download_id) { 87 uint32_t download_id) {
86 auto request_data = base::MakeUnique<DownloadRequestData>(); 88 auto request_data = base::MakeUnique<DownloadRequestData>();
87 request_data->save_info_.reset( 89 request_data->save_info_.reset(
88 new DownloadSaveInfo(parameters->GetSaveInfo())); 90 new DownloadSaveInfo(parameters->GetSaveInfo()));
89 request_data->download_id_ = download_id; 91 request_data->download_id_ = download_id;
92 request_data->guid_ = parameters->guid();
90 request_data->transient_ = parameters->is_transient(); 93 request_data->transient_ = parameters->is_transient();
91 request_data->on_started_callback_ = parameters->callback(); 94 request_data->on_started_callback_ = parameters->callback();
92 request->SetUserData(&kKey, std::move(request_data)); 95 request->SetUserData(&kKey, std::move(request_data));
93 } 96 }
94 97
95 // static 98 // static
96 DownloadRequestData* DownloadRequestData::Get(net::URLRequest* request) { 99 DownloadRequestData* DownloadRequestData::Get(net::URLRequest* request) {
97 return static_cast<DownloadRequestData*>(request->GetUserData(&kKey)); 100 return static_cast<DownloadRequestData*>(request->GetUserData(&kKey));
98 } 101 }
99 102
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 RecordDownloadCount(UNTHROTTLED_COUNT); 201 RecordDownloadCount(UNTHROTTLED_COUNT);
199 power_save_blocker_.reset(new device::PowerSaveBlocker( 202 power_save_blocker_.reset(new device::PowerSaveBlocker(
200 device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, 203 device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension,
201 device::PowerSaveBlocker::kReasonOther, "Download in progress", 204 device::PowerSaveBlocker::kReasonOther, "Download in progress",
202 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI), 205 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
203 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE))); 206 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE)));
204 DownloadRequestData* request_data = DownloadRequestData::Get(request_); 207 DownloadRequestData* request_data = DownloadRequestData::Get(request_);
205 if (request_data) { 208 if (request_data) {
206 save_info_ = request_data->TakeSaveInfo(); 209 save_info_ = request_data->TakeSaveInfo();
207 download_id_ = request_data->download_id(); 210 download_id_ = request_data->download_id();
211 guid_ = request_data->guid();
208 transient_ = request_data->is_transient(); 212 transient_ = request_data->is_transient();
209 on_started_callback_ = request_data->callback(); 213 on_started_callback_ = request_data->callback();
210 DownloadRequestData::Detach(request_); 214 DownloadRequestData::Detach(request_);
211 is_partial_request_ = save_info_->offset > 0; 215 is_partial_request_ = save_info_->offset > 0;
212 } else { 216 } else {
213 save_info_.reset(new DownloadSaveInfo); 217 save_info_.reset(new DownloadSaveInfo);
214 } 218 }
215 } 219 }
216 220
217 DownloadRequestCore::~DownloadRequestCore() { 221 DownloadRequestCore::~DownloadRequestCore() {
(...skipping 10 matching lines...) Expand all
228 std::unique_ptr<DownloadCreateInfo> create_info(new DownloadCreateInfo( 232 std::unique_ptr<DownloadCreateInfo> create_info(new DownloadCreateInfo(
229 base::Time::Now(), request()->net_log(), std::move(save_info_))); 233 base::Time::Now(), request()->net_log(), std::move(save_info_)));
230 234
231 if (result == DOWNLOAD_INTERRUPT_REASON_NONE) 235 if (result == DOWNLOAD_INTERRUPT_REASON_NONE)
232 create_info->remote_address = request()->GetSocketAddress().host(); 236 create_info->remote_address = request()->GetSocketAddress().host();
233 create_info->connection_info = request()->response_info().connection_info; 237 create_info->connection_info = request()->response_info().connection_info;
234 create_info->url_chain = request()->url_chain(); 238 create_info->url_chain = request()->url_chain();
235 create_info->referrer_url = GURL(request()->referrer()); 239 create_info->referrer_url = GURL(request()->referrer());
236 create_info->result = result; 240 create_info->result = result;
237 create_info->download_id = download_id_; 241 create_info->download_id = download_id_;
242 create_info->guid = guid_;
238 create_info->transient = transient_; 243 create_info->transient = transient_;
239 create_info->response_headers = request()->response_headers(); 244 create_info->response_headers = request()->response_headers();
240 create_info->offset = create_info->save_info->offset; 245 create_info->offset = create_info->save_info->offset;
241 return create_info; 246 return create_info;
242 } 247 }
243 248
244 bool DownloadRequestCore::OnResponseStarted( 249 bool DownloadRequestCore::OnResponseStarted(
245 const std::string& override_mime_type) { 250 const std::string& override_mime_type) {
246 DCHECK_CURRENTLY_ON(BrowserThread::IO); 251 DCHECK_CURRENTLY_ON(BrowserThread::IO);
247 DVLOG(20) << __func__ << "() " << DebugString(); 252 DVLOG(20) << __func__ << "() " << DebugString();
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 // old servers that didn't implement "If-Match" and must be ignored when 702 // old servers that didn't implement "If-Match" and must be ignored when
698 // "If-Match" presents. 703 // "If-Match" presents.
699 if (has_last_modified) { 704 if (has_last_modified) {
700 request->SetExtraRequestHeaderByName( 705 request->SetExtraRequestHeaderByName(
701 net::HttpRequestHeaders::kIfUnmodifiedSince, params->last_modified(), 706 net::HttpRequestHeaders::kIfUnmodifiedSince, params->last_modified(),
702 true); 707 true);
703 } 708 }
704 } 709 }
705 710
706 } // namespace content 711 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698