Optimize IMMS#setAdditionalInputMethodSubtypes() a bit for bg users

This is a follow up CL to my previous CL, which enabled background
users to call

  InputMethodManager#setAdditionalInputMethodSubtypes().

One this this CL tries to optimize is the fact that its implementation
is currently invoking

  AdditionalSubtypeUtils.load()

twice when called for background usres.  The double-call is happening
in

  InputMethodManagerService#setAdditionalInputMethodSubtypes()

itseif and inside

  InputMethodManagerService#queryMethodMapForUser() [2].

With this CL, the load operation should be happen only once.

There should be no developer-observable behavior change.

 [1]: Iac778d95846843504f6e00b3b939ef0794013b02
      0b169d04c1
 [2]: I4187468076705ac597d680f2f5dc32d7b166da1f
      b5f3d34def

Bug: 234882948
Test: presubmit
Change-Id: I6eb4201ebd69ca8821cbe74fc69356f68f9bcb5e
This commit is contained in:
Yohei Yukawa
2022-10-04 15:25:45 -07:00
parent 66fa893138
commit 9ddd4cd83e

View File

@@ -4186,12 +4186,15 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
return;
}
final ArrayMap<String, InputMethodInfo> methodMap = queryMethodMapForUser(userId);
final InputMethodSettings settings = new InputMethodSettings(mContext, methodMap,
userId, false);
final ArrayMap<String, InputMethodInfo> methodMap = new ArrayMap<>();
final ArrayList<InputMethodInfo> methodList = new ArrayList<>();
final ArrayMap<String, List<InputMethodSubtype>> additionalSubtypeMap =
new ArrayMap<>();
AdditionalSubtypeUtils.load(additionalSubtypeMap, userId);
queryInputMethodServicesInternal(mContext, userId, additionalSubtypeMap, methodMap,
methodList, DirectBootAwareness.AUTO);
final InputMethodSettings settings = new InputMethodSettings(mContext, methodMap,
userId, false);
settings.setAdditionalInputMethodSubtypes(imiId, toBeAdded, additionalSubtypeMap,
mPackageManagerInternal, callingUid);
}