Merge "Replace InputManager instances with InputManagerGlobal" into udc-dev

This commit is contained in:
Asmita Poddar
2023-03-27 10:34:08 +00:00
committed by Android (Google) Code Review
15 changed files with 64 additions and 47 deletions

View File

@@ -27,6 +27,7 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
@@ -161,7 +162,7 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub {
mWindowManager.syncInputTransactions(waitForAnimations);
}
final boolean result = InputManager.getInstance().injectInputEvent(event,
final boolean result = InputManagerGlobal.getInstance().injectInputEvent(event,
sync ? InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH
: InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);

View File

@@ -307,7 +307,7 @@ public final class InputManagerGlobal {
/**
* @see InputManager#registerInputDeviceListener
*/
void registerInputDeviceListener(InputDeviceListener listener, Handler handler) {
public void registerInputDeviceListener(InputDeviceListener listener, Handler handler) {
if (listener == null) {
throw new IllegalArgumentException("listener must not be null");
}
@@ -324,7 +324,7 @@ public final class InputManagerGlobal {
/**
* @see InputManager#unregisterInputDeviceListener
*/
void unregisterInputDeviceListener(InputDeviceListener listener) {
public void unregisterInputDeviceListener(InputDeviceListener listener) {
if (listener == null) {
throw new IllegalArgumentException("listener must not be null");
}
@@ -1117,6 +1117,13 @@ public final class InputManagerGlobal {
}
}
/**
* @see InputManager#deviceHasKeys(int[])
*/
public boolean[] deviceHasKeys(int[] keyCodes) {
return deviceHasKeys(-1, keyCodes);
}
/**
* @see InputManager#deviceHasKeys(int, int[])
*/
@@ -1203,9 +1210,9 @@ public final class InputManagerGlobal {
}
/**
* @see Inputmanager#monitorGestureInput(String, int)
* @see InputManager#monitorGestureInput(String, int)
*/
InputMonitor monitorGestureInput(String name, int displayId) {
public InputMonitor monitorGestureInput(String name, int displayId) {
try {
return mIm.monitorGestureInput(new Binder(), name, displayId);
} catch (RemoteException ex) {
@@ -1216,7 +1223,7 @@ public final class InputManagerGlobal {
/**
* @see InputManager#addUniqueIdAssociation(String, String)
*/
void addUniqueIdAssociation(@NonNull String inputPort, @NonNull String displayUniqueId) {
public void addUniqueIdAssociation(@NonNull String inputPort, @NonNull String displayUniqueId) {
try {
mIm.addUniqueIdAssociation(inputPort, displayUniqueId);
} catch (RemoteException e) {
@@ -1251,7 +1258,7 @@ public final class InputManagerGlobal {
/**
* @see InputManager#cancelCurrentTouch()
*/
void cancelCurrentTouch() {
public void cancelCurrentTouch() {
try {
mIm.cancelCurrentTouch();
} catch (RemoteException e) {
@@ -1263,7 +1270,7 @@ public final class InputManagerGlobal {
* @see InputManager#pilferPointers(IBinder)
*/
@RequiresPermission(Manifest.permission.MONITOR_INPUT)
void pilferPointers(IBinder inputChannelToken) {
public void pilferPointers(IBinder inputChannelToken) {
try {
mIm.pilferPointers(inputChannelToken);
} catch (RemoteException e) {

View File

@@ -18,7 +18,7 @@ package android.view;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
@@ -355,7 +355,7 @@ public class KeyCharacterMap implements Parcelable {
* is missing from the system.
*/
public static KeyCharacterMap load(int deviceId) {
final InputManager im = InputManager.getInstance();
final InputManagerGlobal im = InputManagerGlobal.getInstance();
InputDevice inputDevice = im.getInputDevice(deviceId);
if (inputDevice == null) {
inputDevice = im.getInputDevice(VIRTUAL_KEYBOARD);
@@ -722,7 +722,7 @@ public class KeyCharacterMap implements Parcelable {
* @return True if at least one attached keyboard supports the specified key code.
*/
public static boolean deviceHasKey(int keyCode) {
return InputManager.getInstance().deviceHasKeys(new int[] { keyCode })[0];
return InputManagerGlobal.getInstance().deviceHasKeys(new int[] { keyCode })[0];
}
/**
@@ -735,7 +735,7 @@ public class KeyCharacterMap implements Parcelable {
* at the same index in the key codes array.
*/
public static boolean[] deviceHasKeys(int[] keyCodes) {
return InputManager.getInstance().deviceHasKeys(keyCodes);
return InputManagerGlobal.getInstance().deviceHasKeys(keyCodes);
}
@Override

View File

@@ -18,7 +18,7 @@ package com.android.internal.view;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
@@ -127,7 +127,8 @@ public class BaseIWindow extends IWindow.Stub {
@Override
public void updatePointerIcon(float x, float y) {
InputManager.getInstance().setPointerIconType(PointerIcon.TYPE_NOT_SPECIFIED);
InputManagerGlobal.getInstance()
.setPointerIconType(PointerIcon.TYPE_NOT_SPECIFIED);
}
@Override

View File

@@ -19,7 +19,7 @@ package com.android.wm.shell.onehanded;
import static android.view.Display.DEFAULT_DISPLAY;
import android.graphics.Rect;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Looper;
import android.view.InputChannel;
import android.view.InputEvent;
@@ -129,7 +129,7 @@ public class OneHandedTouchHandler implements OneHandedTransitionCallback {
private void updateIsEnabled() {
disposeInputChannel();
if (mIsEnabled) {
mInputMonitor = InputManager.getInstance().monitorGestureInput(
mInputMonitor = InputManagerGlobal.getInstance().monitorGestureInput(
"onehanded-touch", DEFAULT_DISPLAY);
try {
mMainExecutor.executeBlocking(() -> {

View File

@@ -15,7 +15,7 @@
*/
package com.android.systemui.shared.system;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Looper;
import android.view.Choreographer;
import android.view.InputMonitor;
@@ -33,7 +33,8 @@ public class InputMonitorCompat {
* Monitor input on the specified display for gestures.
*/
public InputMonitorCompat(String name, int displayId) {
mInputMonitor = InputManager.getInstance().monitorGestureInput(name, displayId);
mInputMonitor = InputManagerGlobal.getInstance()
.monitorGestureInput(name, displayId);
}
/**

View File

@@ -30,6 +30,7 @@ import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.media.AudioManager;
import android.metrics.LogMaker;
import android.os.AsyncTask;
@@ -79,7 +80,7 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
private final KeyButtonRipple mRipple;
private final OverviewProxyService mOverviewProxyService;
private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
private final InputManager mInputManager;
private final InputManagerGlobal mInputManagerGlobal;
private final Paint mOvalBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
private float mDarkIntensity;
private boolean mHasOvalBg = false;
@@ -145,12 +146,12 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
}
public KeyButtonView(Context context, AttributeSet attrs, int defStyle) {
this(context, attrs, defStyle, InputManager.getInstance(), new UiEventLoggerImpl());
this(context, attrs, defStyle, InputManagerGlobal.getInstance(), new UiEventLoggerImpl());
}
@VisibleForTesting
public KeyButtonView(Context context, AttributeSet attrs, int defStyle, InputManager manager,
UiEventLogger uiEventLogger) {
public KeyButtonView(Context context, AttributeSet attrs, int defStyle,
InputManagerGlobal manager, UiEventLogger uiEventLogger) {
super(context, attrs);
mUiEventLogger = uiEventLogger;
@@ -173,7 +174,7 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
mRipple = new KeyButtonRipple(context, this, R.dimen.key_button_ripple_max_width);
mOverviewProxyService = Dependency.get(OverviewProxyService.class);
mInputManager = manager;
mInputManagerGlobal = manager;
setBackground(mRipple);
setWillNotDraw(false);
forceHasOverlappingRendering(false);
@@ -428,7 +429,8 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
if (displayId != INVALID_DISPLAY) {
ev.setDisplayId(displayId);
}
mInputManager.injectInputEvent(ev, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
mInputManagerGlobal.injectInputEvent(ev,
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
}
@Override

View File

@@ -21,6 +21,7 @@ import static android.view.MotionEvent.ACTION_CANCEL;
import static android.view.MotionEvent.ACTION_DOWN;
import static android.view.MotionEvent.ACTION_UP;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON;
import static com.android.internal.accessibility.common.ShortcutConstants.CHOOSER_PACKAGE_NAME;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUPPORTS_WINDOW_CORNERS;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY;
@@ -47,6 +48,7 @@ import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.graphics.Region;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
@@ -104,6 +106,8 @@ import com.android.systemui.statusbar.policy.CallbackController;
import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder;
import com.android.wm.shell.sysui.ShellInterface;
import dagger.Lazy;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -113,8 +117,6 @@ import java.util.function.Supplier;
import javax.inject.Inject;
import dagger.Lazy;
/**
* Class to send information from overview to launcher with a binder.
*/
@@ -267,7 +269,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
InputDevice.SOURCE_KEYBOARD);
ev.setDisplayId(mContext.getDisplay().getDisplayId());
return InputManager.getInstance()
return InputManagerGlobal.getInstance()
.injectInputEvent(ev, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
}

View File

@@ -33,7 +33,7 @@ import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
@@ -388,7 +388,7 @@ public final class KeyboardShortcutListSearch {
* Keyboard with its default map.
*/
private void retrieveKeyCharacterMap(int deviceId) {
final InputManager inputManager = InputManager.getInstance();
final InputManagerGlobal inputManager = InputManagerGlobal.getInstance();
mBackupKeyCharacterMap = inputManager.getInputDevice(-1).getKeyCharacterMap();
if (deviceId != -1) {
final InputDevice inputDevice = inputManager.getInputDevice(deviceId);

View File

@@ -22,7 +22,7 @@ import android.graphics.PixelFormat
import android.hardware.devicestate.DeviceStateManager
import android.hardware.devicestate.DeviceStateManager.FoldStateListener
import android.hardware.display.DisplayManager
import android.hardware.input.InputManager
import android.hardware.input.InputManagerGlobal
import android.os.Handler
import android.os.Looper
import android.os.Trace
@@ -332,7 +332,7 @@ constructor(
executeInBackground { addOverlay(reason = FOLD) }
}
// Disable input dispatching during transition.
InputManager.getInstance().cancelCurrentTouch()
InputManagerGlobal.getInstance().cancelCurrentTouch()
}
}

View File

@@ -39,7 +39,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableLooper.RunWithLooper;
@@ -67,7 +67,7 @@ public class KeyButtonViewTest extends SysuiTestCase {
private KeyButtonView mKeyButtonView;
private MetricsLogger mMetricsLogger;
private UiEventLogger mUiEventLogger;
private InputManager mInputManager = mock(InputManager.class);
private InputManagerGlobal mInputManagerGlobal = mock(InputManagerGlobal.class);
@Captor
private ArgumentCaptor<KeyEvent> mInputEventCaptor;
@@ -79,7 +79,8 @@ public class KeyButtonViewTest extends SysuiTestCase {
mUiEventLogger = mDependency.injectMockDependency(UiEventLogger.class);
TestableLooper.get(this).runWithLooper(() -> {
mKeyButtonView = new KeyButtonView(mContext, null, 0, mInputManager, mUiEventLogger);
mKeyButtonView = new KeyButtonView(mContext, null, 0,
mInputManagerGlobal, mUiEventLogger);
});
}
@@ -139,7 +140,7 @@ public class KeyButtonViewTest extends SysuiTestCase {
public void testEventInjectedOnAbortGesture() {
mKeyButtonView.setCode(KEYCODE_HOME);
mKeyButtonView.abortCurrentGesture();
verify(mInputManager, times(1))
verify(mInputManagerGlobal, times(1))
.injectInputEvent(any(KeyEvent.class), any(Integer.class));
}
@@ -147,7 +148,7 @@ public class KeyButtonViewTest extends SysuiTestCase {
public void testNoEventInjectedOnAbortUnknownGesture() {
mKeyButtonView.setCode(KEYCODE_UNKNOWN);
mKeyButtonView.abortCurrentGesture();
verify(mInputManager, never())
verify(mInputManagerGlobal, never())
.injectInputEvent(any(KeyEvent.class), any(Integer.class));
}

View File

@@ -244,7 +244,7 @@ class InputController {
token.unlinkToDeath(inputDeviceDescriptor.getDeathRecipient(), /* flags= */ 0);
mNativeWrapper.closeUinput(inputDeviceDescriptor.getNativePointer());
String phys = inputDeviceDescriptor.getPhys();
InputManager.getInstance().removeUniqueIdAssociation(phys);
InputManagerGlobal.getInstance().removeUniqueIdAssociation(phys);
// Type associations are added in the case of navigation touchpads. Those should be removed
// once the input device gets closed.
if (inputDeviceDescriptor.getType() == InputDeviceDescriptor.TYPE_NAVIGATION_TOUCHPAD) {
@@ -355,7 +355,7 @@ class InputController {
private void setUniqueIdAssociation(int displayId, String phys) {
final String displayUniqueId = mDisplayManagerInternal.getDisplayInfo(displayId).uniqueId;
InputManager.getInstance().addUniqueIdAssociation(phys, displayUniqueId);
InputManagerGlobal.getInstance().addUniqueIdAssociation(phys, displayUniqueId);
}
boolean sendDpadKeyEvent(@NonNull IBinder token, @NonNull VirtualKeyEvent event) {
@@ -711,7 +711,7 @@ class InputController {
}
};
InputManager.getInstance().registerInputDeviceListener(mListener, mHandler);
InputManagerGlobal.getInstance().registerInputDeviceListener(mListener, mHandler);
}
/**
@@ -740,7 +740,7 @@ class InputController {
@Override
public void close() {
InputManager.getInstance().unregisterInputDeviceListener(mListener);
InputManagerGlobal.getInstance().unregisterInputDeviceListener(mListener);
}
}
@@ -809,7 +809,7 @@ class InputController {
throw e;
}
} catch (DeviceCreationException e) {
InputManager.getInstance().removeUniqueIdAssociation(phys);
InputManagerGlobal.getInstance().removeUniqueIdAssociation(phys);
throw e;
}

View File

@@ -24,8 +24,8 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.UiThread;
import android.hardware.input.InputManager;
import android.os.Handler;
import android.hardware.input.InputManagerGlobal;
import android.os.IBinder;
import android.os.Looper;
import android.text.TextUtils;
@@ -255,7 +255,8 @@ final class HandwritingModeController {
}
if (DEBUG) Slog.d(TAG, "Starting handwriting session in display: " + mCurrentDisplayId);
InputManager.getInstance().pilferPointers(mHandwritingSurface.getInputChannel().getToken());
InputManagerGlobal.getInstance()
.pilferPointers(mHandwritingSurface.getInputChannel().getToken());
// Stop processing more events.
mHandwritingEventReceiver.dispose();

View File

@@ -44,7 +44,7 @@ import android.content.ClipData;
import android.content.ClipDescription;
import android.graphics.Point;
import android.graphics.Rect;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
@@ -694,7 +694,7 @@ class DragState {
void overridePointerIconLocked(int touchSource) {
mTouchSource = touchSource;
if (isFromSource(InputDevice.SOURCE_MOUSE)) {
InputManager.getInstance().setPointerIconType(PointerIcon.TYPE_GRABBING);
InputManagerGlobal.getInstance().setPointerIconType(PointerIcon.TYPE_GRABBING);
}
}

View File

@@ -24,7 +24,7 @@ import static android.view.PointerIcon.TYPE_VERTICAL_DOUBLE_ARROW;
import android.graphics.Rect;
import android.graphics.Region;
import android.hardware.input.InputManager;
import android.hardware.input.InputManagerGlobal;
import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.WindowManagerPolicyConstants.PointerEventListener;
@@ -117,7 +117,8 @@ public class TaskTapPointerEventListener implements PointerEventListener {
mService.mH.obtainMessage(H.RESTORE_POINTER_ICON,
x, y, mDisplayContent).sendToTarget();
} else {
InputManager.getInstance().setPointerIconType(mPointerIconType);
InputManagerGlobal.getInstance()
.setPointerIconType(mPointerIconType);
}
}
}