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

Unified Diff: chrome/common/extensions/features/permission_feature.cc

Issue 12522004: Lazily load extension API schemas (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/features/permission_feature.cc
diff --git a/chrome/common/extensions/features/permission_feature.cc b/chrome/common/extensions/features/permission_feature.cc
index b6085d22b122464faea00e1cb1715286d29ee01e..1f5da626995751a25540285db3da55a47a772af0 100644
--- a/chrome/common/extensions/features/permission_feature.cc
+++ b/chrome/common/extensions/features/permission_feature.cc
@@ -4,6 +4,8 @@
#include "chrome/common/extensions/features/permission_feature.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
+
namespace extensions {
PermissionFeature::PermissionFeature() {
@@ -15,15 +17,21 @@ PermissionFeature::~PermissionFeature() {
Feature::Availability PermissionFeature::IsAvailableToContext(
const Extension* extension,
Feature::Context context,
+ const GURL& url,
Feature::Platform platform) const {
Availability availability = SimpleFeature::IsAvailableToContext(extension,
context,
+ url,
platform);
if (!availability.is_available())
return availability;
- if (!extension->HasAPIPermission(name()))
+ // Optional permissions need to be checked so an API will not be set to
+ // undefined forever, when it could just need optional permissions.
+ if (extension && !extension->HasAPIPermission(name()) &&
+ !extension->optional_permission_set()->HasAnyAccessToAPI(name())) {
return CreateAvailability(NOT_PRESENT, extension->GetType());
+ }
return CreateAvailability(IS_AVAILABLE);
}
« no previous file with comments | « chrome/common/extensions/features/permission_feature.h ('k') | chrome/common/extensions/features/simple_feature.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698