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

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

Issue 1781983002: [Downloads] Introduce GUIDs for downloads. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 4 years, 9 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 // File method ordering: Methods in this file are in the same order as 5 // File method ordering: Methods in this file are in the same order as
6 // in download_item_impl.h, with the following exception: The public 6 // in download_item_impl.h, with the following exception: The public
7 // interface Start is placed in chronological order with the other 7 // interface Start is placed in chronological order with the other
8 // (private) routines that together define a DownloadItem's state 8 // (private) routines that together define a DownloadItem's state
9 // transitions as the download progresses. See "Download progression 9 // transitions as the download progresses. See "Download progression
10 // cascade" later in this file. 10 // cascade" later in this file.
(...skipping 11 matching lines...) Expand all
22 // auto-opened. 22 // auto-opened.
23 23
24 #include "content/browser/download/download_item_impl.h" 24 #include "content/browser/download/download_item_impl.h"
25 25
26 #include <utility> 26 #include <utility>
27 #include <vector> 27 #include <vector>
28 28
29 #include "base/bind.h" 29 #include "base/bind.h"
30 #include "base/files/file_util.h" 30 #include "base/files/file_util.h"
31 #include "base/format_macros.h" 31 #include "base/format_macros.h"
32 #include "base/guid.h"
32 #include "base/logging.h" 33 #include "base/logging.h"
33 #include "base/metrics/histogram.h" 34 #include "base/metrics/histogram.h"
34 #include "base/stl_util.h" 35 #include "base/stl_util.h"
36 #include "base/strings/string_util.h"
35 #include "base/strings/stringprintf.h" 37 #include "base/strings/stringprintf.h"
36 #include "base/strings/utf_string_conversions.h" 38 #include "base/strings/utf_string_conversions.h"
37 #include "content/browser/download/download_create_info.h" 39 #include "content/browser/download/download_create_info.h"
38 #include "content/browser/download/download_file.h" 40 #include "content/browser/download/download_file.h"
39 #include "content/browser/download/download_interrupt_reasons_impl.h" 41 #include "content/browser/download/download_interrupt_reasons_impl.h"
40 #include "content/browser/download/download_item_impl_delegate.h" 42 #include "content/browser/download/download_item_impl_delegate.h"
41 #include "content/browser/download/download_request_handle.h" 43 #include "content/browser/download/download_request_handle.h"
42 #include "content/browser/download/download_stats.h" 44 #include "content/browser/download/download_stats.h"
43 #include "content/browser/renderer_host/render_view_host_impl.h" 45 #include "content/browser/renderer_host/render_view_host_impl.h"
44 #include "content/browser/web_contents/web_contents_impl.h" 46 #include "content/browser/web_contents/web_contents_impl.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 100
99 const uint32_t DownloadItem::kInvalidId = 0; 101 const uint32_t DownloadItem::kInvalidId = 0;
100 102
101 const char DownloadItem::kEmptyFileHash[] = ""; 103 const char DownloadItem::kEmptyFileHash[] = "";
102 104
103 // The maximum number of attempts we will make to resume automatically. 105 // The maximum number of attempts we will make to resume automatically.
104 const int DownloadItemImpl::kMaxAutoResumeAttempts = 5; 106 const int DownloadItemImpl::kMaxAutoResumeAttempts = 5;
105 107
106 // Constructor for reading from the history service. 108 // Constructor for reading from the history service.
107 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, 109 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate,
110 const std::string& guid,
108 uint32_t download_id, 111 uint32_t download_id,
109 const base::FilePath& current_path, 112 const base::FilePath& current_path,
110 const base::FilePath& target_path, 113 const base::FilePath& target_path,
111 const std::vector<GURL>& url_chain, 114 const std::vector<GURL>& url_chain,
112 const GURL& referrer_url, 115 const GURL& referrer_url,
113 const std::string& mime_type, 116 const std::string& mime_type,
114 const std::string& original_mime_type, 117 const std::string& original_mime_type,
115 const base::Time& start_time, 118 const base::Time& start_time,
116 const base::Time& end_time, 119 const base::Time& end_time,
117 const std::string& etag, 120 const std::string& etag,
118 const std::string& last_modified, 121 const std::string& last_modified,
119 int64_t received_bytes, 122 int64_t received_bytes,
120 int64_t total_bytes, 123 int64_t total_bytes,
121 DownloadItem::DownloadState state, 124 DownloadItem::DownloadState state,
122 DownloadDangerType danger_type, 125 DownloadDangerType danger_type,
123 DownloadInterruptReason interrupt_reason, 126 DownloadInterruptReason interrupt_reason,
124 bool opened, 127 bool opened,
125 const net::BoundNetLog& bound_net_log) 128 const net::BoundNetLog& bound_net_log)
126 : download_id_(download_id), 129 : guid_(base::ToUpperASCII(guid)),
130 download_id_(download_id),
127 current_path_(current_path), 131 current_path_(current_path),
128 target_path_(target_path), 132 target_path_(target_path),
129 url_chain_(url_chain), 133 url_chain_(url_chain),
130 referrer_url_(referrer_url), 134 referrer_url_(referrer_url),
131 mime_type_(mime_type), 135 mime_type_(mime_type),
132 original_mime_type_(original_mime_type), 136 original_mime_type_(original_mime_type),
133 total_bytes_(total_bytes), 137 total_bytes_(total_bytes),
134 received_bytes_(received_bytes), 138 received_bytes_(received_bytes),
135 last_modified_time_(last_modified), 139 last_modified_time_(last_modified),
136 etag_(etag), 140 etag_(etag),
137 last_reason_(interrupt_reason), 141 last_reason_(interrupt_reason),
138 start_tick_(base::TimeTicks()), 142 start_tick_(base::TimeTicks()),
139 state_(ExternalToInternalState(state)), 143 state_(ExternalToInternalState(state)),
140 danger_type_(danger_type), 144 danger_type_(danger_type),
141 start_time_(start_time), 145 start_time_(start_time),
142 end_time_(end_time), 146 end_time_(end_time),
143 delegate_(delegate), 147 delegate_(delegate),
144 all_data_saved_(state == COMPLETE), 148 all_data_saved_(state == COMPLETE),
145 opened_(opened), 149 opened_(opened),
146 bound_net_log_(bound_net_log), 150 bound_net_log_(bound_net_log),
147 weak_ptr_factory_(this) { 151 weak_ptr_factory_(this) {
148 delegate_->Attach(); 152 delegate_->Attach();
149 DCHECK(state_ == COMPLETE_INTERNAL || state_ == INTERRUPTED_INTERNAL || 153 DCHECK(state_ == COMPLETE_INTERNAL || state_ == INTERRUPTED_INTERNAL ||
150 state_ == CANCELLED_INTERNAL); 154 state_ == CANCELLED_INTERNAL);
155 DCHECK(base::IsValidGUID(guid_));
151 Init(false /* not actively downloading */, SRC_HISTORY_IMPORT); 156 Init(false /* not actively downloading */, SRC_HISTORY_IMPORT);
152 } 157 }
153 158
154 // Constructing for a regular download: 159 // Constructing for a regular download:
155 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, 160 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate,
156 uint32_t download_id, 161 uint32_t download_id,
157 const DownloadCreateInfo& info, 162 const DownloadCreateInfo& info,
158 const net::BoundNetLog& bound_net_log) 163 const net::BoundNetLog& bound_net_log)
159 : download_id_(download_id), 164 : guid_(base::ToUpperASCII(base::GenerateGUID())),
165 download_id_(download_id),
160 target_disposition_((info.save_info->prompt_for_save_location) 166 target_disposition_((info.save_info->prompt_for_save_location)
161 ? TARGET_DISPOSITION_PROMPT 167 ? TARGET_DISPOSITION_PROMPT
162 : TARGET_DISPOSITION_OVERWRITE), 168 : TARGET_DISPOSITION_OVERWRITE),
163 url_chain_(info.url_chain), 169 url_chain_(info.url_chain),
164 referrer_url_(info.referrer_url), 170 referrer_url_(info.referrer_url),
165 tab_url_(info.tab_url), 171 tab_url_(info.tab_url),
166 tab_referrer_url_(info.tab_referrer_url), 172 tab_referrer_url_(info.tab_referrer_url),
167 suggested_filename_(base::UTF16ToUTF8(info.save_info->suggested_name)), 173 suggested_filename_(base::UTF16ToUTF8(info.save_info->suggested_name)),
168 forced_file_path_(info.save_info->file_path), 174 forced_file_path_(info.save_info->file_path),
169 transition_type_(info.transition_type), 175 transition_type_(info.transition_type),
(...skipping 30 matching lines...) Expand all
200 DownloadItemImpl::DownloadItemImpl( 206 DownloadItemImpl::DownloadItemImpl(
201 DownloadItemImplDelegate* delegate, 207 DownloadItemImplDelegate* delegate,
202 uint32_t download_id, 208 uint32_t download_id,
203 const base::FilePath& path, 209 const base::FilePath& path,
204 const GURL& url, 210 const GURL& url,
205 const std::string& mime_type, 211 const std::string& mime_type,
206 scoped_ptr<DownloadRequestHandleInterface> request_handle, 212 scoped_ptr<DownloadRequestHandleInterface> request_handle,
207 const net::BoundNetLog& bound_net_log) 213 const net::BoundNetLog& bound_net_log)
208 : is_save_package_download_(true), 214 : is_save_package_download_(true),
209 request_handle_(std::move(request_handle)), 215 request_handle_(std::move(request_handle)),
216 guid_(base::ToUpperASCII(base::GenerateGUID())),
210 download_id_(download_id), 217 download_id_(download_id),
211 current_path_(path), 218 current_path_(path),
212 target_path_(path), 219 target_path_(path),
213 url_chain_(1, url), 220 url_chain_(1, url),
214 mime_type_(mime_type), 221 mime_type_(mime_type),
215 original_mime_type_(mime_type), 222 original_mime_type_(mime_type),
216 start_tick_(base::TimeTicks::Now()), 223 start_tick_(base::TimeTicks::Now()),
217 state_(IN_PROGRESS_INTERNAL), 224 state_(IN_PROGRESS_INTERNAL),
218 start_time_(base::Time::Now()), 225 start_time_(base::Time::Now()),
219 delegate_(delegate), 226 delegate_(delegate),
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 void DownloadItemImpl::ShowDownloadInShell() { 425 void DownloadItemImpl::ShowDownloadInShell() {
419 DCHECK_CURRENTLY_ON(BrowserThread::UI); 426 DCHECK_CURRENTLY_ON(BrowserThread::UI);
420 427
421 delegate_->ShowDownloadInShell(this); 428 delegate_->ShowDownloadInShell(this);
422 } 429 }
423 430
424 uint32_t DownloadItemImpl::GetId() const { 431 uint32_t DownloadItemImpl::GetId() const {
425 return download_id_; 432 return download_id_;
426 } 433 }
427 434
435 const std::string& DownloadItemImpl::GetGuid() const {
436 return guid_;
437 }
438
428 DownloadItem::DownloadState DownloadItemImpl::GetState() const { 439 DownloadItem::DownloadState DownloadItemImpl::GetState() const {
429 return InternalToExternalState(state_); 440 return InternalToExternalState(state_);
430 } 441 }
431 442
432 DownloadInterruptReason DownloadItemImpl::GetLastReason() const { 443 DownloadInterruptReason DownloadItemImpl::GetLastReason() const {
433 return last_reason_; 444 return last_reason_;
434 } 445 }
435 446
436 bool DownloadItemImpl::IsPaused() const { 447 bool DownloadItemImpl::IsPaused() const {
437 return is_paused_; 448 return is_paused_;
(...skipping 1554 matching lines...) Expand 10 before | Expand all | Expand 10 after
1992 case RESUME_MODE_USER_CONTINUE: 2003 case RESUME_MODE_USER_CONTINUE:
1993 return "USER_CONTINUE"; 2004 return "USER_CONTINUE";
1994 case RESUME_MODE_USER_RESTART: 2005 case RESUME_MODE_USER_RESTART:
1995 return "USER_RESTART"; 2006 return "USER_RESTART";
1996 } 2007 }
1997 NOTREACHED() << "Unknown resume mode " << mode; 2008 NOTREACHED() << "Unknown resume mode " << mode;
1998 return "unknown"; 2009 return "unknown";
1999 } 2010 }
2000 2011
2001 } // namespace content 2012 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_item_impl.h ('k') | content/browser/download/download_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698