diff options
Diffstat (limited to 'android_webview')
-rw-r--r-- | android_webview/browser/aw_message_port_message_filter.cc | 14 | ||||
-rw-r--r-- | android_webview/browser/aw_message_port_message_filter.h | 8 | ||||
-rw-r--r-- | android_webview/native/aw_contents.cc | 6 |
3 files changed, 21 insertions, 7 deletions
diff --git a/android_webview/browser/aw_message_port_message_filter.cc b/android_webview/browser/aw_message_port_message_filter.cc index b19b344..8c434b5 100644 --- a/android_webview/browser/aw_message_port_message_filter.cc +++ b/android_webview/browser/aw_message_port_message_filter.cc @@ -46,12 +46,15 @@ void AwMessagePortMessageFilter::OnConvertedAppToWebMessage( int msg_port_id, const base::string16& message, const std::vector<int>& sent_message_port_ids) { - + std::vector<content::TransferredMessagePort> + sent_ports(sent_message_port_ids.size()); + for (size_t i = 0; i < sent_message_port_ids.size(); ++i) + sent_ports[i].id = sent_message_port_ids[i]; // TODO(mek): Bypass the extra roundtrip and just send the unconverted message // to the renderer directly. MessagePortProvider::PostMessageToPort(msg_port_id, content::MessagePortMessage(message), - sent_message_port_ids); + sent_ports); } void AwMessagePortMessageFilter::OnClosePortAck(int message_port_id) { @@ -81,8 +84,13 @@ void AwMessagePortMessageFilter::SendClosePortMessage(int message_port_id) { void AwMessagePortMessageFilter::SendMessage( int msg_port_route_id, const content::MessagePortMessage& message, - const std::vector<int>& sent_message_port_ids) { + const std::vector<content::TransferredMessagePort>& sent_message_ports) { DCHECK(message.is_string()); + std::vector<int> sent_message_port_ids(sent_message_ports.size()); + for (size_t i = 0; i < sent_message_ports.size(); ++i) { + DCHECK(!sent_message_ports[i].send_messages_as_values); + sent_message_port_ids[i] = sent_message_ports[i].id; + } Send(new AwMessagePortMsg_WebToAppMessage( route_id_, msg_port_route_id, // same as the port id diff --git a/android_webview/browser/aw_message_port_message_filter.h b/android_webview/browser/aw_message_port_message_filter.h index 061dabb..4dfeed6 100644 --- a/android_webview/browser/aw_message_port_message_filter.h +++ b/android_webview/browser/aw_message_port_message_filter.h @@ -29,9 +29,11 @@ class AwMessagePortMessageFilter : public content::BrowserMessageFilter, void SendClosePortMessage(int message_port_id); // MessagePortDelegate implementation. - void SendMessage(int msg_port_route_id, - const content::MessagePortMessage& message, - const std::vector<int>& sent_message_port_ids) override; + void SendMessage( + int msg_port_route_id, + const content::MessagePortMessage& message, + const std::vector<content::TransferredMessagePort>& sent_message_ports) + override; void SendMessagesAreQueued(int route_id) override; private: friend class content::BrowserThread; diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc index 8580478..e192656 100644 --- a/android_webview/native/aw_contents.cc +++ b/android_webview/native/aw_contents.cc @@ -60,6 +60,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" +#include "content/public/common/message_port_types.h" #include "content/public/common/renderer_preferences.h" #include "content/public/common/ssl_status.h" #include "jni/AwContents_jni.h" @@ -1113,11 +1114,14 @@ void AwContents::PostMessageToFrame(JNIEnv* env, jobject obj, base::Unretained(AwMessagePortServiceImpl::GetInstance()), j_ports)); } + std::vector<content::TransferredMessagePort> ports(j_ports.size()); + for (size_t i = 0; i < j_ports.size(); ++i) + ports[i].id = j_ports[i]; content::MessagePortProvider::PostMessageToFrame(web_contents_.get(), source_origin, j_target_origin, j_message, - j_ports); + ports); } scoped_refptr<AwMessagePortMessageFilter> |