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
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user