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

Commit ec5aa8f1 authored by Yasin Kilicdere's avatar Yasin Kilicdere
Browse files

ActivityManagerShellCommand calls getUserSwitchability with wrong user

UserManager.getUserSwitchability API is always called with userId 0
from ActivityManagerShellCommand. This CL fixes that issue by passing
the userId parameter came from the command line to the API.

Bug: 261857907
Test: adb shell am switch-user -w 10
Change-Id: I3d6fa18f63f4b6e01acbf197cfcb5cedb614925c
parent 45287079
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -2006,12 +2006,6 @@ final class ActivityManagerShellCommand extends ShellCommand {
    }

    int runSwitchUser(PrintWriter pw) throws RemoteException {
        UserManager userManager = mInternal.mContext.getSystemService(UserManager.class);
        final int userSwitchable = userManager.getUserSwitchability();
        if (userSwitchable != UserManager.SWITCHABILITY_STATUS_OK) {
            getErrPrintWriter().println("Error: " + userSwitchable);
            return -1;
        }
        boolean wait = false;
        String opt;
        while ((opt = getNextOption()) != null) {
@@ -2024,6 +2018,14 @@ final class ActivityManagerShellCommand extends ShellCommand {
        }

        int userId = Integer.parseInt(getNextArgRequired());

        UserManager userManager = mInternal.mContext.getSystemService(UserManager.class);
        final int userSwitchable = userManager.getUserSwitchability(UserHandle.of(userId));
        if (userSwitchable != UserManager.SWITCHABILITY_STATUS_OK) {
            getErrPrintWriter().println("Error: UserSwitchabilityResult=" + userSwitchable);
            return -1;
        }

        boolean switched;
        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "shell_runSwitchUser");
        try {