Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6338)

Unified Diff: chrome/browser/download/download_shelf_context_menu.cc

Issue 390983004: Merge 281172 "Windows: Add an "Open in Adobe Reader" menu item f..." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/2062/src/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/download/download_shelf_context_menu.cc
===================================================================
--- chrome/browser/download/download_shelf_context_menu.cc (revision 283043)
+++ chrome/browser/download/download_shelf_context_menu.cc (working copy)
@@ -9,6 +9,7 @@
#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/download/download_target_determiner.h"
#include "chrome/browser/safe_browsing/download_protection_service.h"
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
#include "chrome/common/url_constants.h"
@@ -20,15 +21,18 @@
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
+#if defined(OS_WIN)
+#include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
+#endif
+
using content::DownloadItem;
-using extensions::Extension;
namespace {
// Returns true if downloads resumption is enabled.
bool IsDownloadResumptionEnabled() {
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
- return command_line.HasSwitch(switches::kEnableDownloadResumption);
+ return base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableDownloadResumption);
}
} // namespace
@@ -44,6 +48,14 @@
navigator_(navigator) {
DCHECK(download_item_);
download_item_->AddObserver(this);
+
+#if defined(OS_WIN)
+ is_pdf_reader_up_to_date_ = false;
+ if (IsDownloadPdf() && IsAdobeReaderDefaultPDFViewer()) {
+ is_pdf_reader_up_to_date_ =
+ DownloadTargetDeterminer::IsAdobeReaderUpToDate();
+ }
+#endif // defined(OS_WIN)
}
ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() {
@@ -97,6 +109,7 @@
case LEARN_MORE_INTERRUPTED:
return true;
}
+ NOTREACHED();
return false;
}
@@ -109,6 +122,13 @@
return download_item_->GetOpenWhenComplete() ||
download_crx_util::IsExtensionDownload(*download_item_);
case ALWAYS_OPEN_TYPE:
+#if defined(OS_WIN)
+ if (CanOpenPdfInReader()) {
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(
+ download_item_->GetBrowserContext());
+ return prefs->ShouldOpenPdfInAdobeReader();
+ }
+#endif
return download_item_->ShouldOpenFileBasedOnExtension();
case TOGGLE_PAUSE:
return download_item_->IsPaused();
@@ -116,6 +136,16 @@
return false;
}
+bool DownloadShelfContextMenu::IsCommandIdVisible(int command_id) const {
+ if (!download_item_)
+ return false;
+
+ if (command_id == PLATFORM_OPEN)
+ return (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser());
+
+ return true;
+}
+
void DownloadShelfContextMenu::ExecuteCommand(int command_id, int event_flags) {
if (!download_item_)
return;
@@ -128,13 +158,22 @@
download_item_->OpenDownload();
break;
case ALWAYS_OPEN_TYPE: {
+ bool is_checked = IsCommandIdChecked(ALWAYS_OPEN_TYPE);
DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(
download_item_->GetBrowserContext());
+#if defined(OS_WIN)
+ if (CanOpenPdfInReader()) {
+ prefs->SetShouldOpenPdfInAdobeReader(!is_checked);
+ DownloadItemModel(download_item_).SetShouldPreferOpeningInBrowser(
+ is_checked);
+ break;
+ }
+#endif
base::FilePath path = download_item_->GetTargetFilePath();
- if (!IsCommandIdChecked(ALWAYS_OPEN_TYPE))
+ if (is_checked)
+ prefs->DisableAutoOpenBasedOnExtension(path);
+ else
prefs->EnableAutoOpenBasedOnExtension(path);
- else
- prefs->DisableAutoOpenBasedOnExtension(path);
break;
}
case PLATFORM_OPEN:
@@ -203,7 +242,7 @@
return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE);
return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN);
case ALWAYS_OPEN_TYPE:
- return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
+ return l10n_util::GetStringUTF16(GetAlwaysOpenStringId());
case PLATFORM_OPEN:
return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PLATFORM_OPEN);
case CANCEL:
@@ -250,7 +289,7 @@
in_progress_download_menu_model_->AddCheckItemWithStringId(
OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE);
in_progress_download_menu_model_->AddCheckItemWithStringId(
- ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
+ ALWAYS_OPEN_TYPE, GetAlwaysOpenStringId());
in_progress_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
in_progress_download_menu_model_->AddItemWithStringId(
TOGGLE_PAUSE, IDS_DOWNLOAD_MENU_PAUSE_ITEM);
@@ -272,10 +311,9 @@
finished_download_menu_model_->AddItemWithStringId(
OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN);
finished_download_menu_model_->AddCheckItemWithStringId(
- ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
- if (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser())
- finished_download_menu_model_->AddItemWithStringId(
- PLATFORM_OPEN, IDS_DOWNLOAD_MENU_PLATFORM_OPEN);
+ ALWAYS_OPEN_TYPE, GetAlwaysOpenStringId());
+ finished_download_menu_model_->AddItemWithStringId(
+ PLATFORM_OPEN, IDS_DOWNLOAD_MENU_PLATFORM_OPEN);
finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
finished_download_menu_model_->AddItemWithStringId(
SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW);
@@ -333,8 +371,7 @@
return maybe_malicious_download_menu_model_.get();
}
-ui::SimpleMenuModel*
-DownloadShelfContextMenu::GetMaliciousMenuModel() {
+ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaliciousMenuModel() {
if (malicious_download_menu_model_)
return malicious_download_menu_model_.get();
@@ -346,3 +383,22 @@
return malicious_download_menu_model_.get();
}
+
+int DownloadShelfContextMenu::GetAlwaysOpenStringId() const {
+#if defined(OS_WIN)
+ if (CanOpenPdfInReader())
+ return IDS_DOWNLOAD_MENU_ALWAYS_OPEN_PDF_IN_READER;
+#endif
+ return IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE;
+}
+
+#if defined(OS_WIN)
+bool DownloadShelfContextMenu::IsDownloadPdf() const {
+ base::FilePath path = download_item_->GetTargetFilePath();
+ return path.MatchesExtension(FILE_PATH_LITERAL(".pdf"));
+}
+
+bool DownloadShelfContextMenu::CanOpenPdfInReader() const {
+ return (is_pdf_reader_up_to_date_ && IsDownloadPdf());
+}
+#endif
« no previous file with comments | « chrome/browser/download/download_shelf_context_menu.h ('k') | chrome/browser/download/download_target_determiner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698