Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Unified Diff: chrome/renderer/extensions/schema_generated_bindings.cc

Issue 9460002: Convert app_bindings.js to the schema_generated_bindings.js infrastructure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: aa comments Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/extensions/schema_generated_bindings.cc
diff --git a/chrome/renderer/extensions/schema_generated_bindings.cc b/chrome/renderer/extensions/schema_generated_bindings.cc
index 462155a0a73fc46155a38809966226dfe9af5bd6..32e18cc8f1941f8c7fe4251036d2c25ce6a417a5 100644
--- a/chrome/renderer/extensions/schema_generated_bindings.cc
+++ b/chrome/renderer/extensions/schema_generated_bindings.cc
@@ -54,8 +54,6 @@ namespace {
const char* kExtensionDeps[] = {
"extensions/event.js",
"extensions/json_schema.js",
- "extensions/miscellaneous_bindings.js",
- "extensions/apitest.js"
};
// Contains info relevant to a pending API request.
@@ -142,20 +140,38 @@ class ExtensionImpl : public ChromeV8Extension {
ChromeV8Context* v8_context = dispatcher->v8_context_set().GetCurrent();
CHECK(v8_context);
- std::string extension_id = v8_context->extension_id();
ExtensionAPI::SchemaMap schemas;
- ExtensionAPI::GetSchemasFilter filter =
- dispatcher->is_extension_process() ?
- ExtensionAPI::ALL : ExtensionAPI::ONLY_UNPRIVILEGED;
+
+ std::string extension_id = v8_context->extension_id();
+ // An Extension may not be found, but CHECK that as required.
+ const ::Extension* extension =
+ dispatcher->extensions()->GetByID(extension_id);
if (dispatcher->IsTestExtensionId(extension_id)) {
- ExtensionAPI::GetInstance()->GetDefaultSchemas(filter, &schemas);
+ ExtensionAPI::GetInstance()->GetDefaultSchemas(
+ ExtensionAPI::ONLY_UNPRIVILEGED, &schemas);
} else {
- const ::Extension* extension =
- dispatcher->extensions()->GetByID(extension_id);
- CHECK(extension) << extension_id << " not found";
- ExtensionAPI::GetInstance()->GetSchemasForExtension(
- *extension, filter, &schemas);
+ switch (v8_context->context_type()) {
+ case ChromeV8Context::PRIVILEGED:
+ CHECK(extension) << extension_id << " not found";
+ ExtensionAPI::GetInstance()->GetSchemasForExtension(
Aaron Boodman 2012/02/29 01:03:58 Is it possible to consolidate this knowledge into
not at google - send to devlin 2012/03/05 07:46:54 Done. This is much nicer (I actually made it just
+ *extension, ExtensionAPI::ALL, &schemas);
+ break;
+
+ case ChromeV8Context::CONTENT_SCRIPT:
+ case ChromeV8Context::UNPRIVILEGED:
+ CHECK(extension) << extension_id << " not found";
+ ExtensionAPI::GetInstance()->GetSchemasForExtension(
+ *extension, ExtensionAPI::ONLY_UNPRIVILEGED, &schemas);
+ break;
+
+ case ChromeV8Context::WEB_PAGE:
+ ExtensionAPI::GetInstance()->GetSchemasForURL(
+ UserScriptSlave::GetDataSourceURLForFrame(
+ v8_context->web_frame()),
+ &schemas);
+ break;
+ }
}
v8::Persistent<v8::Context> context(v8::Context::New());
@@ -164,8 +180,7 @@ class ExtensionImpl : public ChromeV8Extension {
size_t api_index = 0;
for (ExtensionAPI::SchemaMap::iterator it = schemas.begin();
it != schemas.end(); ++it) {
- std::string api_name = it->first;
- api->Set(api_index, GetV8SchemaForAPI(self, context, api_name));
+ api->Set(api_index, GetV8SchemaForAPI(self, context, it->first));
++api_index;
}

Powered by Google App Engine
This is Rietveld 408576698