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

Commit 19e18b6c authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Let getEnabledInputMethodSubtypeList() take userId

This CL lets

  IInputMethodManager#getEnabledInputMethodSubtypeList()

take the useId as an input parameter for consistency with other query
methods.

There should be no developer observable behavior change because now

  InputMethodManager#getEnabledInputMethodSubtypeList()

specifies its own user ID.

Bug: 34886274
Test: make -j CtsInputMethod1  \
                CtsInputMethod2  \
                CtsInputMethodServiceDeviceTests  \
                CtsInputMethodServiceEventProvider  \
                CtsInputMethodServiceHostTestCases  \
                EditTextApp  &&
        atest CtsInputMethodServiceHostTestCases
Change-Id: Ie213ef7e04d6337e303ea331d0a00c7d7f9a6d1a
parent 9e134c89
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -90,10 +90,10 @@ final class IInputMethodManagerInvoker {
    @AnyThread
    @NonNull
    List<InputMethodSubtype> getEnabledInputMethodSubtypeList(@Nullable String imiId,
            boolean allowsImplicitlySelectedSubtypes) {
            boolean allowsImplicitlySelectedSubtypes, @UserIdInt int userId) {
        try {
            return mTarget.getEnabledInputMethodSubtypeList(imiId,
                    allowsImplicitlySelectedSubtypes);
                    allowsImplicitlySelectedSubtypes, userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+4 −2
Original line number Diff line number Diff line
@@ -1514,7 +1514,8 @@ public final class InputMethodManager {
            boolean allowsImplicitlySelectedSubtypes) {
        return mServiceInvoker.getEnabledInputMethodSubtypeList(
                imi == null ? null : imi.getId(),
                allowsImplicitlySelectedSubtypes);
                allowsImplicitlySelectedSubtypes,
                UserHandle.myUserId());
    }

    /**
@@ -3320,7 +3321,8 @@ public final class InputMethodManager {
            return false;
        }
        final List<InputMethodSubtype> enabledSubtypes =
                mServiceInvoker.getEnabledInputMethodSubtypeList(imeId, true);
                mServiceInvoker.getEnabledInputMethodSubtypeList(imeId, true,
                        UserHandle.myUserId());
        final int numSubtypes = enabledSubtypes.size();
        for (int i = 0; i < numSubtypes; ++i) {
            final InputMethodSubtype enabledSubtype = enabledSubtypes.get(i);
+4 −1
Original line number Diff line number Diff line
@@ -45,8 +45,11 @@ interface IInputMethodManager {
            + "android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)")
    List<InputMethodInfo> getEnabledInputMethodList(int userId);

    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
            + "android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)")
    List<InputMethodSubtype> getEnabledInputMethodSubtypeList(in @nullable String imiId,
            boolean allowsImplicitlySelectedSubtypes);
            boolean allowsImplicitlySelectedSubtypes, int userId);

    @nullable InputMethodSubtype getLastInputMethodSubtype();

    boolean showSoftInput(in IInputMethodClient client, @nullable IBinder windowToken, int flags,
+7 −3
Original line number Diff line number Diff line
@@ -2202,16 +2202,20 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
     * @param imiId if null, returns enabled subtypes for the current {@link InputMethodInfo}.
     * @param allowsImplicitlySelectedSubtypes {@code true} to return the implicitly selected
     *                                         subtypes.
     * @param userId the user ID to be queried about.
     */
    @Override
    public List<InputMethodSubtype> getEnabledInputMethodSubtypeList(String imiId,
            boolean allowsImplicitlySelectedSubtypes) {
        final int callingUserId = UserHandle.getCallingUserId();
            boolean allowsImplicitlySelectedSubtypes, @UserIdInt int userId) {
        if (UserHandle.getCallingUserId() != userId) {
            mContext.enforceCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL, null);
        }

        synchronized (ImfLock.class) {
            final long ident = Binder.clearCallingIdentity();
            try {
                return getEnabledInputMethodSubtypeListLocked(imiId,
                        allowsImplicitlySelectedSubtypes, callingUserId);
                        allowsImplicitlySelectedSubtypes, userId);
            } finally {
                Binder.restoreCallingIdentity(ident);
            }