summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jernej Virag <jernej@google.com> 2022-04-21 14:32:39 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-04-21 14:32:39 +0000
commit0b7126435e1a4a45f18311a61d45dcf9be67362d (patch)
treec2fc96cac9b5236081997f8ef2c7661e9ae91516
parent9812c2dca9df6e17fd8fc2209494d3dced8514bd (diff)
parente02f9e390dcc6dae7766a7452f5a74cc16149d03 (diff)
Merge "Prevent LocalImageResolver from upscaling images" into tm-dev am: e02f9e390d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17884323 Change-Id: I704e45a3dc3fe23899e150470ee9c266ed08b266 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-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));