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

Commit 210ec751 authored by Felipe Leme's avatar Felipe Leme Committed by Automerger Merge Worker
Browse files

Merge "Added AM APIs to get switch from / to user messages." into sc-v2-dev am: 7df16f2d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16289546

Change-Id: I09e8d32e4f4f07918b9e4cd052c81e4237103231
parents b1008545 7df16f2d
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -4075,6 +4075,34 @@ public class ActivityManager {
        return switchUser(user.getIdentifier());
    }

    /**
     * Gets the message that is shown when a user is switched from.
     *
     * @hide
     */
    @RequiresPermission(Manifest.permission.MANAGE_USERS)
    public @Nullable String getSwitchingFromUserMessage() {
        try {
            return getService().getSwitchingFromUserMessage();
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
    }

    /**
     * Gets the message that is shown when a user is switched to.
     *
     * @hide
     */
    @RequiresPermission(Manifest.permission.MANAGE_USERS)
    public @Nullable String getSwitchingToUserMessage() {
        try {
            return getService().getSwitchingToUserMessage();
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
    }

    /**
     * Uses the value defined by the platform.
     *
+2 −0
Original line number Diff line number Diff line
@@ -345,6 +345,8 @@ interface IActivityManager {
    void setPackageScreenCompatMode(in String packageName, int mode);
    @UnsupportedAppUsage
    boolean switchUser(int userid);
    String getSwitchingFromUserMessage();
    String getSwitchingToUserMessage();
    @UnsupportedAppUsage
    void setStopUserOnSwitch(int value);
    boolean removeTask(int taskId);
+10 −0
Original line number Diff line number Diff line
@@ -15099,6 +15099,16 @@ public class ActivityManagerService extends IActivityManager.Stub
        return mUserController.switchUser(targetUserId);
    }
    @Override
    public String getSwitchingFromUserMessage() {
        return mUserController.getSwitchingFromSystemUserMessage();
    }
    @Override
    public String getSwitchingToUserMessage() {
        return mUserController.getSwitchingToSystemUserMessage();
    }
    @Override
    public void setStopUserOnSwitch(@StopUserOnSwitch int value) {
        mUserController.setStopUserOnSwitch(value);
+32 −3
Original line number Diff line number Diff line
@@ -1792,7 +1792,8 @@ class UserController implements Handler.Callback {
    private void showUserSwitchDialog(Pair<UserInfo, UserInfo> fromToUserPair) {
        // The dialog will show and then initiate the user switch by calling startUserInForeground
        mInjector.showUserSwitchingDialog(fromToUserPair.first, fromToUserPair.second,
                getSwitchingFromSystemUserMessage(), getSwitchingToSystemUserMessage());
                getSwitchingFromSystemUserMessageUnchecked(),
                getSwitchingToSystemUserMessageUnchecked());
    }

    private void dispatchForegroundProfileChanged(@UserIdInt int userId) {
@@ -2564,18 +2565,40 @@ class UserController implements Handler.Callback {
        }
    }

    private String getSwitchingFromSystemUserMessage() {
    // Called by AMS, must check permission
    String getSwitchingFromSystemUserMessage() {
        checkHasManageUsersPermission("getSwitchingFromSystemUserMessage()");

        return getSwitchingFromSystemUserMessageUnchecked();
    }

    // Called by AMS, must check permission
    String getSwitchingToSystemUserMessage() {
        checkHasManageUsersPermission("getSwitchingToSystemUserMessage()");

        return getSwitchingToSystemUserMessageUnchecked();
    }

    private String getSwitchingFromSystemUserMessageUnchecked() {
        synchronized (mLock) {
            return mSwitchingFromSystemUserMessage;
        }
    }

    private String getSwitchingToSystemUserMessage() {
    private String getSwitchingToSystemUserMessageUnchecked() {
        synchronized (mLock) {
            return mSwitchingToSystemUserMessage;
        }
    }

    private void checkHasManageUsersPermission(String operation) {
        if (mInjector.checkCallingPermission(
                android.Manifest.permission.MANAGE_USERS) == PackageManager.PERMISSION_DENIED) {
            throw new SecurityException(
                    "You need MANAGE_USERS permission to call " + operation);
        }
    }

    void dumpDebug(ProtoOutputStream proto, long fieldId) {
        synchronized (mLock) {
            long token = proto.start(fieldId);
@@ -2648,6 +2671,12 @@ class UserController implements Handler.Callback {
            pw.println("  mMaxRunningUsers:" + mMaxRunningUsers);
            pw.println("  mUserSwitchUiEnabled:" + mUserSwitchUiEnabled);
            pw.println("  mInitialized:" + mInitialized);
            if (mSwitchingFromSystemUserMessage != null) {
                pw.println("  mSwitchingFromSystemUserMessage: " + mSwitchingFromSystemUserMessage);
            }
            if (mSwitchingToSystemUserMessage != null) {
                pw.println("  mSwitchingToSystemUserMessage: " + mSwitchingToSystemUserMessage);
            }
        }
    }