Don't show corp badge for supervised users
Some users have a profile owner, not because they are a corp user, but
because they are supervised. Such users should not have a corp badge
shown.
Bug: 202042272
Test: manual
Change-Id: If5238035440d79aff6b2b0c926286840b4269c45
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java b/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java
index 71bf9f6..a781a62 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java
@@ -175,9 +175,12 @@
public UserIconDrawable setBadgeIfManagedUser(Context context, int userId) {
Drawable badge = null;
if (userId != UserHandle.USER_NULL) {
- boolean isManaged = context.getSystemService(DevicePolicyManager.class)
- .getProfileOwnerAsUser(userId) != null;
- if (isManaged) {
+ DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+ boolean isCorp =
+ dpm.getProfileOwnerAsUser(userId) != null // has an owner
+ && dpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(UserHandle.of(userId))
+ == null; // and has no supervisor
+ if (isCorp) {
badge = getDrawableForDisplayDensity(
context, com.android.internal.R.drawable.ic_corp_badge_case);
}