diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-21 04:07:55 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-21 04:07:55 +0000 |
commit | 26f16b508c8f1d44ca12a95dfcc25193c700f6c3 (patch) | |
tree | 0aec165200e0ed356ad5560fa64d8debc4a2edd4 /chrome/common/extensions | |
parent | d78ef705947b6f3bb52aa10cdf3ed21b579bf507 (diff) | |
download | chromium_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.cc | 14 | ||||
-rw-r--r-- | chrome/common/extensions/extension.h | 4 | ||||
-rw-r--r-- | chrome/common/extensions/extension_constants.cc | 2 | ||||
-rw-r--r-- | chrome/common/extensions/extension_constants.h | 3 |
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; |