Fix crash when loading album art by resource am: d0c1f811af

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19366451

Change-Id: I475a264619e17e84997d40ddff4032eb3e379b9e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Beth Thibodeau
2022-07-21 21:14:58 +00:00
committed by Automerger Merge Worker
2 changed files with 28 additions and 2 deletions

View File

@@ -631,9 +631,22 @@ public class MediaControlPanel {
Drawable artwork; Drawable artwork;
boolean isArtworkBound; boolean isArtworkBound;
Icon artworkIcon = data.getArtwork(); Icon artworkIcon = data.getArtwork();
WallpaperColors wallpaperColors = null;
if (artworkIcon != null) { if (artworkIcon != null) {
WallpaperColors wallpaperColors = WallpaperColors if (artworkIcon.getType() == Icon.TYPE_BITMAP
.fromBitmap(artworkIcon.getBitmap()); || artworkIcon.getType() == Icon.TYPE_ADAPTIVE_BITMAP) {
// Avoids extra processing if this is already a valid bitmap
wallpaperColors = WallpaperColors
.fromBitmap(artworkIcon.getBitmap());
} else {
Drawable artworkDrawable = artworkIcon.loadDrawable(mContext);
if (artworkDrawable != null) {
wallpaperColors = WallpaperColors
.fromDrawable(artworkIcon.loadDrawable(mContext));
}
}
}
if (wallpaperColors != null) {
mutableColorScheme = new ColorScheme(wallpaperColors, true, Style.CONTENT); mutableColorScheme = new ColorScheme(wallpaperColors, true, Style.CONTENT);
artwork = getScaledBackground(artworkIcon, width, height); artwork = getScaledBackground(artworkIcon, width, height);
isArtworkBound = true; isArtworkBound = true;

View File

@@ -546,6 +546,19 @@ public class MediaControlPanelTest : SysuiTestCase() {
verify(albumView).setLayerType(View.LAYER_TYPE_HARDWARE, null) verify(albumView).setLayerType(View.LAYER_TYPE_HARDWARE, null)
} }
@Test
fun bindAlbumView_artUsesResource() {
val albumArt = Icon.createWithResource(context, R.drawable.ic_android)
val state = mediaData.copy(artwork = albumArt)
player.attachPlayer(viewHolder)
player.bindPlayer(state, PACKAGE)
bgExecutor.runAllReady()
mainExecutor.runAllReady()
verify(albumView).setImageDrawable(any(Drawable::class.java))
}
@Test @Test
fun bindAlbumView_setAfterExecutors() { fun bindAlbumView_setAfterExecutors() {
val bmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888) val bmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)