| 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" |
| 11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
| 12 #include "base/format_macros.h" | 12 #include "base/format_macros.h" |
| 13 #include "base/i18n/case_conversion.h" | 13 #include "base/i18n/case_conversion.h" |
| 14 #include "base/i18n/string_search.h" | 14 #include "base/i18n/string_search.h" |
| 15 #include "base/logging.h" | 15 #include "base/logging.h" |
| 16 #include "base/metrics/histogram.h" | 16 #include "base/metrics/histogram.h" |
| 17 #include "base/stl_util.h" | 17 #include "base/stl_util.h" |
| 18 #include "base/stringprintf.h" | 18 #include "base/stringprintf.h" |
| 19 #include "base/utf_string_conversions.h" | 19 #include "base/utf_string_conversions.h" |
| 20 #include "content/browser/download/download_create_info.h" | 20 #include "content/browser/download/download_create_info.h" |
| 21 #include "content/browser/download/download_file.h" | 21 #include "content/browser/download/download_file.h" |
| 22 #include "content/browser/download/download_file_manager.h" | 22 #include "content/browser/download/download_file_manager.h" |
| 23 #include "content/browser/download/download_interrupt_reasons_impl.h" | 23 #include "content/browser/download/download_interrupt_reasons_impl.h" |
| 24 #include "content/browser/download/download_item_impl_delegate.h" | 24 #include "content/browser/download/download_item_impl_delegate.h" |
| 25 #include "content/browser/download/download_request_handle.h" | 25 #include "content/browser/download/download_request_handle.h" |
| 26 #include "content/browser/download/download_stats.h" | 26 #include "content/browser/download/download_stats.h" |
| 27 #include "content/browser/web_contents/web_contents_impl.h" | 27 #include "content/browser/web_contents/web_contents_impl.h" |
| 28 #include "content/public/browser/browser_thread.h" | 28 #include "content/public/browser/browser_thread.h" |
| 29 #include "content/public/browser/content_browser_client.h" | 29 #include "content/public/browser/content_browser_client.h" |
| 30 #include "content/public/browser/download_persistent_store_info.h" | |
| 31 #include "net/base/net_util.h" | 30 #include "net/base/net_util.h" |
| 32 | 31 |
| 33 using content::BrowserThread; | 32 using content::BrowserThread; |
| 34 using content::DownloadFile; | 33 using content::DownloadFile; |
| 35 using content::DownloadId; | 34 using content::DownloadId; |
| 36 using content::DownloadItem; | 35 using content::DownloadItem; |
| 37 using content::DownloadManager; | 36 using content::DownloadManager; |
| 38 using content::DownloadPersistentStoreInfo; | |
| 39 using content::WebContents; | 37 using content::WebContents; |
| 40 | 38 |
| 41 // A DownloadItem normally goes through the following states: | 39 // A DownloadItem normally goes through the following states: |
| 42 // * Created (when download starts) | 40 // * Created (when download starts) |
| 43 // * Made visible to consumers (e.g. Javascript) after the | 41 // * Made visible to consumers (e.g. Javascript) after the |
| 44 // destination file has been determined. | 42 // destination file has been determined. |
| 45 // * Entered into the history database. | 43 // * Entered into the history database. |
| 46 // * Made visible in the download shelf. | 44 // * Made visible in the download shelf. |
| 47 // * All data is saved. Note that the actual data download occurs | 45 // * All data is saved. Note that the actual data download occurs |
| 48 // in parallel with the above steps, but until those steps are | 46 // in parallel with the above steps, but until those steps are |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 virtual void CancelRequest() const OVERRIDE {} | 114 virtual void CancelRequest() const OVERRIDE {} |
| 117 virtual std::string DebugString() const OVERRIDE { | 115 virtual std::string DebugString() const OVERRIDE { |
| 118 return "Null DownloadRequestHandle"; | 116 return "Null DownloadRequestHandle"; |
| 119 } | 117 } |
| 120 }; | 118 }; |
| 121 | 119 |
| 122 } // namespace | 120 } // namespace |
| 123 | 121 |
| 124 namespace content { | 122 namespace content { |
| 125 | 123 |
| 126 // Our download table ID starts at 1, so we use 0 to represent a download that | |
| 127 // has started, but has not yet had its data persisted in the table. We use fake | |
| 128 // database handles in incognito mode starting at -1 and progressively getting | |
| 129 // more negative. | |
| 130 // static | |
| 131 const int DownloadItem::kUninitializedHandle = 0; | |
| 132 | |
| 133 const char DownloadItem::kEmptyFileHash[] = ""; | 124 const char DownloadItem::kEmptyFileHash[] = ""; |
| 134 | 125 |
| 135 } | 126 } |
| 136 | 127 |
| 137 // Our download table ID starts at 1, so we use 0 to represent a download that | 128 // Our download table ID starts at 1, so we use 0 to represent a download that |
| 138 // has started, but has not yet had its data persisted in the table. We use fake | 129 // has started, but has not yet had its data persisted in the table. We use fake |
| 139 // database handles in incognito mode starting at -1 and progressively getting | 130 // database handles in incognito mode starting at -1 and progressively getting |
| 140 // more negative. | 131 // more negative. |
| 141 | 132 |
| 142 // Constructor for reading from the history service. | 133 // Constructor for reading from the history service. |
| 143 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, | 134 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, |
| 144 DownloadId download_id, | 135 DownloadId download_id, |
| 145 const DownloadPersistentStoreInfo& info, | 136 const FilePath& path, |
| 137 const GURL& url, |
| 138 const GURL& referrer_url, |
| 139 const base::Time& start_time, |
| 140 const base::Time& end_time, |
| 141 int64 received_bytes, |
| 142 int64 total_bytes, |
| 143 DownloadItem::DownloadState state, |
| 144 bool opened, |
| 146 const net::BoundNetLog& bound_net_log) | 145 const net::BoundNetLog& bound_net_log) |
| 147 : download_id_(download_id), | 146 : download_id_(download_id), |
| 148 current_path_(info.path), | 147 current_path_(path), |
| 149 target_path_(info.path), | 148 target_path_(path), |
| 150 target_disposition_(TARGET_DISPOSITION_OVERWRITE), | 149 target_disposition_(TARGET_DISPOSITION_OVERWRITE), |
| 151 url_chain_(1, info.url), | 150 url_chain_(1, url), |
| 152 referrer_url_(info.referrer_url), | 151 referrer_url_(referrer_url), |
| 153 transition_type_(content::PAGE_TRANSITION_LINK), | 152 transition_type_(content::PAGE_TRANSITION_LINK), |
| 154 has_user_gesture_(false), | 153 has_user_gesture_(false), |
| 155 total_bytes_(info.total_bytes), | 154 total_bytes_(total_bytes), |
| 156 received_bytes_(info.received_bytes), | 155 received_bytes_(received_bytes), |
| 157 bytes_per_sec_(0), | 156 bytes_per_sec_(0), |
| 158 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), | 157 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), |
| 159 start_tick_(base::TimeTicks()), | 158 start_tick_(base::TimeTicks()), |
| 160 state_(info.state), | 159 state_(state), |
| 161 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 160 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
| 162 start_time_(info.start_time), | 161 start_time_(start_time), |
| 163 end_time_(info.end_time), | 162 end_time_(end_time), |
| 164 db_handle_(info.db_handle), | |
| 165 delegate_(delegate), | 163 delegate_(delegate), |
| 166 is_paused_(false), | 164 is_paused_(false), |
| 167 open_when_complete_(false), | 165 open_when_complete_(false), |
| 168 file_externally_removed_(false), | 166 file_externally_removed_(false), |
| 169 safety_state_(SAFE), | 167 safety_state_(SAFE), |
| 170 auto_opened_(false), | 168 auto_opened_(false), |
| 171 is_persisted_(true), | |
| 172 is_temporary_(false), | 169 is_temporary_(false), |
| 173 all_data_saved_(false), | 170 all_data_saved_(false), |
| 174 opened_(info.opened), | 171 opened_(opened), |
| 175 open_enabled_(true), | 172 open_enabled_(true), |
| 176 delegate_delayed_complete_(false), | 173 delegate_delayed_complete_(false), |
| 177 bound_net_log_(bound_net_log), | 174 bound_net_log_(bound_net_log), |
| 178 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 175 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 179 delegate_->Attach(); | 176 delegate_->Attach(); |
| 180 if (IsInProgress()) | 177 if (IsInProgress()) |
| 181 state_ = CANCELLED; | 178 state_ = CANCELLED; |
| 182 if (IsComplete()) | 179 if (IsComplete()) |
| 183 all_data_saved_ = true; | 180 all_data_saved_ = true; |
| 184 Init(false /* not actively downloading */, | 181 Init(false /* not actively downloading */, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 208 referrer_charset_(info.referrer_charset), | 205 referrer_charset_(info.referrer_charset), |
| 209 remote_address_(info.remote_address), | 206 remote_address_(info.remote_address), |
| 210 total_bytes_(info.total_bytes), | 207 total_bytes_(info.total_bytes), |
| 211 received_bytes_(0), | 208 received_bytes_(0), |
| 212 bytes_per_sec_(0), | 209 bytes_per_sec_(0), |
| 213 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), | 210 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), |
| 214 start_tick_(base::TimeTicks::Now()), | 211 start_tick_(base::TimeTicks::Now()), |
| 215 state_(IN_PROGRESS), | 212 state_(IN_PROGRESS), |
| 216 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 213 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
| 217 start_time_(info.start_time), | 214 start_time_(info.start_time), |
| 218 db_handle_(DownloadItem::kUninitializedHandle), | |
| 219 delegate_(delegate), | 215 delegate_(delegate), |
| 220 is_paused_(false), | 216 is_paused_(false), |
| 221 open_when_complete_(false), | 217 open_when_complete_(false), |
| 222 file_externally_removed_(false), | 218 file_externally_removed_(false), |
| 223 safety_state_(SAFE), | 219 safety_state_(SAFE), |
| 224 auto_opened_(false), | 220 auto_opened_(false), |
| 225 is_persisted_(false), | |
| 226 is_temporary_(!info.save_info.file_path.empty()), | 221 is_temporary_(!info.save_info.file_path.empty()), |
| 227 all_data_saved_(false), | 222 all_data_saved_(false), |
| 228 opened_(false), | 223 opened_(false), |
| 229 open_enabled_(true), | 224 open_enabled_(true), |
| 230 delegate_delayed_complete_(false), | 225 delegate_delayed_complete_(false), |
| 231 bound_net_log_(bound_net_log), | 226 bound_net_log_(bound_net_log), |
| 232 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 227 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 233 delegate_->Attach(); | 228 delegate_->Attach(); |
| 234 Init(true /* actively downloading */, | 229 Init(true /* actively downloading */, |
| 235 download_net_logs::SRC_NEW_DOWNLOAD); | 230 download_net_logs::SRC_NEW_DOWNLOAD); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 263 mime_type_(mime_type), | 258 mime_type_(mime_type), |
| 264 original_mime_type_(mime_type), | 259 original_mime_type_(mime_type), |
| 265 total_bytes_(0), | 260 total_bytes_(0), |
| 266 received_bytes_(0), | 261 received_bytes_(0), |
| 267 bytes_per_sec_(0), | 262 bytes_per_sec_(0), |
| 268 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), | 263 last_reason_(content::DOWNLOAD_INTERRUPT_REASON_NONE), |
| 269 start_tick_(base::TimeTicks::Now()), | 264 start_tick_(base::TimeTicks::Now()), |
| 270 state_(IN_PROGRESS), | 265 state_(IN_PROGRESS), |
| 271 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 266 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
| 272 start_time_(base::Time::Now()), | 267 start_time_(base::Time::Now()), |
| 273 db_handle_(DownloadItem::kUninitializedHandle), | |
| 274 delegate_(delegate), | 268 delegate_(delegate), |
| 275 is_paused_(false), | 269 is_paused_(false), |
| 276 open_when_complete_(false), | 270 open_when_complete_(false), |
| 277 file_externally_removed_(false), | 271 file_externally_removed_(false), |
| 278 safety_state_(SAFE), | 272 safety_state_(SAFE), |
| 279 auto_opened_(false), | 273 auto_opened_(false), |
| 280 is_persisted_(false), | |
| 281 is_temporary_(false), | 274 is_temporary_(false), |
| 282 all_data_saved_(false), | 275 all_data_saved_(false), |
| 283 opened_(false), | 276 opened_(false), |
| 284 open_enabled_(true), | 277 open_enabled_(true), |
| 285 delegate_delayed_complete_(false), | 278 delegate_delayed_complete_(false), |
| 286 bound_net_log_(bound_net_log), | 279 bound_net_log_(bound_net_log), |
| 287 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 280 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 288 delegate_->Attach(); | 281 delegate_->Attach(); |
| 289 Init(true /* actively downloading */, | 282 Init(true /* actively downloading */, |
| 290 download_net_logs::SRC_SAVE_PAGE_AS); | 283 download_net_logs::SRC_SAVE_PAGE_AS); |
| (...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 814 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || | 807 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || |
| 815 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL || | 808 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL || |
| 816 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT || | 809 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT || |
| 817 danger_type_ == content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT); | 810 danger_type_ == content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT); |
| 818 #else | 811 #else |
| 819 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || | 812 return (danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || |
| 820 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL); | 813 danger_type_ == content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL); |
| 821 #endif | 814 #endif |
| 822 } | 815 } |
| 823 | 816 |
| 824 DownloadPersistentStoreInfo DownloadItemImpl::GetPersistentStoreInfo() const { | |
| 825 // TODO(asanka): Persist GetTargetFilePath() as well. | |
| 826 return DownloadPersistentStoreInfo(GetFullPath(), | |
| 827 GetURL(), | |
| 828 GetReferrerUrl(), | |
| 829 GetStartTime(), | |
| 830 GetEndTime(), | |
| 831 GetReceivedBytes(), | |
| 832 GetTotalBytes(), | |
| 833 GetState(), | |
| 834 GetDbHandle(), | |
| 835 GetOpened()); | |
| 836 } | |
| 837 | |
| 838 WebContents* DownloadItemImpl::GetWebContents() const { | 817 WebContents* DownloadItemImpl::GetWebContents() const { |
| 839 // TODO(rdsmith): Remove null check after removing GetWebContents() from | 818 // TODO(rdsmith): Remove null check after removing GetWebContents() from |
| 840 // paths that might be used by DownloadItems created from history import. | 819 // paths that might be used by DownloadItems created from history import. |
| 841 // Currently such items have null request_handle_s, where other items | 820 // Currently such items have null request_handle_s, where other items |
| 842 // (regular and SavePackage downloads) have actual objects off the pointer. | 821 // (regular and SavePackage downloads) have actual objects off the pointer. |
| 843 if (request_handle_.get()) | 822 if (request_handle_.get()) |
| 844 return request_handle_->GetWebContents(); | 823 return request_handle_->GetWebContents(); |
| 845 return NULL; | 824 return NULL; |
| 846 } | 825 } |
| 847 | 826 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 | 938 |
| 960 bound_net_log_.BeginEvent( | 939 bound_net_log_.BeginEvent( |
| 961 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, | 940 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, |
| 962 base::Bind(&download_net_logs::ItemActivatedCallback, | 941 base::Bind(&download_net_logs::ItemActivatedCallback, |
| 963 this, download_type, &file_name)); | 942 this, download_type, &file_name)); |
| 964 | 943 |
| 965 // If this is not an active download, end the ACTIVE event now. | 944 // If this is not an active download, end the ACTIVE event now. |
| 966 if (!active) { | 945 if (!active) { |
| 967 bound_net_log_.AddEvent( | 946 bound_net_log_.AddEvent( |
| 968 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, | 947 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, |
| 969 net::NetLog::Int64Callback("db_handle", db_handle_)); | 948 net::NetLog::Int64Callback("id", GetId())); |
| 970 | 949 |
| 971 bound_net_log_.EndEvent(net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE); | 950 bound_net_log_.EndEvent(net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE); |
| 972 } | 951 } |
| 973 | 952 |
| 974 VLOG(20) << __FUNCTION__ << "() " << DebugString(true); | 953 VLOG(20) << __FUNCTION__ << "() " << DebugString(true); |
| 975 } | 954 } |
| 976 | 955 |
| 977 bool DownloadItemImpl::NeedsRename() const { | 956 bool DownloadItemImpl::NeedsRename() const { |
| 978 DCHECK(target_path_.DirName() == current_path_.DirName()); | 957 DCHECK(target_path_.DirName() == current_path_.DirName()); |
| 979 return target_path_ != current_path_; | 958 return target_path_ != current_path_; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1023 ++iter; | 1002 ++iter; |
| 1024 for ( ; verbose && (iter != last); ++iter) { | 1003 for ( ; verbose && (iter != last); ++iter) { |
| 1025 url_list += " ->\n\t"; | 1004 url_list += " ->\n\t"; |
| 1026 const GURL& next_url = *iter; | 1005 const GURL& next_url = *iter; |
| 1027 url_list += next_url.spec(); | 1006 url_list += next_url.spec(); |
| 1028 } | 1007 } |
| 1029 } | 1008 } |
| 1030 | 1009 |
| 1031 if (verbose) { | 1010 if (verbose) { |
| 1032 description += base::StringPrintf( | 1011 description += base::StringPrintf( |
| 1033 " db_handle = %" PRId64 | |
| 1034 " total = %" PRId64 | 1012 " total = %" PRId64 |
| 1035 " received = %" PRId64 | 1013 " received = %" PRId64 |
| 1036 " reason = %s" | 1014 " reason = %s" |
| 1037 " paused = %c" | 1015 " paused = %c" |
| 1038 " safety = %s" | 1016 " safety = %s" |
| 1039 " last_modified = '%s'" | 1017 " last_modified = '%s'" |
| 1040 " etag = '%s'" | 1018 " etag = '%s'" |
| 1041 " url_chain = \n\t\"%s\"\n\t" | 1019 " url_chain = \n\t\"%s\"\n\t" |
| 1042 " full_path = \"%" PRFilePath "\"" | 1020 " full_path = \"%" PRFilePath "\"" |
| 1043 " target_path = \"%" PRFilePath "\"", | 1021 " target_path = \"%" PRFilePath "\"", |
| 1044 GetDbHandle(), | |
| 1045 GetTotalBytes(), | 1022 GetTotalBytes(), |
| 1046 GetReceivedBytes(), | 1023 GetReceivedBytes(), |
| 1047 InterruptReasonDebugString(last_reason_).c_str(), | 1024 InterruptReasonDebugString(last_reason_).c_str(), |
| 1048 IsPaused() ? 'T' : 'F', | 1025 IsPaused() ? 'T' : 'F', |
| 1049 DebugSafetyStateString(GetSafetyState()), | 1026 DebugSafetyStateString(GetSafetyState()), |
| 1050 GetLastModifiedTime().c_str(), | 1027 GetLastModifiedTime().c_str(), |
| 1051 GetETag().c_str(), | 1028 GetETag().c_str(), |
| 1052 url_list.c_str(), | 1029 url_list.c_str(), |
| 1053 GetFullPath().value().c_str(), | 1030 GetFullPath().value().c_str(), |
| 1054 GetTargetFilePath().value().c_str()); | 1031 GetTargetFilePath().value().c_str()); |
| 1055 } else { | 1032 } else { |
| 1056 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); | 1033 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); |
| 1057 } | 1034 } |
| 1058 | 1035 |
| 1059 description += " }"; | 1036 description += " }"; |
| 1060 | 1037 |
| 1061 return description; | 1038 return description; |
| 1062 } | 1039 } |
| 1063 | 1040 |
| 1064 bool DownloadItemImpl::AllDataSaved() const { return all_data_saved_; } | 1041 bool DownloadItemImpl::AllDataSaved() const { return all_data_saved_; } |
| 1042 |
| 1065 DownloadItem::DownloadState DownloadItemImpl::GetState() const { | 1043 DownloadItem::DownloadState DownloadItemImpl::GetState() const { |
| 1066 return state_; | 1044 return state_; |
| 1067 } | 1045 } |
| 1046 |
| 1068 const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const { | 1047 const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const { |
| 1069 return url_chain_; | 1048 return url_chain_; |
| 1070 } | 1049 } |
| 1050 |
| 1071 const GURL& DownloadItemImpl::GetOriginalUrl() const { | 1051 const GURL& DownloadItemImpl::GetOriginalUrl() const { |
| 1072 return url_chain_.front(); | 1052 return url_chain_.front(); |
| 1073 } | 1053 } |
| 1054 |
| 1074 const GURL& DownloadItemImpl::GetReferrerUrl() const { return referrer_url_; } | 1055 const GURL& DownloadItemImpl::GetReferrerUrl() const { return referrer_url_; } |
| 1056 |
| 1075 std::string DownloadItemImpl::GetSuggestedFilename() const { | 1057 std::string DownloadItemImpl::GetSuggestedFilename() const { |
| 1076 return suggested_filename_; | 1058 return suggested_filename_; |
| 1077 } | 1059 } |
| 1060 |
| 1078 std::string DownloadItemImpl::GetContentDisposition() const { | 1061 std::string DownloadItemImpl::GetContentDisposition() const { |
| 1079 return content_disposition_; | 1062 return content_disposition_; |
| 1080 } | 1063 } |
| 1064 |
| 1081 std::string DownloadItemImpl::GetMimeType() const { return mime_type_; } | 1065 std::string DownloadItemImpl::GetMimeType() const { return mime_type_; } |
| 1066 |
| 1082 std::string DownloadItemImpl::GetOriginalMimeType() const { | 1067 std::string DownloadItemImpl::GetOriginalMimeType() const { |
| 1083 return original_mime_type_; | 1068 return original_mime_type_; |
| 1084 } | 1069 } |
| 1070 |
| 1085 std::string DownloadItemImpl::GetReferrerCharset() const { | 1071 std::string DownloadItemImpl::GetReferrerCharset() const { |
| 1086 return referrer_charset_; | 1072 return referrer_charset_; |
| 1087 } | 1073 } |
| 1074 |
| 1088 std::string DownloadItemImpl::GetRemoteAddress() const { | 1075 std::string DownloadItemImpl::GetRemoteAddress() const { |
| 1089 return remote_address_; | 1076 return remote_address_; |
| 1090 } | 1077 } |
| 1078 |
| 1091 int64 DownloadItemImpl::GetTotalBytes() const { return total_bytes_; } | 1079 int64 DownloadItemImpl::GetTotalBytes() const { return total_bytes_; } |
| 1080 |
| 1092 void DownloadItemImpl::SetTotalBytes(int64 total_bytes) { | 1081 void DownloadItemImpl::SetTotalBytes(int64 total_bytes) { |
| 1093 total_bytes_ = total_bytes; | 1082 total_bytes_ = total_bytes; |
| 1094 } | 1083 } |
| 1084 |
| 1095 const std::string& DownloadItemImpl::GetHash() const { return hash_; } | 1085 const std::string& DownloadItemImpl::GetHash() const { return hash_; } |
| 1086 |
| 1096 int64 DownloadItemImpl::GetReceivedBytes() const { return received_bytes_; } | 1087 int64 DownloadItemImpl::GetReceivedBytes() const { return received_bytes_; } |
| 1088 |
| 1097 const std::string& DownloadItemImpl::GetHashState() const { | 1089 const std::string& DownloadItemImpl::GetHashState() const { |
| 1098 return hash_state_; | 1090 return hash_state_; |
| 1099 } | 1091 } |
| 1092 |
| 1100 int32 DownloadItemImpl::GetId() const { return download_id_.local(); } | 1093 int32 DownloadItemImpl::GetId() const { return download_id_.local(); } |
| 1094 |
| 1101 DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; } | 1095 DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; } |
| 1096 |
| 1102 base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } | 1097 base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } |
| 1098 |
| 1103 base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } | 1099 base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } |
| 1104 | 1100 |
| 1105 void DownloadItemImpl::SetIsPersisted() { | 1101 bool DownloadItemImpl::IsPaused() const { return is_paused_; } |
| 1106 is_persisted_ = true; | |
| 1107 } | |
| 1108 | 1102 |
| 1109 bool DownloadItemImpl::IsPersisted() const { | |
| 1110 return is_persisted_; | |
| 1111 } | |
| 1112 | |
| 1113 void DownloadItemImpl::SetDbHandle(int64 handle) { | |
| 1114 db_handle_ = handle; | |
| 1115 | |
| 1116 bound_net_log_.AddEvent( | |
| 1117 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, | |
| 1118 net::NetLog::Int64Callback("db_handle", db_handle_)); | |
| 1119 } | |
| 1120 | |
| 1121 int64 DownloadItemImpl::GetDbHandle() const { return db_handle_; } | |
| 1122 bool DownloadItemImpl::IsPaused() const { return is_paused_; } | |
| 1123 bool DownloadItemImpl::GetOpenWhenComplete() const { | 1103 bool DownloadItemImpl::GetOpenWhenComplete() const { |
| 1124 return open_when_complete_; | 1104 return open_when_complete_; |
| 1125 } | 1105 } |
| 1106 |
| 1126 void DownloadItemImpl::SetOpenWhenComplete(bool open) { | 1107 void DownloadItemImpl::SetOpenWhenComplete(bool open) { |
| 1127 open_when_complete_ = open; | 1108 open_when_complete_ = open; |
| 1128 } | 1109 } |
| 1110 |
| 1129 bool DownloadItemImpl::GetFileExternallyRemoved() const { | 1111 bool DownloadItemImpl::GetFileExternallyRemoved() const { |
| 1130 return file_externally_removed_; | 1112 return file_externally_removed_; |
| 1131 } | 1113 } |
| 1114 |
| 1132 DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const { | 1115 DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const { |
| 1133 return safety_state_; | 1116 return safety_state_; |
| 1134 } | 1117 } |
| 1135 bool DownloadItemImpl::GetAutoOpened() { return auto_opened_; } | 1118 bool DownloadItemImpl::GetAutoOpened() { return auto_opened_; } |
| 1119 |
| 1136 FilePath DownloadItemImpl::GetTargetName() const { | 1120 FilePath DownloadItemImpl::GetTargetName() const { |
| 1137 return target_path_.BaseName(); | 1121 return target_path_.BaseName(); |
| 1138 } | 1122 } |
| 1123 |
| 1139 const FilePath& DownloadItemImpl::GetForcedFilePath() const { | 1124 const FilePath& DownloadItemImpl::GetForcedFilePath() const { |
| 1140 // TODO(asanka): Get rid of GetForcedFilePath(). We should instead just | 1125 // TODO(asanka): Get rid of GetForcedFilePath(). We should instead just |
| 1141 // require that clients respect GetTargetFilePath() if it is already set. | 1126 // require that clients respect GetTargetFilePath() if it is already set. |
| 1142 return forced_file_path_; | 1127 return forced_file_path_; |
| 1143 } | 1128 } |
| 1129 |
| 1144 bool DownloadItemImpl::HasUserGesture() const { | 1130 bool DownloadItemImpl::HasUserGesture() const { |
| 1145 return has_user_gesture_; | 1131 return has_user_gesture_; |
| 1146 }; | 1132 }; |
| 1133 |
| 1147 content::PageTransition DownloadItemImpl::GetTransitionType() const { | 1134 content::PageTransition DownloadItemImpl::GetTransitionType() const { |
| 1148 return transition_type_; | 1135 return transition_type_; |
| 1149 }; | 1136 }; |
| 1137 |
| 1150 bool DownloadItemImpl::IsTemporary() const { return is_temporary_; } | 1138 bool DownloadItemImpl::IsTemporary() const { return is_temporary_; } |
| 1139 |
| 1151 void DownloadItemImpl::SetIsTemporary(bool temporary) { | 1140 void DownloadItemImpl::SetIsTemporary(bool temporary) { |
| 1152 is_temporary_ = temporary; | 1141 is_temporary_ = temporary; |
| 1153 } | 1142 } |
| 1143 |
| 1154 void DownloadItemImpl::SetOpened(bool opened) { opened_ = opened; } | 1144 void DownloadItemImpl::SetOpened(bool opened) { opened_ = opened; } |
| 1145 |
| 1155 bool DownloadItemImpl::GetOpened() const { return opened_; } | 1146 bool DownloadItemImpl::GetOpened() const { return opened_; } |
| 1147 |
| 1156 const std::string& DownloadItemImpl::GetLastModifiedTime() const { | 1148 const std::string& DownloadItemImpl::GetLastModifiedTime() const { |
| 1157 return last_modified_time_; | 1149 return last_modified_time_; |
| 1158 } | 1150 } |
| 1151 |
| 1159 const std::string& DownloadItemImpl::GetETag() const { return etag_; } | 1152 const std::string& DownloadItemImpl::GetETag() const { return etag_; } |
| 1153 |
| 1160 content::DownloadInterruptReason DownloadItemImpl::GetLastReason() const { | 1154 content::DownloadInterruptReason DownloadItemImpl::GetLastReason() const { |
| 1161 return last_reason_; | 1155 return last_reason_; |
| 1162 } | 1156 } |
| 1157 |
| 1163 void DownloadItemImpl::MockDownloadOpenForTesting() { open_enabled_ = false; } | 1158 void DownloadItemImpl::MockDownloadOpenForTesting() { open_enabled_ = false; } |
| OLD | NEW |