Check purely for the presence of a managed profile

including the parent user, as here we care only about the existence of
the managed profile.

This maintains the behaviour prior to private space changes.

Bug: 313128792
Test: manual
Test: atest ProfileSelectFragmentTest
Change-Id: I1d253f95ca534b48acfdb4c1c8b84368d731dded
This commit is contained in:
Manish Singh
2023-11-28 16:06:31 +00:00
parent eaafcbcb28
commit d503f25692
3 changed files with 30 additions and 14 deletions

View File

@@ -467,6 +467,22 @@ public final class Utils extends com.android.settingslib.Utils {
return null; return null;
} }
/**
* Returns true if a profile of specified userType exists. Note that it considers all profiles,
* including the disabled profiles and the parent user itself.
*/
public static boolean doesProfileOfTypeExists(
@NonNull UserManager userManager, @ProfileType int userType) {
final List<UserInfo> userProfiles = userManager.getProfiles(UserHandle.myUserId());
String umUserType = getUmUserType(userType);
for (UserInfo profile : userProfiles) {
if (Objects.equals(umUserType, profile.userType)) {
return true;
}
}
return false;
}
private static String getUmUserType(@ProfileType int userType) throws IllegalArgumentException { private static String getUmUserType(@ProfileType int userType) throws IllegalArgumentException {
if (userType == ProfileType.WORK) { if (userType == ProfileType.WORK) {
return USER_TYPE_PROFILE_MANAGED; return USER_TYPE_PROFILE_MANAGED;

View File

@@ -322,7 +322,7 @@ public abstract class ProfileSelectFragment extends DashboardFragment {
personalFragment.setArguments(personalOnly); personalFragment.setArguments(personalOnly);
fragments.add(personalFragment); fragments.add(personalFragment);
if (managedProfileInfoProvider.getManagedProfile(context) != null) { if (managedProfileInfoProvider.isManagedProfilePresent(context)) {
final Bundle workOnly = bundle != null ? bundle.deepCopy() : new Bundle(); final Bundle workOnly = bundle != null ? bundle.deepCopy() : new Bundle();
workOnly.putInt(EXTRA_PROFILE, ProfileType.WORK); workOnly.putInt(EXTRA_PROFILE, ProfileType.WORK);
final Fragment workFragment = final Fragment workFragment =
@@ -361,8 +361,9 @@ public abstract class ProfileSelectFragment extends DashboardFragment {
} }
interface ManagedProfileInfoProvider { interface ManagedProfileInfoProvider {
default UserHandle getManagedProfile(Context context) { default boolean isManagedProfilePresent(Context context) {
return Utils.getManagedProfile(context.getSystemService(UserManager.class)); return Utils.doesProfileOfTypeExists(
context.getSystemService(UserManager.class), ProfileType.WORK);
} }
} }

View File

@@ -32,7 +32,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Flags; import android.os.Flags;
import android.os.UserHandle;
import android.platform.test.flag.junit.SetFlagsRule; import android.platform.test.flag.junit.SetFlagsRule;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@@ -177,8 +176,8 @@ public class ProfileSelectFragmentTest {
}, },
new ProfileSelectFragment.ManagedProfileInfoProvider() { new ProfileSelectFragment.ManagedProfileInfoProvider() {
@Override @Override
public UserHandle getManagedProfile(Context context) { public boolean isManagedProfilePresent(Context context) {
return null; return false;
} }
}); });
assertThat(fragments).hasLength(1); assertThat(fragments).hasLength(1);
@@ -201,8 +200,8 @@ public class ProfileSelectFragmentTest {
}, },
new ProfileSelectFragment.ManagedProfileInfoProvider() { new ProfileSelectFragment.ManagedProfileInfoProvider() {
@Override @Override
public UserHandle getManagedProfile(Context context) { public boolean isManagedProfilePresent(Context context) {
return null; return false;
} }
}); });
assertThat(fragments).hasLength(2); assertThat(fragments).hasLength(2);
@@ -225,8 +224,8 @@ public class ProfileSelectFragmentTest {
}, },
new ProfileSelectFragment.ManagedProfileInfoProvider() { new ProfileSelectFragment.ManagedProfileInfoProvider() {
@Override @Override
public UserHandle getManagedProfile(Context context) { public boolean isManagedProfilePresent(Context context) {
return new UserHandle(123); return true;
} }
}); });
assertThat(fragments).hasLength(2); assertThat(fragments).hasLength(2);
@@ -249,8 +248,8 @@ public class ProfileSelectFragmentTest {
}, },
new ProfileSelectFragment.ManagedProfileInfoProvider() { new ProfileSelectFragment.ManagedProfileInfoProvider() {
@Override @Override
public UserHandle getManagedProfile(Context context) { public boolean isManagedProfilePresent(Context context) {
return new UserHandle(123); return true;
} }
}); });
assertThat(fragments).hasLength(3); assertThat(fragments).hasLength(3);
@@ -274,8 +273,8 @@ public class ProfileSelectFragmentTest {
}, },
new ProfileSelectFragment.ManagedProfileInfoProvider() { new ProfileSelectFragment.ManagedProfileInfoProvider() {
@Override @Override
public UserHandle getManagedProfile(Context context) { public boolean isManagedProfilePresent(Context context) {
return new UserHandle(123); return true;
} }
}); });
assertThat(fragments).hasLength(3); assertThat(fragments).hasLength(3);