Index: chrome/browser/download/download_shelf_context_menu.cc |
diff --git a/chrome/browser/download/download_shelf_context_menu.cc b/chrome/browser/download/download_shelf_context_menu.cc |
index 6cb748e6f6d13c327f0580641f59721c37a7cfb7..ddc9c9d8f4364968466ae018182f766a9a287df9 100644 |
--- a/chrome/browser/download/download_shelf_context_menu.cc |
+++ b/chrome/browser/download/download_shelf_context_menu.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/download/download_shelf_context_menu.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/download/download_crx_util.h" |
#include "chrome/browser/download/download_item_model.h" |
#include "chrome/browser/download/download_prefs.h" |
#include "chrome/browser/safe_browsing/download_protection_service.h" |
@@ -43,12 +44,13 @@ ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() { |
bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
switch (command_id) { |
case SHOW_IN_FOLDER: |
- case OPEN_WHEN_COMPLETE: |
- // Don't enable "Open when complete" if the download is no longer |
- // available or if it is temporary. We explicitly ignore "Open when |
- // complete" for temporary downloads. |
return download_item_->CanShowInFolder() && |
!download_item_->IsTemporary(); |
+ case OPEN_WHEN_COMPLETE: |
+ return download_item_->CanShowInFolder() && |
+ !download_item_->IsTemporary() && |
+ (!Extension::IsExtension(download_item_->GetTargetName()) || |
+ download_crx_util::ShouldOpenExtensionDownload(*download_item_)); |
case ALWAYS_OPEN_TYPE: |
// For temporary downloads, the target filename might be a temporary |
// filename. Don't base an "Always open" decision based on it. Also |