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

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

Issue 2880933002: Download driver for components/download. (Closed)
Patch Set: Polish comment. 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 static void Attach(net::URLRequest* request, 58 static void Attach(net::URLRequest* request,
59 DownloadUrlParameters* download_parameters, 59 DownloadUrlParameters* download_parameters,
60 uint32_t download_id); 60 uint32_t download_id);
61 static DownloadRequestData* Get(net::URLRequest* request); 61 static DownloadRequestData* Get(net::URLRequest* request);
62 static void Detach(net::URLRequest* request); 62 static void Detach(net::URLRequest* request);
63 63
64 std::unique_ptr<DownloadSaveInfo> TakeSaveInfo() { 64 std::unique_ptr<DownloadSaveInfo> TakeSaveInfo() {
65 return std::move(save_info_); 65 return std::move(save_info_);
66 } 66 }
67 uint32_t download_id() const { return download_id_; } 67 uint32_t download_id() const { return download_id_; }
68 std::string guid() const { return guid_; }
68 bool is_transient() const { return transient_; } 69 bool is_transient() const { return transient_; }
69 const DownloadUrlParameters::OnStartedCallback& callback() const { 70 const DownloadUrlParameters::OnStartedCallback& callback() const {
70 return on_started_callback_; 71 return on_started_callback_;
71 } 72 }
72 73
73 private: 74 private:
74 static const int kKey; 75 static const int kKey;
75 76
76 std::unique_ptr<DownloadSaveInfo> save_info_; 77 std::unique_ptr<DownloadSaveInfo> save_info_;
77 uint32_t download_id_ = DownloadItem::kInvalidId; 78 uint32_t download_id_ = DownloadItem::kInvalidId;
79 std::string guid_;
78 bool transient_ = false; 80 bool transient_ = false;
79 DownloadUrlParameters::OnStartedCallback on_started_callback_; 81 DownloadUrlParameters::OnStartedCallback on_started_callback_;
80 }; 82 };
81 83
82 // static 84 // static
83 const int DownloadRequestData::kKey = 0; 85 const int DownloadRequestData::kKey = 0;
84 86
85 // static 87 // static
86 void DownloadRequestData::Attach(net::URLRequest* request, 88 void DownloadRequestData::Attach(net::URLRequest* request,
87 DownloadUrlParameters* parameters, 89 DownloadUrlParameters* parameters,
88 uint32_t download_id) { 90 uint32_t download_id) {
89 auto request_data = base::MakeUnique<DownloadRequestData>(); 91 auto request_data = base::MakeUnique<DownloadRequestData>();
90 request_data->save_info_.reset( 92 request_data->save_info_.reset(
91 new DownloadSaveInfo(parameters->GetSaveInfo())); 93 new DownloadSaveInfo(parameters->GetSaveInfo()));
92 request_data->download_id_ = download_id; 94 request_data->download_id_ = download_id;
95 request_data->guid_ = parameters->guid();
93 request_data->transient_ = parameters->is_transient(); 96 request_data->transient_ = parameters->is_transient();
94 request_data->on_started_callback_ = parameters->callback(); 97 request_data->on_started_callback_ = parameters->callback();
95 request->SetUserData(&kKey, std::move(request_data)); 98 request->SetUserData(&kKey, std::move(request_data));
96 } 99 }
97 100
98 // static 101 // static
99 DownloadRequestData* DownloadRequestData::Get(net::URLRequest* request) { 102 DownloadRequestData* DownloadRequestData::Get(net::URLRequest* request) {
100 return static_cast<DownloadRequestData*>(request->GetUserData(&kKey)); 103 return static_cast<DownloadRequestData*>(request->GetUserData(&kKey));
101 } 104 }
102 105
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 device::mojom::WakeLockReason::ReasonOther, "Download in progress", 217 device::mojom::WakeLockReason::ReasonOther, "Download in progress",
215 mojo::MakeRequest(&wake_lock_)); 218 mojo::MakeRequest(&wake_lock_));
216 219
217 wake_lock_->RequestWakeLock(); 220 wake_lock_->RequestWakeLock();
218 } 221 }
219 222
220 DownloadRequestData* request_data = DownloadRequestData::Get(request_); 223 DownloadRequestData* request_data = DownloadRequestData::Get(request_);
221 if (request_data) { 224 if (request_data) {
222 save_info_ = request_data->TakeSaveInfo(); 225 save_info_ = request_data->TakeSaveInfo();
223 download_id_ = request_data->download_id(); 226 download_id_ = request_data->download_id();
227 guid_ = request_data->guid();
224 transient_ = request_data->is_transient(); 228 transient_ = request_data->is_transient();
225 on_started_callback_ = request_data->callback(); 229 on_started_callback_ = request_data->callback();
226 DownloadRequestData::Detach(request_); 230 DownloadRequestData::Detach(request_);
227 is_partial_request_ = save_info_->offset > 0; 231 is_partial_request_ = save_info_->offset > 0;
228 } else { 232 } else {
229 save_info_.reset(new DownloadSaveInfo); 233 save_info_.reset(new DownloadSaveInfo);
230 } 234 }
231 } 235 }
232 236
233 DownloadRequestCore::~DownloadRequestCore() { 237 DownloadRequestCore::~DownloadRequestCore() {
(...skipping 10 matching lines...) Expand all
244 std::unique_ptr<DownloadCreateInfo> create_info(new DownloadCreateInfo( 248 std::unique_ptr<DownloadCreateInfo> create_info(new DownloadCreateInfo(
245 base::Time::Now(), request()->net_log(), std::move(save_info_))); 249 base::Time::Now(), request()->net_log(), std::move(save_info_)));
246 250
247 if (result == DOWNLOAD_INTERRUPT_REASON_NONE) 251 if (result == DOWNLOAD_INTERRUPT_REASON_NONE)
248 create_info->remote_address = request()->GetSocketAddress().host(); 252 create_info->remote_address = request()->GetSocketAddress().host();
249 create_info->connection_info = request()->response_info().connection_info; 253 create_info->connection_info = request()->response_info().connection_info;
250 create_info->url_chain = request()->url_chain(); 254 create_info->url_chain = request()->url_chain();
251 create_info->referrer_url = GURL(request()->referrer()); 255 create_info->referrer_url = GURL(request()->referrer());
252 create_info->result = result; 256 create_info->result = result;
253 create_info->download_id = download_id_; 257 create_info->download_id = download_id_;
258 create_info->guid = guid_;
254 create_info->transient = transient_; 259 create_info->transient = transient_;
255 create_info->response_headers = request()->response_headers(); 260 create_info->response_headers = request()->response_headers();
256 create_info->offset = create_info->save_info->offset; 261 create_info->offset = create_info->save_info->offset;
257 return create_info; 262 return create_info;
258 } 263 }
259 264
260 bool DownloadRequestCore::OnResponseStarted( 265 bool DownloadRequestCore::OnResponseStarted(
261 const std::string& override_mime_type) { 266 const std::string& override_mime_type) {
262 DCHECK_CURRENTLY_ON(BrowserThread::IO); 267 DCHECK_CURRENTLY_ON(BrowserThread::IO);
263 DVLOG(20) << __func__ << "() " << DebugString(); 268 DVLOG(20) << __func__ << "() " << DebugString();
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 // old servers that didn't implement "If-Match" and must be ignored when 718 // old servers that didn't implement "If-Match" and must be ignored when
714 // "If-Match" presents. 719 // "If-Match" presents.
715 if (has_last_modified) { 720 if (has_last_modified) {
716 request->SetExtraRequestHeaderByName( 721 request->SetExtraRequestHeaderByName(
717 net::HttpRequestHeaders::kIfUnmodifiedSince, params->last_modified(), 722 net::HttpRequestHeaders::kIfUnmodifiedSince, params->last_modified(),
718 true); 723 true);
719 } 724 }
720 } 725 }
721 726
722 } // namespace content 727 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_request_core.h ('k') | content/public/browser/download_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698