| 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;
|
| }
|
|
|
|
|