Index: chrome/browser/extensions/api/messaging/message_service.cc |
diff --git a/chrome/browser/extensions/api/messaging/message_service.cc b/chrome/browser/extensions/api/messaging/message_service.cc |
index 5592fad351da08eb25018cf27ed8d1bbc8fd7fa1..e449bcfce73d125042eb151e0e1790b81feb7d5e 100644 |
--- a/chrome/browser/extensions/api/messaging/message_service.cc |
+++ b/chrome/browser/extensions/api/messaging/message_service.cc |
@@ -193,6 +193,7 @@ void MessageService::OpenChannelToNativeApp( |
if (!source) |
return; |
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) |
WebContents* source_contents = tab_util::GetWebContentsByID( |
source_process_id, source_routing_id); |
@@ -217,6 +218,9 @@ void MessageService::OpenChannelToNativeApp( |
// Abandon the channel |
if (!native_process.get()) { |
LOG(ERROR) << "Failed to create native process."; |
+ // Treat it as a disconnect. |
+ ExtensionMessagePort port(source, MSG_ROUTING_CONTROL, ""); |
+ port.DispatchOnDisconnect(GET_OPPOSITE_PORT_ID(receiver_port_id), true); |
return; |
} |
channel->receiver.reset(new NativeMessagePort(native_process.release())); |
@@ -225,6 +229,10 @@ void MessageService::OpenChannelToNativeApp( |
channel->opener->IncrementLazyKeepaliveCount(); |
AddChannel(channel.release(), receiver_port_id); |
+#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)) |
+ ExtensionMessagePort port(source, MSG_ROUTING_CONTROL, ""); |
+ port.DispatchOnDisconnect(GET_OPPOSITE_PORT_ID(receiver_port_id), true); |
+#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)) |
} |
void MessageService::OpenChannelToTab( |