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

Commit ee483745 authored by Vaibhav Devmurari's avatar Vaibhav Devmurari
Browse files

Make APIs for custom shortcuts user handle aware

SysUI runs in UserHandle.USER_SYSTEM, so binder can't fetch
userId from calling process.

Test: manual
Bug: 365064144
Flag: com.android.hardware.input.enable_customizable_input_gestures
Change-Id: Ia34080850a85944e764ae4577897f4a5600678ec
parent dc9dcdd8
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -266,19 +266,19 @@ interface IInputManager {
    @PermissionManuallyEnforced
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    int addCustomInputGesture(in AidlInputGestureData data);
    int addCustomInputGesture(int userId, in AidlInputGestureData data);

    @PermissionManuallyEnforced
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    int removeCustomInputGesture(in AidlInputGestureData data);
    int removeCustomInputGesture(int userId, in AidlInputGestureData data);

    @PermissionManuallyEnforced
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    void removeAllCustomInputGestures();
    void removeAllCustomInputGestures(int userId);

    AidlInputGestureData[] getCustomInputGestures();
    AidlInputGestureData[] getCustomInputGestures(int userId);

    AidlInputGestureData[] getAppLaunchBookmarks();
}
+10 −4
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SuppressLint;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.annotation.UserHandleAware;
import android.annotation.UserIdInt;
import android.app.ActivityThread;
import android.compat.annotation.ChangeId;
@@ -1487,12 +1488,13 @@ public final class InputManager {
     */
    @RequiresPermission(Manifest.permission.MANAGE_KEY_GESTURES)
    @CustomInputGestureResult
    @UserHandleAware
    public int addCustomInputGesture(@NonNull InputGestureData inputGestureData) {
        if (!enableCustomizableInputGestures()) {
            return CUSTOM_INPUT_GESTURE_RESULT_ERROR_OTHER;
        }
        try {
            return mIm.addCustomInputGesture(inputGestureData.getAidlData());
            return mIm.addCustomInputGesture(mContext.getUserId(), inputGestureData.getAidlData());
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -1509,12 +1511,14 @@ public final class InputManager {
     */
    @RequiresPermission(Manifest.permission.MANAGE_KEY_GESTURES)
    @CustomInputGestureResult
    @UserHandleAware
    public int removeCustomInputGesture(@NonNull InputGestureData inputGestureData) {
        if (!enableCustomizableInputGestures()) {
            return CUSTOM_INPUT_GESTURE_RESULT_ERROR_OTHER;
        }
        try {
            return mIm.removeCustomInputGesture(inputGestureData.getAidlData());
            return mIm.removeCustomInputGesture(mContext.getUserId(),
                    inputGestureData.getAidlData());
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -1525,12 +1529,13 @@ public final class InputManager {
     * @hide
     */
    @RequiresPermission(Manifest.permission.MANAGE_KEY_GESTURES)
    @UserHandleAware
    public void removeAllCustomInputGestures() {
        if (!enableCustomizableInputGestures()) {
            return;
        }
        try {
            mIm.removeAllCustomInputGestures();
            mIm.removeAllCustomInputGestures(mContext.getUserId());
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -1540,13 +1545,14 @@ public final class InputManager {
     *
     * @hide
     */
    @UserHandleAware
    public List<InputGestureData> getCustomInputGestures() {
        List<InputGestureData> result = new ArrayList<>();
        if (!enableCustomizableInputGestures()) {
            return result;
        }
        try {
            for (AidlInputGestureData data : mIm.getCustomInputGestures()) {
            for (AidlInputGestureData data : mIm.getCustomInputGestures(mContext.getUserId())) {
                result.add(new InputGestureData(data));
            }
        } catch (RemoteException e) {
+10 −10
Original line number Diff line number Diff line
@@ -2995,35 +2995,35 @@ public class InputManagerService extends IInputManager.Stub

    @Override
    @PermissionManuallyEnforced
    public int addCustomInputGesture(@NonNull AidlInputGestureData inputGestureData) {
    public int addCustomInputGesture(@UserIdInt int userId,
            @NonNull AidlInputGestureData inputGestureData) {
        enforceManageKeyGesturePermission();

        Objects.requireNonNull(inputGestureData);
        return mKeyGestureController.addCustomInputGesture(UserHandle.getCallingUserId(),
                inputGestureData);
        return mKeyGestureController.addCustomInputGesture(userId, inputGestureData);
    }

    @Override
    @PermissionManuallyEnforced
    public int removeCustomInputGesture(@NonNull AidlInputGestureData inputGestureData) {
    public int removeCustomInputGesture(@UserIdInt int userId,
            @NonNull AidlInputGestureData inputGestureData) {
        enforceManageKeyGesturePermission();

        Objects.requireNonNull(inputGestureData);
        return mKeyGestureController.removeCustomInputGesture(UserHandle.getCallingUserId(),
                inputGestureData);
        return mKeyGestureController.removeCustomInputGesture(userId, inputGestureData);
    }

    @Override
    @PermissionManuallyEnforced
    public void removeAllCustomInputGestures() {
    public void removeAllCustomInputGestures(@UserIdInt int userId) {
        enforceManageKeyGesturePermission();

        mKeyGestureController.removeAllCustomInputGestures(UserHandle.getCallingUserId());
        mKeyGestureController.removeAllCustomInputGestures(userId);
    }

    @Override
    public AidlInputGestureData[] getCustomInputGestures() {
        return mKeyGestureController.getCustomInputGestures(UserHandle.getCallingUserId());
    public AidlInputGestureData[] getCustomInputGestures(@UserIdInt int userId) {
        return mKeyGestureController.getCustomInputGestures(userId);
    }

    @Override