| Index: extensions/common/extension_api.cc
|
| diff --git a/extensions/common/extension_api.cc b/extensions/common/extension_api.cc
|
| index 95fd3fb8822ab0f4e3cb991b778edb2e625e81c3..6f67887cde87993c6d7d351b9f4b49d25483dea0 100644
|
| --- a/extensions/common/extension_api.cc
|
| +++ b/extensions/common/extension_api.cc
|
| @@ -262,6 +262,7 @@ bool ExtensionAPI::IsAnyFeatureAvailableToContext(const Feature& api,
|
| const GURL& url) {
|
| FeatureProviderMap::iterator provider = dependency_providers_.find("api");
|
| CHECK(provider != dependency_providers_.end());
|
| +
|
| if (api.IsAvailableToContext(extension, context, url).is_available())
|
| return true;
|
|
|
| @@ -289,13 +290,17 @@ Feature::Availability ExtensionAPI::IsAvailable(const std::string& full_name,
|
| return feature->IsAvailableToContext(extension, context, url);
|
| }
|
|
|
| -bool ExtensionAPI::IsPrivileged(const std::string& full_name) {
|
| - Feature* feature = GetFeatureDependency(full_name);
|
| - CHECK(feature) << full_name;
|
| - DCHECK(!feature->GetContexts()->empty()) << full_name;
|
| - // An API is 'privileged' if it can only be run in a blessed context.
|
| - return feature->GetContexts()->size() ==
|
| - feature->GetContexts()->count(Feature::BLESSED_EXTENSION_CONTEXT);
|
| +bool ExtensionAPI::IsAvailableInUntrustedContext(const std::string& name,
|
| + const Extension* extension) {
|
| + return IsAvailable(name, extension, Feature::CONTENT_SCRIPT_CONTEXT, GURL())
|
| + .is_available() ||
|
| + IsAvailable(
|
| + name, extension, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL())
|
| + .is_available() ||
|
| + IsAvailable(name, extension, Feature::BLESSED_WEB_PAGE_CONTEXT, GURL())
|
| + .is_available() ||
|
| + IsAvailable(name, extension, Feature::WEB_PAGE_CONTEXT, GURL())
|
| + .is_available();
|
| }
|
|
|
| const base::DictionaryValue* ExtensionAPI::GetSchema(
|
|
|