Index: chrome/browser/download/download_target_determiner.cc |
diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc |
index 4b757d58181a2d8ce4410774271fa9506486d8c6..aeaa32849b832f75e9dcc380075e4db2152c63a6 100644 |
--- a/chrome/browser/download/download_target_determiner.cc |
+++ b/chrome/browser/download/download_target_determiner.cc |
@@ -240,15 +240,6 @@ DownloadTargetDeterminer::Result |
DCHECK(virtual_path_.IsAbsolute()); |
DVLOG(20) << "Generated virtual path: " << virtual_path_.AsUTF8Unsafe(); |
- // If the download is DOA, don't bother going any further. This would be the |
- // case for a download that failed to initialize (e.g. the initial temporary |
- // file couldn't be created because both the downloads directory and the |
- // temporary directory are unwriteable). |
- // |
- // A virtual path is determined for DOA downloads for display purposes. This |
- // is why this check is performed here instead of at the start. |
- if (download_->GetState() != DownloadItem::IN_PROGRESS) |
- return COMPLETE; |
return CONTINUE; |
} |
@@ -259,7 +250,8 @@ DownloadTargetDeterminer::Result |
next_state_ = STATE_RESERVE_VIRTUAL_PATH; |
- if (!should_notify_extensions_) |
+ if (!should_notify_extensions_ || |
+ download_->GetState() != DownloadItem::IN_PROGRESS) |
return CONTINUE; |
delegate_->NotifyExtensions(download_, virtual_path_, |
@@ -307,6 +299,8 @@ DownloadTargetDeterminer::Result |
DCHECK(!virtual_path_.empty()); |
next_state_ = STATE_PROMPT_USER_FOR_DOWNLOAD_PATH; |
+ if (download_->GetState() != DownloadItem::IN_PROGRESS) |
+ return CONTINUE; |
delegate_->ReserveVirtualPath( |
download_, virtual_path_, create_target_directory_, conflict_action_, |
@@ -343,7 +337,9 @@ DownloadTargetDeterminer::Result |
next_state_ = STATE_DETERMINE_LOCAL_PATH; |
- if (should_prompt_) { |
+ // Avoid prompting for a download if it isn't in-progress. The user will be |
+ // prompted once the download is resumed and headers are available. |
+ if (should_prompt_ && download_->GetState() == DownloadItem::IN_PROGRESS) { |
delegate_->PromptUserForDownloadPath( |
download_, |
virtual_path_, |
@@ -581,6 +577,7 @@ DownloadTargetDeterminer::Result |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
DCHECK(!virtual_path_.empty()); |
next_state_ = STATE_CHECK_VISITED_REFERRER_BEFORE; |
+ |
delegate_->CheckDownloadUrl( |
download_, |
virtual_path_, |