OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "content/browser/android/app_web_message_port.h" | 5 #include "content/browser/android/app_web_message_port.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "content/browser/android/string_message_codec.h" | 10 #include "content/browser/android/string_message_codec.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 delete this; | 56 delete this; |
57 } | 57 } |
58 | 58 |
59 void AppWebMessagePort::PostMessage( | 59 void AppWebMessagePort::PostMessage( |
60 JNIEnv* env, | 60 JNIEnv* env, |
61 const base::android::JavaParamRef<jobject>& jcaller, | 61 const base::android::JavaParamRef<jobject>& jcaller, |
62 const base::android::JavaParamRef<jstring>& jmessage, | 62 const base::android::JavaParamRef<jstring>& jmessage, |
63 const base::android::JavaParamRef<jobjectArray>& jports) { | 63 const base::android::JavaParamRef<jobjectArray>& jports) { |
64 port_.PostMessage( | 64 port_.PostMessage( |
65 EncodeStringMessage(base::android::ConvertJavaStringToUTF16(jmessage)), | 65 EncodeStringMessage(base::android::ConvertJavaStringToUTF16(jmessage)), |
66 UnwrapJavaArray(env, jports)); | 66 UnwrapJavaArray(env, jports), std::vector<mojo::ScopedHandle>()); |
67 } | 67 } |
68 | 68 |
69 jboolean AppWebMessagePort::DispatchNextMessage( | 69 jboolean AppWebMessagePort::DispatchNextMessage( |
70 JNIEnv* env, | 70 JNIEnv* env, |
71 const base::android::JavaParamRef<jobject>& jcaller) { | 71 const base::android::JavaParamRef<jobject>& jcaller) { |
72 base::android::ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 72 base::android::ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
73 if (obj.is_null()) | 73 if (obj.is_null()) |
74 return false; | 74 return false; |
75 | 75 |
76 jmethodID app_web_message_port_constructor = | 76 jmethodID app_web_message_port_constructor = |
77 base::android::MethodID::Get<base::android::MethodID::TYPE_INSTANCE>( | 77 base::android::MethodID::Get<base::android::MethodID::TYPE_INSTANCE>( |
78 env, AppWebMessagePort_clazz(env), "<init>", "()V"); | 78 env, AppWebMessagePort_clazz(env), "<init>", "()V"); |
79 | 79 |
80 base::string16 encoded_message; | 80 base::string16 encoded_message; |
81 std::vector<MessagePort> ports; | 81 std::vector<MessagePort> ports; |
82 if (!port_.GetMessage(&encoded_message, &ports)) | 82 std::vector<mojo::ScopedHandle> handles; |
| 83 if (!port_.GetMessage(&encoded_message, &ports, &handles)) |
83 return false; | 84 return false; |
84 | 85 |
| 86 if (!handles.empty()) { |
| 87 DLOG(WARNING) << "Unexpected handles"; |
| 88 return false; |
| 89 } |
| 90 |
85 base::string16 message; | 91 base::string16 message; |
86 if (!DecodeStringMessage(encoded_message, &message)) | 92 if (!DecodeStringMessage(encoded_message, &message)) |
87 return false; | 93 return false; |
88 | 94 |
89 base::android::ScopedJavaLocalRef<jstring> jmessage = | 95 base::android::ScopedJavaLocalRef<jstring> jmessage = |
90 base::android::ConvertUTF16ToJavaString(env, message); | 96 base::android::ConvertUTF16ToJavaString(env, message); |
91 | 97 |
92 base::android::ScopedJavaLocalRef<jobjectArray> jports; | 98 base::android::ScopedJavaLocalRef<jobjectArray> jports; |
93 if (ports.size() > 0) { | 99 if (ports.size() > 0) { |
94 jports = base::android::ScopedJavaLocalRef<jobjectArray>( | 100 jports = base::android::ScopedJavaLocalRef<jobjectArray>( |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 AppWebMessagePort::CreateAndBindToJavaObject( | 164 AppWebMessagePort::CreateAndBindToJavaObject( |
159 env, std::move(pipe.handle0), jport0); | 165 env, std::move(pipe.handle0), jport0); |
160 | 166 |
161 base::android::ScopedJavaLocalRef<jobject> jport1( | 167 base::android::ScopedJavaLocalRef<jobject> jport1( |
162 env, env->GetObjectArrayElement(ports.obj(), 1)); | 168 env, env->GetObjectArrayElement(ports.obj(), 1)); |
163 AppWebMessagePort::CreateAndBindToJavaObject( | 169 AppWebMessagePort::CreateAndBindToJavaObject( |
164 env, std::move(pipe.handle1), jport1); | 170 env, std::move(pipe.handle1), jport1); |
165 } | 171 } |
166 | 172 |
167 } // namespace content | 173 } // namespace content |
OLD | NEW |