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
This commit is contained in:
Yohei Yukawa
2022-07-26 08:12:26 +09:00
parent 9e134c8970
commit 19e18b6c85
4 changed files with 17 additions and 8 deletions

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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,

View File

@@ -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);
}