Merge "Support private profile in spinner adapters" into main

This commit is contained in:
Manish Singh
2024-03-19 09:54:58 +00:00
committed by Android (Google) Code Review
6 changed files with 197 additions and 32 deletions

View File

@@ -24,8 +24,10 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.pm.UserInfo;
import android.content.pm.UserProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.platform.test.flag.junit.SetFlagsRule;
import android.widget.FrameLayout;
import android.widget.TextView;
@@ -52,9 +54,12 @@ import java.util.ArrayList;
public class UserAdapterTest {
@Rule
public MockitoRule mRule = MockitoJUnit.rule();
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private final int mPersonalUserId = UserHandle.myUserId();
private static final int WORK_USER_ID = 1;
private static final int PRIVATE_USER_ID = 2;
@Mock
private UserManager mUserManager;
@@ -64,6 +69,8 @@ public class UserAdapterTest {
@Mock
private UserInfo mWorkUserInfo;
@Mock
private UserInfo mPrivateUserInfo;
@Mock
private UserAdapter.OnClickListener mOnClickListener;
@@ -71,11 +78,31 @@ public class UserAdapterTest {
@Spy
private Context mContext = ApplicationProvider.getApplicationContext();
private UserProperties mPersonalUserProperties =
new UserProperties.Builder()
.setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_DEFAULT)
.build();
private UserProperties mWorkUserProperties =
new UserProperties.Builder()
.setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_PAUSED)
.build();
private UserProperties mPrivateUserProperties =
new UserProperties.Builder()
.setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_HIDDEN)
.build();
@Before
public void setUp() {
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mUserManager.getUserInfo(mPersonalUserId)).thenReturn(mPersonalUserInfo);
when(mUserManager.getUserInfo(WORK_USER_ID)).thenReturn(mWorkUserInfo);
when(mUserManager.getUserInfo(PRIVATE_USER_ID)).thenReturn(mPrivateUserInfo);
when(mUserManager.getUserProperties(UserHandle.of(mPersonalUserId)))
.thenReturn(mPersonalUserProperties);
when(mUserManager.getUserProperties(UserHandle.of(WORK_USER_ID)))
.thenReturn(mWorkUserProperties);
when(mUserManager.getUserProperties(UserHandle.of(PRIVATE_USER_ID)))
.thenReturn(mPrivateUserProperties);
}
@Test
@@ -102,6 +129,48 @@ public class UserAdapterTest {
assertThat(userSpinnerAdapter.getUserHandle(1).getIdentifier()).isEqualTo(WORK_USER_ID);
}
@Test
public void createUserSpinnerAdapter_withWorkAndPrivateProfiles_shouldSucceed() {
mSetFlagsRule.enableFlags(
android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE,
android.multiuser.Flags.FLAG_ENABLE_PRIVATE_SPACE_FEATURES,
android.multiuser.Flags.FLAG_HANDLE_INTERLEAVED_SETTINGS_FOR_PRIVATE_SPACE);
when(mUserManager.getUserProfiles()).thenReturn(
Lists.newArrayList(
UserHandle.of(mPersonalUserId),
UserHandle.of(WORK_USER_ID),
UserHandle.of(PRIVATE_USER_ID)));
UserAdapter userSpinnerAdapter =
UserAdapter.createUserSpinnerAdapter(mUserManager, mContext);
assertThat(userSpinnerAdapter.getCount()).isEqualTo(3);
assertThat(userSpinnerAdapter.getUserHandle(0).getIdentifier()).isEqualTo(mPersonalUserId);
assertThat(userSpinnerAdapter.getUserHandle(1).getIdentifier()).isEqualTo(WORK_USER_ID);
assertThat(userSpinnerAdapter.getUserHandle(2).getIdentifier()).isEqualTo(PRIVATE_USER_ID);
}
@Test
public void createUserSpinnerAdapter_withWorkAndQuietPrivateProfile_shouldShowTwoProfiles() {
mSetFlagsRule.enableFlags(
android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE,
android.multiuser.Flags.FLAG_ENABLE_PRIVATE_SPACE_FEATURES,
android.multiuser.Flags.FLAG_HANDLE_INTERLEAVED_SETTINGS_FOR_PRIVATE_SPACE);
when(mUserManager.getUserProfiles()).thenReturn(
Lists.newArrayList(
UserHandle.of(mPersonalUserId),
UserHandle.of(WORK_USER_ID),
UserHandle.of(PRIVATE_USER_ID)));
when(mUserManager.isQuietModeEnabled(UserHandle.of(PRIVATE_USER_ID))).thenReturn(true);
UserAdapter userSpinnerAdapter =
UserAdapter.createUserSpinnerAdapter(mUserManager, mContext);
assertThat(userSpinnerAdapter.getCount()).isEqualTo(2);
assertThat(userSpinnerAdapter.getUserHandle(0).getIdentifier()).isEqualTo(mPersonalUserId);
assertThat(userSpinnerAdapter.getUserHandle(1).getIdentifier()).isEqualTo(WORK_USER_ID);
}
@Test
public void createUserRecycleViewAdapter_canBindViewHolderCorrectly() {
ArrayList<UserHandle> userHandles =