diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java index 2dfc72b12f9d2..68e90e1c00d3b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java @@ -46,6 +46,7 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.content.pm.PackageManager; import android.os.Binder; @@ -284,4 +285,32 @@ public class WindowManagerServiceTests extends WindowTestsBase { verify(mWm.mWindowContextListenerController, never()).registerWindowContainerListener(any(), any(), anyInt(), anyInt(), any()); } + + @Test + public void testSetInTouchMode_instrumentedProcessGetPermissionToSwitchTouchMode() { + boolean currentTouchMode = mWm.getInTouchMode(); + int callingPid = Binder.getCallingPid(); + int callingUid = Binder.getCallingUid(); + doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString()); + when(mWm.mAtmService.isInstrumenting(callingPid)).thenReturn(true); + + mWm.setInTouchMode(!currentTouchMode); + + verify(mWm.mInputManager).setInTouchMode( + !currentTouchMode, callingPid, callingUid, /* hasPermission= */ true); + } + + @Test + public void testSetInTouchMode_nonInstrumentedProcessDontGetPermissionToSwitchTouchMode() { + boolean currentTouchMode = mWm.getInTouchMode(); + int callingPid = Binder.getCallingPid(); + int callingUid = Binder.getCallingUid(); + doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString()); + when(mWm.mAtmService.isInstrumenting(callingPid)).thenReturn(false); + + mWm.setInTouchMode(!currentTouchMode); + + verify(mWm.mInputManager).setInTouchMode( + !currentTouchMode, callingPid, callingUid, /* hasPermission= */ false); + } }