summaryrefslogtreecommitdiffstats
path: root/remoting/client
diff options
context:
space:
mode:
authorlambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-30 01:19:44 +0000
committerlambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-30 01:19:44 +0000
commit7055e39711054760e139ff58f3369aa7386d26d4 (patch)
treefd0b1f1ccc6d80b72ee531f15bf42176272a09a9 /remoting/client
parent415c3399c0aac32c5f7e7ea403fd2d5e9ca0bb8d (diff)
downloadchromium_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.cc24
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(