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

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

Issue 6966015: Merge 86164 (Closed) Base URL: svn://svn.chromium.org/chrome/branches/742/src/
Patch Set: Created 9 years, 7 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 | « no previous file | chrome/common/extensions/extension_unittest.cc » ('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 2691 matching lines...) Expand 10 before | Expand all | Expand 10 after
2702 return true; 2702 return true;
2703 } 2703 }
2704 } 2704 }
2705 2705
2706 return false; 2706 return false;
2707 } 2707 }
2708 2708
2709 bool Extension::HasHostPermission(const GURL& url) const { 2709 bool Extension::HasHostPermission(const GURL& url) const {
2710 for (URLPatternList::const_iterator host = host_permissions().begin(); 2710 for (URLPatternList::const_iterator host = host_permissions().begin();
2711 host != host_permissions().end(); ++host) { 2711 host != host_permissions().end(); ++host) {
2712 // Non-component extensions can only access chrome://favicon and no other
2713 // chrome:// scheme urls.
2714 if (url.SchemeIs(chrome::kChromeUIScheme) &&
2715 url.host() != chrome::kChromeUIFaviconHost &&
2716 location() != Extension::COMPONENT)
2717 return false;
2718
2712 if (host->MatchesUrl(url)) 2719 if (host->MatchesUrl(url))
2713 return true; 2720 return true;
2714 } 2721 }
2715 return false; 2722 return false;
2716 } 2723 }
2717 2724
2718 void Extension::InitEffectiveHostPermissions() { 2725 void Extension::InitEffectiveHostPermissions() {
2719 // Some APIs effectively grant access to every site. New ones should be 2726 // Some APIs effectively grant access to every site. New ones should be
2720 // added here. (I'm looking at you, network API) 2727 // added here. (I'm looking at you, network API)
2721 if (HasApiPermission(api_permissions_, kProxyPermission) || 2728 if (HasApiPermission(api_permissions_, kProxyPermission) ||
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2778 // against the store app extent? 2785 // against the store app extent?
2779 if ((page_url.host() == GURL(Extension::ChromeStoreLaunchURL()).host()) && 2786 if ((page_url.host() == GURL(Extension::ChromeStoreLaunchURL()).host()) &&
2780 !CanExecuteScriptEverywhere() && 2787 !CanExecuteScriptEverywhere() &&
2781 !CommandLine::ForCurrentProcess()->HasSwitch( 2788 !CommandLine::ForCurrentProcess()->HasSwitch(
2782 switches::kAllowScriptingGallery)) { 2789 switches::kAllowScriptingGallery)) {
2783 if (error) 2790 if (error)
2784 *error = errors::kCannotScriptGallery; 2791 *error = errors::kCannotScriptGallery;
2785 return false; 2792 return false;
2786 } 2793 }
2787 2794
2795 if (page_url.SchemeIs(chrome::kChromeUIScheme) &&
2796 !CanExecuteScriptEverywhere())
2797 return false;
2798
2788 // If a script is specified, use its matches. 2799 // If a script is specified, use its matches.
2789 if (script) 2800 if (script)
2790 return script->MatchesUrl(page_url); 2801 return script->MatchesUrl(page_url);
2791 2802
2792 // Otherwise, see if this extension has permission to execute script 2803 // Otherwise, see if this extension has permission to execute script
2793 // programmatically on pages. 2804 // programmatically on pages.
2794 for (size_t i = 0; i < host_permissions_.size(); ++i) { 2805 for (size_t i = 0; i < host_permissions_.size(); ++i) {
2795 if (host_permissions_[i].MatchesUrl(page_url)) 2806 if (host_permissions_[i].MatchesUrl(page_url))
2796 return true; 2807 return true;
2797 } 2808 }
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
2926 2937
2927 UninstalledExtensionInfo::~UninstalledExtensionInfo() {} 2938 UninstalledExtensionInfo::~UninstalledExtensionInfo() {}
2928 2939
2929 2940
2930 UnloadedExtensionInfo::UnloadedExtensionInfo( 2941 UnloadedExtensionInfo::UnloadedExtensionInfo(
2931 const Extension* extension, 2942 const Extension* extension,
2932 Reason reason) 2943 Reason reason)
2933 : reason(reason), 2944 : reason(reason),
2934 already_disabled(false), 2945 already_disabled(false),
2935 extension(extension) {} 2946 extension(extension) {}
OLDNEW
« no previous file with comments | « no previous file | chrome/common/extensions/extension_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698