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

Commit 8b820867 authored by Evan Rosky's avatar Evan Rosky
Browse files

Add reporting to monitor apps incorrectly using getRaw

getRawX/Y are implementation specific and are always display
relative. If any apps are using this, they should stop unless
the app is specifically trying to handle raw events.

Usage of getRaw will break under: multi-window, size-compat,
letterbox, display-areas, and independent window rotation.

Bug: 179274888
Test: adb shell dumpsys platform_compat
Change-Id: I2d87d0a62d7a28e15811dda7f9d16996e8159f69
parent a8d563cf
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -222,6 +222,14 @@ public final class InputManager {
    @ChangeId
    public static final long BLOCK_FLAG_SLIPPERY = android.os.IInputConstants.BLOCK_FLAG_SLIPPERY;

    /**
     * Check whether apps are using MotionEvent.getRawX/Y. This is implementation-specific, and
     * thus undefined for most 3p app usages.
     * @hide
     */
    @ChangeId
    public static final long APP_USES_RAW_INPUT_COORDS = 179274888L;

    /**
     * Input Event Injection Synchronization Mode: None.
     * Never blocks.  Injection is asynchronous and is assumed always to be successful.
+6 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.view;

import static android.hardware.input.InputManager.APP_USES_RAW_INPUT_COORDS;
import static android.view.Display.DEFAULT_DISPLAY;

import static java.lang.annotation.RetentionPolicy.SOURCE;
@@ -23,6 +24,7 @@ import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.compat.Compatibility;
import android.compat.annotation.UnsupportedAppUsage;
import android.graphics.Matrix;
import android.os.Build;
@@ -2672,6 +2674,7 @@ public final class MotionEvent extends InputEvent implements Parcelable {
     * @see #AXIS_X
     */
    public final float getRawX() {
        Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS);
        return nativeGetRawAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT);
    }

@@ -2685,6 +2688,7 @@ public final class MotionEvent extends InputEvent implements Parcelable {
     * @see #AXIS_Y
     */
    public final float getRawY() {
        Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS);
        return nativeGetRawAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT);
    }

@@ -2701,6 +2705,7 @@ public final class MotionEvent extends InputEvent implements Parcelable {
     * @see #AXIS_X
     */
    public float getRawX(int pointerIndex) {
        Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS);
        return nativeGetRawAxisValue(mNativePtr, AXIS_X, pointerIndex, HISTORY_CURRENT);
    }

@@ -2717,6 +2722,7 @@ public final class MotionEvent extends InputEvent implements Parcelable {
     * @see #AXIS_Y
     */
    public float getRawY(int pointerIndex) {
        Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS);
        return nativeGetRawAxisValue(mNativePtr, AXIS_Y, pointerIndex, HISTORY_CURRENT);
    }