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

Commit c7a0b468 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Simplify InputMethodUtils#setAdditionalInputMethodSubtypes()"

parents 69d514d0 84b0ff6d
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -4153,6 +4153,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
        if (UserHandle.getCallingUserId() != userId) {
            mContext.enforceCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL, null);
        }
        final int callingUid = Binder.getCallingUid();

        // By this IPC call, only a process which shares the same uid with the IME can add
        // additional input method subtypes to the IME.
@@ -4173,7 +4174,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub

            if (mSettings.getCurrentUserId() == userId) {
                if (!mSettings.setAdditionalInputMethodSubtypes(imiId, toBeAdded,
                        mAdditionalSubtypeMap, mIPackageManager)) {
                        mAdditionalSubtypeMap, mPackageManagerInternal, callingUid)) {
                    return;
                }
                final long ident = Binder.clearCallingIdentity();
@@ -4192,7 +4193,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
                    new ArrayMap<>();
            AdditionalSubtypeUtils.load(additionalSubtypeMap, userId);
            settings.setAdditionalInputMethodSubtypes(imiId, toBeAdded, additionalSubtypeMap,
                    mIPackageManager);
                    mPackageManagerInternal, callingUid);
        }
    }

+3 −14
Original line number Diff line number Diff line
@@ -23,13 +23,10 @@ import android.annotation.UserIdInt;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.content.res.Resources;
import android.os.Binder;
import android.os.Build;
import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
@@ -45,7 +42,6 @@ import android.view.textservice.SpellCheckerInfo;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.inputmethod.StartInputFlags;
import com.android.internal.util.ArrayUtils;
import com.android.server.LocalServices;
import com.android.server.pm.UserManagerInternal;
import com.android.server.textservices.TextServicesManagerInternal;
@@ -854,20 +850,13 @@ final class InputMethodUtils {
        boolean setAdditionalInputMethodSubtypes(@NonNull String imeId,
                @NonNull ArrayList<InputMethodSubtype> subtypes,
                @NonNull ArrayMap<String, List<InputMethodSubtype>> additionalSubtypeMap,
                @NonNull IPackageManager packageManager) {
                @NonNull PackageManagerInternal packageManagerInternal, int callingUid) {
            final InputMethodInfo imi = mMethodMap.get(imeId);
            if (imi == null) {
                return false;
            }
            final String[] packageInfos;
            try {
                packageInfos = packageManager.getPackagesForUid(Binder.getCallingUid());
            } catch (RemoteException e) {
                Slog.e(TAG, "Failed to get package infos");
                return false;
            }
            if (ArrayUtils.find(packageInfos,
                    packageInfo -> TextUtils.equals(packageInfo, imi.getPackageName())) == null) {
            if (!InputMethodUtils.checkIfPackageBelongsToUid(packageManagerInternal, callingUid,
                    imi.getPackageName())) {
                return false;
            }