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.'); |
}); |
} |