Index: content/browser/android/app_web_message_port_message_filter.cc |
diff --git a/content/browser/android/app_web_message_port_message_filter.cc b/content/browser/android/app_web_message_port_message_filter.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a46dc02a3083ddecfd7df9f2d93e61debfc25235 |
--- /dev/null |
+++ b/content/browser/android/app_web_message_port_message_filter.cc |
@@ -0,0 +1,99 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "content/browser/android/app_web_message_port_message_filter.h" |
sgurun-gerrit only
2016/09/30 23:40:59
can you lower the similarity parameter so rietveld
Yusuf
2016/10/04 21:33:14
Umm, sorry I am not sure I understand how I do tha
|
+#include "content/browser/android/app_web_message_port_service_impl.h" |
+#include "content/browser/message_port_service.h" |
+#include "content/common/app_web_message_port_messages.h" |
+#include "content/public/browser/android/app_web_message_port_service.h" |
+#include "content/public/browser/message_port_provider.h" |
+ |
+using content::BrowserThread; |
+using content::MessagePortProvider; |
+ |
+namespace content { |
+ |
+AppWebMessagePortMessageFilter::AppWebMessagePortMessageFilter(int route_id) |
+ : BrowserMessageFilter(AwMessagePortMsgStart), route_id_(route_id) { |
+} |
+ |
+AppWebMessagePortMessageFilter::~AppWebMessagePortMessageFilter() { |
+} |
+ |
+void AppWebMessagePortMessageFilter::OnChannelClosing() { |
+ MessagePortService::GetInstance()->OnMessagePortDelegateClosing(this); |
+ AppWebMessagePortServiceImpl::GetInstance()-> |
+ OnMessagePortMessageFilterClosing(this); |
+} |
+ |
+bool AppWebMessagePortMessageFilter::OnMessageReceived( |
+ const IPC::Message& message) { |
+ bool handled = true; |
+ IPC_BEGIN_MESSAGE_MAP(AppWebMessagePortMessageFilter, message) |
+ IPC_MESSAGE_FORWARD(AppWebMessagePortHostMsg_ConvertedWebToAppMessage, |
+ content::MessagePortProvider |
+ ::GetAppWebMessagePortService(), |
+ AppWebMessagePortService::OnConvertedWebToAppMessage) |
sgurun-gerrit only
2016/09/30 23:40:59
directly use the impl class
Yusuf
2016/10/04 21:33:14
Done.
|
+ IPC_MESSAGE_HANDLER(AppWebMessagePortHostMsg_ConvertedAppToWebMessage, |
+ OnConvertedAppToWebMessage) |
+ IPC_MESSAGE_HANDLER(AppWebMessagePortHostMsg_ClosePortAck, OnClosePortAck) |
+ IPC_MESSAGE_UNHANDLED(handled = false) |
+ IPC_END_MESSAGE_MAP() |
+ return handled; |
+} |
+ |
+void AppWebMessagePortMessageFilter::OnConvertedAppToWebMessage( |
+ int msg_port_id, |
+ const base::string16& message, |
+ const std::vector<int>& sent_message_port_ids) { |
+ MessagePortService* msp = MessagePortService::GetInstance(); |
+ msp->PostMessage(msg_port_id, message, sent_message_port_ids); |
+} |
+ |
+void AppWebMessagePortMessageFilter::OnClosePortAck(int message_port_id) { |
+ MessagePortService* msp = MessagePortService::GetInstance(); |
+ msp->ClosePort(message_port_id); |
+ AppWebMessagePortServiceImpl::GetInstance()-> |
+ CleanupPort(message_port_id); |
+} |
+ |
+void AppWebMessagePortMessageFilter::OnDestruct() const { |
+ BrowserThread::DeleteOnIOThread::Destruct(this); |
+} |
+ |
+void AppWebMessagePortMessageFilter::SendAppToWebMessage( |
+ int msg_port_route_id, |
+ const base::string16& message, |
+ const std::vector<int>& sent_message_port_ids) { |
+ Send(new AppWebMessagePortMsg_AppToWebMessage( |
+ route_id_, |
+ msg_port_route_id, // same as the port id |
+ message, sent_message_port_ids)); |
+} |
+ |
+void AppWebMessagePortMessageFilter::SendClosePortMessage(int message_port_id) { |
+ Send(new AppWebMessagePortMsg_ClosePort(route_id_, message_port_id)); |
+} |
+ |
+void AppWebMessagePortMessageFilter::SendMessage( |
+ int msg_port_route_id, |
+ const base::string16& message, |
+ const std::vector<int>& sent_message_port_ids) { |
+ MessagePortService* msp = MessagePortService::GetInstance(); |
+ for (int sent_port_id : sent_message_port_ids) { |
+ msp->HoldMessages(sent_port_id); |
+ msp->UpdateMessagePort(sent_port_id, this, sent_port_id); |
+ } |
+ Send(new AppWebMessagePortMsg_WebToAppMessage( |
+ route_id_, |
+ msg_port_route_id, // same as the port id |
+ message, sent_message_port_ids)); |
+} |
+ |
+void AppWebMessagePortMessageFilter::SendMessagesAreQueued(int route_id) { |
+ // TODO(sgurun) implement |
+ NOTREACHED(); |
+} |
+ |
+} // namespace content |