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

Unified Diff: extensions/renderer/api_bindings_system.cc

Issue 2469593002: [Extensions Bindings] Add Events support (Closed)
Patch Set: . Created 4 years, 1 month 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: extensions/renderer/api_bindings_system.cc
diff --git a/extensions/renderer/api_bindings_system.cc b/extensions/renderer/api_bindings_system.cc
index 1a076e3aacb39953e974ffa1921bcb780dc8dbe4..d8cf134a70b1c95b31c0bc8fcc12fb77bf759667 100644
--- a/extensions/renderer/api_bindings_system.cc
+++ b/extensions/renderer/api_bindings_system.cc
@@ -14,11 +14,11 @@ namespace extensions {
APIBindingsSystem::Request::Request() {}
APIBindingsSystem::Request::~Request() {}
-APIBindingsSystem::APIBindingsSystem(
- const APIRequestHandler::CallJSFunction& call_js,
- const GetAPISchemaMethod& get_api_schema,
- const SendRequestMethod& send_request)
+APIBindingsSystem::APIBindingsSystem(const binding::RunJSFunction& call_js,
+ const GetAPISchemaMethod& get_api_schema,
+ const SendRequestMethod& send_request)
: request_handler_(call_js),
+ event_handler_(call_js),
get_api_schema_(get_api_schema),
send_request_(send_request) {}
@@ -31,7 +31,7 @@ v8::Local<v8::Object> APIBindingsSystem::CreateAPIInstance(
std::unique_ptr<APIBinding>& binding = api_bindings_[api_name];
if (!binding)
binding = CreateNewAPIBinding(api_name);
- return binding->CreateInstance(context, isolate);
+ return binding->CreateInstance(context, isolate, &event_handler_);
}
std::unique_ptr<APIBinding> APIBindingsSystem::CreateNewAPIBinding(
@@ -43,9 +43,11 @@ std::unique_ptr<APIBinding> APIBindingsSystem::CreateNewAPIBinding(
const base::ListValue* type_definitions = nullptr;
// Type definitions might not exist for the given API.
api_schema.GetList("types", &type_definitions);
+ const base::ListValue* event_definitions = nullptr;
+ api_schema.GetList("events", &event_definitions);
return base::MakeUnique<APIBinding>(
- api_name, *function_definitions, type_definitions,
+ api_name, *function_definitions, type_definitions, event_definitions,
base::Bind(&APIBindingsSystem::OnAPICall, base::Unretained(this)),
&type_reference_map_);
}
@@ -55,6 +57,12 @@ void APIBindingsSystem::CompleteRequest(const std::string& request_id,
request_handler_.CompleteRequest(request_id, response);
}
+void APIBindingsSystem::FireEventInContext(const std::string& event_name,
+ v8::Local<v8::Context> context,
+ const base::ListValue& response) {
+ event_handler_.FireEventInContext(event_name, context, response);
+}
+
void APIBindingsSystem::OnAPICall(const std::string& name,
std::unique_ptr<base::ListValue> arguments,
v8::Isolate* isolate,

Powered by Google App Engine
This is Rietveld 408576698