diff options
| author | 2023-03-03 19:47:36 +0000 | |
|---|---|---|
| committer | 2023-03-03 19:47:36 +0000 | |
| commit | b14b8f1ee5b3fa530cb39bab7c960163e503884f (patch) | |
| tree | 24a181ce24206bc4751de388367833c83442d0b7 | |
| parent | 68ba3e5a72a670e88c849398b7c02757df9bcd93 (diff) | |
| parent | aee5a4332a78d2132e768b07acd6a35fe75a3e13 (diff) | |
Merge "Add a recycle bitmap check before extracting wallpaper color" into tm-qpr-dev am: aee5a4332a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21673827
Change-Id: If0578fb831df4d453d1573eeeef02492395e7247
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java | 11 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt | 13 |
2 files changed, 20 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java index b1d6f97e9b67..4ddff530e658 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java @@ -928,13 +928,16 @@ public class MediaControlPanel { if (artworkIcon.getType() == Icon.TYPE_BITMAP || artworkIcon.getType() == Icon.TYPE_ADAPTIVE_BITMAP) { // Avoids extra processing if this is already a valid bitmap - return WallpaperColors - .fromBitmap(artworkIcon.getBitmap()); + Bitmap artworkBitmap = artworkIcon.getBitmap(); + if (artworkBitmap.isRecycled()) { + Log.d(TAG, "Cannot load wallpaper color from a recycled bitmap"); + return null; + } + return WallpaperColors.fromBitmap(artworkBitmap); } else { Drawable artworkDrawable = artworkIcon.loadDrawable(mContext); if (artworkDrawable != null) { - return WallpaperColors - .fromDrawable(artworkIcon.loadDrawable(mContext)); + return WallpaperColors.fromDrawable(artworkDrawable); } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt index 9a5f08084e0a..fd353afff7c0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt @@ -731,6 +731,19 @@ public class MediaControlPanelTest : SysuiTestCase() { } @Test + fun getWallpaperColor_recycledBitmap_notCrashing() { + // Setup redArt icon. + val redBmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888) + val redArt = Icon.createWithBitmap(redBmp) + + // Recycle bitmap of redArt icon. + redArt.bitmap.recycle() + + // get wallpaperColor without illegal exception. + player.getWallpaperColor(redArt) + } + + @Test fun bind_seekBarDisabled_hasActions_seekBarVisibilityIsSetToInvisible() { useRealConstraintSets() |