| Index: chrome/browser/renderer_host/chrome_render_message_filter.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/chrome_render_message_filter.cc (revision 158832)
|
| +++ chrome/browser/renderer_host/chrome_render_message_filter.cc (working copy)
|
| @@ -89,6 +89,8 @@
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenChannelToExtension,
|
| OnOpenChannelToExtension)
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenChannelToTab, OnOpenChannelToTab)
|
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenChannelToNativeApp,
|
| + OnOpenChannelToNativeApp)
|
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ExtensionHostMsg_GetMessageBundle,
|
| OnGetExtensionMessageBundle)
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddListener, OnExtensionAddListener)
|
| @@ -301,6 +303,40 @@
|
| source_extension_id, target_extension_id, channel_name);
|
| }
|
|
|
| +void ChromeRenderMessageFilter::OnOpenChannelToNativeApp(
|
| + int routing_id, const std::string& source_extension_id,
|
| + const std::string& native_app_name,
|
| + const std::string& channel_name,
|
| + const std::string& connect_message, int* port_id) {
|
| + int port2_id;
|
| + extensions::MessageService::AllocatePortIdPair(port_id, &port2_id);
|
| +
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&ChromeRenderMessageFilter::OpenChannelToNativeAppOnUIThread,
|
| + this,
|
| + routing_id,
|
| + port2_id,
|
| + source_extension_id,
|
| + native_app_name,
|
| + channel_name,
|
| + connect_message));
|
| +}
|
| +
|
| +void ChromeRenderMessageFilter::OpenChannelToNativeAppOnUIThread(
|
| + int source_routing_id,
|
| + int receiver_port_id,
|
| + const std::string& source_extension_id,
|
| + const std::string& native_app_name,
|
| + const std::string& channel_name,
|
| + const std::string& connect_message) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + extensions::ExtensionSystem::Get(profile_)->message_service()->
|
| + OpenChannelToNativeApp(
|
| + render_process_id_, source_routing_id, receiver_port_id,
|
| + source_extension_id, native_app_name, channel_name, connect_message);
|
| +}
|
| +
|
| void ChromeRenderMessageFilter::OnOpenChannelToTab(
|
| int routing_id, int tab_id, const std::string& extension_id,
|
| const std::string& channel_name, int* port_id) {
|
|
|