summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions
diff options
context:
space:
mode:
authorrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-21 04:07:55 +0000
committerrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-21 04:07:55 +0000
commit26f16b508c8f1d44ca12a95dfcc25193c700f6c3 (patch)
tree0aec165200e0ed356ad5560fa64d8debc4a2edd4 /chrome/common/extensions
parentd78ef705947b6f3bb52aa10cdf3ed21b579bf507 (diff)
downloadchromium_src-26f16b508c8f1d44ca12a95dfcc25193c700f6c3.zip
chromium_src-26f16b508c8f1d44ca12a95dfcc25193c700f6c3.tar.gz
chromium_src-26f16b508c8f1d44ca12a95dfcc25193c700f6c3.tar.bz2
Only allow installation of extensions/apps with gallery update url via download from gallery
BUG=45542 TEST=NONE Review URL: http://codereview.chromium.org/2855009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50333 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions')
-rw-r--r--chrome/common/extensions/extension.cc14
-rw-r--r--chrome/common/extensions/extension.h4
-rw-r--r--chrome/common/extensions/extension_constants.cc2
-rw-r--r--chrome/common/extensions/extension_constants.h3
4 files changed, 20 insertions, 3 deletions
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
index d2b3d3b..7f7c1bb 100644
--- a/chrome/common/extensions/extension.cc
+++ b/chrome/common/extensions/extension.cc
@@ -1467,12 +1467,20 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key,
return true;
}
+// static
+std::string Extension::ChromeStoreURL() {
+ std::string gallery_prefix = extension_urls::kGalleryBrowsePrefix;
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAppsGalleryURL))
+ gallery_prefix = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kAppsGalleryURL);
+ return gallery_prefix;
+}
+
GURL Extension::GalleryUrl() const {
if (!update_url_.DomainIs("google.com"))
return GURL();
- GURL url(std::string(extension_urls::kGalleryBrowsePrefix) +
- std::string("/detail/") + id_);
+ GURL url(ChromeStoreURL() + std::string("/detail/") + id_);
return url;
}
@@ -1620,7 +1628,7 @@ bool Extension::CanExecuteScriptOnHost(const GURL& url,
std::string* error) const {
// No extensions are allowed to execute script on the gallery because that
// would allow extensions to manipulate their own install pages.
- if (url.host() == GURL(extension_urls::kGalleryBrowsePrefix).host()) {
+ if (url.host() == GURL(ChromeStoreURL()).host()) {
if (error)
*error = errors::kCannotScriptGallery;
return false;
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index 512c7c0..08654ef 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -213,6 +213,10 @@ class Extension {
// it was explictly turned on via a command line switch).
static bool AppsAreEnabled();
+ // Returns the url prefix for the extension/apps gallery. Can be set via the
+ // --apps-gallery-url switch.
+ static std::string ChromeStoreURL();
+
// Initialize the extension from a parsed manifest.
// Usually, the id of an extension is generated by the "key" property of
// its manifest, but if |require_key| is |false|, a temporary ID will be
diff --git a/chrome/common/extensions/extension_constants.cc b/chrome/common/extensions/extension_constants.cc
index be58611..f80c7e6 100644
--- a/chrome/common/extensions/extension_constants.cc
+++ b/chrome/common/extensions/extension_constants.cc
@@ -254,6 +254,8 @@ namespace extension_urls {
const char* kGalleryBrowsePrefix = "https://chrome.google.com/extensions";
const char* kGalleryDownloadPrefix =
"https://clients2.googleusercontent.com/crx/download";
+const char* kGalleryUpdateURL =
+ "http://clients2.google.com/service/update2/crx";
const char* kMiniGalleryBrowsePrefix = "https://tools.google.com/chrome/";
const char* kMiniGalleryDownloadPrefix = "https://dl-ssl.google.com/chrome/";
}
diff --git a/chrome/common/extensions/extension_constants.h b/chrome/common/extensions/extension_constants.h
index c515c72..46082c8 100644
--- a/chrome/common/extensions/extension_constants.h
+++ b/chrome/common/extensions/extension_constants.h
@@ -172,6 +172,9 @@ namespace extension_urls {
extern const char* kGalleryBrowsePrefix;
extern const char* kGalleryDownloadPrefix;
+ // The update url used by gallery/webstore extensions.
+ extern const char* kGalleryUpdateURL;
+
// Same thing for the "minigallery". The minigallery is the temporary static
// themes gallery that we put up when we launched themes.
extern const char* kMiniGalleryBrowsePrefix;