| Index: base/android/jni_array.cc
|
| diff --git a/base/android/jni_array.cc b/base/android/jni_array.cc
|
| index 2ce04299439f1e45fc6699cda1d02616b78fc4db..52b1679bbd24de5ca301912a17f02705f5549418 100644
|
| --- a/base/android/jni_array.cc
|
| +++ b/base/android/jni_array.cc
|
| @@ -45,6 +45,20 @@ ScopedJavaLocalRef<jbyteArray> ToJavaByteArray(
|
| return ToJavaByteArray(env, bytes.data(), bytes.size());
|
| }
|
|
|
| +ScopedJavaLocalRef<jbooleanArray> ToJavaBooleanArray(JNIEnv* env,
|
| + const bool* bools,
|
| + size_t len) {
|
| + jbooleanArray boolean_array = env->NewBooleanArray(len);
|
| + CheckException(env);
|
| + DCHECK(boolean_array);
|
| +
|
| + env->SetBooleanArrayRegion(boolean_array, 0, len,
|
| + reinterpret_cast<const jboolean*>(bools));
|
| + CheckException(env);
|
| +
|
| + return ScopedJavaLocalRef<jbooleanArray>(env, boolean_array);
|
| +}
|
| +
|
| ScopedJavaLocalRef<jintArray> ToJavaIntArray(
|
| JNIEnv* env, const int* ints, size_t len) {
|
| jintArray int_array = env->NewIntArray(len);
|
| @@ -157,7 +171,7 @@ void AppendJavaStringArrayToStringVector(JNIEnv* env,
|
| for (size_t i = 0; i < len; ++i) {
|
| ScopedJavaLocalRef<jstring> str(env,
|
| static_cast<jstring>(env->GetObjectArrayElement(array, i)));
|
| - ConvertJavaStringToUTF16(env, str.obj(), &((*out)[back + i]));
|
| + ConvertJavaStringToUTF16(env, str.obj(), out->data() + back + i);
|
| }
|
| }
|
|
|
| @@ -173,7 +187,7 @@ void AppendJavaStringArrayToStringVector(JNIEnv* env,
|
| for (size_t i = 0; i < len; ++i) {
|
| ScopedJavaLocalRef<jstring> str(env,
|
| static_cast<jstring>(env->GetObjectArrayElement(array, i)));
|
| - ConvertJavaStringToUTF8(env, str.obj(), &((*out)[back + i]));
|
| + ConvertJavaStringToUTF8(env, str.obj(), out->data() + back + i);
|
| }
|
| }
|
|
|
| @@ -189,7 +203,7 @@ void AppendJavaByteArrayToByteVector(JNIEnv* env,
|
| size_t back = out->size();
|
| out->resize(back + len);
|
| env->GetByteArrayRegion(byte_array, 0, len,
|
| - reinterpret_cast<int8_t*>(&(*out)[back]));
|
| + reinterpret_cast<int8_t*>(out->data() + back));
|
| }
|
|
|
| void JavaByteArrayToByteVector(JNIEnv* env,
|
| @@ -201,6 +215,23 @@ void JavaByteArrayToByteVector(JNIEnv* env,
|
| AppendJavaByteArrayToByteVector(env, byte_array, out);
|
| }
|
|
|
| +void JavaBooleanArrayToBoolVector(JNIEnv* env,
|
| + jbooleanArray boolean_array,
|
| + std::vector<bool>* out) {
|
| + DCHECK(out);
|
| + if (!boolean_array)
|
| + return;
|
| + size_t len = SafeGetArrayLength(env, boolean_array);
|
| + if (!len)
|
| + return;
|
| + out->resize(len);
|
| + // It is not possible to get bool* out of vector<bool>.
|
| + jboolean* values = env->GetBooleanArrayElements(boolean_array, nullptr);
|
| + for (size_t i = 0; i < len; ++i) {
|
| + out->at(i) = static_cast<bool>(values[i]);
|
| + }
|
| +}
|
| +
|
| void JavaIntArrayToIntVector(JNIEnv* env,
|
| jintArray int_array,
|
| std::vector<int>* out) {
|
| @@ -209,9 +240,7 @@ void JavaIntArrayToIntVector(JNIEnv* env,
|
| out->resize(len);
|
| if (!len)
|
| return;
|
| - // TODO(jdduke): Use |out->data()| for pointer access after switch to libc++,
|
| - // both here and in the other conversion routines. See crbug.com/427718.
|
| - env->GetIntArrayRegion(int_array, 0, len, &(*out)[0]);
|
| + env->GetIntArrayRegion(int_array, 0, len, out->data());
|
| }
|
|
|
| void JavaLongArrayToInt64Vector(JNIEnv* env,
|
| @@ -232,7 +261,7 @@ void JavaLongArrayToLongVector(JNIEnv* env,
|
| out->resize(len);
|
| if (!len)
|
| return;
|
| - env->GetLongArrayRegion(long_array, 0, len, &(*out)[0]);
|
| + env->GetLongArrayRegion(long_array, 0, len, out->data());
|
| }
|
|
|
| void JavaFloatArrayToFloatVector(JNIEnv* env,
|
| @@ -243,7 +272,7 @@ void JavaFloatArrayToFloatVector(JNIEnv* env,
|
| out->resize(len);
|
| if (!len)
|
| return;
|
| - env->GetFloatArrayRegion(float_array, 0, len, &(*out)[0]);
|
| + env->GetFloatArrayRegion(float_array, 0, len, out->data());
|
| }
|
|
|
| void JavaArrayOfByteArrayToStringVector(
|
| @@ -274,7 +303,7 @@ void JavaArrayOfIntArrayToIntVector(
|
| for (size_t i = 0; i < len; ++i) {
|
| ScopedJavaLocalRef<jintArray> int_array(
|
| env, static_cast<jintArray>(env->GetObjectArrayElement(array, i)));
|
| - JavaIntArrayToIntVector(env, int_array.obj(), &((*out)[i]));
|
| + JavaIntArrayToIntVector(env, int_array.obj(), &out->at(i));
|
| }
|
| }
|
|
|
|
|