Index: ui/gfx/android/java_bitmap.cc |
diff --git a/ui/gfx/android/java_bitmap.cc b/ui/gfx/android/java_bitmap.cc |
index 5988befeddc20976d70193d8cff338f6caee987b..d1f644f4a4f67833bbca9cae15f811599886c7d6 100644 |
--- a/ui/gfx/android/java_bitmap.cc |
+++ b/ui/gfx/android/java_bitmap.cc |
@@ -9,6 +9,7 @@ |
#include "base/android/jni_string.h" |
#include "base/logging.h" |
#include "jni/BitmapHelper_jni.h" |
+#include "skia/ext/image_operations.h" |
#include "ui/gfx/size.h" |
using base::android::AttachCurrentThread; |
@@ -68,17 +69,6 @@ ScopedJavaLocalRef<jobject> CreateJavaBitmap(int width, |
AttachCurrentThread(), width, height, java_bitmap_config); |
} |
-ScopedJavaLocalRef<jobject> CreateJavaBitmapFromAndroidResource( |
- const char* name, |
- gfx::Size size) { |
- DCHECK(name); |
- DCHECK(!size.IsEmpty()); |
- JNIEnv* env = AttachCurrentThread(); |
- ScopedJavaLocalRef<jstring> jname(ConvertUTF8ToJavaString(env, name)); |
- return Java_BitmapHelper_decodeDrawableResource( |
- env, jname.obj(), size.width(), size.height()); |
-} |
- |
ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(const SkBitmap* skbitmap) { |
DCHECK(skbitmap); |
DCHECK(!skbitmap->isNull()); |
@@ -96,6 +86,26 @@ ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(const SkBitmap* skbitmap) { |
return jbitmap; |
} |
+SkBitmap CreateSkBitmapFromAndroidResource(const char* name, gfx::Size size) { |
+ DCHECK(name); |
+ DCHECK(!size.IsEmpty()); |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jstring> jname(ConvertUTF8ToJavaString(env, name)); |
+ base::android::ScopedJavaLocalRef<jobject> jobj = |
+ Java_BitmapHelper_decodeDrawableResource( |
+ env, jname.obj(), size.width(), size.height()); |
+ |
+ if (jobj.is_null()) |
+ return SkBitmap(); |
+ |
+ SkBitmap bitmap = CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(jobj.obj())); |
+ if (bitmap.isNull()) |
+ return bitmap; |
+ |
+ return skia::ImageOperations::Resize( |
+ bitmap, skia::ImageOperations::RESIZE_BOX, size.width(), size.height()); |
+} |
+ |
SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) { |
// TODO(jdduke): Convert to DCHECK's when sufficient data has been capture for |
// crbug.com/341406. |