OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/download/download_item.h" | 5 #include "chrome/browser/download/download_item.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/i18n/case_conversion.h" | 10 #include "base/i18n/case_conversion.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 } | 113 } |
114 return dangerous_file ? | 114 return dangerous_file ? |
115 DownloadItem::DANGEROUS_FILE : DownloadItem::NOT_DANGEROUS; | 115 DownloadItem::DANGEROUS_FILE : DownloadItem::NOT_DANGEROUS; |
116 } | 116 } |
117 | 117 |
118 } // namespace | 118 } // namespace |
119 | 119 |
120 // Constructor for reading from the history service. | 120 // Constructor for reading from the history service. |
121 DownloadItem::DownloadItem(DownloadManager* download_manager, | 121 DownloadItem::DownloadItem(DownloadManager* download_manager, |
122 const DownloadHistoryInfo& info) | 122 const DownloadHistoryInfo& info) |
123 : download_id_(-1), | 123 : download_id_(info.db_handle), |
124 full_path_(info.path), | 124 full_path_(info.path), |
125 url_chain_(1, info.url), | 125 url_chain_(1, info.url), |
126 referrer_url_(info.referrer_url), | 126 referrer_url_(info.referrer_url), |
127 total_bytes_(info.total_bytes), | 127 total_bytes_(info.total_bytes), |
128 received_bytes_(info.received_bytes), | 128 received_bytes_(info.received_bytes), |
129 start_tick_(base::TimeTicks()), | 129 start_tick_(base::TimeTicks()), |
130 state_(static_cast<DownloadState>(info.state)), | 130 state_(static_cast<DownloadState>(info.state)), |
131 start_time_(info.start_time), | 131 start_time_(info.start_time), |
132 db_handle_(info.db_handle), | |
133 download_manager_(download_manager), | 132 download_manager_(download_manager), |
134 is_paused_(false), | 133 is_paused_(false), |
135 open_when_complete_(false), | 134 open_when_complete_(false), |
136 file_externally_removed_(false), | 135 file_externally_removed_(false), |
137 safety_state_(SAFE), | 136 safety_state_(SAFE), |
138 auto_opened_(false), | 137 auto_opened_(false), |
139 is_otr_(false), | 138 is_otr_(false), |
140 is_temporary_(false), | 139 is_temporary_(false), |
141 all_data_saved_(false), | 140 all_data_saved_(false), |
142 opened_(false), | 141 opened_(false), |
(...skipping 21 matching lines...) Expand all Loading... |
164 content_disposition_(info.content_disposition), | 163 content_disposition_(info.content_disposition), |
165 mime_type_(info.mime_type), | 164 mime_type_(info.mime_type), |
166 original_mime_type_(info.original_mime_type), | 165 original_mime_type_(info.original_mime_type), |
167 referrer_charset_(info.referrer_charset), | 166 referrer_charset_(info.referrer_charset), |
168 total_bytes_(info.total_bytes), | 167 total_bytes_(info.total_bytes), |
169 received_bytes_(0), | 168 received_bytes_(0), |
170 last_os_error_(0), | 169 last_os_error_(0), |
171 start_tick_(base::TimeTicks::Now()), | 170 start_tick_(base::TimeTicks::Now()), |
172 state_(IN_PROGRESS), | 171 state_(IN_PROGRESS), |
173 start_time_(info.start_time), | 172 start_time_(info.start_time), |
174 db_handle_(DownloadHistory::kUninitializedHandle), | |
175 download_manager_(download_manager), | 173 download_manager_(download_manager), |
176 is_paused_(false), | 174 is_paused_(false), |
177 open_when_complete_(false), | 175 open_when_complete_(false), |
178 file_externally_removed_(false), | 176 file_externally_removed_(false), |
179 safety_state_(SAFE), | 177 safety_state_(SAFE), |
180 auto_opened_(false), | 178 auto_opened_(false), |
181 is_otr_(is_otr), | 179 is_otr_(is_otr), |
182 is_temporary_(!info.save_info.file_path.empty()), | 180 is_temporary_(!info.save_info.file_path.empty()), |
183 all_data_saved_(false), | 181 all_data_saved_(false), |
184 opened_(false), | 182 opened_(false), |
185 open_enabled_(true) { | 183 open_enabled_(true) { |
186 Init(true /* actively downloading */); | 184 Init(true /* actively downloading */); |
187 } | 185 } |
188 | 186 |
189 // Constructing for the "Save Page As..." feature: | 187 // Constructing for the "Save Page As..." feature: |
190 DownloadItem::DownloadItem(DownloadManager* download_manager, | 188 DownloadItem::DownloadItem(DownloadManager* download_manager, |
191 const FilePath& path, | 189 const FilePath& path, |
192 const GURL& url, | 190 const GURL& url, |
193 bool is_otr) | 191 bool is_otr) |
194 : download_id_(1), | 192 : download_id_(-1), |
195 full_path_(path), | 193 full_path_(path), |
196 url_chain_(1, url), | 194 url_chain_(1, url), |
197 referrer_url_(GURL()), | 195 referrer_url_(GURL()), |
198 total_bytes_(0), | 196 total_bytes_(0), |
199 received_bytes_(0), | 197 received_bytes_(0), |
200 last_os_error_(0), | 198 last_os_error_(0), |
201 start_tick_(base::TimeTicks::Now()), | 199 start_tick_(base::TimeTicks::Now()), |
202 state_(IN_PROGRESS), | 200 state_(IN_PROGRESS), |
203 start_time_(base::Time::Now()), | 201 start_time_(base::Time::Now()), |
204 db_handle_(DownloadHistory::kUninitializedHandle), | |
205 download_manager_(download_manager), | 202 download_manager_(download_manager), |
206 is_paused_(false), | 203 is_paused_(false), |
207 open_when_complete_(false), | 204 open_when_complete_(false), |
208 file_externally_removed_(false), | 205 file_externally_removed_(false), |
209 safety_state_(SAFE), | 206 safety_state_(SAFE), |
210 auto_opened_(false), | 207 auto_opened_(false), |
211 is_otr_(is_otr), | 208 is_otr_(is_otr), |
212 is_temporary_(false), | 209 is_temporary_(false), |
213 all_data_saved_(false), | 210 all_data_saved_(false), |
214 opened_(false), | 211 opened_(false), |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 | 529 |
533 void DownloadItem::Remove() { | 530 void DownloadItem::Remove() { |
534 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. | 531 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. |
535 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 532 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
536 | 533 |
537 download_manager_->AssertQueueStateConsistent(this); | 534 download_manager_->AssertQueueStateConsistent(this); |
538 Cancel(true); | 535 Cancel(true); |
539 download_manager_->AssertQueueStateConsistent(this); | 536 download_manager_->AssertQueueStateConsistent(this); |
540 | 537 |
541 state_ = REMOVING; | 538 state_ = REMOVING; |
542 download_manager_->RemoveDownload(db_handle_); | 539 download_manager_->RemoveDownload(id()); |
543 // We have now been deleted. | 540 // We have now been deleted. |
544 } | 541 } |
545 | 542 |
546 bool DownloadItem::TimeRemaining(base::TimeDelta* remaining) const { | 543 bool DownloadItem::TimeRemaining(base::TimeDelta* remaining) const { |
547 if (total_bytes_ <= 0) | 544 if (total_bytes_ <= 0) |
548 return false; // We never received the content_length for this download. | 545 return false; // We never received the content_length for this download. |
549 | 546 |
550 int64 speed = CurrentSpeed(); | 547 int64 speed = CurrentSpeed(); |
551 if (speed == 0) | 548 if (speed == 0) |
552 return false; | 549 return false; |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 } | 721 } |
725 | 722 |
726 DownloadHistoryInfo DownloadItem::GetHistoryInfo() const { | 723 DownloadHistoryInfo DownloadItem::GetHistoryInfo() const { |
727 return DownloadHistoryInfo(full_path(), | 724 return DownloadHistoryInfo(full_path(), |
728 GetURL(), | 725 GetURL(), |
729 referrer_url(), | 726 referrer_url(), |
730 start_time(), | 727 start_time(), |
731 received_bytes(), | 728 received_bytes(), |
732 total_bytes(), | 729 total_bytes(), |
733 state(), | 730 state(), |
734 db_handle()); | 731 id()); |
735 } | 732 } |
736 | 733 |
737 FilePath DownloadItem::GetTargetFilePath() const { | 734 FilePath DownloadItem::GetTargetFilePath() const { |
738 return full_path_.DirName().Append(state_info_.target_name); | 735 return full_path_.DirName().Append(state_info_.target_name); |
739 } | 736 } |
740 | 737 |
741 FilePath DownloadItem::GetFileNameToReportUser() const { | 738 FilePath DownloadItem::GetFileNameToReportUser() const { |
742 if (state_info_.path_uniquifier > 0) { | 739 if (state_info_.path_uniquifier > 0) { |
743 FilePath name(state_info_.target_name); | 740 FilePath name(state_info_.target_name); |
744 download_util::AppendNumberToPath(&name, state_info_.path_uniquifier); | 741 download_util::AppendNumberToPath(&name, state_info_.path_uniquifier); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 ++iter; | 805 ++iter; |
809 for ( ; verbose && (iter != last); ++iter) { | 806 for ( ; verbose && (iter != last); ++iter) { |
810 url_list += " ->\n\t"; | 807 url_list += " ->\n\t"; |
811 const GURL& next_url = *iter; | 808 const GURL& next_url = *iter; |
812 url_list += next_url.spec(); | 809 url_list += next_url.spec(); |
813 } | 810 } |
814 } | 811 } |
815 | 812 |
816 if (verbose) { | 813 if (verbose) { |
817 description += base::StringPrintf( | 814 description += base::StringPrintf( |
818 " db_handle = %" PRId64 | 815 " id = %" PRId32 |
819 " total_bytes = %" PRId64 | 816 " total_bytes = %" PRId64 |
820 " received_bytes = %" PRId64 | 817 " received_bytes = %" PRId64 |
821 " is_paused = %c" | 818 " is_paused = %c" |
822 " is_extension_install = %c" | 819 " is_extension_install = %c" |
823 " is_otr = %c" | 820 " is_otr = %c" |
824 " safety_state = %s" | 821 " safety_state = %s" |
825 " url_chain = \n\t\"%s\"\n\t" | 822 " url_chain = \n\t\"%s\"\n\t" |
826 " target_name = \"%" PRFilePath "\"" | 823 " target_name = \"%" PRFilePath "\"" |
827 " full_path = \"%" PRFilePath "\"", | 824 " full_path = \"%" PRFilePath "\"", |
828 db_handle(), | 825 id(), |
829 total_bytes(), | 826 total_bytes(), |
830 received_bytes(), | 827 received_bytes(), |
831 is_paused() ? 'T' : 'F', | 828 is_paused() ? 'T' : 'F', |
832 is_extension_install() ? 'T' : 'F', | 829 is_extension_install() ? 'T' : 'F', |
833 is_otr() ? 'T' : 'F', | 830 is_otr() ? 'T' : 'F', |
834 DebugSafetyStateString(safety_state()), | 831 DebugSafetyStateString(safety_state()), |
835 url_list.c_str(), | 832 url_list.c_str(), |
836 state_info_.target_name.value().c_str(), | 833 state_info_.target_name.value().c_str(), |
837 full_path().value().c_str()); | 834 full_path().value().c_str()); |
838 } else { | 835 } else { |
839 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); | 836 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); |
840 } | 837 } |
841 | 838 |
842 description += " }"; | 839 description += " }"; |
843 | 840 |
844 return description; | 841 return description; |
845 } | 842 } |
OLD | NEW |