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

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

(4/n) Cleanup manage_key_gestures permission flag

Test: Presubmit
Bug: 358569822
Flag: EXEMPT cleanup
Change-Id: Ifc7b4ece028dd106b68471662c89a634d1df161c
parent 4f120d6a
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -260,42 +260,42 @@ interface IInputManager {

    KeyGlyphMap getKeyGlyphMap(int deviceId);

    @PermissionManuallyEnforced
    @EnforcePermission("MANAGE_KEY_GESTURES")
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    void registerKeyGestureEventListener(IKeyGestureEventListener listener);

    @PermissionManuallyEnforced
    @EnforcePermission("MANAGE_KEY_GESTURES")
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    void unregisterKeyGestureEventListener(IKeyGestureEventListener listener);

    @PermissionManuallyEnforced
    @EnforcePermission("MANAGE_KEY_GESTURES")
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    void registerKeyGestureHandler(in int[] keyGesturesToHandle, IKeyGestureHandler handler);

    @PermissionManuallyEnforced
    @EnforcePermission("MANAGE_KEY_GESTURES")
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    void unregisterKeyGestureHandler(IKeyGestureHandler handler);

    @PermissionManuallyEnforced
    @EnforcePermission("MANAGE_KEY_GESTURES")
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    AidlInputGestureData getInputGesture(int userId, in AidlInputGestureData.Trigger trigger);

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

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

    @PermissionManuallyEnforced
    @EnforcePermission("MANAGE_KEY_GESTURES")
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.MANAGE_KEY_GESTURES)")
    void removeAllCustomInputGestures(int userId, int tag);
+1 −2
Original line number Diff line number Diff line
@@ -8652,8 +8652,7 @@
         <p>Not for use by third-party applications.
         @hide -->
    <permission android:name="android.permission.MANAGE_KEY_GESTURES"
                android:protectionLevel="signature|recents"
                android:featureFlag="com.android.hardware.input.manage_key_gestures" />
                android:protectionLevel="signature|recents" />

    <!-- Allows applications to register listeners for key activeness through
         InputManagerService.
+0 −3
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@ import static android.window.DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODALS_PO
import static android.window.DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_TASK_LIMIT;
import static android.window.DesktopModeFlags.ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS;

import static com.android.hardware.input.Flags.manageKeyGestures;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.KeyguardManager;
@@ -1037,7 +1035,6 @@ public abstract class WMShellModule {
            DisplayController displayController,
            DesktopState desktopState) {
        if (desktopState.canEnterDesktopMode()
                && manageKeyGestures()
                && (Flags.enableMoveToNextDisplayShortcut()
                || DesktopModeFlags.ENABLE_TASK_RESIZING_KEYBOARD_SHORTCUTS.isTrue())) {
            return Optional.of(new DesktopModeKeyGestureHandler(context,
+16 −47
Original line number Diff line number Diff line
@@ -34,8 +34,6 @@ import android.Manifest;
import android.annotation.EnforcePermission;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.PermissionManuallyEnforced;
import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.annotation.UserIdInt;
import android.app.ActivityManagerInternal;
@@ -47,7 +45,6 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.PermissionChecker;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.graphics.PixelFormat;
import android.graphics.PointF;
import android.hardware.SensorPrivacyManager;
@@ -3120,57 +3117,29 @@ public class InputManagerService extends IInputManager.Stub
                lockedModifierState);
    }

    /**
     * Enforces the caller contains the necessary permission to manage key gestures.
     */
    @RequiresPermission(Manifest.permission.MANAGE_KEY_GESTURES)
    private void enforceManageKeyGesturePermission() {
        // TODO(b/361567988): Use @EnforcePermission to enforce permission once flag guarding the
        //  permission is rolled out
        String systemUIPackage = mContext.getString(R.string.config_systemUi);
        PackageManagerInternal pm = LocalServices.getService(PackageManagerInternal.class);
        if (pm != null) {
            int systemUIAppId = UserHandle.getAppId(
                    pm.getPackageUid(systemUIPackage, PackageManager.MATCH_SYSTEM_ONLY,
                            UserHandle.USER_SYSTEM));
            if (UserHandle.getCallingAppId() == systemUIAppId) {
                return;
            }
        }
        if (mContext.checkCallingOrSelfPermission(
                Manifest.permission.MANAGE_KEY_GESTURES) == PackageManager.PERMISSION_GRANTED) {
            return;
        }

        String message = "Managing Key Gestures requires the following permission: "
                + Manifest.permission.MANAGE_KEY_GESTURES;
        throw new SecurityException(message);
    }


    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public void registerKeyGestureEventListener(@NonNull IKeyGestureEventListener listener) {
        enforceManageKeyGesturePermission();
        super.registerKeyGestureEventListener_enforcePermission();

        Objects.requireNonNull(listener);
        mKeyGestureController.registerKeyGestureEventListener(listener, Binder.getCallingPid());
    }

    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public void unregisterKeyGestureEventListener(@NonNull IKeyGestureEventListener listener) {
        enforceManageKeyGesturePermission();
        super.unregisterKeyGestureEventListener_enforcePermission();

        Objects.requireNonNull(listener);
        mKeyGestureController.unregisterKeyGestureEventListener(listener, Binder.getCallingPid());
    }

    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public void registerKeyGestureHandler(int[] keyGesturesToHandle,
            @NonNull IKeyGestureHandler handler) {
        enforceManageKeyGesturePermission();
        super.registerKeyGestureHandler_enforcePermission();

        Objects.requireNonNull(handler);
        Objects.requireNonNull(keyGesturesToHandle);
@@ -3179,48 +3148,48 @@ public class InputManagerService extends IInputManager.Stub
    }

    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public void unregisterKeyGestureHandler(@NonNull IKeyGestureHandler handler) {
        enforceManageKeyGesturePermission();
        super.unregisterKeyGestureHandler_enforcePermission();

        Objects.requireNonNull(handler);
        mKeyGestureController.unregisterKeyGestureHandler(handler, Binder.getCallingPid());
    }

    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public AidlInputGestureData getInputGesture(@UserIdInt int userId,
            @NonNull AidlInputGestureData.Trigger trigger) {
        enforceManageKeyGesturePermission();
        super.getInputGesture_enforcePermission();

        Objects.requireNonNull(trigger);
        return mKeyGestureController.getInputGesture(userId, trigger);
    }

    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public int addCustomInputGesture(@UserIdInt int userId,
            @NonNull AidlInputGestureData inputGestureData) {
        enforceManageKeyGesturePermission();
        super.addCustomInputGesture_enforcePermission();

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

    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public int removeCustomInputGesture(@UserIdInt int userId,
            @NonNull AidlInputGestureData inputGestureData) {
        enforceManageKeyGesturePermission();
        super.removeCustomInputGesture_enforcePermission();

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

    @Override
    @PermissionManuallyEnforced
    @EnforcePermission(Manifest.permission.MANAGE_KEY_GESTURES)
    public void removeAllCustomInputGestures(@UserIdInt int userId, int tag) {
        enforceManageKeyGesturePermission();
        super.removeAllCustomInputGestures_enforcePermission();

        mKeyGestureController.removeAllCustomInputGestures(userId, InputGestureData.Filter.of(tag));
    }
+1 −2
Original line number Diff line number Diff line
@@ -185,8 +185,7 @@ class InputManagerServiceTests {
        val inputManager = InputManager(context)
        whenever(context.getSystemService(InputManager::class.java)).thenReturn(inputManager)
        whenever(context.getSystemService(Context.INPUT_SERVICE)).thenReturn(inputManager)
        whenever(context.checkCallingOrSelfPermission(Manifest.permission.MANAGE_KEY_GESTURES))
            .thenReturn(PackageManager.PERMISSION_GRANTED)
        fakePermissionEnforcer.grant(Manifest.permission.MANAGE_KEY_GESTURES)

        ExtendedMockito.doReturn(windowManagerInternal).`when` {
            LocalServices.getService(eq(WindowManagerInternal::class.java))