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_item_impl.h" | 5 #include "content/browser/download/download_item_impl.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 } | 80 } |
81 | 81 |
82 const char* DebugDownloadStateString(DownloadItem::DownloadState state) { | 82 const char* DebugDownloadStateString(DownloadItem::DownloadState state) { |
83 switch (state) { | 83 switch (state) { |
84 case DownloadItem::IN_PROGRESS: | 84 case DownloadItem::IN_PROGRESS: |
85 return "IN_PROGRESS"; | 85 return "IN_PROGRESS"; |
86 case DownloadItem::COMPLETE: | 86 case DownloadItem::COMPLETE: |
87 return "COMPLETE"; | 87 return "COMPLETE"; |
88 case DownloadItem::CANCELLED: | 88 case DownloadItem::CANCELLED: |
89 return "CANCELLED"; | 89 return "CANCELLED"; |
90 case DownloadItem::REMOVING: | |
91 return "REMOVING"; | |
92 case DownloadItem::INTERRUPTED: | 90 case DownloadItem::INTERRUPTED: |
93 return "INTERRUPTED"; | 91 return "INTERRUPTED"; |
94 default: | 92 default: |
95 NOTREACHED() << "Unknown download state " << state; | 93 NOTREACHED() << "Unknown download state " << state; |
96 return "unknown"; | 94 return "unknown"; |
97 }; | 95 }; |
98 } | 96 } |
99 | 97 |
100 // Classes to null out request handle calls (for SavePage DownloadItems, which | 98 // Classes to null out request handle calls (for SavePage DownloadItems, which |
101 // may have, e.g., Cancel() called on them without it doing anything) | 99 // may have, e.g., Cancel() called on them without it doing anything) |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 has_user_gesture_(false), | 154 has_user_gesture_(false), |
157 total_bytes_(info.total_bytes), | 155 total_bytes_(info.total_bytes), |
158 received_bytes_(info.received_bytes), | 156 received_bytes_(info.received_bytes), |
159 bytes_per_sec_(0), | 157 bytes_per_sec_(0), |
160 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), | 158 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), |
161 start_tick_(base::TimeTicks()), | 159 start_tick_(base::TimeTicks()), |
162 state_(static_cast<DownloadState>(info.state)), | 160 state_(static_cast<DownloadState>(info.state)), |
163 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 161 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
164 start_time_(info.start_time), | 162 start_time_(info.start_time), |
165 end_time_(info.end_time), | 163 end_time_(info.end_time), |
166 db_handle_(info.db_handle), | |
167 delegate_(delegate), | 164 delegate_(delegate), |
168 is_paused_(false), | 165 is_paused_(false), |
169 open_when_complete_(false), | 166 open_when_complete_(false), |
170 file_externally_removed_(false), | 167 file_externally_removed_(false), |
171 safety_state_(SAFE), | 168 safety_state_(SAFE), |
172 auto_opened_(false), | 169 auto_opened_(false), |
173 is_persisted_(true), | |
174 is_otr_(false), | 170 is_otr_(false), |
175 is_temporary_(false), | 171 is_temporary_(false), |
176 all_data_saved_(false), | 172 all_data_saved_(false), |
177 opened_(info.opened), | 173 opened_(info.opened), |
178 open_enabled_(true), | 174 open_enabled_(true), |
179 delegate_delayed_complete_(false), | 175 delegate_delayed_complete_(false), |
180 bound_net_log_(bound_net_log), | 176 bound_net_log_(bound_net_log), |
181 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 177 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
182 delegate_->Attach(); | 178 delegate_->Attach(); |
183 if (IsInProgress()) | 179 if (IsInProgress()) |
(...skipping 28 matching lines...) Expand all Loading... |
212 referrer_charset_(info.referrer_charset), | 208 referrer_charset_(info.referrer_charset), |
213 remote_address_(info.remote_address), | 209 remote_address_(info.remote_address), |
214 total_bytes_(info.total_bytes), | 210 total_bytes_(info.total_bytes), |
215 received_bytes_(0), | 211 received_bytes_(0), |
216 bytes_per_sec_(0), | 212 bytes_per_sec_(0), |
217 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), | 213 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), |
218 start_tick_(base::TimeTicks::Now()), | 214 start_tick_(base::TimeTicks::Now()), |
219 state_(IN_PROGRESS), | 215 state_(IN_PROGRESS), |
220 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 216 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
221 start_time_(info.start_time), | 217 start_time_(info.start_time), |
222 db_handle_(DownloadItem::kUninitializedHandle), | |
223 delegate_(delegate), | 218 delegate_(delegate), |
224 is_paused_(false), | 219 is_paused_(false), |
225 open_when_complete_(false), | 220 open_when_complete_(false), |
226 file_externally_removed_(false), | 221 file_externally_removed_(false), |
227 safety_state_(SAFE), | 222 safety_state_(SAFE), |
228 auto_opened_(false), | 223 auto_opened_(false), |
229 is_persisted_(false), | |
230 is_otr_(is_otr), | 224 is_otr_(is_otr), |
231 is_temporary_(!info.save_info.file_path.empty()), | 225 is_temporary_(!info.save_info.file_path.empty()), |
232 all_data_saved_(false), | 226 all_data_saved_(false), |
233 opened_(false), | 227 opened_(false), |
234 open_enabled_(true), | 228 open_enabled_(true), |
235 delegate_delayed_complete_(false), | 229 delegate_delayed_complete_(false), |
236 bound_net_log_(bound_net_log), | 230 bound_net_log_(bound_net_log), |
237 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 231 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
238 delegate_->Attach(); | 232 delegate_->Attach(); |
239 Init(true /* actively downloading */, | 233 Init(true /* actively downloading */, |
(...skipping 29 matching lines...) Expand all Loading... |
269 mime_type_(mime_type), | 263 mime_type_(mime_type), |
270 original_mime_type_(mime_type), | 264 original_mime_type_(mime_type), |
271 total_bytes_(0), | 265 total_bytes_(0), |
272 received_bytes_(0), | 266 received_bytes_(0), |
273 bytes_per_sec_(0), | 267 bytes_per_sec_(0), |
274 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), | 268 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), |
275 start_tick_(base::TimeTicks::Now()), | 269 start_tick_(base::TimeTicks::Now()), |
276 state_(IN_PROGRESS), | 270 state_(IN_PROGRESS), |
277 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 271 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
278 start_time_(base::Time::Now()), | 272 start_time_(base::Time::Now()), |
279 db_handle_(DownloadItem::kUninitializedHandle), | |
280 delegate_(delegate), | 273 delegate_(delegate), |
281 is_paused_(false), | 274 is_paused_(false), |
282 open_when_complete_(false), | 275 open_when_complete_(false), |
283 file_externally_removed_(false), | 276 file_externally_removed_(false), |
284 safety_state_(SAFE), | 277 safety_state_(SAFE), |
285 auto_opened_(false), | 278 auto_opened_(false), |
286 is_persisted_(false), | |
287 is_otr_(is_otr), | 279 is_otr_(is_otr), |
288 is_temporary_(false), | 280 is_temporary_(false), |
289 all_data_saved_(false), | 281 all_data_saved_(false), |
290 opened_(false), | 282 opened_(false), |
291 open_enabled_(true), | 283 open_enabled_(true), |
292 delegate_delayed_complete_(false), | 284 delegate_delayed_complete_(false), |
293 bound_net_log_(bound_net_log), | 285 bound_net_log_(bound_net_log), |
294 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 286 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
295 delegate_->Attach(); | 287 delegate_->Attach(); |
296 Init(true /* actively downloading */, | 288 Init(true /* actively downloading */, |
297 download_net_logs::SRC_SAVE_PAGE_AS); | 289 download_net_logs::SRC_SAVE_PAGE_AS); |
298 } | 290 } |
299 | 291 |
300 DownloadItemImpl::~DownloadItemImpl() { | 292 DownloadItemImpl::~DownloadItemImpl() { |
301 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
302 | 294 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadDestroyed(this)); |
303 TransitionTo(REMOVING); | |
304 STLDeleteContainerPairSecondPointers( | |
305 external_data_map_.begin(), external_data_map_.end()); | |
306 delegate_->AssertStateConsistent(this); | 295 delegate_->AssertStateConsistent(this); |
307 delegate_->Detach(); | 296 delegate_->Detach(); |
308 } | 297 } |
309 | 298 |
310 void DownloadItemImpl::AddObserver(Observer* observer) { | 299 void DownloadItemImpl::AddObserver(Observer* observer) { |
311 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 300 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
312 | 301 |
313 observers_.AddObserver(observer); | 302 observers_.AddObserver(observer); |
314 } | 303 } |
315 | 304 |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 // We have now been deleted. | 636 // We have now been deleted. |
648 } | 637 } |
649 | 638 |
650 void DownloadItemImpl::Remove() { | 639 void DownloadItemImpl::Remove() { |
651 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 640 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
652 | 641 |
653 delegate_->AssertStateConsistent(this); | 642 delegate_->AssertStateConsistent(this); |
654 Cancel(true); | 643 Cancel(true); |
655 delegate_->AssertStateConsistent(this); | 644 delegate_->AssertStateConsistent(this); |
656 | 645 |
657 TransitionTo(REMOVING); | 646 NotifyRemoved(); |
658 delegate_->DownloadRemoved(this); | 647 delegate_->DownloadRemoved(this); |
659 // We have now been deleted. | 648 // We have now been deleted. |
660 } | 649 } |
661 | 650 |
| 651 void DownloadItemImpl::NotifyRemoved() { |
| 652 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadRemoved(this)); |
| 653 } |
| 654 |
662 bool DownloadItemImpl::TimeRemaining(base::TimeDelta* remaining) const { | 655 bool DownloadItemImpl::TimeRemaining(base::TimeDelta* remaining) const { |
663 if (total_bytes_ <= 0) | 656 if (total_bytes_ <= 0) |
664 return false; // We never received the content_length for this download. | 657 return false; // We never received the content_length for this download. |
665 | 658 |
666 int64 speed = CurrentSpeed(); | 659 int64 speed = CurrentSpeed(); |
667 if (speed == 0) | 660 if (speed == 0) |
668 return false; | 661 return false; |
669 | 662 |
670 *remaining = base::TimeDelta::FromSeconds( | 663 *remaining = base::TimeDelta::FromSeconds( |
671 (total_bytes_ - received_bytes_) / speed); | 664 (total_bytes_ - received_bytes_) / speed); |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || | 813 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || |
821 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL || | 814 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL || |
822 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT || | 815 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT || |
823 danger_type_ == content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT); | 816 danger_type_ == content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT); |
824 #else | 817 #else |
825 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || | 818 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || |
826 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL); | 819 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL); |
827 #endif | 820 #endif |
828 } | 821 } |
829 | 822 |
830 DownloadPersistentStoreInfo DownloadItemImpl::GetPersistentStoreInfo() const { | |
831 // TODO(asanka): Persist GetTargetFilePath() as well. | |
832 return DownloadPersistentStoreInfo(GetFullPath(), | |
833 GetURL(), | |
834 GetReferrerUrl(), | |
835 GetStartTime(), | |
836 GetEndTime(), | |
837 GetReceivedBytes(), | |
838 GetTotalBytes(), | |
839 GetState(), | |
840 GetDbHandle(), | |
841 GetOpened()); | |
842 } | |
843 | |
844 WebContents* DownloadItemImpl::GetWebContents() const { | 823 WebContents* DownloadItemImpl::GetWebContents() const { |
845 // TODO(rdsmith): Remove null check after removing GetWebContents() from | 824 // TODO(rdsmith): Remove null check after removing GetWebContents() from |
846 // paths that might be used by DownloadItems created from history import. | 825 // paths that might be used by DownloadItems created from history import. |
847 // Currently such items have null request_handle_s, where other items | 826 // Currently such items have null request_handle_s, where other items |
848 // (regular and SavePackage downloads) have actual objects off the pointer. | 827 // (regular and SavePackage downloads) have actual objects off the pointer. |
849 if (request_handle_.get()) | 828 if (request_handle_.get()) |
850 return request_handle_->GetWebContents(); | 829 return request_handle_->GetWebContents(); |
851 return NULL; | 830 return NULL; |
852 } | 831 } |
853 | 832 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
965 | 944 |
966 bound_net_log_.BeginEvent( | 945 bound_net_log_.BeginEvent( |
967 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, | 946 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, |
968 base::Bind(&download_net_logs::ItemActivatedCallback, | 947 base::Bind(&download_net_logs::ItemActivatedCallback, |
969 this, download_type, &file_name)); | 948 this, download_type, &file_name)); |
970 | 949 |
971 // If this is not an active download, end the ACTIVE event now. | 950 // If this is not an active download, end the ACTIVE event now. |
972 if (!active) { | 951 if (!active) { |
973 bound_net_log_.AddEvent( | 952 bound_net_log_.AddEvent( |
974 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, | 953 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, |
975 net::NetLog::Int64Callback("db_handle", db_handle_)); | 954 net::NetLog::Int64Callback("id", GetId())); |
976 | 955 |
977 bound_net_log_.EndEvent(net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE); | 956 bound_net_log_.EndEvent(net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE); |
978 } | 957 } |
979 | 958 |
980 VLOG(20) << __FUNCTION__ << "() " << DebugString(true); | 959 VLOG(20) << __FUNCTION__ << "() " << DebugString(true); |
981 } | 960 } |
982 | 961 |
983 bool DownloadItemImpl::NeedsRename() const { | 962 bool DownloadItemImpl::NeedsRename() const { |
984 DCHECK(target_path_.DirName() == current_path_.DirName()); | 963 DCHECK(target_path_.DirName() == current_path_.DirName()); |
985 return target_path_ != current_path_; | 964 return target_path_ != current_path_; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 ++iter; | 1008 ++iter; |
1030 for ( ; verbose && (iter != last); ++iter) { | 1009 for ( ; verbose && (iter != last); ++iter) { |
1031 url_list += " ->\n\t"; | 1010 url_list += " ->\n\t"; |
1032 const GURL& next_url = *iter; | 1011 const GURL& next_url = *iter; |
1033 url_list += next_url.spec(); | 1012 url_list += next_url.spec(); |
1034 } | 1013 } |
1035 } | 1014 } |
1036 | 1015 |
1037 if (verbose) { | 1016 if (verbose) { |
1038 description += base::StringPrintf( | 1017 description += base::StringPrintf( |
1039 " db_handle = %" PRId64 | |
1040 " total = %" PRId64 | 1018 " total = %" PRId64 |
1041 " received = %" PRId64 | 1019 " received = %" PRId64 |
1042 " reason = %s" | 1020 " reason = %s" |
1043 " paused = %c" | 1021 " paused = %c" |
1044 " otr = %c" | 1022 " otr = %c" |
1045 " safety = %s" | 1023 " safety = %s" |
1046 " last_modified = '%s'" | 1024 " last_modified = '%s'" |
1047 " etag = '%s'" | 1025 " etag = '%s'" |
1048 " url_chain = \n\t\"%s\"\n\t" | 1026 " url_chain = \n\t\"%s\"\n\t" |
1049 " full_path = \"%" PRFilePath "\"" | 1027 " full_path = \"%" PRFilePath "\"" |
1050 " target_path = \"%" PRFilePath "\"", | 1028 " target_path = \"%" PRFilePath "\"", |
1051 GetDbHandle(), | |
1052 GetTotalBytes(), | 1029 GetTotalBytes(), |
1053 GetReceivedBytes(), | 1030 GetReceivedBytes(), |
1054 InterruptReasonDebugString(last_reason_).c_str(), | 1031 InterruptReasonDebugString(last_reason_).c_str(), |
1055 IsPaused() ? 'T' : 'F', | 1032 IsPaused() ? 'T' : 'F', |
1056 IsOtr() ? 'T' : 'F', | 1033 IsOtr() ? 'T' : 'F', |
1057 DebugSafetyStateString(GetSafetyState()), | 1034 DebugSafetyStateString(GetSafetyState()), |
1058 GetLastModifiedTime().c_str(), | 1035 GetLastModifiedTime().c_str(), |
1059 GetETag().c_str(), | 1036 GetETag().c_str(), |
1060 url_list.c_str(), | 1037 url_list.c_str(), |
1061 GetFullPath().value().c_str(), | 1038 GetFullPath().value().c_str(), |
1062 GetTargetFilePath().value().c_str()); | 1039 GetTargetFilePath().value().c_str()); |
1063 } else { | 1040 } else { |
1064 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); | 1041 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); |
1065 } | 1042 } |
1066 | 1043 |
1067 description += " }"; | 1044 description += " }"; |
1068 | 1045 |
1069 return description; | 1046 return description; |
1070 } | 1047 } |
1071 | 1048 |
1072 bool DownloadItemImpl::AllDataSaved() const { return all_data_saved_; } | 1049 bool DownloadItemImpl::AllDataSaved() const { return all_data_saved_; } |
| 1050 |
1073 DownloadItem::DownloadState DownloadItemImpl::GetState() const { | 1051 DownloadItem::DownloadState DownloadItemImpl::GetState() const { |
1074 return state_; | 1052 return state_; |
1075 } | 1053 } |
| 1054 |
1076 const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const { | 1055 const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const { |
1077 return url_chain_; | 1056 return url_chain_; |
1078 } | 1057 } |
| 1058 |
1079 const GURL& DownloadItemImpl::GetOriginalUrl() const { | 1059 const GURL& DownloadItemImpl::GetOriginalUrl() const { |
1080 return url_chain_.front(); | 1060 return url_chain_.front(); |
1081 } | 1061 } |
| 1062 |
1082 const GURL& DownloadItemImpl::GetReferrerUrl() const { return referrer_url_; } | 1063 const GURL& DownloadItemImpl::GetReferrerUrl() const { return referrer_url_; } |
| 1064 |
1083 std::string DownloadItemImpl::GetSuggestedFilename() const { | 1065 std::string DownloadItemImpl::GetSuggestedFilename() const { |
1084 return suggested_filename_; | 1066 return suggested_filename_; |
1085 } | 1067 } |
| 1068 |
1086 std::string DownloadItemImpl::GetContentDisposition() const { | 1069 std::string DownloadItemImpl::GetContentDisposition() const { |
1087 return content_disposition_; | 1070 return content_disposition_; |
1088 } | 1071 } |
| 1072 |
1089 std::string DownloadItemImpl::GetMimeType() const { return mime_type_; } | 1073 std::string DownloadItemImpl::GetMimeType() const { return mime_type_; } |
| 1074 |
1090 std::string DownloadItemImpl::GetOriginalMimeType() const { | 1075 std::string DownloadItemImpl::GetOriginalMimeType() const { |
1091 return original_mime_type_; | 1076 return original_mime_type_; |
1092 } | 1077 } |
| 1078 |
1093 std::string DownloadItemImpl::GetReferrerCharset() const { | 1079 std::string DownloadItemImpl::GetReferrerCharset() const { |
1094 return referrer_charset_; | 1080 return referrer_charset_; |
1095 } | 1081 } |
| 1082 |
1096 std::string DownloadItemImpl::GetRemoteAddress() const { | 1083 std::string DownloadItemImpl::GetRemoteAddress() const { |
1097 return remote_address_; | 1084 return remote_address_; |
1098 } | 1085 } |
| 1086 |
1099 int64 DownloadItemImpl::GetTotalBytes() const { return total_bytes_; } | 1087 int64 DownloadItemImpl::GetTotalBytes() const { return total_bytes_; } |
| 1088 |
1100 void DownloadItemImpl::SetTotalBytes(int64 total_bytes) { | 1089 void DownloadItemImpl::SetTotalBytes(int64 total_bytes) { |
1101 total_bytes_ = total_bytes; | 1090 total_bytes_ = total_bytes; |
1102 } | 1091 } |
| 1092 |
1103 const std::string& DownloadItemImpl::GetHash() const { return hash_; } | 1093 const std::string& DownloadItemImpl::GetHash() const { return hash_; } |
| 1094 |
1104 int64 DownloadItemImpl::GetReceivedBytes() const { return received_bytes_; } | 1095 int64 DownloadItemImpl::GetReceivedBytes() const { return received_bytes_; } |
| 1096 |
1105 const std::string& DownloadItemImpl::GetHashState() const { | 1097 const std::string& DownloadItemImpl::GetHashState() const { |
1106 return hash_state_; | 1098 return hash_state_; |
1107 } | 1099 } |
| 1100 |
1108 int32 DownloadItemImpl::GetId() const { return download_id_.local(); } | 1101 int32 DownloadItemImpl::GetId() const { return download_id_.local(); } |
| 1102 |
1109 DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; } | 1103 DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; } |
| 1104 |
1110 base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } | 1105 base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } |
| 1106 |
1111 base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } | 1107 base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } |
1112 | 1108 |
1113 void DownloadItemImpl::SetIsPersisted() { | 1109 bool DownloadItemImpl::IsPaused() const { return is_paused_; } |
1114 is_persisted_ = true; | |
1115 } | |
1116 | 1110 |
1117 bool DownloadItemImpl::IsPersisted() const { | |
1118 return is_persisted_; | |
1119 } | |
1120 | |
1121 void DownloadItemImpl::SetDbHandle(int64 handle) { | |
1122 db_handle_ = handle; | |
1123 | |
1124 bound_net_log_.AddEvent( | |
1125 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, | |
1126 net::NetLog::Int64Callback("db_handle", db_handle_)); | |
1127 } | |
1128 | |
1129 int64 DownloadItemImpl::GetDbHandle() const { return db_handle_; } | |
1130 bool DownloadItemImpl::IsPaused() const { return is_paused_; } | |
1131 bool DownloadItemImpl::GetOpenWhenComplete() const { | 1111 bool DownloadItemImpl::GetOpenWhenComplete() const { |
1132 return open_when_complete_; | 1112 return open_when_complete_; |
1133 } | 1113 } |
| 1114 |
1134 void DownloadItemImpl::SetOpenWhenComplete(bool open) { | 1115 void DownloadItemImpl::SetOpenWhenComplete(bool open) { |
1135 open_when_complete_ = open; | 1116 open_when_complete_ = open; |
1136 } | 1117 } |
| 1118 |
1137 bool DownloadItemImpl::GetFileExternallyRemoved() const { | 1119 bool DownloadItemImpl::GetFileExternallyRemoved() const { |
1138 return file_externally_removed_; | 1120 return file_externally_removed_; |
1139 } | 1121 } |
| 1122 |
1140 DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const { | 1123 DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const { |
1141 return safety_state_; | 1124 return safety_state_; |
1142 } | 1125 } |
| 1126 |
1143 bool DownloadItemImpl::IsOtr() const { return is_otr_; } | 1127 bool DownloadItemImpl::IsOtr() const { return is_otr_; } |
| 1128 |
1144 bool DownloadItemImpl::GetAutoOpened() { return auto_opened_; } | 1129 bool DownloadItemImpl::GetAutoOpened() { return auto_opened_; } |
| 1130 |
1145 FilePath DownloadItemImpl::GetTargetName() const { | 1131 FilePath DownloadItemImpl::GetTargetName() const { |
1146 return target_path_.BaseName(); | 1132 return target_path_.BaseName(); |
1147 } | 1133 } |
| 1134 |
1148 const FilePath& DownloadItemImpl::GetForcedFilePath() const { | 1135 const FilePath& DownloadItemImpl::GetForcedFilePath() const { |
1149 // TODO(asanka): Get rid of GetForcedFilePath(). We should instead just | 1136 // TODO(asanka): Get rid of GetForcedFilePath(). We should instead just |
1150 // require that clients respect GetTargetFilePath() if it is already set. | 1137 // require that clients respect GetTargetFilePath() if it is already set. |
1151 return forced_file_path_; | 1138 return forced_file_path_; |
1152 } | 1139 } |
| 1140 |
1153 bool DownloadItemImpl::HasUserGesture() const { | 1141 bool DownloadItemImpl::HasUserGesture() const { |
1154 return has_user_gesture_; | 1142 return has_user_gesture_; |
1155 }; | 1143 }; |
| 1144 |
1156 content::PageTransition DownloadItemImpl::GetTransitionType() const { | 1145 content::PageTransition DownloadItemImpl::GetTransitionType() const { |
1157 return transition_type_; | 1146 return transition_type_; |
1158 }; | 1147 }; |
| 1148 |
1159 bool DownloadItemImpl::IsTemporary() const { return is_temporary_; } | 1149 bool DownloadItemImpl::IsTemporary() const { return is_temporary_; } |
| 1150 |
1160 void DownloadItemImpl::SetIsTemporary(bool temporary) { | 1151 void DownloadItemImpl::SetIsTemporary(bool temporary) { |
1161 is_temporary_ = temporary; | 1152 is_temporary_ = temporary; |
1162 } | 1153 } |
| 1154 |
1163 void DownloadItemImpl::SetOpened(bool opened) { opened_ = opened; } | 1155 void DownloadItemImpl::SetOpened(bool opened) { opened_ = opened; } |
| 1156 |
1164 bool DownloadItemImpl::GetOpened() const { return opened_; } | 1157 bool DownloadItemImpl::GetOpened() const { return opened_; } |
| 1158 |
1165 const std::string& DownloadItemImpl::GetLastModifiedTime() const { | 1159 const std::string& DownloadItemImpl::GetLastModifiedTime() const { |
1166 return last_modified_time_; | 1160 return last_modified_time_; |
1167 } | 1161 } |
| 1162 |
1168 const std::string& DownloadItemImpl::GetETag() const { return etag_; } | 1163 const std::string& DownloadItemImpl::GetETag() const { return etag_; } |
| 1164 |
1169 content::DownloadInterruptReason DownloadItemImpl::GetLastReason() const { | 1165 content::DownloadInterruptReason DownloadItemImpl::GetLastReason() const { |
1170 return last_reason_; | 1166 return last_reason_; |
1171 } | 1167 } |
| 1168 |
1172 void DownloadItemImpl::MockDownloadOpenForTesting() { open_enabled_ = false; } | 1169 void DownloadItemImpl::MockDownloadOpenForTesting() { open_enabled_ = false; } |
1173 | |
1174 DownloadItem::ExternalData* | |
1175 DownloadItemImpl::GetExternalData(const void* key) { | |
1176 // The behavior of the const overload is identical with the exception of the | |
1177 // constness of |this| and the return value. | |
1178 return const_cast<DownloadItem::ExternalData*>( | |
1179 static_cast<const DownloadItemImpl&>(*this).GetExternalData(key)); | |
1180 } | |
1181 | |
1182 const DownloadItem::ExternalData* | |
1183 DownloadItemImpl::GetExternalData(const void* key) const { | |
1184 std::map<const void*, ExternalData*>::const_iterator it = | |
1185 external_data_map_.find(key); | |
1186 return (it == external_data_map_.end()) ? NULL : it->second; | |
1187 } | |
1188 | |
1189 void DownloadItemImpl::SetExternalData( | |
1190 const void* key, DownloadItem::ExternalData* data) { | |
1191 std::map<const void*, ExternalData*>::iterator it = | |
1192 external_data_map_.find(key); | |
1193 | |
1194 if (it == external_data_map_.end()) { | |
1195 external_data_map_[key] = data; | |
1196 } else if (it->second != data) { | |
1197 delete it->second; | |
1198 it->second = data; | |
1199 } | |
1200 } | |
OLD | NEW |