summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaekyun <jaekyun@chromium.org>2015-05-11 17:11:03 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-12 00:11:58 +0000
commita1d10e49da54d73e112c0a378b342bd73fa0f3a7 (patch)
tree4a3f3b3735390de32be7cc4b86572cdaaa4bab9f
parent4b6e14e878a0cea357943e248e99279a384256bb (diff)
downloadchromium_src-a1d10e49da54d73e112c0a378b342bd73fa0f3a7.zip
chromium_src-a1d10e49da54d73e112c0a378b342bd73fa0f3a7.tar.gz
chromium_src-a1d10e49da54d73e112c0a378b342bd73fa0f3a7.tar.bz2
Check whether Java bitmap memory size is same to one of SkBitmap
This is to understand why Issue 476559 is happening. BUG=476559 Review URL: https://codereview.chromium.org/1136053003 Cr-Commit-Position: refs/heads/master@{#329288}
-rw-r--r--ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java6
-rw-r--r--ui/gfx/android/java_bitmap.cc2
-rw-r--r--ui/gfx/android/java_bitmap.h2
3 files changed, 9 insertions, 1 deletions
diff --git a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
index 7ad6e92..d921efa 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
@@ -44,7 +44,7 @@ public class BitmapHelper {
}
}
- /**
+ /**
* Provides a matching Bitmap.Config for the enum config value passed.
*
* @param bitmapFormatValue The Bitmap Configuration enum value.
@@ -64,4 +64,8 @@ public class BitmapHelper {
}
}
+ @CalledByNative
+ private static int getByteCount(Bitmap bitmap) {
+ return bitmap.getByteCount();
+ }
}
diff --git a/ui/gfx/android/java_bitmap.cc b/ui/gfx/android/java_bitmap.cc
index 37da9d9..ea0a50f 100644
--- a/ui/gfx/android/java_bitmap.cc
+++ b/ui/gfx/android/java_bitmap.cc
@@ -29,6 +29,7 @@ JavaBitmap::JavaBitmap(jobject bitmap)
size_ = gfx::Size(info.width, info.height);
format_ = info.format;
stride_ = info.stride;
+ byte_count_ = Java_BitmapHelper_getByteCount(AttachCurrentThread(), bitmap_);
}
JavaBitmap::~JavaBitmap() {
@@ -108,6 +109,7 @@ SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) {
CHECK(false) << "Invalid Java bitmap format: " << jbitmap.format();
break;
}
+ CHECK_EQ(jbitmap.byte_count(), static_cast<int>(skbitmap.getSize()));
const void* src_pixels = jbitmap.pixels();
void* dst_pixels = skbitmap.getPixels();
memcpy(dst_pixels, src_pixels, skbitmap.getSize());
diff --git a/ui/gfx/android/java_bitmap.h b/ui/gfx/android/java_bitmap.h
index 31db157..6c615ab 100644
--- a/ui/gfx/android/java_bitmap.h
+++ b/ui/gfx/android/java_bitmap.h
@@ -37,6 +37,7 @@ class GFX_EXPORT JavaBitmap {
// Formats are in android/bitmap.h; e.g. ANDROID_BITMAP_FORMAT_RGBA_8888
inline int format() const { return format_; }
inline uint32_t stride() const { return stride_; }
+ inline int byte_count() const { return byte_count_; }
// Registers methods with JNI and returns true if succeeded.
static bool RegisterJavaBitmap(JNIEnv* env);
@@ -47,6 +48,7 @@ class GFX_EXPORT JavaBitmap {
gfx::Size size_;
int format_;
uint32_t stride_;
+ int byte_count_;
DISALLOW_COPY_AND_ASSIGN(JavaBitmap);
};