Commit 80ec0c32 authored by jcivelli@chromium.org's avatar jcivelli@chromium.org

Adding new JNI util methods that deal with Java string arrays and use string16.

BUG=None
TEST=None


Review URL: http://codereview.chromium.org/10216001

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133809 0039d316-1c4b-4281-b951-d872f2087c98
parent 6effa201
...@@ -53,6 +53,33 @@ ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfStrings( ...@@ -53,6 +53,33 @@ ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfStrings(
return ScopedJavaLocalRef<jobjectArray>(env, joa); return ScopedJavaLocalRef<jobjectArray>(env, joa);
} }
ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfStrings(
JNIEnv* env, const std::vector<string16>& v) {
ScopedJavaLocalRef<jclass> string_clazz = GetClass(env, "java/lang/String");
jobjectArray joa = env->NewObjectArray(v.size(), string_clazz.obj(), NULL);
CheckException(env);
for (size_t i = 0; i < v.size(); ++i) {
ScopedJavaLocalRef<jstring> item = ConvertUTF16ToJavaString(env, v[i]);
env->SetObjectArrayElement(joa, i, item.obj());
}
return ScopedJavaLocalRef<jobjectArray>(env, joa);
}
void AppendJavaStringArrayToStringVector(JNIEnv* env,
const JavaRef<jobjectArray>& array,
std::vector<string16>* out) {
DCHECK(out);
if (array.is_null())
return;
jsize len = env->GetArrayLength(array.obj());
for (jsize i = 0; i < len; ++i) {
ScopedJavaLocalRef<jstring> str(env,
static_cast<jstring>(env->GetObjectArrayElement(array.obj(), i)));
out->push_back(ConvertJavaStringToUTF16(str));
}
}
void AppendJavaByteArrayToByteVector(JNIEnv* env, void AppendJavaByteArrayToByteVector(JNIEnv* env,
jbyteArray byte_array, jbyteArray byte_array,
std::vector<uint8>* out) { std::vector<uint8>* out) {
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "base/basictypes.h" #include "base/basictypes.h"
#include "base/string16.h"
namespace base { namespace base {
namespace android { namespace android {
...@@ -26,6 +27,14 @@ ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfByteArray( ...@@ -26,6 +27,14 @@ ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfByteArray(
ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfStrings( ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfStrings(
JNIEnv* env, const std::vector<std::string>& v); JNIEnv* env, const std::vector<std::string>& v);
ScopedJavaLocalRef<jobjectArray> ToJavaArrayOfStrings(
JNIEnv* env, const std::vector<string16>& v);
// Converts a Java string array to a native array.
void AppendJavaStringArrayToStringVector(JNIEnv* env,
const JavaRef<jobjectArray>& array,
std::vector<string16>* out);
// Appends the Java bytes in |bytes_array| onto the end of |out|. // Appends the Java bytes in |bytes_array| onto the end of |out|.
void AppendJavaByteArrayToByteVector(JNIEnv* env, void AppendJavaByteArrayToByteVector(JNIEnv* env,
jbyteArray byte_array, jbyteArray byte_array,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment