| Index: ui/gfx/android/java_bitmap.cc
|
| diff --git a/ui/gfx/android/java_bitmap.cc b/ui/gfx/android/java_bitmap.cc
|
| index 39a459ecf1d7534513749c726b54fd78730c30a1..f818cfe89002c36ce095314df95410105275b33c 100644
|
| --- a/ui/gfx/android/java_bitmap.cc
|
| +++ b/ui/gfx/android/java_bitmap.cc
|
| @@ -86,19 +86,28 @@ ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(const SkBitmap* skbitmap) {
|
| }
|
|
|
| SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) {
|
| - // TODO(jdduke): Convert to DCHECK's when sufficient data has been capture for
|
| - // crbug.com/341406.
|
| - CHECK_EQ(jbitmap.format(), ANDROID_BITMAP_FORMAT_RGBA_8888);
|
| - CHECK(!jbitmap.size().IsEmpty());
|
| - CHECK_GT(jbitmap.stride(), 0U);
|
| - CHECK(jbitmap.pixels());
|
| + DCHECK(!jbitmap.size().IsEmpty());
|
| + DCHECK_GT(jbitmap.stride(), 0U);
|
| + DCHECK(jbitmap.pixels());
|
|
|
| gfx::Size src_size = jbitmap.size();
|
|
|
| SkBitmap skbitmap;
|
| - skbitmap.allocPixels(SkImageInfo::MakeN32Premul(src_size.width(),
|
| - src_size.height()),
|
| - jbitmap.stride());
|
| + switch (jbitmap.format()) {
|
| + case ANDROID_BITMAP_FORMAT_RGBA_8888:
|
| + skbitmap.allocPixels(SkImageInfo::MakeN32Premul(src_size.width(),
|
| + src_size.height()),
|
| + jbitmap.stride());
|
| + break;
|
| + case ANDROID_BITMAP_FORMAT_A_8:
|
| + skbitmap.allocPixels(SkImageInfo::MakeA8(src_size.width(),
|
| + src_size.height()),
|
| + jbitmap.stride());
|
| + break;
|
| + default:
|
| + CHECK(false) << "Invalid Java bitmap format: " << jbitmap.format();
|
| + break;
|
| + }
|
| const void* src_pixels = jbitmap.pixels();
|
| void* dst_pixels = skbitmap.getPixels();
|
| memcpy(dst_pixels, src_pixels, skbitmap.getSize());
|
|
|