From dc79a130f72423868cae7ef70575a669d5e4bb51 Mon Sep 17 00:00:00 2001 From: Asmita Poddar Date: Tue, 21 Mar 2023 17:07:47 +0000 Subject: [PATCH] Replace InputManager instances with InputManagerGlobal After moving the functions from InputManager to InputManagerGlobal, InputManager.getInstance() has been replaced with InputManagerGlobal.getInstance() Bug: b/267758905 Test: Pre-submit Change-Id: Iae755c381dac84cee322d46de722da52013b05dc --- .../android/app/UiAutomationConnection.java | 3 ++- .../hardware/input/InputManagerGlobal.java | 21 ++++++++++++------- core/java/android/view/KeyCharacterMap.java | 8 +++---- .../android/internal/view/BaseIWindow.java | 5 +++-- .../onehanded/OneHandedTouchHandler.java | 4 ++-- .../shared/system/InputMonitorCompat.java | 5 +++-- .../navigationbar/buttons/KeyButtonView.java | 14 +++++++------ .../recents/OverviewProxyService.java | 8 ++++--- .../statusbar/KeyboardShortcutListSearch.java | 4 ++-- .../UnfoldLightRevealOverlayAnimation.kt | 4 ++-- .../buttons/KeyButtonViewTest.java | 11 +++++----- .../companion/virtual/InputController.java | 10 ++++----- .../HandwritingModeController.java | 5 +++-- .../java/com/android/server/wm/DragState.java | 4 ++-- .../wm/TaskTapPointerEventListener.java | 5 +++-- 15 files changed, 64 insertions(+), 47 deletions(-) diff --git a/core/java/android/app/UiAutomationConnection.java b/core/java/android/app/UiAutomationConnection.java index 3e4e7cb453e14..3a32f2362c0d2 100644 --- a/core/java/android/app/UiAutomationConnection.java +++ b/core/java/android/app/UiAutomationConnection.java @@ -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); diff --git a/core/java/android/hardware/input/InputManagerGlobal.java b/core/java/android/hardware/input/InputManagerGlobal.java index 6e7e90e103e8d..31ce7d985b150 100644 --- a/core/java/android/hardware/input/InputManagerGlobal.java +++ b/core/java/android/hardware/input/InputManagerGlobal.java @@ -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) { diff --git a/core/java/android/view/KeyCharacterMap.java b/core/java/android/view/KeyCharacterMap.java index ea5d9a684ba46..d8221a6267fd8 100644 --- a/core/java/android/view/KeyCharacterMap.java +++ b/core/java/android/view/KeyCharacterMap.java @@ -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 diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java index 4a5ed7e8970d5..600058e88e4b7 100644 --- a/core/java/com/android/internal/view/BaseIWindow.java +++ b/core/java/com/android/internal/view/BaseIWindow.java @@ -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 diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java index 5b9f0c41e31ee..4ec1351aa22b8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java @@ -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(() -> { diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/InputMonitorCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/InputMonitorCompat.java index bf8e6a5663c06..c4aac111f24cc 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/InputMonitorCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/InputMonitorCompat.java @@ -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); } /** diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/KeyButtonView.java index 83c2a5de5c6ea..3529142467d5b 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/KeyButtonView.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index c28a40a913784..80eea81a541df 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -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 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)); } diff --git a/services/companion/java/com/android/server/companion/virtual/InputController.java b/services/companion/java/com/android/server/companion/virtual/InputController.java index bd67889933010..990dd64434a06 100644 --- a/services/companion/java/com/android/server/companion/virtual/InputController.java +++ b/services/companion/java/com/android/server/companion/virtual/InputController.java @@ -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; } diff --git a/services/core/java/com/android/server/inputmethod/HandwritingModeController.java b/services/core/java/com/android/server/inputmethod/HandwritingModeController.java index 502855defa077..d54354715d039 100644 --- a/services/core/java/com/android/server/inputmethod/HandwritingModeController.java +++ b/services/core/java/com/android/server/inputmethod/HandwritingModeController.java @@ -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(); diff --git a/services/core/java/com/android/server/wm/DragState.java b/services/core/java/com/android/server/wm/DragState.java index bc9efc88ecae8..0f1a1053716e6 100644 --- a/services/core/java/com/android/server/wm/DragState.java +++ b/services/core/java/com/android/server/wm/DragState.java @@ -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); } } diff --git a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java index 523b484269c0a..7d22b744ad5f1 100644 --- a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java +++ b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java @@ -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); } } }