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:
@@ -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;
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user