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