Merge "Fix mode icon sharing in modes list" into main
diff --git a/src/com/android/settings/notification/modes/IconUtil.java b/src/com/android/settings/notification/modes/IconUtil.java
index 33d0d96..23817cb 100644
--- a/src/com/android/settings/notification/modes/IconUtil.java
+++ b/src/com/android/settings/notification/modes/IconUtil.java
@@ -60,7 +60,7 @@
 
     private static Drawable applyTint(@NonNull Context context, @NonNull Drawable icon,
             @AttrRes int colorAttr) {
-        icon = icon.mutate();
+        icon = mutateDrawable(context.getResources(), icon);
         icon.setTintList(Utils.getColorAttr(context, colorAttr));
         return icon;
     }
@@ -218,9 +218,9 @@
 
     private static Drawable composeIcons(Resources res, Drawable outer, ColorStateList outerColor,
             @Px int outerSizePx, Drawable icon, ColorStateList iconColor, @Px int iconSizePx) {
-        Drawable background = checkNotNull(outer.getConstantState()).newDrawable(res).mutate();
+        Drawable background = mutateDrawable(res, outer);
         background.setTintList(outerColor);
-        Drawable foreground = checkNotNull(icon.getConstantState()).newDrawable(res).mutate();
+        Drawable foreground = mutateDrawable(res, icon);
         foreground.setTintList(iconColor);
 
         LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] { background, foreground });
@@ -232,4 +232,13 @@
         layerDrawable.setBounds(0, 0, outerSizePx, outerSizePx);
         return layerDrawable;
     }
+
+    private static Drawable mutateDrawable(Resources res, Drawable drawable) {
+        Drawable.ConstantState cs = drawable.getConstantState();
+        if (cs != null) {
+            return cs.newDrawable(res).mutate();
+        } else {
+            return drawable.mutate();
+        }
+    }
 }