Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d4e91db authored by Anthony Hugh's avatar Anthony Hugh Committed by Android (Google) Code Review
Browse files

Merge "Expose findCurrentGuestUser() to system apps"

parents 60125d3d 5d7f9056
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ interface IUserManager {
    void setDefaultGuestRestrictions(in Bundle restrictions);
    Bundle getDefaultGuestRestrictions();
    boolean markGuestForDeletion(int userId);
    UserInfo findCurrentGuestUser();
    boolean isQuietModeEnabled(int userId);
    void setSeedAccountData(int userId, in String accountName,
            in String accountType, in PersistableBundle accountOptions, boolean persist);
+14 −0
Original line number Diff line number Diff line
@@ -2374,6 +2374,20 @@ public class UserManager {
        return guest;
    }

    /**
     * Gets the existing guest user if it exists.  This does not include guest users that are dying.
     * @return The existing guest user if it exists. Null otherwise.
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
    public UserInfo findCurrentGuestUser() {
        try {
            return mService.findCurrentGuestUser();
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
    }

    /**
     * Creates a user with the specified name and options as a profile of another user.
     * Requires {@link android.Manifest.permission#MANAGE_USERS} permission.
+23 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.content.DialogInterface.BUTTON_POSITIVE;
import static android.os.UserManager.DISALLOW_ADD_USER;
import static android.os.UserManager.SWITCHABILITY_STATUS_OK;

import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
@@ -266,7 +267,10 @@ public class UserGridRecyclerView extends RecyclerView {

                if (userRecord.mIsStartGuestSession) {
                    notifyUserSelected(userRecord);
                    mCarUserManagerHelper.startGuestSession(mGuestName);
                    UserInfo guest = createNewOrFindExistingGuest(mContext);
                    if (guest != null) {
                        mCarUserManagerHelper.switchToUser(guest);
                    }
                    return;
                }

@@ -381,6 +385,24 @@ public class UserGridRecyclerView extends RecyclerView {
            return circleIcon;
        }

        /**
         * Finds the existing Guest user, or creates one if it doesn't exist.
         * @param context App context
         * @return UserInfo representing the Guest user
         */
        @Nullable
        public UserInfo createNewOrFindExistingGuest(Context context) {
            // CreateGuest will return null if a guest already exists.
            UserInfo newGuest = mUserManager.createGuest(context, mGuestName);
            if (newGuest != null) {
                new UserIconProvider().assignDefaultIcon(
                        mUserManager, context.getResources(), newGuest);
                return newGuest;
            }

            return mUserManager.findCurrentGuestUser();
        }

        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (which == BUTTON_POSITIVE) {
+1 −1
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ public class UserIconProvider {
     * @param userInfo User whose avatar is set to default icon.
     * @return Bitmap of the user icon.
     */
    private Bitmap assignDefaultIcon(
    public Bitmap assignDefaultIcon(
            UserManager userManager, Resources resources, UserInfo userInfo) {
        Bitmap bitmap = userInfo.isGuest()
                ? getGuestUserDefaultIcon(resources)
+6 −1
Original line number Diff line number Diff line
@@ -3452,8 +3452,13 @@ public class UserManagerService extends IUserManager.Stub {
    /**
     * Find the current guest user. If the Guest user is partial,
     * then do not include it in the results as it is about to die.
     *
     * @return The current guest user.  Null if it doesn't exist.
     * @hide
     */
    private UserInfo findCurrentGuestUser() {
    @Override
    public UserInfo findCurrentGuestUser() {
        checkManageUsersPermission("findCurrentGuestUser");
        synchronized (mUsersLock) {
            final int size = mUsers.size();
            for (int i = 0; i < size; i++) {
Loading