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