summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/generated_resources.grd8
-rw-r--r--chrome/browser/download/download_shelf.cc15
-rw-r--r--chrome/browser/download/download_shelf.h1
-rw-r--r--chrome/browser/views/download_item_view.cc2
4 files changed, 26 insertions, 0 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index dc83d77..f6a0983 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -1784,6 +1784,14 @@ each locale. -->
desc="Download context menu remove">
&Remove from list
</message>
+ <message name="IDS_DOWNLOAD_MENU_PAUSE_ITEM"
+ desc="Download context menu pause download">
+ &amp;Pause
+ </message>
+ <message name="IDS_DOWNLOAD_MENU_RESUME_ITEM"
+ desc="Download context menu resume download">
+ &amp;Resume
+ </message>
<!-- Remove in-progress downloads confirmation dialog -->
<message name="IDS_SINGLE_DOWNLOAD_REMOVE_CONFIRM_TITLE" desc="Title of the dialog asking for user confirmation to close the browser when one download is in-progress.">
diff --git a/chrome/browser/download/download_shelf.cc b/chrome/browser/download/download_shelf.cc
index b4d7701..70db47a 100644
--- a/chrome/browser/download/download_shelf.cc
+++ b/chrome/browser/download/download_shelf.cc
@@ -57,6 +57,12 @@ std::wstring DownloadShelfContextMenu::GetItemLabel(int id) const {
return l10n_util::GetString(IDS_DOWNLOAD_MENU_CANCEL);
case REMOVE_ITEM:
return l10n_util::GetString(IDS_DOWNLOAD_MENU_REMOVE_ITEM);
+ case TOGGLE_PAUSE: {
+ if (download_->is_paused())
+ return l10n_util::GetString(IDS_DOWNLOAD_MENU_RESUME_ITEM);
+ else
+ return l10n_util::GetString(IDS_DOWNLOAD_MENU_PAUSE_ITEM);
+ }
default:
NOTREACHED();
}
@@ -75,6 +81,8 @@ bool DownloadShelfContextMenu::IsItemCommandEnabled(int id) const {
case REMOVE_ITEM:
return download_->state() == DownloadItem::COMPLETE ||
download_->state() == DownloadItem::CANCELLED;
+ case TOGGLE_PAUSE:
+ return download_->state() == DownloadItem::IN_PROGRESS;
default:
return id > 0 && id < MENU_LAST;
}
@@ -101,6 +109,13 @@ void DownloadShelfContextMenu::ExecuteItemCommand(int id) {
case REMOVE_ITEM:
download_->Remove(false);
break;
+ case TOGGLE_PAUSE:
+ // 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)
+ download_->TogglePause();
+ break;
default:
NOTREACHED();
}
diff --git a/chrome/browser/download/download_shelf.h b/chrome/browser/download/download_shelf.h
index 6718a9b..fad559a 100644
--- a/chrome/browser/download/download_shelf.h
+++ b/chrome/browser/download/download_shelf.h
@@ -56,6 +56,7 @@ class DownloadShelfContextMenu {
ALWAYS_OPEN_TYPE, // Default this file extension to always open.
CANCEL, // Cancel the download.
REMOVE_ITEM, // Removes the item from the download shelf.
+ TOGGLE_PAUSE, // Temporarily pause a download.
MENU_LAST
};
diff --git a/chrome/browser/views/download_item_view.cc b/chrome/browser/views/download_item_view.cc
index 760585d..bbf053d 100644
--- a/chrome/browser/views/download_item_view.cc
+++ b/chrome/browser/views/download_item_view.cc
@@ -96,6 +96,8 @@ class DownloadShelfContextMenuWin : public DownloadShelfContextMenu,
}
context_menu->AppendMenuItem(ALWAYS_OPEN_TYPE, L"", views::Menu::CHECKBOX);
context_menu->AppendSeparator();
+ if (download_->state() == DownloadItem::IN_PROGRESS)
+ context_menu->AppendMenuItem(TOGGLE_PAUSE, L"", views::Menu::NORMAL);
context_menu->AppendMenuItem(SHOW_IN_FOLDER, L"", views::Menu::NORMAL);
context_menu->AppendSeparator();
context_menu->AppendMenuItem(REMOVE_ITEM, L"", views::Menu::NORMAL);