summaryrefslogtreecommitdiffstats
path: root/base/android/jni_array_unittest.cc
diff options
context:
space:
mode:
authordigit@chromium.org <digit@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 15:00:28 +0000
committerdigit@chromium.org <digit@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 15:00:28 +0000
commit65d5835d4734a3106ef715336a05e4c0b3f9e068 (patch)
treebf3e3cd554ee2577ab352ff88599c1c383232512 /base/android/jni_array_unittest.cc
parent33f0eccc6c8fa1616e19fbceeac51c7aed67c9e5 (diff)
downloadchromium_src-65d5835d4734a3106ef715336a05e4c0b3f9e068.zip
chromium_src-65d5835d4734a3106ef715336a05e4c0b3f9e068.tar.gz
chromium_src-65d5835d4734a3106ef715336a05e4c0b3f9e068.tar.bz2
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
Diffstat (limited to 'base/android/jni_array_unittest.cc')
-rw-r--r--base/android/jni_array_unittest.cc36
1 files changed, 36 insertions, 0 deletions
diff --git a/base/android/jni_array_unittest.cc b/base/android/jni_array_unittest.cc
index 7529335..a4e3025 100644
--- a/base/android/jni_array_unittest.cc
+++ b/base/android/jni_array_unittest.cc
@@ -27,5 +27,41 @@ TEST(JniArray, BasicConversions) {
EXPECT_EQ(8U, vec.size());
}
+TEST(JniArray, JavaArrayOfByteArrayToStringVector) {
+ const int kMaxItems = 50;
+ JNIEnv* env = AttachCurrentThread();
+
+ // Create a byte[][] object.
+ ScopedJavaLocalRef<jclass> byte_array_clazz(env, env->FindClass("[B"));
+ ASSERT_TRUE(byte_array_clazz.obj());
+
+ ScopedJavaLocalRef<jobjectArray> array(
+ env, env->NewObjectArray(kMaxItems, byte_array_clazz.obj(), NULL));
+ ASSERT_TRUE(array.obj());
+
+ // Create kMaxItems byte buffers.
+ char text[16];
+ for (int i = 0; i < kMaxItems; ++i) {
+ snprintf(text, sizeof text, "%d", i);
+ ScopedJavaLocalRef<jbyteArray> byte_array = ToJavaByteArray(
+ env, reinterpret_cast<uint8*>(text),
+ static_cast<size_t>(strlen(text)));
+ ASSERT_TRUE(byte_array.obj());
+
+ env->SetObjectArrayElement(array.obj(), i, byte_array.obj());
+ ASSERT_FALSE(HasException(env));
+ }
+
+ // Convert to std::vector<std::string>, check the content.
+ std::vector<std::string> vec;
+ JavaArrayOfByteArrayToStringVector(env, array.obj(), &vec);
+
+ EXPECT_EQ(static_cast<size_t>(kMaxItems), vec.size());
+ for (int i = 0; i < kMaxItems; ++i) {
+ snprintf(text, sizeof text, "%d", i);
+ EXPECT_STREQ(text, vec[i].c_str());
+ }
+}
+
} // namespace android
} // namespace base