Index: chrome/browser/download/download_shelf.cc |
diff --git a/chrome/browser/download/download_shelf.cc b/chrome/browser/download/download_shelf.cc |
index dc69d02c4f029000180e3a49fea680e723f76f25..5adc587faeb2e07225e9bf21d443d0aeb57d543f 100644 |
--- a/chrome/browser/download/download_shelf.cc |
+++ b/chrome/browser/download/download_shelf.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/download/download_shelf.h" |
#include "app/l10n_util.h" |
+#include "base/command_line.h" |
#include "base/file_util.h" |
#include "chrome/browser/browser.h" |
#include "chrome/browser/dom_ui/downloads_ui.h" |
@@ -14,6 +15,7 @@ |
#include "chrome/browser/download/download_util.h" |
#include "chrome/browser/metrics/user_metrics.h" |
#include "chrome/common/url_constants.h" |
+#include "chrome/common/chrome_switches.h" |
#include "grit/generated_resources.h" |
// DownloadShelfContextMenu ---------------------------------------------------- |
@@ -50,7 +52,7 @@ string16 DownloadShelfContextMenu::GetLabelForCommandId(int command_id) const { |
case CANCEL: |
return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); |
case TOGGLE_PAUSE: { |
- if (download_->is_paused()) |
+ if (download_->is_paused() || download_->IsInterruptedDownload()) |
return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); |
else |
return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); |
@@ -62,6 +64,8 @@ string16 DownloadShelfContextMenu::GetLabelForCommandId(int command_id) const { |
} |
bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
+ static bool can_restart = CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableDownloadRestarts); |
switch (command_id) { |
case SHOW_IN_FOLDER: |
case OPEN_WHEN_COMPLETE: |
@@ -69,9 +73,11 @@ bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
case ALWAYS_OPEN_TYPE: |
return download_->CanOpenDownload(); |
case CANCEL: |
- return download_->state() == DownloadItem::IN_PROGRESS; |
+ return download_->IsPartialDownload(); |
case TOGGLE_PAUSE: |
- return download_->state() == DownloadItem::IN_PROGRESS; |
+ return ((download_->state() == DownloadItem::IN_PROGRESS) || |
+ (can_restart && |
+ (download_->IsInterruptedDownload()))); |
default: |
return command_id > 0 && command_id < MENU_LAST; |
} |
@@ -97,7 +103,7 @@ void DownloadShelfContextMenu::ExecuteCommand(int command_id) { |
// It is possible for the download to complete before the user clicks the |
// menu item, recheck if the download is in progress state before toggling |
// pause. |
- if (download_->state() == DownloadItem::IN_PROGRESS) |
+ if (download_->IsPartialDownload()) |
download_->TogglePause(); |
break; |
default: |