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-10 22:59:30 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-10 22:59:30 +0000
commitb1f04cca79abf21ec97b227caf95eff9871a044a (patch)
treee591cb932baa005e04a1ce31a72efe9a9350be03 /chrome/browser/extensions/crx_installer.cc
parent9246de382277a2700c0d1e9f1305591c31a316d0 (diff)
downloadchromium_src-b1f04cca79abf21ec97b227caf95eff9871a044a.zip
chromium_src-b1f04cca79abf21ec97b227caf95eff9871a044a.tar.gz
chromium_src-b1f04cca79abf21ec97b227caf95eff9871a044a.tar.bz2
Split the private webstore install API into two parts.
The first part, beginInstall, must be called during a user gesture. The second part should supply a matching id and actually starts the download and install process. BUG=61954 TEST=Requires webstore server side changes before it can be fully tested. For now, you can test that visiting the webstore and running something like the following command in the javascript console generates an error: chrome.webstorePrivate.beginInstall("mihcahmgecmbnbcchbopgniflfhgnkff") Review URL: http://codereview.chromium.org/4727001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65722 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/crx_installer.cc')
-rw-r--r--chrome/browser/extensions/crx_installer.cc30
1 files changed, 15 insertions, 15 deletions
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index b2c60e3..a0dd960 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -4,7 +4,7 @@
#include "chrome/browser/extensions/crx_installer.h"
-#include <list>
+#include <set>
#include "app/l10n_util.h"
#include "app/resource_bundle.h"
@@ -12,6 +12,7 @@
#include "base/path_service.h"
#include "base/scoped_temp_dir.h"
#include "base/singleton.h"
+#include "base/stl_util-inl.h"
#include "base/stringprintf.h"
#include "base/task.h"
#include "base/thread_restrictions.h"
@@ -45,7 +46,7 @@ static void DeleteFileHelper(const FilePath& path, bool recursive) {
struct WhitelistedInstallData {
WhitelistedInstallData() {}
- std::list<std::string> ids;
+ std::set<std::string> ids;
};
} // namespace
@@ -53,25 +54,24 @@ struct WhitelistedInstallData {
// static
void CrxInstaller::SetWhitelistedInstallId(const std::string& id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- Singleton<WhitelistedInstallData>::get()->ids.push_back(id);
+ Singleton<WhitelistedInstallData>::get()->ids.insert(id);
}
// static
-bool CrxInstaller::ClearWhitelistedInstallId(const std::string& id) {
+bool CrxInstaller::IsIdWhitelisted(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) {
- if (*iter == id) {
- break;
- }
- }
+ std::set<std::string>& ids = Singleton<WhitelistedInstallData>::get()->ids;
+ return ContainsKey(ids, id);
+}
- if (iter != ids.end()) {
- ids.erase(iter);
+// static
+bool CrxInstaller::ClearWhitelistedInstallId(const std::string& id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ std::set<std::string>& ids = Singleton<WhitelistedInstallData>::get()->ids;
+ if (ContainsKey(ids, id)) {
+ ids.erase(id);
return true;
}
-
return false;
}
@@ -299,7 +299,7 @@ void CrxInstaller::ConfirmInstall() {
frontend_->extension_prefs()->GetVersionString(extension_->id());
bool whitelisted = ClearWhitelistedInstallId(extension_->id()) &&
- extension_->plugins().empty();
+ extension_->plugins().empty() && is_gallery_install_;
if (client_ &&
(!allow_silent_install_ || !whitelisted)) {