From 75cab555c5ee94d6b7706dd08cf99815168efcbe Mon Sep 17 00:00:00 2001 From: Antonio Kantek Date: Fri, 18 Mar 2022 16:36:43 -0700 Subject: [PATCH] Silent touch mode permission check Touch mode permission check is done in too phases: 1. Checks if caller has MODIFY_TOUCH_MODE_STATE permission granted and/or 2. Checks if caller owns the focused window. Unnecessary log is produced when caller owns the focused window (2), but don't have the permission granted (1). This CL fixes that by silently checking if caller has the permission granted. Fixes: 223330265 Test: atest WindowManagerServiceTests Change-Id: I7f8d5c9cfb2df46e1f91fa4db634f7de12e66078 --- .../core/java/com/android/server/wm/WindowManagerService.java | 3 ++- .../src/com/android/server/wm/WindowManagerServiceTests.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 29e292da5697e..5d9c25b884466 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -3776,7 +3776,8 @@ public class WindowManagerService extends IWindowManager.Stub final int uid = Binder.getCallingUid(); final boolean hasPermission = mAtmService.instrumentationSourceHasPermission(pid, MODIFY_TOUCH_MODE_STATE) - || checkCallingPermission(MODIFY_TOUCH_MODE_STATE, "setInTouchMode()"); + || checkCallingPermission(MODIFY_TOUCH_MODE_STATE, "setInTouchMode()", + /* printlog= */ false); final long token = Binder.clearCallingIdentity(); try { if (mInputManager.setInTouchMode(mode, pid, uid, hasPermission)) { 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 9d4fe27839928..a0c20c2c6b688 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java @@ -292,7 +292,7 @@ public class WindowManagerServiceTests extends WindowTestsBase { boolean currentTouchMode = mWm.getInTouchMode(); int callingPid = Binder.getCallingPid(); int callingUid = Binder.getCallingUid(); - doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString()); + doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString(), anyBoolean()); when(mWm.mAtmService.instrumentationSourceHasPermission(callingPid, android.Manifest.permission.MODIFY_TOUCH_MODE_STATE)).thenReturn(true); @@ -307,7 +307,7 @@ public class WindowManagerServiceTests extends WindowTestsBase { boolean currentTouchMode = mWm.getInTouchMode(); int callingPid = Binder.getCallingPid(); int callingUid = Binder.getCallingUid(); - doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString()); + doReturn(false).when(mWm).checkCallingPermission(anyString(), anyString(), anyBoolean()); when(mWm.mAtmService.instrumentationSourceHasPermission(callingPid, android.Manifest.permission.MODIFY_TOUCH_MODE_STATE)).thenReturn(false);