Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / renderer_host / chrome_extension_message_filter.cc
index a6865c8..ae53191 100644 (file)
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/common/extensions/api/i18n/default_locale_handler.h"
-#include "chrome/common/render_messages.h"
+#include "chrome/common/extensions/chrome_extension_messages.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/render_process_host.h"
 #include "extensions/browser/extension_system.h"
+#include "extensions/common/api/messaging/message.h"
 #include "extensions/common/constants.h"
 #include "extensions/common/extension_messages.h"
 #include "extensions/common/file_util.h"
@@ -33,7 +34,7 @@ using extensions::APIPermission;
 namespace {
 
 const uint32 kFilteredMessageClasses[] = {
-  ChromeMsgStart,
+  ChromeExtensionMsgStart,
   ExtensionMsgStart,
 };
 
@@ -96,6 +97,7 @@ bool ChromeExtensionMessageFilter::OnMessageReceived(
     IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenChannelToTab, OnOpenChannelToTab)
     IPC_MESSAGE_HANDLER(ExtensionHostMsg_OpenChannelToNativeApp,
                         OnOpenChannelToNativeApp)
+    IPC_MESSAGE_HANDLER(ExtensionHostMsg_PostMessage, OnPostMessage)
     IPC_MESSAGE_HANDLER_DELAY_REPLY(ExtensionHostMsg_GetMessageBundle,
                                     OnGetExtMessageBundle)
     IPC_MESSAGE_HANDLER(ExtensionHostMsg_CloseChannel, OnExtensionCloseChannel)
@@ -114,6 +116,7 @@ bool ChromeExtensionMessageFilter::OnMessageReceived(
 void ChromeExtensionMessageFilter::OverrideThreadForMessage(
     const IPC::Message& message, BrowserThread::ID* thread) {
   switch (message.type()) {
+    case ExtensionHostMsg_PostMessage::ID:
     case ExtensionHostMsg_CloseChannel::ID:
       *thread = BrowserThread::UI;
       break;
@@ -168,7 +171,7 @@ void ChromeExtensionMessageFilter::OpenChannelToExtensionOnUIThread(
     const ExtensionMsg_ExternalConnectionInfo& info,
     const std::string& channel_name,
     bool include_tls_channel_id) {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (profile_) {
     extensions::MessageService::Get(profile_)
         ->OpenChannelToExtension(source_process_id,
@@ -202,7 +205,7 @@ void ChromeExtensionMessageFilter::OpenChannelToNativeAppOnUIThread(
     int receiver_port_id,
     const std::string& source_extension_id,
     const std::string& native_app_name) {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (profile_) {
     extensions::MessageService::Get(profile_)
         ->OpenChannelToNativeApp(render_process_id_,
@@ -232,7 +235,7 @@ void ChromeExtensionMessageFilter::OpenChannelToTabOnUIThread(
     int tab_id,
     const std::string& extension_id,
     const std::string& channel_name) {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (profile_) {
     extensions::MessageService::Get(profile_)
         ->OpenChannelToTab(source_process_id,
@@ -244,6 +247,12 @@ void ChromeExtensionMessageFilter::OpenChannelToTabOnUIThread(
   }
 }
 
+void ChromeExtensionMessageFilter::OnPostMessage(
+    int port_id,
+    const extensions::Message& message) {
+  extensions::MessageService::Get(profile_)->PostMessage(port_id, message);
+}
+
 void ChromeExtensionMessageFilter::OnGetExtMessageBundle(
     const std::string& extension_id, IPC::Message* reply_msg) {
   const extensions::Extension* extension =