diff options
author | digit@chromium.org <digit@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 15:00:28 +0000 |
---|---|---|
committer | digit@chromium.org <digit@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 15:00:28 +0000 |
commit | 65d5835d4734a3106ef715336a05e4c0b3f9e068 (patch) | |
tree | bf3e3cd554ee2577ab352ff88599c1c383232512 /base/android/jni_array_unittest.cc | |
parent | 33f0eccc6c8fa1616e19fbceeac51c7aed67c9e5 (diff) | |
download | chromium_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.cc | 36 |
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 |