diff options
Diffstat (limited to 'chrome/browser/automation')
-rw-r--r-- | chrome/browser/automation/extension_port_container.cc | 21 | ||||
-rw-r--r-- | chrome/browser/automation/extension_port_container.h | 4 |
2 files changed, 23 insertions, 2 deletions
diff --git a/chrome/browser/automation/extension_port_container.cc b/chrome/browser/automation/extension_port_container.cc index a0846e5..7fd04dd 100644 --- a/chrome/browser/automation/extension_port_container.cc +++ b/chrome/browser/automation/extension_port_container.cc @@ -7,6 +7,7 @@ #include "base/logging.h" #include "base/json_reader.h" #include "base/json_writer.h" +#include "base/values.h" #include "chrome/common/render_messages.h" #include "chrome/browser/automation/automation_provider.h" #include "chrome/browser/automation/extension_automation_constants.h" @@ -91,8 +92,8 @@ bool ExtensionPortContainer::Send(IPC::Message *message) { DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); IPC_BEGIN_MESSAGE_MAP(ExtensionPortContainer, *message) - IPC_MESSAGE_HANDLER(ViewMsg_ExtensionHandleMessage, - OnExtensionHandleMessage) + IPC_MESSAGE_HANDLER(ViewMsg_ExtensionMessageInvoke, + OnExtensionMessageInvoke) IPC_MESSAGE_UNHANDLED_ERROR() IPC_END_MESSAGE_MAP() @@ -100,6 +101,22 @@ bool ExtensionPortContainer::Send(IPC::Message *message) { return true; } +void ExtensionPortContainer::OnExtensionMessageInvoke( + const std::string& function_name, const ListValue& args) { + if (function_name == ExtensionMessageService::kDispatchOnMessage) { + DCHECK_EQ(args.GetSize(), 2); + + std::string message; + int source_port_id; + if (args.GetString(0, &message) && args.GetInteger(1, &source_port_id)) + OnExtensionHandleMessage(message, source_port_id); + } else if (function_name == ExtensionMessageService::kDispatchOnDisconnect) { + // do nothing + } else { + NOTREACHED() << function_name << " shouldn't be called."; + } +} + void ExtensionPortContainer::OnExtensionHandleMessage( const std::string& message, int source_port_id) { // Compose the reply message and fire it away. diff --git a/chrome/browser/automation/extension_port_container.h b/chrome/browser/automation/extension_port_container.h index 2758a9d..d9244b0 100644 --- a/chrome/browser/automation/extension_port_container.h +++ b/chrome/browser/automation/extension_port_container.h @@ -12,6 +12,7 @@ class AutomationProvider; class ExtensionMessageService; +class ListValue; class MessageLoop; class RenderViewHost; @@ -56,6 +57,9 @@ class ExtensionPortContainer : public IPC::Message::Sender { int connection_id); // Sends a response to the void SendConnectionResponse(int connection_id, int port_id); + + void OnExtensionMessageInvoke(const std::string& function_name, + const ListValue& args); void OnExtensionHandleMessage(const std::string& message, int source_port_id); // Our automation provider. |