Align badging logic with platform IconDrawableFactory.

The current logic in BaseIconFactory is only trying to add the user
badge if the user passed in isn't null and isn't the current user,
then if no such attempt is made, try to add an instant app badge. This
is causing user badge to disappear if the current user is a work
profile. Meanwhile, the badging logic in IconDrawableFactory is to try
to add the instant app badge first, and then always try to add the
user badge.

Bug: 132625654
Test: manually test as in b/128625591
Change-Id: Ia5b456f1f27095d546504266a1a90034105c9ae9
Merged-In: I2241bdb524ca6bc66e545a0ec8433119e0448358
(cherry picked from commit bdb0236125922a3a9b20fbaa8ecd1d2477b48ed5)
This commit is contained in:
Hai Zhang 2019-05-20 11:22:46 -07:00 committed by Hyunyoung Song
parent a3ea27de39
commit f58ba9ca79
1 changed files with 7 additions and 10 deletions

View File

@ -171,22 +171,19 @@ public class BaseIconFactory implements AutoCloseable {
mCanvas.setBitmap(null);
}
final Bitmap result;
if (user != null && !Process.myUserHandle().equals(user)) {
if (isInstantApp) {
badgeWithDrawable(bitmap, mContext.getDrawable(R.drawable.ic_instant_app_badge));
}
if (user != null) {
BitmapDrawable drawable = new FixedSizeBitmapDrawable(bitmap);
Drawable badged = mPm.getUserBadgedIcon(drawable, user);
if (badged instanceof BitmapDrawable) {
result = ((BitmapDrawable) badged).getBitmap();
bitmap = ((BitmapDrawable) badged).getBitmap();
} else {
result = createIconBitmap(badged, 1f);
bitmap = createIconBitmap(badged, 1f);
}
} else if (isInstantApp) {
badgeWithDrawable(bitmap, mContext.getDrawable(R.drawable.ic_instant_app_badge));
result = bitmap;
} else {
result = bitmap;
}
return BitmapInfo.fromBitmap(result, mDisableColorExtractor ? null : mColorExtractor);
return BitmapInfo.fromBitmap(bitmap, mDisableColorExtractor ? null : mColorExtractor);
}
public Bitmap createScaledBitmapWithoutShadow(Drawable icon, boolean shrinkNonAdaptiveIcons) {