diff options
author | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-30 01:19:44 +0000 |
---|---|---|
committer | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-30 01:19:44 +0000 |
commit | 7055e39711054760e139ff58f3369aa7386d26d4 (patch) | |
tree | fd0b1f1ccc6d80b72ee531f15bf42176272a09a9 /remoting/client | |
parent | 415c3399c0aac32c5f7e7ea403fd2d5e9ca0bb8d (diff) | |
download | chromium_src-7055e39711054760e139ff58f3369aa7386d26d4.zip chromium_src-7055e39711054760e139ff58f3369aa7386d26d4.tar.gz chromium_src-7055e39711054760e139ff58f3369aa7386d26d4.tar.bz2 |
[Chromoting] Use base/android utilities to pass data from C++ to Java
Using scopers avoids leaking the C++ local references.
BUG=291231
Review URL: https://codereview.chromium.org/37323003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231700 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/client')
-rw-r--r-- | remoting/client/jni/chromoting_jni_runtime.cc | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/remoting/client/jni/chromoting_jni_runtime.cc b/remoting/client/jni/chromoting_jni_runtime.cc index 6b531fa..cbc7a35 100644 --- a/remoting/client/jni/chromoting_jni_runtime.cc +++ b/remoting/client/jni/chromoting_jni_runtime.cc @@ -5,6 +5,7 @@ #include "remoting/client/jni/chromoting_jni_runtime.h" #include "base/android/jni_android.h" +#include "base/android/jni_array.h" #include "base/android/jni_string.h" #include "base/android/scoped_java_ref.h" #include "base/basictypes.h" @@ -19,6 +20,8 @@ #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" using base::android::ConvertJavaStringToUTF8; +using base::android::ConvertUTF8ToJavaString; +using base::android::ToJavaByteArray; namespace { @@ -226,19 +229,14 @@ void ChromotingJniRuntime::CommitPairingCredentials(const std::string& host, DCHECK(ui_task_runner_->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); - jstring host_jstr = env->NewStringUTF(host.c_str()); - jbyteArray id_arr = env->NewByteArray(id.size()); - env->SetByteArrayRegion(id_arr, 0, id.size(), - reinterpret_cast<const jbyte*>(id.c_str())); - jbyteArray secret_arr = env->NewByteArray(secret.size()); - env->SetByteArrayRegion(secret_arr, 0, secret.size(), - reinterpret_cast<const jbyte*>(secret.c_str())); - - Java_JniInterface_commitPairingCredentials(env, host_jstr, id_arr, - secret_arr); - - // Because we passed them as arguments, their corresponding Java objects were - // GCd as soon as the managed method returned, so we mustn't release it here. + ScopedJavaLocalRef<jstring> j_host = ConvertUTF8ToJavaString(env, host); + ScopedJavaLocalRef<jbyteArray> j_id = ToJavaByteArray( + env, reinterpret_cast<const uint8*>(id.data()), id.size()); + ScopedJavaLocalRef<jbyteArray> j_secret = ToJavaByteArray( + env, reinterpret_cast<const uint8*>(secret.data()), secret.size()); + + Java_JniInterface_commitPairingCredentials( + env, j_host.obj(), j_id.obj(), j_secret.obj()); } base::android::ScopedJavaLocalRef<jobject> ChromotingJniRuntime::NewBitmap( |