Index: chrome/browser/renderer_host/chrome_extension_message_filter.cc |
diff --git a/chrome/browser/renderer_host/chrome_extension_message_filter.cc b/chrome/browser/renderer_host/chrome_extension_message_filter.cc |
index a09871357796e9d19d257414095b9b422bc627a9..a0ae53cccb512a45dd470e2e1c613452cd41badc 100644 |
--- a/chrome/browser/renderer_host/chrome_extension_message_filter.cc |
+++ b/chrome/browser/renderer_host/chrome_extension_message_filter.cc |
@@ -84,10 +84,11 @@ bool ChromeExtensionMessageFilter::OnMessageReceived( |
IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenChannelToTab, OnOpenChannelToTab) |
IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenChannelToNativeApp, |
OnOpenChannelToNativeApp) |
+ IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenMessagePort, OnOpenMessagePort) |
+ IPC_MESSAGE_HANDLER(ExtensionHostMsg_CloseMessagePort, OnCloseMessagePort) |
IPC_MESSAGE_HANDLER(ExtensionHostMsg_PostMessage, OnPostMessage) |
IPC_MESSAGE_HANDLER_DELAY_REPLY(ExtensionHostMsg_GetMessageBundle, |
OnGetExtMessageBundle) |
- IPC_MESSAGE_HANDLER(ExtensionHostMsg_CloseChannel, OnExtensionCloseChannel) |
IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddAPIActionToActivityLog, |
OnAddAPIActionToExtensionActivityLog); |
IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddDOMActionToActivityLog, |
@@ -103,8 +104,9 @@ bool ChromeExtensionMessageFilter::OnMessageReceived( |
void ChromeExtensionMessageFilter::OverrideThreadForMessage( |
const IPC::Message& message, BrowserThread::ID* thread) { |
switch (message.type()) { |
+ case ExtensionHostMsg_OpenMessagePort::ID: |
+ case ExtensionHostMsg_CloseMessagePort::ID: |
case ExtensionHostMsg_PostMessage::ID: |
- case ExtensionHostMsg_CloseChannel::ID: |
case ExtensionHostMsg_AddAPIActionToActivityLog::ID: |
case ExtensionHostMsg_AddDOMActionToActivityLog::ID: |
case ExtensionHostMsg_AddEventToActivityLog::ID: |
@@ -192,6 +194,7 @@ void ChromeExtensionMessageFilter::OpenChannelToNativeAppOnUIThread( |
} |
void ChromeExtensionMessageFilter::OnOpenChannelToTab( |
+ int routing_id, |
const ExtensionMsg_TabTargetConnectionInfo& info, |
const std::string& extension_id, |
const std::string& channel_name, |
@@ -202,12 +205,13 @@ void ChromeExtensionMessageFilter::OnOpenChannelToTab( |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
base::Bind(&ChromeExtensionMessageFilter::OpenChannelToTabOnUIThread, |
- this, render_process_id_, port2_id, info, extension_id, |
- channel_name)); |
+ this, render_process_id_, routing_id, port2_id, info, |
+ extension_id, channel_name)); |
} |
void ChromeExtensionMessageFilter::OpenChannelToTabOnUIThread( |
int source_process_id, |
+ int source_routing_id, |
int receiver_port_id, |
const ExtensionMsg_TabTargetConnectionInfo& info, |
const std::string& extension_id, |
@@ -216,6 +220,7 @@ void ChromeExtensionMessageFilter::OpenChannelToTabOnUIThread( |
if (profile_) { |
extensions::MessageService::Get(profile_) |
->OpenChannelToTab(source_process_id, |
+ source_routing_id, |
receiver_port_id, |
info.tab_id, |
info.frame_id, |
@@ -224,6 +229,25 @@ void ChromeExtensionMessageFilter::OpenChannelToTabOnUIThread( |
} |
} |
+void ChromeExtensionMessageFilter::OnOpenMessagePort(int routing_id, |
+ int port_id) { |
+ if (!profile_) |
+ return; |
+ |
+ extensions::MessageService::Get(profile_)->OpenPort( |
+ port_id, render_process_id_, routing_id); |
+} |
+ |
+void ChromeExtensionMessageFilter::OnCloseMessagePort(int routing_id, |
+ int port_id, |
+ bool force_close) { |
+ if (!profile_) |
+ return; |
+ |
+ extensions::MessageService::Get(profile_)->ClosePort( |
+ port_id, render_process_id_, routing_id, force_close); |
+} |
+ |
void ChromeExtensionMessageFilter::OnPostMessage( |
int port_id, |
const extensions::Message& message) { |
@@ -259,21 +283,6 @@ void ChromeExtensionMessageFilter::OnGetExtMessageBundleOnBlockingPool( |
Send(reply_msg); |
} |
-void ChromeExtensionMessageFilter::OnExtensionCloseChannel( |
- int port_id, |
- const std::string& error_message) { |
- if (!profile_) |
- return; |
- |
- if (!content::RenderProcessHost::FromID(render_process_id_)) |
- return; // To guard against crash in browser_tests shutdown. |
- |
- extensions::MessageService* message_service = |
- extensions::MessageService::Get(profile_); |
- if (message_service) |
- message_service->CloseChannel(port_id, error_message); |
-} |
- |
void ChromeExtensionMessageFilter::OnAddAPIActionToExtensionActivityLog( |
const std::string& extension_id, |
const ExtensionHostMsg_APIActionOrEvent_Params& params) { |