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

Unified Diff: chrome/browser/download/download_target_determiner.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
« no previous file with comments | « chrome/browser/download/download_target_determiner.h ('k') | chrome/browser/ui/pdf/adobe_reader_info_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/download/download_target_determiner.cc
===================================================================
--- chrome/browser/download/download_target_determiner.cc (revision 283043)
+++ chrome/browser/download/download_target_determiner.cc (working copy)
@@ -33,6 +33,10 @@
#include "content/public/common/webplugininfo.h"
#endif
+#if defined(OS_WIN)
+#include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
+#endif
+
using content::BrowserThread;
using content::DownloadItem;
@@ -56,8 +60,13 @@
(first_visit.LocalMidnight() < base::Time::Now().LocalMidnight()));
}
-} // namespace
+#if defined(OS_WIN)
+// Keeps track of whether Adobe Reader is up to date.
+bool g_is_adobe_reader_up_to_date_ = false;
+#endif
+} // namespace
+
DownloadTargetInfo::DownloadTargetInfo()
: is_filetype_handled_safely(false) {}
@@ -131,6 +140,9 @@
case STATE_DETERMINE_IF_HANDLED_SAFELY_BY_BROWSER:
result = DoDetermineIfHandledSafely();
break;
+ case STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE:
+ result = DoDetermineIfAdobeReaderUpToDate();
+ break;
case STATE_CHECK_DOWNLOAD_URL:
result = DoCheckDownloadUrl();
break;
@@ -447,8 +459,8 @@
BrowserThread::UI, FROM_HERE, base::Bind(callback, is_handled_safely));
}
-} // namespace
-#endif // ENABLE_PLUGINS
+} // namespace
+#endif // defined(ENABLE_PLUGINS)
DownloadTargetDeterminer::Result
DownloadTargetDeterminer::DoDetermineIfHandledSafely() {
@@ -457,7 +469,7 @@
DCHECK(!local_path_.empty());
DCHECK(!is_filetype_handled_safely_);
- next_state_ = STATE_CHECK_DOWNLOAD_URL;
+ next_state_ = STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE;
if (mime_type_.empty())
return CONTINUE;
@@ -485,16 +497,53 @@
#endif
}
+#if defined(ENABLE_PLUGINS)
void DownloadTargetDeterminer::DetermineIfHandledSafelyDone(
bool is_handled_safely) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DVLOG(20) << "Is file type handled safely: " << is_filetype_handled_safely_;
- DCHECK_EQ(STATE_CHECK_DOWNLOAD_URL, next_state_);
+ DCHECK_EQ(STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE, next_state_);
is_filetype_handled_safely_ = is_handled_safely;
DoLoop();
}
+#endif
DownloadTargetDeterminer::Result
+ DownloadTargetDeterminer::DoDetermineIfAdobeReaderUpToDate() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ next_state_ = STATE_CHECK_DOWNLOAD_URL;
+
+#if defined(OS_WIN)
+ if (!local_path_.MatchesExtension(FILE_PATH_LITERAL(".pdf")))
+ return CONTINUE;
+ if (!IsAdobeReaderDefaultPDFViewer())
+ return CONTINUE;
+
+ base::PostTaskAndReplyWithResult(
+ BrowserThread::GetBlockingPool(),
+ FROM_HERE,
+ base::Bind(&::IsAdobeReaderUpToDate),
+ base::Bind(&DownloadTargetDeterminer::DetermineIfAdobeReaderUpToDateDone,
+ weak_ptr_factory_.GetWeakPtr()));
+ return QUIT_DOLOOP;
+#else
+ return CONTINUE;
+#endif
+}
+
+#if defined(OS_WIN)
+void DownloadTargetDeterminer::DetermineIfAdobeReaderUpToDateDone(
+ bool adobe_reader_up_to_date) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DVLOG(20) << "Is Adobe Reader Up To Date: " << adobe_reader_up_to_date;
+ DCHECK_EQ(STATE_CHECK_DOWNLOAD_URL, next_state_);
+ g_is_adobe_reader_up_to_date_ = adobe_reader_up_to_date;
+ DoLoop();
+}
+#endif
+
+DownloadTargetDeterminer::Result
DownloadTargetDeterminer::DoCheckDownloadUrl() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!virtual_path_.empty());
@@ -821,3 +870,10 @@
const base::FilePath& suggested_path) {
return base::FilePath(suggested_path.value() + kCrdownloadSuffix);
}
+
+#if defined(OS_WIN)
+// static
+bool DownloadTargetDeterminer::IsAdobeReaderUpToDate() {
+ return g_is_adobe_reader_up_to_date_;
+}
+#endif
« no previous file with comments | « chrome/browser/download/download_target_determiner.h ('k') | chrome/browser/ui/pdf/adobe_reader_info_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698