From b5ea1693b593bddf0afa314409d13c44237866aa Mon Sep 17 00:00:00 2001 From: Tom Cherry Date: Thu, 2 Mar 2023 21:11:29 -0800 Subject: [PATCH] Do not synthesize events for relative mouse movement. If apps opt into relative mouse movement they must be prepared to handle the events. Bug: 268243026 Test: no synthetic key events are generated by an app with mouse capture that does not mark its events as handled. Change-Id: I591c0036801473032d5e34a4c9ca3c1fd6215761 --- core/java/android/view/ViewRootImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 807af5b54081a..4c00f080c43d3 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -7072,7 +7072,11 @@ public final class ViewRootImpl implements ViewParent, final MotionEvent event = (MotionEvent)q.mEvent; final int source = event.getSource(); if ((source & InputDevice.SOURCE_CLASS_TRACKBALL) != 0) { - mTrackball.process(event); + // Do not synthesize events for relative mouse movement. If apps opt into + // relative mouse movement they must be prepared to handle the events. + if (!event.isFromSource(InputDevice.SOURCE_MOUSE_RELATIVE)) { + mTrackball.process(event); + } return FINISH_HANDLED; } else if ((source & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { mJoystick.process(event);