Add check if bitmap is hardware in Bitmap.sameAs

Test: BitmapTests#testHardwareSameAs
bug:30999911
Change-Id: I644776c1ad258fc84d5c2c2ae09bf0859424ee48
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index b96e8bd..673cf86 100755
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -1131,8 +1131,19 @@
                               jlong bm1Handle) {
     SkBitmap bm0;
     SkBitmap bm1;
-    reinterpret_cast<BitmapWrapper*>(bm0Handle)->getSkBitmap(&bm0);
-    reinterpret_cast<BitmapWrapper*>(bm1Handle)->getSkBitmap(&bm1);
+
+    LocalScopedBitmap bitmap0(bm0Handle);
+    LocalScopedBitmap bitmap1(bm1Handle);
+
+    // Paying the price for making Hardware Bitmap as Config:
+    // later check for colorType will pass successfully,
+    // because Hardware Config internally may be RGBA8888 or smth like that.
+    if (bitmap0->bitmap().isHardware() != bitmap1->bitmap().isHardware()) {
+        return JNI_FALSE;
+    }
+
+    bitmap0->bitmap().getSkBitmap(&bm0);
+    bitmap1->bitmap().getSkBitmap(&bm1);
     if (bm0.width() != bm1.width() ||
         bm0.height() != bm1.height() ||
         bm0.colorType() != bm1.colorType() ||