Merge "Support private profile in spinner adapters" into main
This commit is contained in:
@@ -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 =
|
||||
|
Reference in New Issue
Block a user