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
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user