summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mugdha Lakhani <nator@google.com> 2023-05-04 18:38:10 +0000
committer Mugdha Lakhani <nator@google.com> 2023-05-09 18:45:18 +0000
commit5ee254bf11c02c0f700423585056d2afbd34b3a1 (patch)
treef70ad590e55d7551eb16bf3263136cf1677e12ad
parentc27813ebbce23615043298834936eaef6b28885f (diff)
Add support for Input ads from the SDK runtime.
Symtom: EditText created from the SDK runtime is not able to accept input using the soft keyboard. The root cause is a failed check in ImeService when it tries to match the caller uid with the uid PM associates with the sdk sandbox package. Since SDK sandbox package can be running in a process that can have a UID from a range, rather than a single UID, this check often fails. Updated the check to use a PackageManager method that understands this nuance about sdk sandbox package and ensures the UID falls within the range of sdk sandbox UIDs. Bug: b/242985591 Test: Using the SDK sandbox manual test app. Change-Id: I3da937bf379f39c8204db5b7d7d1c41c6a6e942e
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodUtils.java4
-rw-r--r--services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java2
2 files changed, 4 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodUtils.java b/services/core/java/com/android/server/inputmethod/InputMethodUtils.java
index 17536fcb820e..c97d8e21eef1 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodUtils.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodUtils.java
@@ -194,8 +194,8 @@ final class InputMethodUtils {
int uid, String packageName) {
// PackageManagerInternal#getPackageUid() doesn't check MATCH_INSTANT/MATCH_APEX as of
// writing. So setting 0 should be fine.
- return packageManagerInternal.getPackageUid(packageName, 0 /* flags */,
- UserHandle.getUserId(uid)) == uid;
+ return packageManagerInternal.isSameApp(packageName, /* flags= */ 0, uid,
+ UserHandle.getUserId(uid));
}
/**
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
index c80ecbf62142..1a8e00cab39d 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
@@ -207,6 +207,8 @@ public class InputMethodManagerServiceTestBase {
when(mMockActivityManagerInternal.isSystemReady()).thenReturn(true);
when(mMockPackageManagerInternal.getPackageUid(anyString(), anyLong(), anyInt()))
.thenReturn(Binder.getCallingUid());
+ when(mMockPackageManagerInternal.isSameApp(anyString(), anyLong(), anyInt(), anyInt()))
+ .thenReturn(true);
when(mMockWindowManagerInternal.onToggleImeRequested(anyBoolean(), any(), any(), anyInt()))
.thenReturn(TEST_IME_TARGET_INFO);
when(mMockInputMethodClient.asBinder()).thenReturn(mMockInputMethodBinder);