Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ee254bf authored by Mugdha Lakhani's avatar Mugdha Lakhani
Browse files

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
parent c27813eb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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));
    }

    /**
+2 −0
Original line number Diff line number Diff line
@@ -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);