| 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..6bf509123f3d7873e5832763522f48a322cb22d9 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,20 @@
|
| // 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 {
|
| + 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.');
|
| });
|
| }
|
|
|
| @@ -424,6 +427,7 @@
|
| apiFunctions.registerUnavailable(apiFunctionName);
|
| return;
|
| }
|
| +
|
| if (!isSchemaAccessAllowed(functionDef)) {
|
| apiFunctions.registerUnavailable(apiFunctionName);
|
| addUnprivilegedAccessGetter(mod, functionDef.name);
|
|
|