OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "android_webview/browser/aw_message_port_message_filter.h" | 5 #include "android_webview/browser/aw_message_port_message_filter.h" |
6 | 6 |
7 #include "android_webview/browser/aw_browser_context.h" | 7 #include "android_webview/browser/aw_browser_context.h" |
8 #include "android_webview/common/aw_message_port_messages.h" | 8 #include "android_webview/common/aw_message_port_messages.h" |
9 #include "content/public/browser/message_port_provider.h" | 9 #include "content/public/browser/message_port_provider.h" |
| 10 #include "content/public/common/message_port_types.h" |
10 | 11 |
11 using content::BrowserThread; | 12 using content::BrowserThread; |
12 using content::MessagePortProvider; | 13 using content::MessagePortProvider; |
13 | 14 |
14 namespace android_webview { | 15 namespace android_webview { |
15 | 16 |
16 AwMessagePortMessageFilter::AwMessagePortMessageFilter(int route_id) | 17 AwMessagePortMessageFilter::AwMessagePortMessageFilter(int route_id) |
17 : BrowserMessageFilter(AwMessagePortMsgStart), route_id_(route_id) { | 18 : BrowserMessageFilter(AwMessagePortMsgStart), route_id_(route_id) { |
18 } | 19 } |
19 | 20 |
(...skipping 19 matching lines...) Expand all Loading... |
39 IPC_MESSAGE_UNHANDLED(handled = false) | 40 IPC_MESSAGE_UNHANDLED(handled = false) |
40 IPC_END_MESSAGE_MAP() | 41 IPC_END_MESSAGE_MAP() |
41 return handled; | 42 return handled; |
42 } | 43 } |
43 | 44 |
44 void AwMessagePortMessageFilter::OnConvertedAppToWebMessage( | 45 void AwMessagePortMessageFilter::OnConvertedAppToWebMessage( |
45 int msg_port_id, | 46 int msg_port_id, |
46 const base::string16& message, | 47 const base::string16& message, |
47 const std::vector<int>& sent_message_port_ids) { | 48 const std::vector<int>& sent_message_port_ids) { |
48 | 49 |
49 MessagePortProvider::PostMessageToPort(msg_port_id, message, | 50 // TODO(mek): Bypass the extra roundtrip and just send the unconverted message |
| 51 // to the renderer directly. |
| 52 MessagePortProvider::PostMessageToPort(msg_port_id, |
| 53 content::MessagePortMessage(message), |
50 sent_message_port_ids); | 54 sent_message_port_ids); |
51 } | 55 } |
52 | 56 |
53 void AwMessagePortMessageFilter::OnClosePortAck(int message_port_id) { | 57 void AwMessagePortMessageFilter::OnClosePortAck(int message_port_id) { |
54 MessagePortProvider::ClosePort(message_port_id); | 58 MessagePortProvider::ClosePort(message_port_id); |
55 AwBrowserContext::GetDefault()->GetMessagePortService()-> | 59 AwBrowserContext::GetDefault()->GetMessagePortService()-> |
56 CleanupPort(message_port_id); | 60 CleanupPort(message_port_id); |
57 } | 61 } |
58 | 62 |
59 void AwMessagePortMessageFilter::OnDestruct() const { | 63 void AwMessagePortMessageFilter::OnDestruct() const { |
60 BrowserThread::DeleteOnIOThread::Destruct(this); | 64 BrowserThread::DeleteOnIOThread::Destruct(this); |
61 } | 65 } |
62 | 66 |
63 void AwMessagePortMessageFilter::SendAppToWebMessage( | 67 void AwMessagePortMessageFilter::SendAppToWebMessage( |
64 int msg_port_route_id, | 68 int msg_port_route_id, |
65 const base::string16& message, | 69 const base::string16& message, |
66 const std::vector<int>& sent_message_port_ids) { | 70 const std::vector<int>& sent_message_port_ids) { |
67 Send(new AwMessagePortMsg_AppToWebMessage( | 71 Send(new AwMessagePortMsg_AppToWebMessage( |
68 route_id_, | 72 route_id_, |
69 msg_port_route_id, // same as the port id | 73 msg_port_route_id, // same as the port id |
70 message, sent_message_port_ids)); | 74 message, sent_message_port_ids)); |
71 } | 75 } |
72 | 76 |
73 void AwMessagePortMessageFilter::SendClosePortMessage(int message_port_id) { | 77 void AwMessagePortMessageFilter::SendClosePortMessage(int message_port_id) { |
74 Send(new AwMessagePortMsg_ClosePort(route_id_, message_port_id)); | 78 Send(new AwMessagePortMsg_ClosePort(route_id_, message_port_id)); |
75 } | 79 } |
76 | 80 |
77 void AwMessagePortMessageFilter::SendMessage( | 81 void AwMessagePortMessageFilter::SendMessage( |
78 int msg_port_route_id, | 82 int msg_port_route_id, |
79 const base::string16& message, | 83 const content::MessagePortMessage& message, |
80 const std::vector<int>& sent_message_port_ids) { | 84 const std::vector<int>& sent_message_port_ids) { |
| 85 DCHECK(message.is_string()); |
81 Send(new AwMessagePortMsg_WebToAppMessage( | 86 Send(new AwMessagePortMsg_WebToAppMessage( |
82 route_id_, | 87 route_id_, |
83 msg_port_route_id, // same as the port id | 88 msg_port_route_id, // same as the port id |
84 message, sent_message_port_ids)); | 89 message.message_as_string, sent_message_port_ids)); |
85 } | 90 } |
86 | 91 |
87 void AwMessagePortMessageFilter::SendMessagesAreQueued(int route_id) { | 92 void AwMessagePortMessageFilter::SendMessagesAreQueued(int route_id) { |
88 // TODO(sgurun) implement | 93 // TODO(sgurun) implement |
89 NOTREACHED(); | 94 NOTREACHED(); |
90 } | 95 } |
91 | 96 |
92 } // namespace android_webview | 97 } // namespace android_webview |
OLD | NEW |