Removed FLAG_EPHEMERAL from pre-created users.

When a User is pre-created with that flag, its CE & DE keys are not persisted on storage. Hence,
when that pre-creatd user is converted to full-user, the expected keys don't exist and the user
doesn't boot properly.

This change fix the issue by making the pre-created user non-ephemeral, and changing it to
ephemeral when it's converted to a "real" user.

Test: manual verification on Automotive by creating a new user than deleting it using the UI -
that creates and switches to a new guest user (which was pre-created); without this change,
that user  would be hanging with a "Android is starting..." message

Bug: 143092698
Bug: 143553590
Change-Id: I2699f55a30d72fd5a88202bf6c83f7ca7c65fac0
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 8ddfad9..3a00e60 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -3191,6 +3191,13 @@
                         flags |= UserInfo.FLAG_EPHEMERAL;
                     }
 
+                    // Always clear EPHEMERAL for pre-created users, otherwise the storage key
+                    // won't be persisted. The flag will be re-added (if needed) when the
+                    // pre-created user is "converted" to a normal user.
+                    if (preCreate) {
+                        flags &= ~UserInfo.FLAG_EPHEMERAL;
+                    }
+
                     userInfo = new UserInfo(userId, name, null, flags, userType);
                     userInfo.serialNumber = mNextSerialNumber++;
                     userInfo.creationTime = getCreationTime();
@@ -4409,6 +4416,7 @@
         pw.println("  Supports switchable users: " + UserManager.supportsMultipleUsers());
         pw.println("  All guests ephemeral: " + Resources.getSystem().getBoolean(
                 com.android.internal.R.bool.config_guestUserEphemeral));
+        pw.println("  Force ephemeral users: " + mForceEphemeralUsers);
         pw.println("  Is split-system user: " + UserManager.isSplitSystemUser());
         pw.println("  Is headless-system mode: " + UserManager.isHeadlessSystemUserMode());
         pw.println("  User version: " + mUserVersion);