diff options
| author | 2024-11-27 19:54:18 +0000 | |
|---|---|---|
| committer | 2024-11-27 19:54:18 +0000 | |
| commit | 530a44f423abcf26691f0ef1fb51bc5020ba6fc2 (patch) | |
| tree | 8ed84b60e23c7c8e1471bf3cb910215473d6b32a | |
| parent | badee29d4845057f95dafab58d1b46f6c8565fdb (diff) | |
| parent | e6d6411e18d061721494b7856452881e815c51b6 (diff) | |
Merge "Fixes canEnableDisableInputMethod to use correct user handle." into main
3 files changed, 13 insertions, 6 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java index f45fa921c4a2..5ae077363c88 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java @@ -405,10 +405,9 @@ public class AccessibilitySecurityPolicy { * @throws SecurityException if the input method is not in the same package as the service. */ @AccessibilityService.SoftKeyboardController.EnableImeResult - int canEnableDisableInputMethod(String imeId, AbstractAccessibilityServiceConnection service) - throws SecurityException { + int canEnableDisableInputMethod(String imeId, AbstractAccessibilityServiceConnection service, + int callingUserId) throws SecurityException { final String servicePackageName = service.getComponentName().getPackageName(); - final int callingUserId = UserHandle.getCallingUserId(); InputMethodInfo inputMethodInfo = null; List<InputMethodInfo> inputMethodInfoList = diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java index 15999d19ebc0..a3fe9ec5ea22 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java @@ -410,9 +410,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect final @AccessibilityService.SoftKeyboardController.EnableImeResult int checkResult; final long identity = Binder.clearCallingIdentity(); try { - synchronized (mLock) { - checkResult = mSecurityPolicy.canEnableDisableInputMethod(imeId, this); - } + checkResult = mSecurityPolicy.canEnableDisableInputMethod(imeId, this, callingUserId); if (checkResult != ENABLE_IME_SUCCESS) { return checkResult; } diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityServiceConnectionTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityServiceConnectionTest.java index 8914696d55da..d4f2dcc24af6 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityServiceConnectionTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityServiceConnectionTest.java @@ -448,4 +448,14 @@ public class AccessibilityServiceConnectionTest { mConnection.binderDied(); assertThat(mConnection.getServiceInfo().flags & flag).isEqualTo(0); } + + @Test + public void setInputMethodEnabled_checksAccessWithProvidedImeIdAndUserId() { + final String imeId = "test_ime_id"; + final int callingUserId = UserHandle.getCallingUserId(); + mConnection.setInputMethodEnabled(imeId, true); + + verify(mMockSecurityPolicy).canEnableDisableInputMethod( + eq(imeId), any(), eq(callingUserId)); + } } |