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

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

Issue 2161193003: Use __func__ instead of __FUNCTION__. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resync Created 4 years, 4 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 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 } 254 }
255 255
256 void DownloadItemImpl::RemoveObserver(Observer* observer) { 256 void DownloadItemImpl::RemoveObserver(Observer* observer) {
257 DCHECK_CURRENTLY_ON(BrowserThread::UI); 257 DCHECK_CURRENTLY_ON(BrowserThread::UI);
258 258
259 observers_.RemoveObserver(observer); 259 observers_.RemoveObserver(observer);
260 } 260 }
261 261
262 void DownloadItemImpl::UpdateObservers() { 262 void DownloadItemImpl::UpdateObservers() {
263 DCHECK_CURRENTLY_ON(BrowserThread::UI); 263 DCHECK_CURRENTLY_ON(BrowserThread::UI);
264 DVLOG(20) << __FUNCTION__ << "()"; 264 DVLOG(20) << __func__ << "()";
265 265
266 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadUpdated(this)); 266 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadUpdated(this));
267 } 267 }
268 268
269 void DownloadItemImpl::ValidateDangerousDownload() { 269 void DownloadItemImpl::ValidateDangerousDownload() {
270 DCHECK_CURRENTLY_ON(BrowserThread::UI); 270 DCHECK_CURRENTLY_ON(BrowserThread::UI);
271 DCHECK(!IsDone()); 271 DCHECK(!IsDone());
272 DCHECK(IsDangerous()); 272 DCHECK(IsDangerous());
273 273
274 DVLOG(20) << __FUNCTION__ << " download=" << DebugString(true); 274 DVLOG(20) << __func__ << "() download=" << DebugString(true);
275 275
276 if (IsDone() || !IsDangerous()) 276 if (IsDone() || !IsDangerous())
277 return; 277 return;
278 278
279 RecordDangerousDownloadAccept(GetDangerType(), 279 RecordDangerousDownloadAccept(GetDangerType(),
280 GetTargetFilePath()); 280 GetTargetFilePath());
281 281
282 danger_type_ = DOWNLOAD_DANGER_TYPE_USER_VALIDATED; 282 danger_type_ = DOWNLOAD_DANGER_TYPE_USER_VALIDATED;
283 283
284 bound_net_log_.AddEvent( 284 bound_net_log_.AddEvent(
285 net::NetLog::TYPE_DOWNLOAD_ITEM_SAFETY_STATE_UPDATED, 285 net::NetLog::TYPE_DOWNLOAD_ITEM_SAFETY_STATE_UPDATED,
286 base::Bind(&ItemCheckedNetLogCallback, GetDangerType())); 286 base::Bind(&ItemCheckedNetLogCallback, GetDangerType()));
287 287
288 UpdateObservers(); // TODO(asanka): This is potentially unsafe. The download 288 UpdateObservers(); // TODO(asanka): This is potentially unsafe. The download
289 // may not be in a consistent state or around at all after 289 // may not be in a consistent state or around at all after
290 // invoking observers. http://crbug.com/586610 290 // invoking observers. http://crbug.com/586610
291 291
292 MaybeCompleteDownload(); 292 MaybeCompleteDownload();
293 } 293 }
294 294
295 void DownloadItemImpl::StealDangerousDownload( 295 void DownloadItemImpl::StealDangerousDownload(
296 const AcquireFileCallback& callback) { 296 const AcquireFileCallback& callback) {
297 DVLOG(20) << __FUNCTION__ << "() download = " << DebugString(true); 297 DVLOG(20) << __func__ << "() download = " << DebugString(true);
298 DCHECK_CURRENTLY_ON(BrowserThread::UI); 298 DCHECK_CURRENTLY_ON(BrowserThread::UI);
299 DCHECK(IsDangerous()); 299 DCHECK(IsDangerous());
300 300
301 if (download_file_) { 301 if (download_file_) {
302 BrowserThread::PostTaskAndReplyWithResult( 302 BrowserThread::PostTaskAndReplyWithResult(
303 BrowserThread::FILE, 303 BrowserThread::FILE,
304 FROM_HERE, 304 FROM_HERE,
305 base::Bind(&DownloadFileDetach, base::Passed(&download_file_)), 305 base::Bind(&DownloadFileDetach, base::Passed(&download_file_)),
306 callback); 306 callback);
307 } else { 307 } else {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 return; 342 return;
343 343
344 case MAX_DOWNLOAD_INTERNAL_STATE: 344 case MAX_DOWNLOAD_INTERNAL_STATE:
345 case TARGET_RESOLVED_INTERNAL: 345 case TARGET_RESOLVED_INTERNAL:
346 NOTREACHED(); 346 NOTREACHED();
347 } 347 }
348 } 348 }
349 349
350 void DownloadItemImpl::Resume() { 350 void DownloadItemImpl::Resume() {
351 DCHECK_CURRENTLY_ON(BrowserThread::UI); 351 DCHECK_CURRENTLY_ON(BrowserThread::UI);
352 DVLOG(20) << __FUNCTION__ << "() download = " << DebugString(true); 352 DVLOG(20) << __func__ << "() download = " << DebugString(true);
353 switch (state_) { 353 switch (state_) {
354 case CANCELLED_INTERNAL: // Nothing to resume. 354 case CANCELLED_INTERNAL: // Nothing to resume.
355 case COMPLETE_INTERNAL: 355 case COMPLETE_INTERNAL:
356 case COMPLETING_INTERNAL: 356 case COMPLETING_INTERNAL:
357 case INITIAL_INTERNAL: 357 case INITIAL_INTERNAL:
358 case INTERRUPTED_TARGET_PENDING_INTERNAL: 358 case INTERRUPTED_TARGET_PENDING_INTERNAL:
359 case RESUMING_INTERNAL: // Resumption in progress. 359 case RESUMING_INTERNAL: // Resumption in progress.
360 return; 360 return;
361 361
362 case TARGET_PENDING_INTERNAL: 362 case TARGET_PENDING_INTERNAL:
(...skipping 12 matching lines...) Expand all
375 return; 375 return;
376 376
377 case MAX_DOWNLOAD_INTERNAL_STATE: 377 case MAX_DOWNLOAD_INTERNAL_STATE:
378 case TARGET_RESOLVED_INTERNAL: 378 case TARGET_RESOLVED_INTERNAL:
379 NOTREACHED(); 379 NOTREACHED();
380 } 380 }
381 } 381 }
382 382
383 void DownloadItemImpl::Cancel(bool user_cancel) { 383 void DownloadItemImpl::Cancel(bool user_cancel) {
384 DCHECK_CURRENTLY_ON(BrowserThread::UI); 384 DCHECK_CURRENTLY_ON(BrowserThread::UI);
385 DVLOG(20) << __FUNCTION__ << "() download = " << DebugString(true); 385 DVLOG(20) << __func__ << "() download = " << DebugString(true);
386 InterruptAndDiscardPartialState( 386 InterruptAndDiscardPartialState(
387 user_cancel ? DOWNLOAD_INTERRUPT_REASON_USER_CANCELED 387 user_cancel ? DOWNLOAD_INTERRUPT_REASON_USER_CANCELED
388 : DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN); 388 : DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN);
389 UpdateObservers(); 389 UpdateObservers();
390 } 390 }
391 391
392 void DownloadItemImpl::Remove() { 392 void DownloadItemImpl::Remove() {
393 DVLOG(20) << __FUNCTION__ << "() download = " << DebugString(true); 393 DVLOG(20) << __func__ << "() download = " << DebugString(true);
394 DCHECK_CURRENTLY_ON(BrowserThread::UI); 394 DCHECK_CURRENTLY_ON(BrowserThread::UI);
395 395
396 delegate_->AssertStateConsistent(this); 396 delegate_->AssertStateConsistent(this);
397 InterruptAndDiscardPartialState(DOWNLOAD_INTERRUPT_REASON_USER_CANCELED); 397 InterruptAndDiscardPartialState(DOWNLOAD_INTERRUPT_REASON_USER_CANCELED);
398 UpdateObservers(); 398 UpdateObservers();
399 delegate_->AssertStateConsistent(this); 399 delegate_->AssertStateConsistent(this);
400 400
401 NotifyRemoved(); 401 NotifyRemoved();
402 delegate_->DownloadRemoved(this); 402 delegate_->DownloadRemoved(this);
403 // We have now been deleted. 403 // We have now been deleted.
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 DCHECK_CURRENTLY_ON(BrowserThread::UI); 749 DCHECK_CURRENTLY_ON(BrowserThread::UI);
750 DCHECK(AllDataSaved()); 750 DCHECK(AllDataSaved());
751 751
752 // Danger type is only allowed to be set on an active download after all data 752 // Danger type is only allowed to be set on an active download after all data
753 // has been saved. This excludes all other states. In particular, 753 // has been saved. This excludes all other states. In particular,
754 // OnContentCheckCompleted() isn't allowed on an INTERRUPTED download since 754 // OnContentCheckCompleted() isn't allowed on an INTERRUPTED download since
755 // such an interruption would need to happen between OnAllDataSaved() and 755 // such an interruption would need to happen between OnAllDataSaved() and
756 // OnContentCheckCompleted() during which no disk or network activity 756 // OnContentCheckCompleted() during which no disk or network activity
757 // should've taken place. 757 // should've taken place.
758 DCHECK_EQ(state_, IN_PROGRESS_INTERNAL); 758 DCHECK_EQ(state_, IN_PROGRESS_INTERNAL);
759 DVLOG(20) << __FUNCTION__ << " danger_type=" << danger_type 759 DVLOG(20) << __func__ << "() danger_type=" << danger_type
760 << " download=" << DebugString(true); 760 << " download=" << DebugString(true);
761 SetDangerType(danger_type); 761 SetDangerType(danger_type);
762 UpdateObservers(); 762 UpdateObservers();
763 } 763 }
764 764
765 void DownloadItemImpl::SetOpenWhenComplete(bool open) { 765 void DownloadItemImpl::SetOpenWhenComplete(bool open) {
766 open_when_complete_ = open; 766 open_when_complete_ = open;
767 } 767 }
768 768
769 void DownloadItemImpl::SetOpened(bool opened) { 769 void DownloadItemImpl::SetOpened(bool opened) {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 // DownloadFile is created and Start() is called. The observers will be 968 // DownloadFile is created and Start() is called. The observers will be
969 // notified when the download transitions to the IN_PROGRESS state. 969 // notified when the download transitions to the IN_PROGRESS state.
970 } 970 }
971 971
972 void DownloadItemImpl::NotifyRemoved() { 972 void DownloadItemImpl::NotifyRemoved() {
973 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadRemoved(this)); 973 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadRemoved(this));
974 } 974 }
975 975
976 void DownloadItemImpl::OnDownloadedFileRemoved() { 976 void DownloadItemImpl::OnDownloadedFileRemoved() {
977 file_externally_removed_ = true; 977 file_externally_removed_ = true;
978 DVLOG(20) << __FUNCTION__ << " download=" << DebugString(true); 978 DVLOG(20) << __func__ << "() download=" << DebugString(true);
979 UpdateObservers(); 979 UpdateObservers();
980 } 980 }
981 981
982 base::WeakPtr<DownloadDestinationObserver> 982 base::WeakPtr<DownloadDestinationObserver>
983 DownloadItemImpl::DestinationObserverAsWeakPtr() { 983 DownloadItemImpl::DestinationObserverAsWeakPtr() {
984 return weak_ptr_factory_.GetWeakPtr(); 984 return weak_ptr_factory_.GetWeakPtr();
985 } 985 }
986 986
987 const net::BoundNetLog& DownloadItemImpl::GetBoundNetLog() const { 987 const net::BoundNetLog& DownloadItemImpl::GetBoundNetLog() const {
988 return bound_net_log_; 988 return bound_net_log_;
989 } 989 }
990 990
991 void DownloadItemImpl::SetTotalBytes(int64_t total_bytes) { 991 void DownloadItemImpl::SetTotalBytes(int64_t total_bytes) {
992 total_bytes_ = total_bytes; 992 total_bytes_ = total_bytes;
993 } 993 }
994 994
995 void DownloadItemImpl::OnAllDataSaved( 995 void DownloadItemImpl::OnAllDataSaved(
996 int64_t total_bytes, 996 int64_t total_bytes,
997 std::unique_ptr<crypto::SecureHash> hash_state) { 997 std::unique_ptr<crypto::SecureHash> hash_state) {
998 DCHECK_CURRENTLY_ON(BrowserThread::UI); 998 DCHECK_CURRENTLY_ON(BrowserThread::UI);
999 DCHECK(!all_data_saved_); 999 DCHECK(!all_data_saved_);
1000 all_data_saved_ = true; 1000 all_data_saved_ = true;
1001 SetTotalBytes(total_bytes); 1001 SetTotalBytes(total_bytes);
1002 UpdateProgress(total_bytes, 0); 1002 UpdateProgress(total_bytes, 0);
1003 SetHashState(std::move(hash_state)); 1003 SetHashState(std::move(hash_state));
1004 hash_state_.reset(); // No need to retain hash_state_ since we are done with 1004 hash_state_.reset(); // No need to retain hash_state_ since we are done with
1005 // the download and don't expect to receive any more 1005 // the download and don't expect to receive any more
1006 // data. 1006 // data.
1007 1007
1008 DVLOG(20) << __FUNCTION__ << " download=" << DebugString(true); 1008 DVLOG(20) << __func__ << "() download=" << DebugString(true);
1009 UpdateObservers(); 1009 UpdateObservers();
1010 } 1010 }
1011 1011
1012 void DownloadItemImpl::MarkAsComplete() { 1012 void DownloadItemImpl::MarkAsComplete() {
1013 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1013 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1014 1014
1015 DCHECK(all_data_saved_); 1015 DCHECK(all_data_saved_);
1016 end_time_ = base::Time::Now(); 1016 end_time_ = base::Time::Now();
1017 TransitionTo(COMPLETE_INTERNAL); 1017 TransitionTo(COMPLETE_INTERNAL);
1018 UpdateObservers(); 1018 UpdateObservers();
1019 } 1019 }
1020 1020
1021 void DownloadItemImpl::DestinationUpdate(int64_t bytes_so_far, 1021 void DownloadItemImpl::DestinationUpdate(int64_t bytes_so_far,
1022 int64_t bytes_per_sec) { 1022 int64_t bytes_per_sec) {
1023 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1023 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1024 // If the download is in any other state we don't expect any 1024 // If the download is in any other state we don't expect any
1025 // DownloadDestinationObserver callbacks. An interruption or a cancellation 1025 // DownloadDestinationObserver callbacks. An interruption or a cancellation
1026 // results in a call to ReleaseDownloadFile which invalidates the weak 1026 // results in a call to ReleaseDownloadFile which invalidates the weak
1027 // reference held by the DownloadFile and hence cuts off any pending 1027 // reference held by the DownloadFile and hence cuts off any pending
1028 // callbacks. 1028 // callbacks.
1029 DCHECK(state_ == TARGET_PENDING_INTERNAL || state_ == IN_PROGRESS_INTERNAL); 1029 DCHECK(state_ == TARGET_PENDING_INTERNAL || state_ == IN_PROGRESS_INTERNAL);
1030 1030
1031 // There must be no pending destination_error_. 1031 // There must be no pending destination_error_.
1032 DCHECK_EQ(destination_error_, DOWNLOAD_INTERRUPT_REASON_NONE); 1032 DCHECK_EQ(destination_error_, DOWNLOAD_INTERRUPT_REASON_NONE);
1033 1033
1034 DVLOG(20) << __FUNCTION__ << " so_far=" << bytes_so_far 1034 DVLOG(20) << __func__ << "() so_far=" << bytes_so_far
1035 << " per_sec=" << bytes_per_sec 1035 << " per_sec=" << bytes_per_sec
1036 << " download=" << DebugString(true); 1036 << " download=" << DebugString(true);
1037 1037
1038 UpdateProgress(bytes_so_far, bytes_per_sec); 1038 UpdateProgress(bytes_so_far, bytes_per_sec);
1039 if (bound_net_log_.IsCapturing()) { 1039 if (bound_net_log_.IsCapturing()) {
1040 bound_net_log_.AddEvent( 1040 bound_net_log_.AddEvent(
1041 net::NetLog::TYPE_DOWNLOAD_ITEM_UPDATED, 1041 net::NetLog::TYPE_DOWNLOAD_ITEM_UPDATED,
1042 net::NetLog::Int64Callback("bytes_so_far", received_bytes_)); 1042 net::NetLog::Int64Callback("bytes_so_far", received_bytes_));
1043 } 1043 }
1044 1044
1045 UpdateObservers(); 1045 UpdateObservers();
1046 } 1046 }
1047 1047
1048 void DownloadItemImpl::DestinationError( 1048 void DownloadItemImpl::DestinationError(
1049 DownloadInterruptReason reason, 1049 DownloadInterruptReason reason,
1050 int64_t bytes_so_far, 1050 int64_t bytes_so_far,
1051 std::unique_ptr<crypto::SecureHash> secure_hash) { 1051 std::unique_ptr<crypto::SecureHash> secure_hash) {
1052 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1052 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1053 // If the download is in any other state we don't expect any 1053 // If the download is in any other state we don't expect any
1054 // DownloadDestinationObserver callbacks. An interruption or a cancellation 1054 // DownloadDestinationObserver callbacks. An interruption or a cancellation
1055 // results in a call to ReleaseDownloadFile which invalidates the weak 1055 // results in a call to ReleaseDownloadFile which invalidates the weak
1056 // reference held by the DownloadFile and hence cuts off any pending 1056 // reference held by the DownloadFile and hence cuts off any pending
1057 // callbacks. 1057 // callbacks.
1058 DCHECK(state_ == TARGET_PENDING_INTERNAL || state_ == IN_PROGRESS_INTERNAL); 1058 DCHECK(state_ == TARGET_PENDING_INTERNAL || state_ == IN_PROGRESS_INTERNAL);
1059 DVLOG(20) << __FUNCTION__ 1059 DVLOG(20) << __func__
1060 << "() reason:" << DownloadInterruptReasonToString(reason); 1060 << "() reason:" << DownloadInterruptReasonToString(reason);
1061 1061
1062 // Postpone recognition of this error until after file name determination 1062 // Postpone recognition of this error until after file name determination
1063 // has completed and the intermediate file has been renamed to simplify 1063 // has completed and the intermediate file has been renamed to simplify
1064 // resumption conditions. 1064 // resumption conditions.
1065 if (state_ == TARGET_PENDING_INTERNAL) { 1065 if (state_ == TARGET_PENDING_INTERNAL) {
1066 received_bytes_ = bytes_so_far; 1066 received_bytes_ = bytes_so_far;
1067 hash_state_ = std::move(secure_hash); 1067 hash_state_ = std::move(secure_hash);
1068 hash_.clear(); 1068 hash_.clear();
1069 destination_error_ = reason; 1069 destination_error_ = reason;
1070 return; 1070 return;
1071 } 1071 }
1072 InterruptWithPartialState(bytes_so_far, std::move(secure_hash), reason); 1072 InterruptWithPartialState(bytes_so_far, std::move(secure_hash), reason);
1073 UpdateObservers(); 1073 UpdateObservers();
1074 } 1074 }
1075 1075
1076 void DownloadItemImpl::DestinationCompleted( 1076 void DownloadItemImpl::DestinationCompleted(
1077 int64_t total_bytes, 1077 int64_t total_bytes,
1078 std::unique_ptr<crypto::SecureHash> secure_hash) { 1078 std::unique_ptr<crypto::SecureHash> secure_hash) {
1079 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1079 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1080 // If the download is in any other state we don't expect any 1080 // If the download is in any other state we don't expect any
1081 // DownloadDestinationObserver callbacks. An interruption or a cancellation 1081 // DownloadDestinationObserver callbacks. An interruption or a cancellation
1082 // results in a call to ReleaseDownloadFile which invalidates the weak 1082 // results in a call to ReleaseDownloadFile which invalidates the weak
1083 // reference held by the DownloadFile and hence cuts off any pending 1083 // reference held by the DownloadFile and hence cuts off any pending
1084 // callbacks. 1084 // callbacks.
1085 DCHECK(state_ == TARGET_PENDING_INTERNAL || state_ == IN_PROGRESS_INTERNAL); 1085 DCHECK(state_ == TARGET_PENDING_INTERNAL || state_ == IN_PROGRESS_INTERNAL);
1086 DVLOG(20) << __FUNCTION__ << " download=" << DebugString(true); 1086 DVLOG(20) << __func__ << "() download=" << DebugString(true);
1087 1087
1088 OnAllDataSaved(total_bytes, std::move(secure_hash)); 1088 OnAllDataSaved(total_bytes, std::move(secure_hash));
1089 MaybeCompleteDownload(); 1089 MaybeCompleteDownload();
1090 } 1090 }
1091 1091
1092 // **** Download progression cascade 1092 // **** Download progression cascade
1093 1093
1094 void DownloadItemImpl::Init(bool active, 1094 void DownloadItemImpl::Init(bool active,
1095 DownloadType download_type) { 1095 DownloadType download_type) {
1096 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1096 DCHECK_CURRENTLY_ON(BrowserThread::UI);
(...skipping 19 matching lines...) Expand all
1116 net::NetLog::ParametersCallback active_data = 1116 net::NetLog::ParametersCallback active_data =
1117 base::Bind(&ItemActivatedNetLogCallback, this, download_type, &file_name); 1117 base::Bind(&ItemActivatedNetLogCallback, this, download_type, &file_name);
1118 if (active) { 1118 if (active) {
1119 bound_net_log_.BeginEvent( 1119 bound_net_log_.BeginEvent(
1120 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, active_data); 1120 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, active_data);
1121 } else { 1121 } else {
1122 bound_net_log_.AddEvent( 1122 bound_net_log_.AddEvent(
1123 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, active_data); 1123 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, active_data);
1124 } 1124 }
1125 1125
1126 DVLOG(20) << __FUNCTION__ << "() " << DebugString(true); 1126 DVLOG(20) << __func__ << "() " << DebugString(true);
1127 } 1127 }
1128 1128
1129 // We're starting the download. 1129 // We're starting the download.
1130 void DownloadItemImpl::Start( 1130 void DownloadItemImpl::Start(
1131 std::unique_ptr<DownloadFile> file, 1131 std::unique_ptr<DownloadFile> file,
1132 std::unique_ptr<DownloadRequestHandleInterface> req_handle, 1132 std::unique_ptr<DownloadRequestHandleInterface> req_handle,
1133 const DownloadCreateInfo& new_create_info) { 1133 const DownloadCreateInfo& new_create_info) {
1134 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1134 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1135 DCHECK(!download_file_.get()); 1135 DCHECK(!download_file_.get());
1136 DVLOG(20) << __FUNCTION__ << "() this=" << DebugString(true); 1136 DVLOG(20) << __func__ << "() this=" << DebugString(true);
1137 1137
1138 download_file_ = std::move(file); 1138 download_file_ = std::move(file);
1139 request_handle_ = std::move(req_handle); 1139 request_handle_ = std::move(req_handle);
1140 destination_error_ = DOWNLOAD_INTERRUPT_REASON_NONE; 1140 destination_error_ = DOWNLOAD_INTERRUPT_REASON_NONE;
1141 1141
1142 if (state_ == CANCELLED_INTERNAL) { 1142 if (state_ == CANCELLED_INTERNAL) {
1143 // The download was in the process of resuming when it was cancelled. Don't 1143 // The download was in the process of resuming when it was cancelled. Don't
1144 // proceed. 1144 // proceed.
1145 ReleaseDownloadFile(true); 1145 ReleaseDownloadFile(true);
1146 if (request_handle_) 1146 if (request_handle_)
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 // Safe because we control download file lifetime. 1209 // Safe because we control download file lifetime.
1210 base::Unretained(download_file_.get()), 1210 base::Unretained(download_file_.get()),
1211 base::Bind(&DownloadItemImpl::OnDownloadFileInitialized, 1211 base::Bind(&DownloadItemImpl::OnDownloadFileInitialized,
1212 weak_ptr_factory_.GetWeakPtr()))); 1212 weak_ptr_factory_.GetWeakPtr())));
1213 } 1213 }
1214 1214
1215 void DownloadItemImpl::OnDownloadFileInitialized( 1215 void DownloadItemImpl::OnDownloadFileInitialized(
1216 DownloadInterruptReason result) { 1216 DownloadInterruptReason result) {
1217 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1217 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1218 DCHECK_EQ(state_, TARGET_PENDING_INTERNAL); 1218 DCHECK_EQ(state_, TARGET_PENDING_INTERNAL);
1219 DVLOG(20) << __FUNCTION__ 1219 DVLOG(20) << __func__
1220 << "() result:" << DownloadInterruptReasonToString(result); 1220 << "() result:" << DownloadInterruptReasonToString(result);
1221 if (result != DOWNLOAD_INTERRUPT_REASON_NONE) { 1221 if (result != DOWNLOAD_INTERRUPT_REASON_NONE) {
1222 // Whoops. That didn't work. Proceed as an interrupted download, but reset 1222 // Whoops. That didn't work. Proceed as an interrupted download, but reset
1223 // the partial state. Currently, the partial stub cannot be recovered if the 1223 // the partial state. Currently, the partial stub cannot be recovered if the
1224 // download file initialization fails. 1224 // download file initialization fails.
1225 received_bytes_ = 0; 1225 received_bytes_ = 0;
1226 hash_state_.reset(); 1226 hash_state_.reset();
1227 hash_.clear(); 1227 hash_.clear();
1228 destination_error_ = result; 1228 destination_error_ = result;
1229 TransitionTo(INTERRUPTED_TARGET_PENDING_INTERNAL); 1229 TransitionTo(INTERRUPTED_TARGET_PENDING_INTERNAL);
1230 } 1230 }
1231 1231
1232 DetermineDownloadTarget(); 1232 DetermineDownloadTarget();
1233 } 1233 }
1234 1234
1235 void DownloadItemImpl::DetermineDownloadTarget() { 1235 void DownloadItemImpl::DetermineDownloadTarget() {
1236 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1236 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1237 DVLOG(20) << __FUNCTION__ << "() " << DebugString(true); 1237 DVLOG(20) << __func__ << "() " << DebugString(true);
1238 1238
1239 delegate_->DetermineDownloadTarget( 1239 delegate_->DetermineDownloadTarget(
1240 this, base::Bind(&DownloadItemImpl::OnDownloadTargetDetermined, 1240 this, base::Bind(&DownloadItemImpl::OnDownloadTargetDetermined,
1241 weak_ptr_factory_.GetWeakPtr())); 1241 weak_ptr_factory_.GetWeakPtr()));
1242 } 1242 }
1243 1243
1244 // Called by delegate_ when the download target path has been determined. 1244 // Called by delegate_ when the download target path has been determined.
1245 void DownloadItemImpl::OnDownloadTargetDetermined( 1245 void DownloadItemImpl::OnDownloadTargetDetermined(
1246 const base::FilePath& target_path, 1246 const base::FilePath& target_path,
1247 TargetDisposition disposition, 1247 TargetDisposition disposition,
1248 DownloadDangerType danger_type, 1248 DownloadDangerType danger_type,
1249 const base::FilePath& intermediate_path) { 1249 const base::FilePath& intermediate_path) {
1250 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1250 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1251 DCHECK(state_ == TARGET_PENDING_INTERNAL || 1251 DCHECK(state_ == TARGET_PENDING_INTERNAL ||
1252 state_ == INTERRUPTED_TARGET_PENDING_INTERNAL); 1252 state_ == INTERRUPTED_TARGET_PENDING_INTERNAL);
1253 1253
1254 // If the |target_path| is empty, then we consider this download to be 1254 // If the |target_path| is empty, then we consider this download to be
1255 // canceled. 1255 // canceled.
1256 if (target_path.empty()) { 1256 if (target_path.empty()) {
1257 Cancel(true); 1257 Cancel(true);
1258 return; 1258 return;
1259 } 1259 }
1260 1260
1261 DVLOG(20) << __FUNCTION__ << "() target_path:" << target_path.value() 1261 DVLOG(20) << __func__ << "() target_path:" << target_path.value()
1262 << " disposition:" << disposition << " danger_type:" << danger_type 1262 << " disposition:" << disposition << " danger_type:" << danger_type
1263 << " this:" << DebugString(true); 1263 << " this:" << DebugString(true);
1264 1264
1265 target_path_ = target_path; 1265 target_path_ = target_path;
1266 target_disposition_ = disposition; 1266 target_disposition_ = disposition;
1267 SetDangerType(danger_type); 1267 SetDangerType(danger_type);
1268 1268
1269 // This was an interrupted download that was looking for a filename. Now that 1269 // This was an interrupted download that was looking for a filename. Now that
1270 // it has one, transition to interrupted. 1270 // it has one, transition to interrupted.
1271 if (state_ == INTERRUPTED_TARGET_PENDING_INTERNAL) { 1271 if (state_ == INTERRUPTED_TARGET_PENDING_INTERNAL) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1310 // Safe because we control download file lifetime. 1310 // Safe because we control download file lifetime.
1311 base::Unretained(download_file_.get()), 1311 base::Unretained(download_file_.get()),
1312 intermediate_path, callback)); 1312 intermediate_path, callback));
1313 } 1313 }
1314 1314
1315 void DownloadItemImpl::OnDownloadRenamedToIntermediateName( 1315 void DownloadItemImpl::OnDownloadRenamedToIntermediateName(
1316 DownloadInterruptReason reason, 1316 DownloadInterruptReason reason,
1317 const base::FilePath& full_path) { 1317 const base::FilePath& full_path) {
1318 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1318 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1319 DCHECK_EQ(state_, TARGET_PENDING_INTERNAL); 1319 DCHECK_EQ(state_, TARGET_PENDING_INTERNAL);
1320 DVLOG(20) << __FUNCTION__ << " download=" << DebugString(true); 1320 DVLOG(20) << __func__ << "() download=" << DebugString(true);
1321 1321
1322 TransitionTo(TARGET_RESOLVED_INTERNAL); 1322 TransitionTo(TARGET_RESOLVED_INTERNAL);
1323 1323
1324 // If the intermediate rename fails while there's also a destination_error_, 1324 // If the intermediate rename fails while there's also a destination_error_,
1325 // then the former is considered the critical error since it requires 1325 // then the former is considered the critical error since it requires
1326 // discarding the partial state. 1326 // discarding the partial state.
1327 if (DOWNLOAD_INTERRUPT_REASON_NONE != reason) { 1327 if (DOWNLOAD_INTERRUPT_REASON_NONE != reason) {
1328 // TODO(asanka): Even though the rename failed, it may still be possible to 1328 // TODO(asanka): Even though the rename failed, it may still be possible to
1329 // recover the partial state from the 'before' name. 1329 // recover the partial state from the 'before' name.
1330 InterruptAndDiscardPartialState(reason); 1330 InterruptAndDiscardPartialState(reason);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 } 1378 }
1379 1379
1380 // Called by MaybeCompleteDownload() when it has determined that the download 1380 // Called by MaybeCompleteDownload() when it has determined that the download
1381 // is ready for completion. 1381 // is ready for completion.
1382 void DownloadItemImpl::OnDownloadCompleting() { 1382 void DownloadItemImpl::OnDownloadCompleting() {
1383 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1383 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1384 1384
1385 if (state_ != IN_PROGRESS_INTERNAL) 1385 if (state_ != IN_PROGRESS_INTERNAL)
1386 return; 1386 return;
1387 1387
1388 DVLOG(20) << __FUNCTION__ << "()" 1388 DVLOG(20) << __func__ << "() " << DebugString(true);
1389 << " " << DebugString(true);
1390 DCHECK(!GetTargetFilePath().empty()); 1389 DCHECK(!GetTargetFilePath().empty());
1391 DCHECK(!IsDangerous()); 1390 DCHECK(!IsDangerous());
1392 1391
1393 // TODO(rdsmith/benjhayden): Remove as part of SavePackage integration. 1392 // TODO(rdsmith/benjhayden): Remove as part of SavePackage integration.
1394 if (is_save_package_download_) { 1393 if (is_save_package_download_) {
1395 // Avoid doing anything on the file thread; there's nothing we control 1394 // Avoid doing anything on the file thread; there's nothing we control
1396 // there. Strictly speaking, this skips giving the embedder a chance to 1395 // there. Strictly speaking, this skips giving the embedder a chance to
1397 // open the download. But on a save package download, there's no real 1396 // open the download. But on a save package download, there's no real
1398 // concept of opening. 1397 // concept of opening.
1399 Completed(); 1398 Completed();
(...skipping 23 matching lines...) Expand all
1423 const base::FilePath& full_path) { 1422 const base::FilePath& full_path) {
1424 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1423 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1425 DCHECK(!is_save_package_download_); 1424 DCHECK(!is_save_package_download_);
1426 1425
1427 // If a cancel or interrupt hit, we'll cancel the DownloadFile, which 1426 // If a cancel or interrupt hit, we'll cancel the DownloadFile, which
1428 // will result in deleting the file on the file thread. So we don't 1427 // will result in deleting the file on the file thread. So we don't
1429 // care about the name having been changed. 1428 // care about the name having been changed.
1430 if (state_ != IN_PROGRESS_INTERNAL) 1429 if (state_ != IN_PROGRESS_INTERNAL)
1431 return; 1430 return;
1432 1431
1433 DVLOG(20) << __FUNCTION__ << "()" 1432 DVLOG(20) << __func__ << "() full_path = \"" << full_path.value() << "\" "
1434 << " full_path = \"" << full_path.value() << "\"" 1433 << DebugString(false);
1435 << " " << DebugString(false);
1436 1434
1437 if (DOWNLOAD_INTERRUPT_REASON_NONE != reason) { 1435 if (DOWNLOAD_INTERRUPT_REASON_NONE != reason) {
1438 // Failure to perform the final rename is considered fatal. TODO(asanka): It 1436 // Failure to perform the final rename is considered fatal. TODO(asanka): It
1439 // may not be, in which case we should figure out whether we can recover the 1437 // may not be, in which case we should figure out whether we can recover the
1440 // state. 1438 // state.
1441 InterruptAndDiscardPartialState(reason); 1439 InterruptAndDiscardPartialState(reason);
1442 UpdateObservers(); 1440 UpdateObservers();
1443 return; 1441 return;
1444 } 1442 }
1445 1443
(...skipping 28 matching lines...) Expand all
1474 void DownloadItemImpl::DelayedDownloadOpened(bool auto_opened) { 1472 void DownloadItemImpl::DelayedDownloadOpened(bool auto_opened) {
1475 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1473 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1476 1474
1477 auto_opened_ = auto_opened; 1475 auto_opened_ = auto_opened;
1478 Completed(); 1476 Completed();
1479 } 1477 }
1480 1478
1481 void DownloadItemImpl::Completed() { 1479 void DownloadItemImpl::Completed() {
1482 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1480 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1483 1481
1484 DVLOG(20) << __FUNCTION__ << "() " << DebugString(false); 1482 DVLOG(20) << __func__ << "() " << DebugString(false);
1485 1483
1486 DCHECK(all_data_saved_); 1484 DCHECK(all_data_saved_);
1487 end_time_ = base::Time::Now(); 1485 end_time_ = base::Time::Now();
1488 TransitionTo(COMPLETE_INTERNAL); 1486 TransitionTo(COMPLETE_INTERNAL);
1489 RecordDownloadCompleted(start_tick_, received_bytes_); 1487 RecordDownloadCompleted(start_tick_, received_bytes_);
1490 1488
1491 if (auto_opened_) { 1489 if (auto_opened_) {
1492 // If it was already handled by the delegate, do nothing. 1490 // If it was already handled by the delegate, do nothing.
1493 } else if (GetOpenWhenComplete() || 1491 } else if (GetOpenWhenComplete() ||
1494 ShouldOpenFileBasedOnExtension() || 1492 ShouldOpenFileBasedOnExtension() ||
(...skipping 15 matching lines...) Expand all
1510 DownloadInterruptReason reason) { 1508 DownloadInterruptReason reason) {
1511 InterruptWithPartialState(0, std::unique_ptr<crypto::SecureHash>(), reason); 1509 InterruptWithPartialState(0, std::unique_ptr<crypto::SecureHash>(), reason);
1512 } 1510 }
1513 1511
1514 void DownloadItemImpl::InterruptWithPartialState( 1512 void DownloadItemImpl::InterruptWithPartialState(
1515 int64_t bytes_so_far, 1513 int64_t bytes_so_far,
1516 std::unique_ptr<crypto::SecureHash> hash_state, 1514 std::unique_ptr<crypto::SecureHash> hash_state,
1517 DownloadInterruptReason reason) { 1515 DownloadInterruptReason reason) {
1518 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1516 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1519 DCHECK_NE(DOWNLOAD_INTERRUPT_REASON_NONE, reason); 1517 DCHECK_NE(DOWNLOAD_INTERRUPT_REASON_NONE, reason);
1520 DVLOG(20) << __FUNCTION__ 1518 DVLOG(20) << __func__
1521 << "() reason:" << DownloadInterruptReasonToString(reason) 1519 << "() reason:" << DownloadInterruptReasonToString(reason)
1522 << " bytes_so_far:" << bytes_so_far 1520 << " bytes_so_far:" << bytes_so_far
1523 << " hash_state:" << (hash_state ? "Valid" : "Invalid") 1521 << " hash_state:" << (hash_state ? "Valid" : "Invalid")
1524 << " this=" << DebugString(true); 1522 << " this=" << DebugString(true);
1525 1523
1526 // Somewhat counter-intuitively, it is possible for us to receive an 1524 // Somewhat counter-intuitively, it is possible for us to receive an
1527 // interrupt after we've already been interrupted. The generation of 1525 // interrupt after we've already been interrupted. The generation of
1528 // interrupts from the file thread Renames and the generation of 1526 // interrupts from the file thread Renames and the generation of
1529 // interrupts from disk writes go through two different mechanisms (driven 1527 // interrupts from disk writes go through two different mechanisms (driven
1530 // by rename requests from UI thread and by write requests from IO thread, 1528 // by rename requests from UI thread and by write requests from IO thread,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1648 } 1646 }
1649 1647
1650 std::unique_ptr<crypto::SecureHash> clone_of_hash_state(hash_state_->Clone()); 1648 std::unique_ptr<crypto::SecureHash> clone_of_hash_state(hash_state_->Clone());
1651 std::vector<char> hash_value(clone_of_hash_state->GetHashLength()); 1649 std::vector<char> hash_value(clone_of_hash_state->GetHashLength());
1652 clone_of_hash_state->Finish(&hash_value.front(), hash_value.size()); 1650 clone_of_hash_state->Finish(&hash_value.front(), hash_value.size());
1653 hash_.assign(hash_value.begin(), hash_value.end()); 1651 hash_.assign(hash_value.begin(), hash_value.end());
1654 } 1652 }
1655 1653
1656 void DownloadItemImpl::ReleaseDownloadFile(bool destroy_file) { 1654 void DownloadItemImpl::ReleaseDownloadFile(bool destroy_file) {
1657 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1655 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1658 DVLOG(20) << __FUNCTION__ << "() destroy_file:" << destroy_file; 1656 DVLOG(20) << __func__ << "() destroy_file:" << destroy_file;
1659 1657
1660 if (destroy_file) { 1658 if (destroy_file) {
1661 BrowserThread::PostTask( 1659 BrowserThread::PostTask(
1662 BrowserThread::FILE, FROM_HERE, 1660 BrowserThread::FILE, FROM_HERE,
1663 // Will be deleted at end of task execution. 1661 // Will be deleted at end of task execution.
1664 base::Bind(&DownloadFileCancel, base::Passed(&download_file_))); 1662 base::Bind(&DownloadFileCancel, base::Passed(&download_file_)));
1665 // Avoid attempting to reuse the intermediate file by clearing out 1663 // Avoid attempting to reuse the intermediate file by clearing out
1666 // current_path_. 1664 // current_path_.
1667 current_path_.clear(); 1665 current_path_.clear();
1668 } else { 1666 } else {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1786 bound_net_log_.AddEvent( 1784 bound_net_log_.AddEvent(
1787 net::NetLog::TYPE_DOWNLOAD_ITEM_CANCELED, 1785 net::NetLog::TYPE_DOWNLOAD_ITEM_CANCELED,
1788 base::Bind(&ItemCanceledNetLogCallback, received_bytes_)); 1786 base::Bind(&ItemCanceledNetLogCallback, received_bytes_));
1789 break; 1787 break;
1790 1788
1791 case MAX_DOWNLOAD_INTERNAL_STATE: 1789 case MAX_DOWNLOAD_INTERNAL_STATE:
1792 NOTREACHED(); 1790 NOTREACHED();
1793 break; 1791 break;
1794 } 1792 }
1795 1793
1796 DVLOG(20) << " " << __FUNCTION__ << "()" 1794 DVLOG(20) << __func__ << "() from:" << DebugDownloadStateString(old_state)
1797 << " from:" << DebugDownloadStateString(old_state)
1798 << " to:" << DebugDownloadStateString(state_) 1795 << " to:" << DebugDownloadStateString(state_)
1799 << " this = " << DebugString(true); 1796 << " this = " << DebugString(true);
1800 bool is_done = 1797 bool is_done =
1801 (state_ == COMPLETE_INTERNAL || state_ == INTERRUPTED_INTERNAL || 1798 (state_ == COMPLETE_INTERNAL || state_ == INTERRUPTED_INTERNAL ||
1802 state_ == RESUMING_INTERNAL || state_ == CANCELLED_INTERNAL); 1799 state_ == RESUMING_INTERNAL || state_ == CANCELLED_INTERNAL);
1803 bool was_done = 1800 bool was_done =
1804 (old_state == COMPLETE_INTERNAL || old_state == INTERRUPTED_INTERNAL || 1801 (old_state == COMPLETE_INTERNAL || old_state == INTERRUPTED_INTERNAL ||
1805 old_state == RESUMING_INTERNAL || old_state == CANCELLED_INTERNAL); 1802 old_state == RESUMING_INTERNAL || old_state == CANCELLED_INTERNAL);
1806 1803
1807 // Termination 1804 // Termination
(...skipping 26 matching lines...) Expand all
1834 danger_type == DOWNLOAD_DANGER_TYPE_DANGEROUS_URL || 1831 danger_type == DOWNLOAD_DANGER_TYPE_DANGEROUS_URL ||
1835 danger_type == DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT || 1832 danger_type == DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT ||
1836 danger_type == DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED)) { 1833 danger_type == DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED)) {
1837 RecordMaliciousDownloadClassified(danger_type); 1834 RecordMaliciousDownloadClassified(danger_type);
1838 } 1835 }
1839 danger_type_ = danger_type; 1836 danger_type_ = danger_type;
1840 } 1837 }
1841 1838
1842 void DownloadItemImpl::SetFullPath(const base::FilePath& new_path) { 1839 void DownloadItemImpl::SetFullPath(const base::FilePath& new_path) {
1843 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1840 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1844 DVLOG(20) << __FUNCTION__ << "()" 1841 DVLOG(20) << __func__ << "() new_path = \"" << new_path.value() << "\" "
1845 << " new_path = \"" << new_path.value() << "\"" 1842 << DebugString(true);
1846 << " " << DebugString(true);
1847 DCHECK(!new_path.empty()); 1843 DCHECK(!new_path.empty());
1848 1844
1849 bound_net_log_.AddEvent( 1845 bound_net_log_.AddEvent(
1850 net::NetLog::TYPE_DOWNLOAD_ITEM_RENAMED, 1846 net::NetLog::TYPE_DOWNLOAD_ITEM_RENAMED,
1851 base::Bind(&ItemRenamedNetLogCallback, &current_path_, &new_path)); 1847 base::Bind(&ItemRenamedNetLogCallback, &current_path_, &new_path));
1852 1848
1853 current_path_ = new_path; 1849 current_path_ = new_path;
1854 } 1850 }
1855 1851
1856 void DownloadItemImpl::AutoResumeIfValid() { 1852 void DownloadItemImpl::AutoResumeIfValid() {
1857 DVLOG(20) << __FUNCTION__ << "() " << DebugString(true); 1853 DVLOG(20) << __func__ << "() " << DebugString(true);
1858 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1854 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1859 ResumeMode mode = GetResumeMode(); 1855 ResumeMode mode = GetResumeMode();
1860 1856
1861 if (mode != RESUME_MODE_IMMEDIATE_RESTART && 1857 if (mode != RESUME_MODE_IMMEDIATE_RESTART &&
1862 mode != RESUME_MODE_IMMEDIATE_CONTINUE) { 1858 mode != RESUME_MODE_IMMEDIATE_CONTINUE) {
1863 return; 1859 return;
1864 } 1860 }
1865 1861
1866 auto_resume_count_++; 1862 auto_resume_count_++;
1867 1863
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
2093 case RESUME_MODE_USER_CONTINUE: 2089 case RESUME_MODE_USER_CONTINUE:
2094 return "USER_CONTINUE"; 2090 return "USER_CONTINUE";
2095 case RESUME_MODE_USER_RESTART: 2091 case RESUME_MODE_USER_RESTART:
2096 return "USER_RESTART"; 2092 return "USER_RESTART";
2097 } 2093 }
2098 NOTREACHED() << "Unknown resume mode " << mode; 2094 NOTREACHED() << "Unknown resume mode " << mode;
2099 return "unknown"; 2095 return "unknown";
2100 } 2096 }
2101 2097
2102 } // namespace content 2098 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/base_file.cc ('k') | content/browser/download/download_manager_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698