summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/widget/LocalImageResolver.java5
-rw-r--r--core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java11
2 files changed, 16 insertions, 0 deletions
diff --git a/core/java/com/android/internal/widget/LocalImageResolver.java b/core/java/com/android/internal/widget/LocalImageResolver.java
index c9953513a97a..b866723954b5 100644
--- a/core/java/com/android/internal/widget/LocalImageResolver.java
+++ b/core/java/com/android/internal/widget/LocalImageResolver.java
@@ -198,6 +198,11 @@ public class LocalImageResolver {
}
final Size size = info.getSize();
+ if (size.getWidth() <= maxWidth && size.getHeight() <= maxHeight) {
+ // We don't want to upscale images needlessly.
+ return;
+ }
+
if (size.getWidth() > size.getHeight()) {
if (size.getWidth() > maxWidth) {
final int targetHeight = size.getHeight() * maxWidth / size.getWidth();
diff --git a/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java b/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java
index 033c3cae5beb..c63d18bfa531 100644
--- a/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java
@@ -195,6 +195,17 @@ public class LocalImageResolverTest {
}
@Test
+ public void resolveImage_smallBitmapIcon_passedSmallerSize_dontResize() {
+ Icon icon = Icon.createWithResource(mContext.getResources(), R.drawable.test32x24);
+ Drawable d = LocalImageResolver.resolveImage(icon, mContext, 600, 450);
+
+ assertThat(d).isInstanceOf(BitmapDrawable.class);
+ BitmapDrawable bd = (BitmapDrawable) d;
+ assertThat(bd.getBitmap().getWidth()).isEqualTo(32);
+ assertThat(bd.getBitmap().getHeight()).isEqualTo(24);
+ }
+
+ @Test
public void resolveImage_largeBitmapIcon_passedSize_resizeToDefinedSize() {
Icon icon = Icon.createWithBitmap(
BitmapFactory.decodeResource(mContext.getResources(), R.drawable.big_a));