aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-19 01:22:36 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-19 01:22:36 +0000
commit0ddb9a9b8e0ee612033df55bcee8620dcde65510 (patch)
treeb525d4e63285a47329bac37c594a6b9eb3980bfa
parenta1434d9ea24b3ebfec37abbc3bb328e7e3a789e9 (diff)
parent13c67402d17a3dc3597634fc8795c55e433cd110 (diff)
downloadrobolectric-shadows-android14-s2-release.tar.gz
Change-Id: If4b5d950491935e8441d8946ee50a1c1e3021cc0
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ImageUtil.java20
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowImageDecoder.java20
2 files changed, 33 insertions, 7 deletions
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 534a0eebc..83ed5a7b9 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 @@ import javax.imageio.stream.ImageOutputStream;
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 @@ public class ImageUtil {
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 fbe48ac8b..b7efad575 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 @@ public class ShadowImageDecoder {
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 @@ public class ShadowImageDecoder {
boolean isNinePatch() {
return ninePatch;
}
+
+ String getMimeType() {
+ return mimeType;
+ }
}
private static final class CppImageDecoder {
@@ -80,6 +86,9 @@ public class ShadowImageDecoder {
this.imgStream = imgStream;
}
+ public String getMimeType() {
+ return imgStream.getMimeType();
+ }
}
private static final NativeObjRegistry<CppImageDecoder> NATIVE_IMAGE_DECODER_REGISTRY =
@@ -238,8 +247,7 @@ public class ShadowImageDecoder {
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 @@ public class ShadowImageDecoder {
// auto colorType = codec.computeOutputColorType(codec.getInfo().colorType());
// sk_sp<SkColorSpace> colorSpace = codec.computeOutputColorSpace(colorType);
// return GraphicsJNI.getColorSpace(colorSpace, colorType);
- throw new UnsupportedOperationException();
+ return null;
}