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

Side by Side Diff: chrome/browser/download/chrome_download_manager_delegate.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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/download/chrome_download_manager_delegate.h" 5 #include "chrome/browser/download/chrome_download_manager_delegate.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 177
178 #endif // FULL_SAFE_BROWSING 178 #endif // FULL_SAFE_BROWSING
179 179
180 // Called on the blocking pool to determine the MIME type for |path|. 180 // Called on the blocking pool to determine the MIME type for |path|.
181 std::string GetMimeType(const base::FilePath& path) { 181 std::string GetMimeType(const base::FilePath& path) {
182 std::string mime_type; 182 std::string mime_type;
183 net::GetMimeTypeFromFile(path, &mime_type); 183 net::GetMimeTypeFromFile(path, &mime_type);
184 return mime_type; 184 return mime_type;
185 } 185 }
186 186
187 bool IsOpenInBrowserPreferreredForFile(const base::FilePath& path) {
188 // On Android, always prefer opening with an external app. On ChromeOS, there
189 // are no external apps so just allow all opens to be handled by the "System."
190 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) && defined(ENABLE_PLUGINS)
191 // TODO(asanka): Consider other file types and MIME types.
192 // http://crbug.com/323561
193 if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf")) ||
194 path.MatchesExtension(FILE_PATH_LITERAL(".htm")) ||
195 path.MatchesExtension(FILE_PATH_LITERAL(".html")) ||
196 path.MatchesExtension(FILE_PATH_LITERAL(".shtm")) ||
197 path.MatchesExtension(FILE_PATH_LITERAL(".shtml")) ||
198 path.MatchesExtension(FILE_PATH_LITERAL(".svg")) ||
199 path.MatchesExtension(FILE_PATH_LITERAL(".xht")) ||
200 path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) ||
201 path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) ||
202 path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) ||
203 path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) {
204 return true;
205 }
206 #endif
207 return false;
208 }
209
210 } // namespace 187 } // namespace
211 188
212 ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile) 189 ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile)
213 : profile_(profile), 190 : profile_(profile),
214 next_download_id_(content::DownloadItem::kInvalidId), 191 next_download_id_(content::DownloadItem::kInvalidId),
215 download_prefs_(new DownloadPrefs(profile)), 192 download_prefs_(new DownloadPrefs(profile)),
216 weak_ptr_factory_(this) { 193 weak_ptr_factory_(this) {
217 } 194 }
218 195
219 ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() { 196 ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() {
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 DownloadItem* item = download_manager_->GetDownload(download_id); 692 DownloadItem* item = download_manager_->GetDownload(download_id);
716 if (!target_info->target_path.empty() && item && 693 if (!target_info->target_path.empty() && item &&
717 IsOpenInBrowserPreferreredForFile(target_info->target_path) && 694 IsOpenInBrowserPreferreredForFile(target_info->target_path) &&
718 target_info->is_filetype_handled_safely) 695 target_info->is_filetype_handled_safely)
719 DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true); 696 DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
720 callback.Run(target_info->target_path, 697 callback.Run(target_info->target_path,
721 target_info->target_disposition, 698 target_info->target_disposition,
722 target_info->danger_type, 699 target_info->danger_type,
723 target_info->intermediate_path); 700 target_info->intermediate_path);
724 } 701 }
702
703 bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
704 const base::FilePath& path) {
705 // On Windows, PDFs should open in Acrobat Reader if the user chooses.
706 #if defined(OS_WIN)
707 if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf")) &&
708 DownloadTargetDeterminer::IsAdobeReaderUpToDate()) {
709 return !download_prefs_->ShouldOpenPdfInAdobeReader();
710 }
711 #endif
712
713 // On Android, always prefer opening with an external app. On ChromeOS, there
714 // are no external apps so just allow all opens to be handled by the "System."
715 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) && defined(ENABLE_PLUGINS)
716 // TODO(asanka): Consider other file types and MIME types.
717 // http://crbug.com/323561
718 if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf")) ||
719 path.MatchesExtension(FILE_PATH_LITERAL(".htm")) ||
720 path.MatchesExtension(FILE_PATH_LITERAL(".html")) ||
721 path.MatchesExtension(FILE_PATH_LITERAL(".shtm")) ||
722 path.MatchesExtension(FILE_PATH_LITERAL(".shtml")) ||
723 path.MatchesExtension(FILE_PATH_LITERAL(".svg")) ||
724 path.MatchesExtension(FILE_PATH_LITERAL(".xht")) ||
725 path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) ||
726 path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) ||
727 path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) ||
728 path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) {
729 return true;
730 }
731 #endif
732 return false;
733 }
OLDNEW
« no previous file with comments | « chrome/browser/download/chrome_download_manager_delegate.h ('k') | chrome/browser/download/download_prefs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698