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

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

Issue 2830017: Disallow apps with the wrong content type header. (Closed)
Patch Set: Rebase for checkin. Created 10 years, 6 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_manager.h ('k') | chrome/browser/download/save_package.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/download/download_manager.cc
diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc
index b795816a4437259ababf7d4a84fba66c39252261..db041354e62fd238ce82eb082b9fb9d5c1d73c95 100644
--- a/chrome/browser/download/download_manager.cc
+++ b/chrome/browser/download/download_manager.cc
@@ -95,6 +95,7 @@ DownloadItem::DownloadItem(const DownloadCreateInfo& info)
url_(info.url),
referrer_url_(info.referrer_url),
mime_type_(info.mime_type),
+ original_mime_type_(info.original_mime_type),
total_bytes_(info.total_bytes),
received_bytes_(info.received_bytes),
start_tick_(base::TimeTicks()),
@@ -126,6 +127,7 @@ DownloadItem::DownloadItem(int32 download_id,
const GURL& url,
const GURL& referrer_url,
const std::string& mime_type,
+ const std::string& original_mime_type,
const FilePath& original_name,
const base::Time start_time,
int64 download_size,
@@ -142,6 +144,7 @@ DownloadItem::DownloadItem(int32 download_id,
url_(url),
referrer_url_(referrer_url),
mime_type_(mime_type),
+ original_mime_type_(original_mime_type),
total_bytes_(download_size),
received_bytes_(0),
start_tick_(base::TimeTicks::Now()),
@@ -796,6 +799,7 @@ void DownloadManager::ContinueStartDownload(DownloadCreateInfo* info,
info->url,
info->referrer_url,
info->mime_type,
+ info->original_mime_type,
info->original_name,
info->start_time,
info->total_bytes,
@@ -982,8 +986,10 @@ void DownloadManager::ContinueDownloadFinished(DownloadItem* download) {
// Handle chrome extensions explicitly and skip the shell execute.
if (download->is_extension_install()) {
- OpenChromeExtension(download->full_path(), download->url(),
- download->referrer_url());
+ OpenChromeExtension(download->full_path(),
+ download->url(),
+ download->referrer_url(),
+ download->original_mime_type());
download->set_auto_opened(true);
} else if (download->open_when_complete() ||
ShouldOpenFileBasedOnExtension(download->full_path()) ||
@@ -1439,16 +1445,20 @@ void DownloadManager::OpenDownload(const DownloadItem* download,
// Open Chrome extensions with ExtensionsService. For everything else do shell
// execute.
if (download->is_extension_install()) {
- OpenChromeExtension(download->full_path(), download->url(),
- download->referrer_url());
+ OpenChromeExtension(download->full_path(),
+ download->url(),
+ download->referrer_url(),
+ download->original_mime_type());
} else {
OpenDownloadInShell(download, parent_window);
}
}
-void DownloadManager::OpenChromeExtension(const FilePath& full_path,
- const GURL& download_url,
- const GURL& referrer_url) {
+void DownloadManager::OpenChromeExtension(
+ const FilePath& full_path,
+ const GURL& download_url,
+ const GURL& referrer_url,
+ const std::string& original_mime_type) {
// We don't support extensions in OTR mode.
ExtensionsService* service = profile_->GetExtensionsService();
if (service) {
@@ -1469,6 +1479,8 @@ void DownloadManager::OpenChromeExtension(const FilePath& full_path,
} else {
bool is_gallery_download =
ExtensionsService::IsDownloadFromGallery(download_url, referrer_url);
+ installer->set_original_mime_type(original_mime_type);
+ installer->set_apps_require_extension_mime_type(true);
installer->set_allow_privilege_increase(true);
installer->set_original_url(download_url);
installer->set_limit_web_extent_to_download_host(!is_gallery_download);
« no previous file with comments | « chrome/browser/download/download_manager.h ('k') | chrome/browser/download/save_package.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698