Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1488)

Side by Side Diff: chrome/common/extensions/extension.cc

Issue 7743004: Move extension/webstore-related URL getters to the extension_urls namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review feedback. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/extensions/extension.h ('k') | chrome/common/extensions/extension_constants.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/extension.h" 5 #include "chrome/common/extensions/extension.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 int flags, 246 int flags,
247 const std::string& explicit_id, 247 const std::string& explicit_id,
248 std::string* error) { 248 std::string* error) {
249 scoped_refptr<Extension> extension = Create( 249 scoped_refptr<Extension> extension = Create(
250 path, location, value, flags, error); 250 path, location, value, flags, error);
251 if (extension.get()) 251 if (extension.get())
252 extension->id_ = explicit_id; 252 extension->id_ = explicit_id;
253 return extension; 253 return extension;
254 } 254 }
255 255
256 namespace {
257 const char* kGalleryUpdateHttpUrl =
258 "http://clients2.google.com/service/update2/crx";
259 const char* kGalleryUpdateHttpsUrl =
260 "https://clients2.google.com/service/update2/crx";
261 } // namespace
262
263 // static
264 GURL Extension::GalleryUpdateUrl(bool secure) {
265 CommandLine* cmdline = CommandLine::ForCurrentProcess();
266 if (cmdline->HasSwitch(switches::kAppsGalleryUpdateURL))
267 return GURL(cmdline->GetSwitchValueASCII(switches::kAppsGalleryUpdateURL));
268 else
269 return GURL(secure ? kGalleryUpdateHttpsUrl : kGalleryUpdateHttpUrl);
270 }
271
272 // static 256 // static
273 Extension::Location Extension::GetHigherPriorityLocation( 257 Extension::Location Extension::GetHigherPriorityLocation(
274 Extension::Location loc1, Extension::Location loc2) { 258 Extension::Location loc1, Extension::Location loc2) {
275 if (loc1 == loc2) 259 if (loc1 == loc2)
276 return loc1; 260 return loc1;
277 261
278 int loc1_rank = GetLocationRank(loc1); 262 int loc1_rank = GetLocationRank(loc1);
279 int loc2_rank = GetLocationRank(loc2); 263 int loc2_rank = GetLocationRank(loc2);
280 264
281 // If two different locations have the same rank, then we can not 265 // If two different locations have the same rank, then we can not
(...skipping 2055 matching lines...) Expand 10 before | Expand all | Expand 10 after
2337 return true; 2321 return true;
2338 } 2322 }
2339 2323
2340 GURL Extension::GetHomepageURL() const { 2324 GURL Extension::GetHomepageURL() const {
2341 if (homepage_url_.is_valid()) 2325 if (homepage_url_.is_valid())
2342 return homepage_url_; 2326 return homepage_url_;
2343 2327
2344 if (!UpdatesFromGallery()) 2328 if (!UpdatesFromGallery())
2345 return GURL(); 2329 return GURL();
2346 2330
2347 GURL url(extension_misc::GetWebstoreItemDetailURLPrefix() + id()); 2331 GURL url(extension_urls::GetWebstoreItemDetailURLPrefix() + id());
2348 return url; 2332 return url;
2349 } 2333 }
2350 2334
2351 std::set<FilePath> Extension::GetBrowserImages() const { 2335 std::set<FilePath> Extension::GetBrowserImages() const {
2352 std::set<FilePath> image_paths; 2336 std::set<FilePath> image_paths;
2353 // TODO(viettrungluu): These |FilePath::FromWStringHack(UTF8ToWide())| 2337 // TODO(viettrungluu): These |FilePath::FromWStringHack(UTF8ToWide())|
2354 // indicate that we're doing something wrong. 2338 // indicate that we're doing something wrong.
2355 2339
2356 // Extension icons. 2340 // Extension icons.
2357 for (ExtensionIconSet::IconMap::const_iterator iter = icons().map().begin(); 2341 for (ExtensionIconSet::IconMap::const_iterator iter = icons().map().begin();
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
2708 2692
2709 bool Extension::CanExecuteScriptOnPage(const GURL& page_url, 2693 bool Extension::CanExecuteScriptOnPage(const GURL& page_url,
2710 const UserScript* script, 2694 const UserScript* script,
2711 std::string* error) const { 2695 std::string* error) const {
2712 base::AutoLock auto_lock(runtime_data_lock_); 2696 base::AutoLock auto_lock(runtime_data_lock_);
2713 // The gallery is special-cased as a restricted URL for scripting to prevent 2697 // The gallery is special-cased as a restricted URL for scripting to prevent
2714 // access to special JS bindings we expose to the gallery (and avoid things 2698 // access to special JS bindings we expose to the gallery (and avoid things
2715 // like extensions removing the "report abuse" link). 2699 // like extensions removing the "report abuse" link).
2716 // TODO(erikkay): This seems like the wrong test. Shouldn't we we testing 2700 // TODO(erikkay): This seems like the wrong test. Shouldn't we we testing
2717 // against the store app extent? 2701 // against the store app extent?
2718 GURL store_url(extension_misc::GetWebstoreLaunchURL()); 2702 GURL store_url(extension_urls::GetWebstoreLaunchURL());
2719 if ((page_url.host() == store_url.host()) && 2703 if ((page_url.host() == store_url.host()) &&
2720 !CanExecuteScriptEverywhere() && 2704 !CanExecuteScriptEverywhere() &&
2721 !CommandLine::ForCurrentProcess()->HasSwitch( 2705 !CommandLine::ForCurrentProcess()->HasSwitch(
2722 switches::kAllowScriptingGallery)) { 2706 switches::kAllowScriptingGallery)) {
2723 if (error) 2707 if (error)
2724 *error = errors::kCannotScriptGallery; 2708 *error = errors::kCannotScriptGallery;
2725 return false; 2709 return false;
2726 } 2710 }
2727 2711
2728 if (page_url.SchemeIs(chrome::kChromeUIScheme) && 2712 if (page_url.SchemeIs(chrome::kChromeUIScheme) &&
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2790 return true; 2774 return true;
2791 2775
2792 if (error) { 2776 if (error) {
2793 *error = ExtensionErrorUtils::FormatErrorMessage(errors::kCannotAccessPage, 2777 *error = ExtensionErrorUtils::FormatErrorMessage(errors::kCannotAccessPage,
2794 page_url.spec()); 2778 page_url.spec());
2795 } 2779 }
2796 return false; 2780 return false;
2797 } 2781 }
2798 2782
2799 bool Extension::UpdatesFromGallery() const { 2783 bool Extension::UpdatesFromGallery() const {
2800 return update_url() == GalleryUpdateUrl(false) || 2784 return update_url() == extension_urls::GetWebstoreUpdateUrl(false) ||
2801 update_url() == GalleryUpdateUrl(true); 2785 update_url() == extension_urls::GetWebstoreUpdateUrl(true);
2802 } 2786 }
2803 2787
2804 bool Extension::OverlapsWithOrigin(const GURL& origin) const { 2788 bool Extension::OverlapsWithOrigin(const GURL& origin) const {
2805 if (url() == origin) 2789 if (url() == origin)
2806 return true; 2790 return true;
2807 2791
2808 if (web_extent().is_empty()) 2792 if (web_extent().is_empty())
2809 return false; 2793 return false;
2810 2794
2811 // Note: patterns and extents ignore port numbers. 2795 // Note: patterns and extents ignore port numbers.
(...skipping 14 matching lines...) Expand all
2826 if (location() != Extension::INTERNAL) { 2810 if (location() != Extension::INTERNAL) {
2827 // We have a non-standard location. 2811 // We have a non-standard location.
2828 return SYNC_TYPE_NONE; 2812 return SYNC_TYPE_NONE;
2829 } 2813 }
2830 2814
2831 // Disallow extensions with non-gallery auto-update URLs for now. 2815 // Disallow extensions with non-gallery auto-update URLs for now.
2832 // 2816 //
2833 // TODO(akalin): Relax this restriction once we've put in UI to 2817 // TODO(akalin): Relax this restriction once we've put in UI to
2834 // approve synced extensions. 2818 // approve synced extensions.
2835 if (!update_url().is_empty() && 2819 if (!update_url().is_empty() &&
2836 (update_url() != GalleryUpdateUrl(false)) && 2820 (update_url() != extension_urls::GetWebstoreUpdateUrl(false)) &&
2837 (update_url() != GalleryUpdateUrl(true))) { 2821 (update_url() != extension_urls::GetWebstoreUpdateUrl(true))) {
2838 return SYNC_TYPE_NONE; 2822 return SYNC_TYPE_NONE;
2839 } 2823 }
2840 2824
2841 // Disallow extensions with native code plugins. 2825 // Disallow extensions with native code plugins.
2842 // 2826 //
2843 // TODO(akalin): Relax this restriction once we've put in UI to 2827 // TODO(akalin): Relax this restriction once we've put in UI to
2844 // approve synced extensions. 2828 // approve synced extensions.
2845 if (!plugins().empty()) { 2829 if (!plugins().empty()) {
2846 return SYNC_TYPE_NONE; 2830 return SYNC_TYPE_NONE;
2847 } 2831 }
2848 2832
2849 switch (GetType()) { 2833 switch (GetType()) {
2850 case Extension::TYPE_EXTENSION: 2834 case Extension::TYPE_EXTENSION:
2851 return SYNC_TYPE_EXTENSION; 2835 return SYNC_TYPE_EXTENSION;
2852 2836
2853 case Extension::TYPE_USER_SCRIPT: 2837 case Extension::TYPE_USER_SCRIPT:
2854 // We only want to sync user scripts with gallery update URLs. 2838 // We only want to sync user scripts with gallery update URLs.
2855 if (update_url() == GalleryUpdateUrl(true) || 2839 if (update_url() == extension_urls::GetWebstoreUpdateUrl(true) ||
2856 update_url() == GalleryUpdateUrl(false)) 2840 update_url() == extension_urls::GetWebstoreUpdateUrl(false))
2857 return SYNC_TYPE_EXTENSION; 2841 return SYNC_TYPE_EXTENSION;
2858 else 2842 else
2859 return SYNC_TYPE_NONE; 2843 return SYNC_TYPE_NONE;
2860 2844
2861 case Extension::TYPE_HOSTED_APP: 2845 case Extension::TYPE_HOSTED_APP:
2862 case Extension::TYPE_PACKAGED_APP: 2846 case Extension::TYPE_PACKAGED_APP:
2863 return SYNC_TYPE_APP; 2847 return SYNC_TYPE_APP;
2864 2848
2865 default: 2849 default:
2866 return SYNC_TYPE_NONE; 2850 return SYNC_TYPE_NONE;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2913 already_disabled(false), 2897 already_disabled(false),
2914 extension(extension) {} 2898 extension(extension) {}
2915 2899
2916 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( 2900 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo(
2917 const Extension* extension, 2901 const Extension* extension,
2918 const ExtensionPermissionSet* permissions, 2902 const ExtensionPermissionSet* permissions,
2919 Reason reason) 2903 Reason reason)
2920 : reason(reason), 2904 : reason(reason),
2921 extension(extension), 2905 extension(extension),
2922 permissions(permissions) {} 2906 permissions(permissions) {}
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension.h ('k') | chrome/common/extensions/extension_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698