| Index: chrome/renderer/resources/extensions/schema_generated_bindings.js | 
| diff --git a/chrome/renderer/resources/extensions/schema_generated_bindings.js b/chrome/renderer/resources/extensions/schema_generated_bindings.js | 
| index 4da0dba19c24aec85615f29436769a74c450117b..9ab9033271dc7b7b887775a3e27952f90ef03ce6 100644 | 
| --- a/chrome/renderer/resources/extensions/schema_generated_bindings.js | 
| +++ b/chrome/renderer/resources/extensions/schema_generated_bindings.js | 
| @@ -9,6 +9,7 @@ | 
| require('event_bindings'); | 
| var GetExtensionAPIDefinition = | 
| requireNative('apiDefinitions').GetExtensionAPIDefinition; | 
| +  var IsMemberAllowed = requireNative('apiDefinitions').IsMemberAllowed; | 
| var sendRequest = require('sendRequest').sendRequest; | 
|  | 
| var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 
| @@ -395,18 +396,22 @@ | 
| // based on the presence of "unprivileged" and whether this is an | 
| // extension process (versus e.g. a content script). | 
| function isSchemaAccessAllowed(itemSchema) { | 
| -        return isExtensionProcess || | 
| -               apiDef.unprivileged || | 
| -               itemSchema.unprivileged; | 
| +        if (apiDef.uses_feature_system) { | 
| +          var result = IsMemberAllowed(apiDef.namespace + "." + itemSchema.name); | 
| +          return result; | 
| +        } else { | 
| +          // TODO(aa): Remove this when all APIs are ported to feature system. | 
| +          return isExtensionProcess || | 
| +              apiDef.unprivileged || | 
| +              itemSchema.unprivileged; | 
| +        } | 
| } | 
|  | 
| // Adds a getter that throws an access denied error to object |mod| | 
| // for property |name|. | 
| function addUnprivilegedAccessGetter(mod, name) { | 
| mod.__defineGetter__(name, function() { | 
| -          throw new Error( | 
| -              '"' + name + '" can only be used in extension processes. See ' + | 
| -              'the content scripts documentation for more details.'); | 
| +          throw new Error('"' + name + '" cannot be used in this context.'); | 
| }); | 
| } | 
|  | 
|  |