summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
Diffstat (limited to 'android_webview')
-rw-r--r--android_webview/browser/aw_message_port_message_filter.cc14
-rw-r--r--android_webview/browser/aw_message_port_message_filter.h8
-rw-r--r--android_webview/native/aw_contents.cc6
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>