Snap for 10162339 from 13c67402d17a3dc3597634fc8795c55e433cd110 to udc-release am: 0ddb9a9b8e
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/robolectric-shadows/+/23339043
Change-Id: Id6378188927b6ae990e40fdc601fbf2ad264a421
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ImageUtil.java b/shadows/framework/src/main/java/org/robolectric/shadows/ImageUtil.java
index 534a0ee..83ed5a7 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ImageUtil.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ImageUtil.java
@@ -21,7 +21,25 @@
public class ImageUtil {
private static boolean initialized;
+ public static class ImageInfo {
+
+ public final int width;
+ public final int height;
+ public final String mimeType;
+
+ ImageInfo(int width, int height, String mimeType) {
+ this.width = width;
+ this.height = height;
+ this.mimeType = mimeType;
+ }
+ }
+
public static Point getImageSizeFromStream(InputStream is) {
+ ImageInfo info = getImageInfoFromStream(is);
+ return new Point(info.width, info.height);
+ }
+
+ public static ImageInfo getImageInfoFromStream(InputStream is) {
if (!initialized) {
// Stops ImageIO from creating temp files when reading images
// from input stream.
@@ -37,7 +55,7 @@
ImageReader reader = readers.next();
try {
reader.setInput(imageStream);
- return new Point(reader.getWidth(0), reader.getHeight(0));
+ return new ImageInfo(reader.getWidth(0), reader.getHeight(0), "image/" + reader.getFormatName());
} finally {
reader.dispose();
}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowImageDecoder.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowImageDecoder.java
index fbe48ac..b7efad5 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowImageDecoder.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowImageDecoder.java
@@ -39,12 +39,14 @@
private final int height;
private final boolean animated = false;
private final boolean ninePatch;
+ private final String mimeType;
ImgStream() {
InputStream inputStream = getInputStream();
- final Point size = ImageUtil.getImageSizeFromStream(inputStream);
- this.width = size == null ? 10 : size.x;
- this.height = size == null ? 10 : size.y;
+ final ImageUtil.ImageInfo info = ImageUtil.getImageInfoFromStream(inputStream);
+ this.width = info == null ? 10 : info.width;
+ this.height = info == null ? 10 : info.height;
+ this.mimeType = info == null ? "" : info.mimeType;
if (inputStream instanceof AssetManager.AssetInputStream) {
ShadowAssetInputStream sis = Shadow.extract(inputStream);
this.ninePatch = sis.isNinePatch();
@@ -70,6 +72,10 @@
boolean isNinePatch() {
return ninePatch;
}
+
+ String getMimeType() {
+ return mimeType;
+ }
}
private static final class CppImageDecoder {
@@ -80,6 +86,9 @@
this.imgStream = imgStream;
}
+ public String getMimeType() {
+ return imgStream.getMimeType();
+ }
}
private static final NativeObjRegistry<CppImageDecoder> NATIVE_IMAGE_DECODER_REGISTRY =
@@ -238,8 +247,7 @@
static String ImageDecoder_nGetMimeType(long nativePtr) {
CppImageDecoder decoder = NATIVE_IMAGE_DECODER_REGISTRY.getNativeObject(nativePtr);
- // return encodedFormatToString(decoder.mCodec.getEncodedFormat());
- throw new UnsupportedOperationException();
+ return decoder.getMimeType();
}
static ColorSpace ImageDecoder_nGetColorSpace(long nativePtr) {
@@ -247,7 +255,7 @@
// auto colorType = codec.computeOutputColorType(codec.getInfo().colorType());
// sk_sp<SkColorSpace> colorSpace = codec.computeOutputColorSpace(colorType);
// return GraphicsJNI.getColorSpace(colorSpace, colorType);
- throw new UnsupportedOperationException();
+ return null;
}