From 2d47a57d34856483c065838e84d0e8424a4b2ad7 Mon Sep 17 00:00:00 2001 From: Christine Franks Date: Wed, 20 Apr 2022 10:50:16 -0700 Subject: [PATCH] Reset display input properties when removed Bug: 227352703 Test: atest CtsHardwareTestCases:android.hardware.input.cts.tests.VirtualMouseTest --iterations 10 and adb shell dumpsys input | grep mAdditionalDisplayInputProperties returns nothing Merged-In: I4b8ca7f52079260eb9bf4cc8c69d88713087d6ac Merged-In: I96ae978f467a450bca142de0b98b2643f155f15e Change-Id: I4b8ca7f52079260eb9bf4cc8c69d88713087d6ac --- .../server/input/InputManagerService.java | 7 ++++++ .../server/input/InputManagerServiceTests.kt | 25 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index 5ae3f337d0a53..e4e9d1d49a6e9 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -1712,6 +1712,13 @@ public class InputManagerService extends IInputManager.Stub mPointerIconDisplayContext = null; } + synchronized (mAdditionalDisplayInputPropertiesLock) { + setPointerIconVisible(AdditionalDisplayInputProperties.DEFAULT_POINTER_ICON_VISIBLE, + displayId); + setPointerAcceleration(AdditionalDisplayInputProperties.DEFAULT_POINTER_ACCELERATION, + displayId); + } + mNative.displayRemoved(displayId); } diff --git a/services/tests/servicestests/src/com/android/server/input/InputManagerServiceTests.kt b/services/tests/servicestests/src/com/android/server/input/InputManagerServiceTests.kt index cb97c9bf91a3b..e78f0c77d6b36 100644 --- a/services/tests/servicestests/src/com/android/server/input/InputManagerServiceTests.kt +++ b/services/tests/servicestests/src/com/android/server/input/InputManagerServiceTests.kt @@ -20,9 +20,11 @@ import android.content.Context import android.content.ContextWrapper import android.hardware.display.DisplayViewport import android.hardware.input.InputManagerInternal +import android.os.IInputConstants import android.os.test.TestLooper import android.platform.test.annotations.Presubmit import android.view.Display +import android.view.PointerIcon import androidx.test.InstrumentationRegistry import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue @@ -31,6 +33,7 @@ import org.junit.Rule import org.junit.Test import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyInt +import org.mockito.ArgumentMatchers.eq import org.mockito.Mock import org.mockito.Mockito.`when` import org.mockito.Mockito.doAnswer @@ -38,6 +41,7 @@ import org.mockito.Mockito.never import org.mockito.Mockito.spy import org.mockito.Mockito.times import org.mockito.Mockito.verify +import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.junit.MockitoJUnit import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit @@ -219,4 +223,23 @@ class InputManagerServiceTests { secondRequestLatch.await(100, TimeUnit.MILLISECONDS)) verify(native, times(2)).setPointerDisplayId(anyInt()) } -} \ No newline at end of file + + @Test + fun onDisplayRemoved_resetAllAdditionalInputProperties() { + localService.setVirtualMousePointerDisplayId(10) + localService.setPointerIconVisible(false, 10) + verify(native).setPointerIconType(eq(PointerIcon.TYPE_NULL)) + localService.setPointerAcceleration(5f, 10) + verify(native).setPointerAcceleration(eq(5f)) + + service.onDisplayRemoved(10) + verify(native).displayRemoved(eq(10)) + verify(native).setPointerIconType(eq(PointerIcon.TYPE_NOT_SPECIFIED)) + verify(native).setPointerAcceleration( + eq(IInputConstants.DEFAULT_POINTER_ACCELERATION.toFloat())) + + localService.setVirtualMousePointerDisplayId(10) + verify(native).setPointerDisplayId(eq(10)) + verifyNoMoreInteractions(native) + } +}