Index: chrome/renderer/extensions/api_definitions_natives.cc |
diff --git a/chrome/renderer/extensions/api_definitions_natives.cc b/chrome/renderer/extensions/api_definitions_natives.cc |
index 37621acda6a25193cf5156c401d6af66e482c4f8..2e02d6fd71e689c8ee01146957921cf2892f1c2a 100644 |
--- a/chrome/renderer/extensions/api_definitions_natives.cc |
+++ b/chrome/renderer/extensions/api_definitions_natives.cc |
@@ -15,6 +15,9 @@ ApiDefinitionsNatives::ApiDefinitionsNatives( |
RouteFunction("GetExtensionAPIDefinition", |
base::Bind(&ApiDefinitionsNatives::GetExtensionAPIDefinition, |
base::Unretained(this))); |
+ RouteFunction("IsMemberAllowed", |
+ base::Bind(&ApiDefinitionsNatives::IsMemberAllowed, |
+ base::Unretained(this))); |
} |
v8::Handle<v8::Value> ApiDefinitionsNatives::GetExtensionAPIDefinition( |
@@ -46,4 +49,26 @@ v8::Handle<v8::Value> ApiDefinitionsNatives::GetExtensionAPIDefinition( |
return extension_dispatcher()->v8_schema_registry()->GetSchemas(*apis); |
} |
+v8::Handle<v8::Value> ApiDefinitionsNatives::IsMemberAllowed( |
+ const v8::Arguments& arguments) { |
+ if (arguments.Length() < 1 || !arguments[0]->IsString()) { |
+ LOG(ERROR) << "Invalid arguments"; |
+ return v8::Boolean::New(false); |
+ } |
+ |
+ ChromeV8Context* v8_context = |
+ extension_dispatcher()->v8_context_set().GetCurrent(); |
+ CHECK(v8_context); |
+ |
+ const Extension* extension = extension_dispatcher()->extensions()->GetByID( |
+ v8_context->extension_id()); |
+ |
+ return v8::Boolean::New( |
+ ExtensionAPI::GetSharedInstance()->IsAvailable( |
+ *v8::String::AsciiValue(arguments[0]->ToString()), |
+ extension, |
+ v8_context->context_type())); |
+ |
+} |
+ |
} // namespace extensions |