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

Unified Diff: content/browser/download/download_item_impl.cc

Issue 16007017: [Resumption 10/12] Use DI::IsDone to check for terminal downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with r204343 Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/download/download_item_impl.cc
diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc
index 9d8e9f08d59b08ac87f92529e8f4aef497e76cb7..98b7f3eb390faeeabf87464ab54b9dd1ec5c0487 100644
--- a/content/browser/download/download_item_impl.cc
+++ b/content/browser/download/download_item_impl.cc
@@ -280,12 +280,12 @@ void DownloadItemImpl::UpdateObservers() {
void DownloadItemImpl::ValidateDangerousDownload() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK_EQ(IN_PROGRESS, GetState());
+ DCHECK(!IsDone());
DCHECK(IsDangerous());
VLOG(20) << __FUNCTION__ << " download=" << DebugString(true);
- if (GetState() != IN_PROGRESS)
+ if (IsDone() || !IsDangerous())
return;
RecordDangerousDownloadAccept(GetDangerType());
@@ -423,7 +423,7 @@ void DownloadItemImpl::Remove() {
void DownloadItemImpl::OpenDownload() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (state_ == IN_PROGRESS_INTERNAL) {
+ if (!IsDone()) {
// We don't honor the open_when_complete_ flag for temporary
// downloads. Don't set it because it shows up in the UI.
if (!IsTemporary())
@@ -493,13 +493,27 @@ bool DownloadItemImpl::CanResume() const {
resume_mode == RESUME_MODE_USER_CONTINUE);
}
-// TODO(rdsmith): Figure out whether or not we want this probe routine
-// to consider interrupted (resumably) downloads partial downloads.
-// Conceptually the answer is probably yes, but everywhere that currently
-// uses the routine is using it as a synonym for IsInProgress().
-bool DownloadItemImpl::IsPartialDownload() const {
- DownloadState state = InternalToExternalState(state_);
- return (state == IN_PROGRESS);
+bool DownloadItemImpl::IsDone() const {
+ switch (state_) {
+ case IN_PROGRESS_INTERNAL:
+ case COMPLETING_INTERNAL:
+ return false;
+
+ case COMPLETE_INTERNAL:
+ case CANCELLED_INTERNAL:
+ return true;
+
+ case INTERRUPTED_INTERNAL:
+ return !CanResume();
+
+ case RESUMING_INTERNAL:
+ return false;
+
+ case MAX_DOWNLOAD_INTERNAL_STATE:
+ break;
+ }
+ NOTREACHED();
+ return true;
}
bool DownloadItemImpl::IsInProgress() const {
@@ -689,8 +703,8 @@ bool DownloadItemImpl::CanOpenDownload() {
// We can open the file or mark it for opening on completion if the download
// is expected to complete successfully. Exclude temporary downloads, since
// they aren't owned by the download system.
- return (IsInProgress() || IsComplete()) && !IsTemporary() &&
- !file_externally_removed_;
+ return (!IsDone() || IsComplete()) && !IsTemporary() &&
+ !file_externally_removed_;
}
bool DownloadItemImpl::ShouldOpenFileBasedOnExtension() {
« no previous file with comments | « content/browser/download/download_item_impl.h ('k') | content/browser/download/download_manager_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698