Add setSeedAccountName(), setSeedAccountOptions() and clearSeedAccountData() for ShadowUserManager
PiperOrigin-RevId: 328401608
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowUserManagerTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowUserManagerTest.java
index 926e3ed..f4e1f78 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowUserManagerTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowUserManagerTest.java
@@ -25,6 +25,7 @@
import android.os.Bundle;
import android.os.Looper;
import android.os.Parcel;
+import android.os.PersistableBundle;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
@@ -46,6 +47,7 @@
private static final int TEST_USER_HANDLE = 0;
private static final int PROFILE_USER_HANDLE = 2;
private static final String PROFILE_USER_NAME = "profile";
+ private static final String SEED_ACCOUNT_NAME = "seed_account_name";
private static final String SEED_ACCOUNT_TYPE = "seed_account_type";
private static final int PROFILE_USER_FLAGS = 0;
@@ -289,7 +291,16 @@
}
@Test
- @Config(minSdk = Build.VERSION_CODES.Q)
+ @Config(minSdk = Build.VERSION_CODES.N)
+ public void setSeedAccountName() {
+ assertThat(userManager.getSeedAccountName()).isNull();
+
+ shadowOf(userManager).setSeedAccountName(SEED_ACCOUNT_NAME);
+ assertThat(userManager.getSeedAccountName()).isEqualTo(SEED_ACCOUNT_NAME);
+ }
+
+ @Test
+ @Config(minSdk = Build.VERSION_CODES.N)
public void setSeedAccountType() {
assertThat(userManager.getSeedAccountType()).isNull();
@@ -298,6 +309,34 @@
}
@Test
+ @Config(minSdk = Build.VERSION_CODES.N)
+ public void setSeedAccountOptions() {
+ assertThat(userManager.getSeedAccountOptions()).isNull();
+
+ PersistableBundle options = new PersistableBundle();
+ shadowOf(userManager).setSeedAccountOptions(options);
+ assertThat(userManager.getSeedAccountOptions()).isEqualTo(options);
+ }
+
+ @Test
+ @Config(minSdk = Build.VERSION_CODES.N)
+ public void clearSeedAccountData() {
+ shadowOf(userManager).setSeedAccountName(SEED_ACCOUNT_NAME);
+ shadowOf(userManager).setSeedAccountType(SEED_ACCOUNT_TYPE);
+ shadowOf(userManager).setSeedAccountOptions(new PersistableBundle());
+
+ assertThat(userManager.getSeedAccountName()).isNotNull();
+ assertThat(userManager.getSeedAccountType()).isNotNull();
+ assertThat(userManager.getSeedAccountOptions()).isNotNull();
+
+ userManager.clearSeedAccountData();
+
+ assertThat(userManager.getSeedAccountName()).isNull();
+ assertThat(userManager.getSeedAccountType()).isNull();
+ assertThat(userManager.getSeedAccountOptions()).isNull();
+ }
+
+ @Test
@Config(minSdk = KITKAT_WATCH)
public void isGuestUser() {
assertThat(userManager.isGuestUser()).isFalse();
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
index 22c61a6..7d4f572 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
@@ -22,6 +22,7 @@
import android.os.Build;
import android.os.Bundle;
import android.os.IUserManager;
+import android.os.PersistableBundle;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
@@ -85,7 +86,9 @@
*/
protected Map<Integer, List<UserHandle>> userProfilesListMap = new HashMap<>();
+ private String seedAccountName;
private String seedAccountType;
+ private PersistableBundle seedAccountOptions;
private Context context;
private boolean enforcePermissions;
@@ -656,7 +659,17 @@
: UserManager.SWITCHABILITY_STATUS_USER_SWITCH_DISALLOWED);
}
- @Implementation(minSdk = Build.VERSION_CODES.Q)
+ @Implementation(minSdk = Build.VERSION_CODES.N)
+ protected String getSeedAccountName() {
+ return seedAccountName;
+ }
+
+ /** Setter for {@link UserManager#getSeedAccountName()} */
+ public void setSeedAccountName(String seedAccountName) {
+ this.seedAccountName = seedAccountName;
+ }
+
+ @Implementation(minSdk = Build.VERSION_CODES.N)
protected String getSeedAccountType() {
return seedAccountType;
}
@@ -666,6 +679,23 @@
this.seedAccountType = seedAccountType;
}
+ @Implementation(minSdk = Build.VERSION_CODES.N)
+ protected PersistableBundle getSeedAccountOptions() {
+ return seedAccountOptions;
+ }
+
+ /** Setter for {@link UserManager#getSeedAccountOptions()} */
+ public void setSeedAccountOptions(PersistableBundle seedAccountOptions) {
+ this.seedAccountOptions = seedAccountOptions;
+ }
+
+ @Implementation(minSdk = Build.VERSION_CODES.N)
+ protected void clearSeedAccountData() {
+ seedAccountName = null;
+ seedAccountType = null;
+ seedAccountOptions = null;
+ }
+
@Implementation(minSdk = JELLY_BEAN_MR1)
protected boolean removeUser(int userHandle) {
userInfoMap.remove(userHandle);