Index: ui/gfx/android/java_bitmap.cc |
diff --git a/ui/gfx/android/java_bitmap.cc b/ui/gfx/android/java_bitmap.cc |
index ea0a50fe6a927e133d71336bbcfbe2274cda9d3a..77b29766b5b9d90eec0120b9de6aacfd6bbd5381 100644 |
--- a/ui/gfx/android/java_bitmap.cc |
+++ b/ui/gfx/android/java_bitmap.cc |
@@ -6,6 +6,7 @@ |
#include <android/bitmap.h> |
+#include "base/android/jni_android.h" |
#include "base/android/jni_string.h" |
#include "base/logging.h" |
#include "jni/BitmapHelper_jni.h" |
@@ -86,6 +87,27 @@ ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(const SkBitmap* skbitmap) { |
return jbitmap; |
} |
+ScopedJavaLocalRef<jobjectArray> ConvertToJavaBitmaps( |
+ const std::vector<SkBitmap>& skbitmaps) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jclass> clazz = |
+ base::android::GetClass(env, "android/graphics/Bitmap"); |
+ jobjectArray array = env->NewObjectArray(skbitmaps.size(), clazz.obj(), |
+ nullptr /* initialElement */); |
+ base::android::CheckException(env); |
+ |
+ for (size_t i = 0; i < skbitmaps.size(); ++i) { |
+ if (skbitmaps[i].drawsNothing()) { |
+ env->SetObjectArrayElement(array, i, nullptr); |
+ } else { |
+ env->SetObjectArrayElement(array, i, |
+ ConvertToJavaBitmap(&(skbitmaps[i])).obj()); |
+ } |
+ } |
+ |
+ return ScopedJavaLocalRef<jobjectArray>(env, array); |
+} |
+ |
SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) { |
DCHECK(!jbitmap.size().IsEmpty()); |
DCHECK_GT(jbitmap.stride(), 0U); |