diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-05 16:58:14 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-05 16:58:14 +0000 |
commit | a01e0063c4e06678007daf9a6fd8cc0bff23c560 (patch) | |
tree | 701dc9b6e95a6785cf0c3a249b6715e3815c4e5e /chrome/browser/extensions/crx_installer.cc | |
parent | a8a1b285b33da9ef31bccf4713851a31ecfe0de8 (diff) | |
download | chromium_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.cc | 11 |
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 { |