summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Daniel Norman <danielnorman@google.com> 2024-11-27 19:54:18 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-11-27 19:54:18 +0000
commit530a44f423abcf26691f0ef1fb51bc5020ba6fc2 (patch)
tree8ed84b60e23c7c8e1471bf3cb910215473d6b32a
parentbadee29d4845057f95dafab58d1b46f6c8565fdb (diff)
parente6d6411e18d061721494b7856452881e815c51b6 (diff)
Merge "Fixes canEnableDisableInputMethod to use correct user handle." into main
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java5
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java4
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/AccessibilityServiceConnectionTest.java10
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));
+ }
}