diff options
Diffstat (limited to 'chrome/renderer/extensions')
3 files changed, 19 insertions, 0 deletions
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 5de1817..5952463 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -7,6 +7,7 @@ #include "base/singleton.h" #include "chrome/common/render_messages.h" #include "chrome/renderer/extensions/bindings_utils.h" +#include "chrome/renderer/extensions/event_bindings.h" #include "chrome/renderer/extensions/renderer_extension_bindings.h" #include "chrome/renderer/js_only_v8_extensions.h" #include "chrome/renderer/render_view.h" @@ -22,6 +23,7 @@ namespace { const char kExtensionName[] = "chrome/ExtensionProcessBindings"; const char* kExtensionDeps[] = { BaseJsV8Extension::kName, + EventBindings::kName, JsonJsV8Extension::kName, JsonSchemaJsV8Extension::kName, RendererExtensionBindings::kName, diff --git a/chrome/renderer/extensions/renderer_extension_bindings.cc b/chrome/renderer/extensions/renderer_extension_bindings.cc index 8035422..63214d73 100755 --- a/chrome/renderer/extensions/renderer_extension_bindings.cc +++ b/chrome/renderer/extensions/renderer_extension_bindings.cc @@ -100,3 +100,14 @@ void RendererExtensionBindings::HandleMessage(const std::string& message, EventBindings::CallFunction("chromium.Port.dispatchOnMessage_", arraysize(argv), argv); } + +void RendererExtensionBindings::HandleEvent(const std::string& event_name, + const std::string& args) { + v8::HandleScope handle_scope; + v8::Handle<v8::Value> argv[2]; + argv[0] = v8::String::New(event_name.c_str()); + argv[1] = v8::String::New(args.c_str()); + + EventBindings::CallFunction("chromium.Event.dispatchJSON_", + arraysize(argv), argv); +} diff --git a/chrome/renderer/extensions/renderer_extension_bindings.h b/chrome/renderer/extensions/renderer_extension_bindings.h index 3fc1fb4..374dfb6 100755 --- a/chrome/renderer/extensions/renderer_extension_bindings.h +++ b/chrome/renderer/extensions/renderer_extension_bindings.h @@ -27,6 +27,12 @@ class RendererExtensionBindings { // Dispatch the given message sent on this channel. static void HandleMessage(const std::string& message, int port_id); + + // Send this event to all extensions in this process. |args| is a JSON- + // serialized array that will be deserialized and provided to the callback + // function in event_bindings.js + static void HandleEvent(const std::string& event_name, + const std::string& args); }; #endif // CHROME_RENDERER_EXTENSIONS_RENDERER_EXTENSION_BINDINGS_H_ |