summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/crx_installer.cc
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-05 16:58:14 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-05 16:58:14 +0000
commita01e0063c4e06678007daf9a6fd8cc0bff23c560 (patch)
tree701dc9b6e95a6785cf0c3a249b6715e3815c4e5e /chrome/browser/extensions/crx_installer.cc
parenta8a1b285b33da9ef31bccf4713851a31ecfe0de8 (diff)
downloadchromium_src-a01e0063c4e06678007daf9a6fd8cc0bff23c560.zip
chromium_src-a01e0063c4e06678007daf9a6fd8cc0bff23c560.tar.gz
chromium_src-a01e0063c4e06678007daf9a6fd8cc0bff23c560.tar.bz2
Don't whitelist extensions with NPAPI from no-prompt install.
BUG=61634 TEST=Browse to chrome.google.com/extensions, find an extension id, then open js console and enter chrome.webstorePrivate.install(<id>). The install should not prompt for confirmation, unless the extension uses NPAPI. Review URL: http://codereview.chromium.org/4443001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65212 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/crx_installer.cc')
-rw-r--r--chrome/browser/extensions/crx_installer.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index 17276f7..b2c60e3 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/extensions/crx_installer.h"
+#include <list>
+
#include "app/l10n_util.h"
#include "app/resource_bundle.h"
#include "base/file_util.h"
@@ -46,7 +48,7 @@ struct WhitelistedInstallData {
std::list<std::string> ids;
};
-}
+} // namespace
// static
void CrxInstaller::SetWhitelistedInstallId(const std::string& id) {
@@ -56,6 +58,7 @@ void CrxInstaller::SetWhitelistedInstallId(const std::string& id) {
// static
bool CrxInstaller::ClearWhitelistedInstallId(const std::string& id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
std::list<std::string>& ids = Singleton<WhitelistedInstallData>::get()->ids;
std::list<std::string>::iterator iter = ids.begin();
for (; iter != ids.end(); ++iter) {
@@ -295,9 +298,11 @@ void CrxInstaller::ConfirmInstall() {
current_version_ =
frontend_->extension_prefs()->GetVersionString(extension_->id());
+ bool whitelisted = ClearWhitelistedInstallId(extension_->id()) &&
+ extension_->plugins().empty();
+
if (client_ &&
- (!allow_silent_install_ ||
- !ClearWhitelistedInstallId(extension_->id()))) {
+ (!allow_silent_install_ || !whitelisted)) {
AddRef(); // Balanced in Proceed() and Abort().
client_->ConfirmInstall(this, extension_.get());
} else {