| Index: chrome/browser/net/chrome_url_request_context.cc
|
| diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc
|
| index be1e63bf9d3dd021bf1f86e6a4cfd22272254e9b..101e0c24d5f6aa96099a2f9e689dc247617ec61d 100644
|
| --- a/chrome/browser/net/chrome_url_request_context.cc
|
| +++ b/chrome/browser/net/chrome_url_request_context.cc
|
| @@ -748,32 +748,28 @@ std::string ChromeURLRequestContext::GetDefaultLocaleForExtension(
|
|
|
| bool ChromeURLRequestContext::CheckURLAccessToExtensionPermission(
|
| const GURL& url,
|
| - const std::string& application_id,
|
| const char* permission_name) {
|
| - DCHECK(!application_id.empty());
|
| + ExtensionInfoMap::iterator info;
|
| + if (url.SchemeIs(chrome::kExtensionScheme)) {
|
| + // If the url is an extension scheme, we just look it up by extension id.
|
| + std::string id = url.host();
|
| + info = extension_info_.find(id);
|
| + } else {
|
| + // Otherwise, we scan for a matching extent. Overlapping extents are
|
| + // disallowed, so only one will match.
|
| + info = extension_info_.begin();
|
| + while (info != extension_info_.end() &&
|
| + !info->second->extent.ContainsURL(url))
|
| + ++info;
|
| + }
|
|
|
| - // Get the information about the specified extension. If the extension isn't
|
| - // installed, then permission is not granted.
|
| - ExtensionInfoMap::iterator info = extension_info_.find(application_id);
|
| if (info == extension_info_.end())
|
| return false;
|
|
|
| - // Check that the extension declares the required permission.
|
| - std::vector<std::string>& permissions = info->second->api_permissions;
|
| - if (permissions.end() == std::find(permissions.begin(), permissions.end(),
|
| - permission_name)) {
|
| - return false;
|
| - }
|
| -
|
| - // Check that the extension declares the source URL in its extent.
|
| - Extension::URLPatternList& extent = info->second->extent;
|
| - for (Extension::URLPatternList::iterator pattern = extent.begin();
|
| - pattern != extent.end(); ++pattern) {
|
| - if (pattern->MatchesUrl(url))
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| + std::vector<std::string>& api_permissions = info->second->api_permissions;
|
| + return std::find(api_permissions.begin(),
|
| + api_permissions.end(),
|
| + permission_name) != api_permissions.end();
|
| }
|
|
|
| const std::string& ChromeURLRequestContext::GetUserAgent(
|
| @@ -945,7 +941,7 @@ ChromeURLRequestContextFactory::ChromeURLRequestContextFactory(Profile* profile)
|
| new ChromeURLRequestContext::ExtensionInfo(
|
| (*iter)->path(),
|
| (*iter)->default_locale(),
|
| - std::vector<URLPattern>(),
|
| + (*iter)->web_extent(),
|
| (*iter)->api_permissions()));
|
| }
|
| }
|
|
|