base/android/jni_array.h: Add JavaArrayOfByteArraysToStringVector()

This will be used by the SSL client certificate support code to
return the certificate chain as a vector of DER-encoded X.509
certificates.

BUG=none


Review URL: https://chromiumcodereview.appspot.com/11418287

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171224 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/android/jni_array.cc b/base/android/jni_array.cc
index 53027c72..9b12531 100644
--- a/base/android/jni_array.cc
+++ b/base/android/jni_array.cc
@@ -127,5 +127,23 @@
   env->ReleaseIntArrayElements(array, ints, JNI_ABORT);
 }
 
+void JavaArrayOfByteArrayToStringVector(
+    JNIEnv* env,
+    jobjectArray array,
+    std::vector<std::string>* out) {
+  DCHECK(out);
+  out->clear();
+  jsize len = env->GetArrayLength(array);
+  for (jsize i = 0; i < len; ++i) {
+    jbyteArray bytes_array = static_cast<jbyteArray>(
+        env->GetObjectArrayElement(array, i));
+    jsize bytes_len = env->GetArrayLength(bytes_array);
+    jbyte* bytes = env->GetByteArrayElements(bytes_array, NULL);
+    out->push_back(
+        std::string(reinterpret_cast<const char*>(bytes), bytes_len));
+    env->ReleaseByteArrayElements(bytes_array, bytes, JNI_ABORT);
+  }
+}
+
 }  // namespace android
 }  // namespace base