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

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

Issue 14958002: [Resumption 8/11] Remove intermediate files when no longer necessary. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with r201622 Created 7 years, 7 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 | Annotate | Revision Log
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 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 // download file has been released. 362 // download file has been released.
363 if (!is_save_package_download_ && download_file_) 363 if (!is_save_package_download_ && download_file_)
364 ReleaseDownloadFile(true); 364 ReleaseDownloadFile(true);
365 365
366 if (state_ == IN_PROGRESS_INTERNAL) { 366 if (state_ == IN_PROGRESS_INTERNAL) {
367 // Cancel the originating URL request unless it's already been cancelled 367 // Cancel the originating URL request unless it's already been cancelled
368 // by interrupt. 368 // by interrupt.
369 request_handle_->CancelRequest(); 369 request_handle_->CancelRequest();
370 } 370 }
371 371
372 // Remove the intermediate file if we are cancelling an interrupted download.
373 // Continuable interruptions leave the intermediate file around.
374 if ((state_ == INTERRUPTED_INTERNAL || state_ == RESUMING_INTERNAL) &&
375 !current_path_.empty()) {
376 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
377 base::Bind(&DeleteDownloadedFile, current_path_));
378 current_path_.clear();
379 }
380
372 TransitionTo(CANCELLED_INTERNAL); 381 TransitionTo(CANCELLED_INTERNAL);
373 } 382 }
374 383
375 void DownloadItemImpl::Delete(DeleteReason reason) { 384 void DownloadItemImpl::Delete(DeleteReason reason) {
376 VLOG(20) << __FUNCTION__ << "() download = " << DebugString(true); 385 VLOG(20) << __FUNCTION__ << "() download = " << DebugString(true);
377 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 386 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
378 387
379 switch (reason) { 388 switch (reason) {
380 case DELETE_DUE_TO_USER_DISCARD: 389 case DELETE_DUE_TO_USER_DISCARD:
381 UMA_HISTOGRAM_ENUMERATION( 390 UMA_HISTOGRAM_ENUMERATION(
(...skipping 17 matching lines...) Expand all
399 current_path_.clear(); 408 current_path_.clear();
400 } 409 }
401 Remove(); 410 Remove();
402 // We have now been deleted. 411 // We have now been deleted.
403 } 412 }
404 413
405 void DownloadItemImpl::Remove() { 414 void DownloadItemImpl::Remove() {
406 VLOG(20) << __FUNCTION__ << "() download = " << DebugString(true); 415 VLOG(20) << __FUNCTION__ << "() download = " << DebugString(true);
407 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 416 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
408 417
409 // Remove the intermediate file if we are removing an interrupted download.
410 // Continuable interruptions leave the intermediate file around. However, the
411 // intermediate file will be unusable if the download item is removed.
412 if (!current_path_.empty() && IsInterrupted() && !download_file_.get()) {
413 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
414 base::Bind(&DeleteDownloadedFile, current_path_));
415 current_path_.clear();
416 }
417
418 delegate_->AssertStateConsistent(this); 418 delegate_->AssertStateConsistent(this);
419 Cancel(true); 419 Cancel(true);
420 delegate_->AssertStateConsistent(this); 420 delegate_->AssertStateConsistent(this);
421 421
422 NotifyRemoved(); 422 NotifyRemoved();
423 delegate_->DownloadRemoved(this); 423 delegate_->DownloadRemoved(this);
424 // We have now been deleted. 424 // We have now been deleted.
425 } 425 }
426 426
427 void DownloadItemImpl::OpenDownload() { 427 void DownloadItemImpl::OpenDownload() {
(...skipping 1250 matching lines...) Expand 10 before | Expand all | Expand 10 after
1678 case RESUME_MODE_USER_CONTINUE: 1678 case RESUME_MODE_USER_CONTINUE:
1679 return "USER_CONTINUE"; 1679 return "USER_CONTINUE";
1680 case RESUME_MODE_USER_RESTART: 1680 case RESUME_MODE_USER_RESTART:
1681 return "USER_RESTART"; 1681 return "USER_RESTART";
1682 } 1682 }
1683 NOTREACHED() << "Unknown resume mode " << mode; 1683 NOTREACHED() << "Unknown resume mode " << mode;
1684 return "unknown"; 1684 return "unknown";
1685 } 1685 }
1686 1686
1687 } // namespace content 1687 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_browsertest.cc ('k') | content/browser/download/download_manager_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698