| 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..744c0266f1e2c3cc5ed116c6a3fabbe110c729e4 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,21 @@
|
| // 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) {
|
| + return IsMemberAllowed(apiDef.namespace + "." + itemSchema.name);
|
| + } 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.');
|
| });
|
| }
|
|
|
|
|