summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrolandsteiner@chromium.org <rolandsteiner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-13 06:39:56 +0000
committerrolandsteiner@chromium.org <rolandsteiner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-13 06:39:56 +0000
commit92e11c872d8f8e0fc33b1d385cc74b9081445091 (patch)
treea2868288ec13c967cff87bf5328cc6e8bf935dc5
parent1a8a3929dfd29e4b697b0ea844cb3d6cabf65bc1 (diff)
downloadchromium_src-92e11c872d8f8e0fc33b1d385cc74b9081445091.zip
chromium_src-92e11c872d8f8e0fc33b1d385cc74b9081445091.tar.gz
chromium_src-92e11c872d8f8e0fc33b1d385cc74b9081445091.tar.bz2
Fix by gdk (Garret Kelly)
Resolve issue 30641 Extension files were being selected for auto-open even though an install of the extension was not requested. This patch changes this behaviour so that download an extension (that's not explicitly requested as an extension install) does not force an attempt to install it. BUG=30641 TEST=Right-click an extension link and "Save Link As...". Download appears in shelf. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36106 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/download/download_manager.cc6
-rw-r--r--chrome/browser/download/download_util.cc4
2 files changed, 6 insertions, 4 deletions
diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc
index ed0149b..04c3b8a 100644
--- a/chrome/browser/download/download_manager.cc
+++ b/chrome/browser/download/download_manager.cc
@@ -1312,16 +1312,16 @@ void DownloadManager::OpenFilesBasedOnExtension(
bool DownloadManager::ShouldOpenFileBasedOnExtension(
const FilePath& path) const {
- // Special-case Chrome extensions as always-open.
FilePath::StringType extension = path.Extension();
if (extension.empty())
return false;
if (IsExecutableExtension(extension))
return false;
+ if (Extension::IsExtension(path))
+ return false;
DCHECK(extension[0] == FilePath::kExtensionSeparator);
extension.erase(0, 1);
- if (auto_open_.find(extension) != auto_open_.end() ||
- Extension::IsExtension(path))
+ if (auto_open_.find(extension) != auto_open_.end())
return true;
return false;
}
diff --git a/chrome/browser/download/download_util.cc b/chrome/browser/download/download_util.cc
index 786271d..7662bc7 100644
--- a/chrome/browser/download/download_util.cc
+++ b/chrome/browser/download/download_util.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/download/download_item_model.h"
#include "chrome/browser/download/download_manager.h"
+#include "chrome/common/extensions/extension.h"
#include "grit/generated_resources.h"
#include "grit/locale_settings.h"
#include "grit/theme_resources.h"
@@ -53,7 +54,8 @@ bool CanOpenDownload(DownloadItem* download) {
if (!download->original_name().value().empty())
file_to_use = download->original_name();
- return !download->manager()->IsExecutableFile(file_to_use);
+ return !Extension::IsExtension(file_to_use) &&
+ !download->manager()->IsExecutableFile(file_to_use);
}
void OpenDownload(DownloadItem* download) {