Index: chrome/common/extensions/permission_feature.cc |
diff --git a/chrome/common/extensions/permission_feature.cc b/chrome/common/extensions/permission_feature.cc |
index f0931926c22b51b7cf20e3bd4de4a679feadddf0..92fb2d54e897856a1372f4161fb9b861436fba14 100644 |
--- a/chrome/common/extensions/permission_feature.cc |
+++ b/chrome/common/extensions/permission_feature.cc |
@@ -24,9 +24,22 @@ Feature::Availability PermissionFeature::IsAvailableToContext( |
if (availability != IS_AVAILABLE) |
return availability; |
- if (!extension->HasAPIPermission(name())) |
+ // TODO(aa): Lame to check optional permissions too (instead of just currently |
+ // active permissions), but schema_generated_bindings.js calls this at |
+ // bindings setup time, not call time. So it doesn't react properly to changes |
+ // after the bindings are setup. |
+ ExtensionAPIPermission* permission = |
+ ExtensionPermissionsInfo::GetInstance()->GetByName(name()); |
+ if (!permission) |
return NOT_PRESENT; |
+ if (!extension->required_permission_set()->HasAPIPermission( |
+ permission->id()) && |
+ !extension->optional_permission_set()->HasAPIPermission( |
+ permission->id())) { |
+ return NOT_PRESENT; |
+ } |
+ |
return IS_AVAILABLE; |
} |