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);