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

Commit 6e9da31e authored by Nergi Rahardi's avatar Nergi Rahardi Committed by Android (Google) Code Review
Browse files

Merge "Add @TestApi to fetch mouse cursor position on a specific display" into main

parents 380fe594 1b7a14d7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1805,6 +1805,7 @@ package android.hardware.input {
    method @FlaggedApi("com.android.input.flags.device_associations") @RequiresPermission("android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY") public void addUniqueIdAssociationByDescriptor(@NonNull String, @NonNull String);
    method @RequiresPermission("android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY") public void addUniqueIdAssociationByPort(@NonNull String, @NonNull String);
    method @RequiresPermission(android.Manifest.permission.REMAP_MODIFIER_KEYS) public void clearAllModifierKeyRemappings();
    method @Nullable @RequiresPermission(android.Manifest.permission.INJECT_EVENTS) public android.graphics.PointF getCursorPosition(int);
    method @NonNull public java.util.List<java.lang.String> getKeyboardLayoutDescriptors();
    method @NonNull public String getKeyboardLayoutTypeForLayoutDescriptor(@NonNull String);
    method @NonNull @RequiresPermission(android.Manifest.permission.REMAP_MODIFIER_KEYS) public java.util.Map<java.lang.Integer,java.lang.Integer> getModifierKeyRemapping();
+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.hardware.input;

import android.graphics.PointF;
import android.graphics.Rect;
import android.hardware.input.AidlInputGestureData;
import android.hardware.input.HostUsiVersion;
@@ -307,4 +308,6 @@ interface IInputManager {
    void resetLockedModifierState();

    void setMouseScalingEnabled(boolean enabled, int displayId);

    PointF getCursorPosition(int displayId);
}
+22 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.app.ActivityThread;
import android.compat.annotation.ChangeId;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.hardware.BatteryState;
import android.os.Build;
@@ -1642,6 +1643,27 @@ public final class InputManager {
        }
    }

    /**
     * Gets the current position of the mouse cursor on the specified display.
     *
     * <p>Returns null if no cursor is available, or if existing cursor is not on the supplied
     * `displayId`.
     *
     * <p>This method is inherently racy, and should only be used for test purposes.
     * @hide
     */
    @TestApi
    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
    @RequiresPermission(Manifest.permission.INJECT_EVENTS)
    @Nullable
    public PointF getCursorPosition(int displayId) {
        try {
            return mIm.getCursorPosition(displayId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * A callback used to be notified about battery state changes for an input device. The
     * {@link #onBatteryStateChanged(int, long, BatteryState)} method will be called once after the
+4 −1
Original line number Diff line number Diff line
@@ -106,7 +106,10 @@ public class VirtualMouse extends VirtualInputDevice {
     */
    public @NonNull PointF getCursorPosition() {
        try {
            return mVirtualDevice.getCursorPosition(mToken);
            PointF cursorPosition = mVirtualDevice.getCursorPosition(mToken);
            // TODO(b/410677781): Returning PointF(NaN, NaN) on invalid displayId is different with
            // what the javadoc states, consider updating this (or the javadoc).
            return cursorPosition != null ? cursorPosition : new PointF(Float.NaN, Float.NaN);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+1 −2
Original line number Diff line number Diff line
@@ -386,8 +386,7 @@ class InputController {
                throw new IllegalArgumentException(
                        "Could not get cursor position for input device for given token");
            }
            return LocalServices.getService(InputManagerInternal.class).getCursorPosition(
                    inputDeviceDescriptor.getDisplayId());
            return mInputManager.getCursorPosition(inputDeviceDescriptor.getDisplayId());
        }
    }

Loading