| 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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 start_time_(info.start_time), | 164 start_time_(info.start_time), |
| 165 end_time_(info.end_time), | 165 end_time_(info.end_time), |
| 166 db_handle_(info.db_handle), | 166 db_handle_(info.db_handle), |
| 167 delegate_(delegate), | 167 delegate_(delegate), |
| 168 is_paused_(false), | 168 is_paused_(false), |
| 169 open_when_complete_(false), | 169 open_when_complete_(false), |
| 170 file_externally_removed_(false), | 170 file_externally_removed_(false), |
| 171 safety_state_(SAFE), | 171 safety_state_(SAFE), |
| 172 auto_opened_(false), | 172 auto_opened_(false), |
| 173 is_persisted_(true), | 173 is_persisted_(true), |
| 174 is_otr_(false), | |
| 175 is_temporary_(false), | 174 is_temporary_(false), |
| 176 all_data_saved_(false), | 175 all_data_saved_(false), |
| 177 opened_(info.opened), | 176 opened_(info.opened), |
| 178 open_enabled_(true), | 177 open_enabled_(true), |
| 179 delegate_delayed_complete_(false), | 178 delegate_delayed_complete_(false), |
| 180 bound_net_log_(bound_net_log), | 179 bound_net_log_(bound_net_log), |
| 181 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 180 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 182 delegate_->Attach(); | 181 delegate_->Attach(); |
| 183 if (IsInProgress()) | 182 if (IsInProgress()) |
| 184 state_ = CANCELLED; | 183 state_ = CANCELLED; |
| 185 if (IsComplete()) | 184 if (IsComplete()) |
| 186 all_data_saved_ = true; | 185 all_data_saved_ = true; |
| 187 Init(false /* not actively downloading */, | 186 Init(false /* not actively downloading */, |
| 188 download_net_logs::SRC_HISTORY_IMPORT); | 187 download_net_logs::SRC_HISTORY_IMPORT); |
| 189 } | 188 } |
| 190 | 189 |
| 191 // Constructing for a regular download: | 190 // Constructing for a regular download: |
| 192 DownloadItemImpl::DownloadItemImpl( | 191 DownloadItemImpl::DownloadItemImpl( |
| 193 DownloadItemImplDelegate* delegate, | 192 DownloadItemImplDelegate* delegate, |
| 194 const DownloadCreateInfo& info, | 193 const DownloadCreateInfo& info, |
| 195 scoped_ptr<DownloadRequestHandleInterface> request_handle, | 194 scoped_ptr<DownloadRequestHandleInterface> request_handle, |
| 196 bool is_otr, | |
| 197 const net::BoundNetLog& bound_net_log) | 195 const net::BoundNetLog& bound_net_log) |
| 198 : request_handle_(request_handle.Pass()), | 196 : request_handle_(request_handle.Pass()), |
| 199 download_id_(info.download_id), | 197 download_id_(info.download_id), |
| 200 target_disposition_( | 198 target_disposition_( |
| 201 (info.prompt_user_for_save_location) ? | 199 (info.prompt_user_for_save_location) ? |
| 202 TARGET_DISPOSITION_PROMPT : TARGET_DISPOSITION_OVERWRITE), | 200 TARGET_DISPOSITION_PROMPT : TARGET_DISPOSITION_OVERWRITE), |
| 203 url_chain_(info.url_chain), | 201 url_chain_(info.url_chain), |
| 204 referrer_url_(info.referrer_url), | 202 referrer_url_(info.referrer_url), |
| 205 suggested_filename_(UTF16ToUTF8(info.save_info.suggested_name)), | 203 suggested_filename_(UTF16ToUTF8(info.save_info.suggested_name)), |
| 206 forced_file_path_(info.save_info.file_path), | 204 forced_file_path_(info.save_info.file_path), |
| (...skipping 13 matching lines...) Expand all Loading... |
| 220 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 218 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
| 221 start_time_(info.start_time), | 219 start_time_(info.start_time), |
| 222 db_handle_(DownloadItem::kUninitializedHandle), | 220 db_handle_(DownloadItem::kUninitializedHandle), |
| 223 delegate_(delegate), | 221 delegate_(delegate), |
| 224 is_paused_(false), | 222 is_paused_(false), |
| 225 open_when_complete_(false), | 223 open_when_complete_(false), |
| 226 file_externally_removed_(false), | 224 file_externally_removed_(false), |
| 227 safety_state_(SAFE), | 225 safety_state_(SAFE), |
| 228 auto_opened_(false), | 226 auto_opened_(false), |
| 229 is_persisted_(false), | 227 is_persisted_(false), |
| 230 is_otr_(is_otr), | |
| 231 is_temporary_(!info.save_info.file_path.empty()), | 228 is_temporary_(!info.save_info.file_path.empty()), |
| 232 all_data_saved_(false), | 229 all_data_saved_(false), |
| 233 opened_(false), | 230 opened_(false), |
| 234 open_enabled_(true), | 231 open_enabled_(true), |
| 235 delegate_delayed_complete_(false), | 232 delegate_delayed_complete_(false), |
| 236 bound_net_log_(bound_net_log), | 233 bound_net_log_(bound_net_log), |
| 237 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 234 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 238 delegate_->Attach(); | 235 delegate_->Attach(); |
| 239 Init(true /* actively downloading */, | 236 Init(true /* actively downloading */, |
| 240 download_net_logs::SRC_NEW_DOWNLOAD); | 237 download_net_logs::SRC_NEW_DOWNLOAD); |
| 241 | 238 |
| 242 // Link the event sources. | 239 // Link the event sources. |
| 243 bound_net_log_.AddEvent( | 240 bound_net_log_.AddEvent( |
| 244 net::NetLog::TYPE_DOWNLOAD_URL_REQUEST, | 241 net::NetLog::TYPE_DOWNLOAD_URL_REQUEST, |
| 245 info.request_bound_net_log.source().ToEventParametersCallback()); | 242 info.request_bound_net_log.source().ToEventParametersCallback()); |
| 246 | 243 |
| 247 info.request_bound_net_log.AddEvent( | 244 info.request_bound_net_log.AddEvent( |
| 248 net::NetLog::TYPE_DOWNLOAD_STARTED, | 245 net::NetLog::TYPE_DOWNLOAD_STARTED, |
| 249 bound_net_log_.source().ToEventParametersCallback()); | 246 bound_net_log_.source().ToEventParametersCallback()); |
| 250 } | 247 } |
| 251 | 248 |
| 252 // Constructing for the "Save Page As..." feature: | 249 // Constructing for the "Save Page As..." feature: |
| 253 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, | 250 DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, |
| 254 const FilePath& path, | 251 const FilePath& path, |
| 255 const GURL& url, | 252 const GURL& url, |
| 256 bool is_otr, | |
| 257 DownloadId download_id, | 253 DownloadId download_id, |
| 258 const std::string& mime_type, | 254 const std::string& mime_type, |
| 259 const net::BoundNetLog& bound_net_log) | 255 const net::BoundNetLog& bound_net_log) |
| 260 : request_handle_(new NullDownloadRequestHandle()), | 256 : request_handle_(new NullDownloadRequestHandle()), |
| 261 download_id_(download_id), | 257 download_id_(download_id), |
| 262 current_path_(path), | 258 current_path_(path), |
| 263 target_path_(path), | 259 target_path_(path), |
| 264 target_disposition_(TARGET_DISPOSITION_OVERWRITE), | 260 target_disposition_(TARGET_DISPOSITION_OVERWRITE), |
| 265 url_chain_(1, url), | 261 url_chain_(1, url), |
| 266 referrer_url_(GURL()), | 262 referrer_url_(GURL()), |
| (...skipping 10 matching lines...) Expand all Loading... |
| 277 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), | 273 danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
| 278 start_time_(base::Time::Now()), | 274 start_time_(base::Time::Now()), |
| 279 db_handle_(DownloadItem::kUninitializedHandle), | 275 db_handle_(DownloadItem::kUninitializedHandle), |
| 280 delegate_(delegate), | 276 delegate_(delegate), |
| 281 is_paused_(false), | 277 is_paused_(false), |
| 282 open_when_complete_(false), | 278 open_when_complete_(false), |
| 283 file_externally_removed_(false), | 279 file_externally_removed_(false), |
| 284 safety_state_(SAFE), | 280 safety_state_(SAFE), |
| 285 auto_opened_(false), | 281 auto_opened_(false), |
| 286 is_persisted_(false), | 282 is_persisted_(false), |
| 287 is_otr_(is_otr), | |
| 288 is_temporary_(false), | 283 is_temporary_(false), |
| 289 all_data_saved_(false), | 284 all_data_saved_(false), |
| 290 opened_(false), | 285 opened_(false), |
| 291 open_enabled_(true), | 286 open_enabled_(true), |
| 292 delegate_delayed_complete_(false), | 287 delegate_delayed_complete_(false), |
| 293 bound_net_log_(bound_net_log), | 288 bound_net_log_(bound_net_log), |
| 294 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 289 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 295 delegate_->Attach(); | 290 delegate_->Attach(); |
| 296 Init(true /* actively downloading */, | 291 Init(true /* actively downloading */, |
| 297 download_net_logs::SRC_SAVE_PAGE_AS); | 292 download_net_logs::SRC_SAVE_PAGE_AS); |
| (...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 } | 1029 } |
| 1035 } | 1030 } |
| 1036 | 1031 |
| 1037 if (verbose) { | 1032 if (verbose) { |
| 1038 description += base::StringPrintf( | 1033 description += base::StringPrintf( |
| 1039 " db_handle = %" PRId64 | 1034 " db_handle = %" PRId64 |
| 1040 " total = %" PRId64 | 1035 " total = %" PRId64 |
| 1041 " received = %" PRId64 | 1036 " received = %" PRId64 |
| 1042 " reason = %s" | 1037 " reason = %s" |
| 1043 " paused = %c" | 1038 " paused = %c" |
| 1044 " otr = %c" | |
| 1045 " safety = %s" | 1039 " safety = %s" |
| 1046 " last_modified = '%s'" | 1040 " last_modified = '%s'" |
| 1047 " etag = '%s'" | 1041 " etag = '%s'" |
| 1048 " url_chain = \n\t\"%s\"\n\t" | 1042 " url_chain = \n\t\"%s\"\n\t" |
| 1049 " full_path = \"%" PRFilePath "\"" | 1043 " full_path = \"%" PRFilePath "\"" |
| 1050 " target_path = \"%" PRFilePath "\"", | 1044 " target_path = \"%" PRFilePath "\"", |
| 1051 GetDbHandle(), | 1045 GetDbHandle(), |
| 1052 GetTotalBytes(), | 1046 GetTotalBytes(), |
| 1053 GetReceivedBytes(), | 1047 GetReceivedBytes(), |
| 1054 InterruptReasonDebugString(last_reason_).c_str(), | 1048 InterruptReasonDebugString(last_reason_).c_str(), |
| 1055 IsPaused() ? 'T' : 'F', | 1049 IsPaused() ? 'T' : 'F', |
| 1056 IsOtr() ? 'T' : 'F', | |
| 1057 DebugSafetyStateString(GetSafetyState()), | 1050 DebugSafetyStateString(GetSafetyState()), |
| 1058 GetLastModifiedTime().c_str(), | 1051 GetLastModifiedTime().c_str(), |
| 1059 GetETag().c_str(), | 1052 GetETag().c_str(), |
| 1060 url_list.c_str(), | 1053 url_list.c_str(), |
| 1061 GetFullPath().value().c_str(), | 1054 GetFullPath().value().c_str(), |
| 1062 GetTargetFilePath().value().c_str()); | 1055 GetTargetFilePath().value().c_str()); |
| 1063 } else { | 1056 } else { |
| 1064 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); | 1057 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); |
| 1065 } | 1058 } |
| 1066 | 1059 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1133 } | 1126 } |
| 1134 void DownloadItemImpl::SetOpenWhenComplete(bool open) { | 1127 void DownloadItemImpl::SetOpenWhenComplete(bool open) { |
| 1135 open_when_complete_ = open; | 1128 open_when_complete_ = open; |
| 1136 } | 1129 } |
| 1137 bool DownloadItemImpl::GetFileExternallyRemoved() const { | 1130 bool DownloadItemImpl::GetFileExternallyRemoved() const { |
| 1138 return file_externally_removed_; | 1131 return file_externally_removed_; |
| 1139 } | 1132 } |
| 1140 DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const { | 1133 DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const { |
| 1141 return safety_state_; | 1134 return safety_state_; |
| 1142 } | 1135 } |
| 1143 bool DownloadItemImpl::IsOtr() const { return is_otr_; } | |
| 1144 bool DownloadItemImpl::GetAutoOpened() { return auto_opened_; } | 1136 bool DownloadItemImpl::GetAutoOpened() { return auto_opened_; } |
| 1145 FilePath DownloadItemImpl::GetTargetName() const { | 1137 FilePath DownloadItemImpl::GetTargetName() const { |
| 1146 return target_path_.BaseName(); | 1138 return target_path_.BaseName(); |
| 1147 } | 1139 } |
| 1148 const FilePath& DownloadItemImpl::GetForcedFilePath() const { | 1140 const FilePath& DownloadItemImpl::GetForcedFilePath() const { |
| 1149 // TODO(asanka): Get rid of GetForcedFilePath(). We should instead just | 1141 // TODO(asanka): Get rid of GetForcedFilePath(). We should instead just |
| 1150 // require that clients respect GetTargetFilePath() if it is already set. | 1142 // require that clients respect GetTargetFilePath() if it is already set. |
| 1151 return forced_file_path_; | 1143 return forced_file_path_; |
| 1152 } | 1144 } |
| 1153 bool DownloadItemImpl::HasUserGesture() const { | 1145 bool DownloadItemImpl::HasUserGesture() const { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1191 std::map<const void*, ExternalData*>::iterator it = | 1183 std::map<const void*, ExternalData*>::iterator it = |
| 1192 external_data_map_.find(key); | 1184 external_data_map_.find(key); |
| 1193 | 1185 |
| 1194 if (it == external_data_map_.end()) { | 1186 if (it == external_data_map_.end()) { |
| 1195 external_data_map_[key] = data; | 1187 external_data_map_[key] = data; |
| 1196 } else if (it->second != data) { | 1188 } else if (it->second != data) { |
| 1197 delete it->second; | 1189 delete it->second; |
| 1198 it->second = data; | 1190 it->second = data; |
| 1199 } | 1191 } |
| 1200 } | 1192 } |
| OLD | NEW |