OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |