Index: chrome/browser/download/download_commands.cc |
diff --git a/chrome/browser/download/download_commands.cc b/chrome/browser/download/download_commands.cc |
index 97784977e39b20f3f88b82ed0210bc26bebca988..32151569955c3e83004af7d0fd8ac5735e75ad26 100644 |
--- a/chrome/browser/download/download_commands.cc |
+++ b/chrome/browser/download/download_commands.cc |
@@ -15,6 +15,8 @@ |
#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/grit/generated_resources.h" |
+#include "content/public/browser/download_manager.h" |
+#include "content/public/browser/download_url_parameters.h" |
#include "grit/theme_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/resource/resource_bundle.h" |
@@ -136,6 +138,8 @@ bool DownloadCommands::IsCommandVisible(Command command) const { |
} |
void DownloadCommands::ExecuteCommand(Command command) { |
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
+ |
switch (command) { |
case SHOW_IN_FOLDER: |
download_item_->ShowDownloadInShell(); |
@@ -203,13 +207,23 @@ void DownloadCommands::ExecuteCommand(Command command) { |
case RESUME: |
download_item_->Resume(); |
break; |
- case RETRY: |
- if (download_item_->CanResume()) { |
- download_item_->Resume(); |
- } else { |
- // TODO(yoshiki): Implement retry logic. |
- } |
+ case RETRY: { |
+ content::DownloadManager* download_manager = |
+ content::BrowserContext::GetDownloadManager( |
+ download_item_->GetBrowserContext()); |
+ scoped_ptr<content::DownloadUrlParameters> params( |
+ content::DownloadUrlParameters::FromWebContents( |
+ download_item_->GetWebContents(), download_item_->GetURL())); |
asanka
2015/04/22 21:17:35
DownloadItem::GetWebContents() isn't guaranteed to
|
+ params->set_referrer(content::Referrer(download_item_->GetReferrerUrl(), |
+ blink::WebReferrerPolicyDefault)); |
+ |
+ // Removes the previous donwload item. |
+ download_item_->Remove(); |
+ |
+ // Starts new download. |
+ download_manager->DownloadUrl(params.Pass()); |
break; |
+ } |
} |
} |