Prevent NPE in CustomTile
The icon is passed by the TileService, so it could null when retrieving
the drawable. Check for null before doing operations on it.
Test: atest CustomTileTest
Fixes: 140479361
Change-Id: I0ee11806c0047e0e524f5201d369bee51beba451
Merged-In: I0ee11806c0047e0e524f5201d369bee51beba451
(cherry picked from commit cfdd8d4093)
This commit is contained in:
@@ -327,6 +327,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
|
||||
final Drawable drawableF = drawable;
|
||||
state.iconSupplier = () -> {
|
||||
if (drawableF == null) return null;
|
||||
Drawable.ConstantState cs = drawableF.getConstantState();
|
||||
if (cs != null) {
|
||||
return new DrawableIcon(cs.newDrawable());
|
||||
|
||||
@@ -125,4 +125,12 @@ class CustomTileTest : SysuiTestCase() {
|
||||
customTile.handleUpdateState(state, null)
|
||||
assertFalse(state.value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNoCrashOnNullDrawable() {
|
||||
customTile.qsTile.icon = mock(Icon::class.java)
|
||||
`when`(customTile.qsTile.icon.loadDrawable(any(Context::class.java)))
|
||||
.thenReturn(null)
|
||||
customTile.handleUpdateState(customTile.newTileState(), null)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user