diff options
| author | 2022-04-21 14:32:39 +0000 | |
|---|---|---|
| committer | 2022-04-21 14:32:39 +0000 | |
| commit | 0b7126435e1a4a45f18311a61d45dcf9be67362d (patch) | |
| tree | c2fc96cac9b5236081997f8ef2c7661e9ae91516 | |
| parent | 9812c2dca9df6e17fd8fc2209494d3dced8514bd (diff) | |
| parent | e02f9e390dcc6dae7766a7452f5a74cc16149d03 (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.java | 5 | ||||
| -rw-r--r-- | core/tests/coretests/src/com/android/internal/widget/LocalImageResolverTest.java | 11 |
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)); |