Merge "Prefer defining local variables over userData.mBindingController" into main
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index ac72692..eb1357d 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -1503,7 +1503,8 @@
// Note that in b/197848765 we want to see if we can keep the binding alive for better
// profile switching.
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
- userData.mBindingController.unbindCurrentMethod();
+ final var bindingController = userData.mBindingController;
+ bindingController.unbindCurrentMethod();
unbindCurrentClientLocked(UnbindReason.SWITCH_USER);
@@ -1722,9 +1723,10 @@
// Check if selected IME of current user supports handwriting.
if (userId == mCurrentUserId) {
final var userData = mUserDataRepository.getOrCreate(userId);
- return userData.mBindingController.supportsStylusHandwriting()
+ final var bindingController = userData.mBindingController;
+ return bindingController.supportsStylusHandwriting()
&& (!connectionless
- || userData.mBindingController.supportsConnectionlessStylusHandwriting());
+ || bindingController.supportsConnectionlessStylusHandwriting());
}
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
final InputMethodInfo imi = settings.getMethodMap().get(
@@ -1920,7 +1922,8 @@
// following dependencies also need to be user independent: mCurClient, mBoundToMethod,
// getCurMethodLocked(), and mMenuController.
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
- mCurClient.mClient.onUnbindMethod(userData.mBindingController.getSequenceNumber(),
+ final var bindingController = userData.mBindingController;
+ mCurClient.mClient.onUnbindMethod(bindingController.getSequenceNumber(),
unbindClientReason);
mCurClient.mSessionRequested = false;
mCurClient.mSessionRequestedForAccessibility = false;
@@ -2000,13 +2003,14 @@
final boolean restarting = !initial;
final Binder startInputToken = new Binder();
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
final StartInputInfo info = new StartInputInfo(mCurrentUserId,
getCurTokenLocked(),
- mCurTokenDisplayId, userData.mBindingController.getCurId(), startInputReason,
+ mCurTokenDisplayId, bindingController.getCurId(), startInputReason,
restarting, UserHandle.getUserId(mCurClient.mUid),
mCurClient.mSelfReportedDisplayId, mImeBindingState.mFocusedWindow, mCurEditorInfo,
mImeBindingState.mFocusedWindowSoftInputMode,
- userData.mBindingController.getSequenceNumber());
+ bindingController.getSequenceNumber());
mImeTargetWindowMap.put(startInputToken, mImeBindingState.mFocusedWindow);
mStartInputHistory.addEntry(info);
@@ -2018,7 +2022,7 @@
if (mCurrentUserId == UserHandle.getUserId(
mCurClient.mUid)) {
mPackageManagerInternal.grantImplicitAccess(mCurrentUserId, null /* intent */,
- UserHandle.getAppId(userData.mBindingController.getCurMethodUid()),
+ UserHandle.getAppId(bindingController.getCurMethodUid()),
mCurClient.mUid, true /* direct */);
}
@@ -2039,20 +2043,20 @@
null /* resultReceiver */, SoftInputShowHideReason.ATTACH_NEW_INPUT);
}
- final var curId = userData.mBindingController.getCurId();
+ final var curId = bindingController.getCurId();
final InputMethodInfo curInputMethodInfo = InputMethodSettingsRepository.get(mCurrentUserId)
.getMethodMap().get(curId);
final boolean suppressesSpellChecker =
curInputMethodInfo != null && curInputMethodInfo.suppressesSpellChecker();
final SparseArray<IAccessibilityInputMethodSession> accessibilityInputMethodSessions =
createAccessibilityInputMethodSessions(mCurClient.mAccessibilitySessions);
- if (userData.mBindingController.supportsStylusHandwriting() && hasSupportedStylusLocked()) {
+ if (bindingController.supportsStylusHandwriting() && hasSupportedStylusLocked()) {
mHwController.setInkWindowInitializer(new InkWindowInitializer());
}
return new InputBindResult(InputBindResult.ResultCode.SUCCESS_WITH_IME_SESSION,
session.mSession, accessibilityInputMethodSessions,
(session.mChannel != null ? session.mChannel.dup() : null),
- curId, userData.mBindingController.getSequenceNumber(), suppressesSpellChecker);
+ curId, bindingController.getSequenceNumber(), suppressesSpellChecker);
}
@GuardedBy("ImfLock.class")
@@ -2146,7 +2150,8 @@
final boolean connectionWasActive = mCurInputConnection != null;
// Bump up the sequence for this client and attach it.
- userData.mBindingController.advanceSequenceNumber();
+ final var bindingController = userData.mBindingController;
+ bindingController.advanceSequenceNumber();
mCurClient = cs;
mCurInputConnection = inputConnection;
@@ -2169,7 +2174,6 @@
if (connectionIsActive != connectionWasActive) {
mInputManagerInternal.notifyInputMethodConnectionActive(connectionIsActive);
}
- final var bindingController = userData.mBindingController;
// If configured, we want to avoid starting up the IME if it is not supposed to be showing
if (shouldPreventImeStartupLocked(selectedMethodId, startInputFlags,
@@ -2320,7 +2324,8 @@
@Nullable
private InputBindResult tryReuseConnectionLocked(@NonNull UserDataRepository.UserData userData,
@NonNull ClientState cs) {
- if (userData.mBindingController.hasMainConnection()) {
+ final var bindingController = userData.mBindingController;
+ if (bindingController.hasMainConnection()) {
if (getCurMethodLocked() != null) {
// Return to client, and we will get back with it when
// we have had a session made for it.
@@ -2329,10 +2334,10 @@
return new InputBindResult(
InputBindResult.ResultCode.SUCCESS_WAITING_IME_SESSION,
null, null, null,
- userData.mBindingController.getCurId(),
- userData.mBindingController.getSequenceNumber(), false);
+ bindingController.getCurId(),
+ bindingController.getSequenceNumber(), false);
} else {
- final long lastBindTime = userData.mBindingController.getLastBindTime();
+ final long lastBindTime = bindingController.getLastBindTime();
long bindingDuration = SystemClock.uptimeMillis() - lastBindTime;
if (bindingDuration < TIME_TO_RECONNECT) {
// In this case we have connected to the service, but
@@ -2345,8 +2350,8 @@
return new InputBindResult(
InputBindResult.ResultCode.SUCCESS_WAITING_IME_BINDING,
null, null, null,
- userData.mBindingController.getCurId(),
- userData.mBindingController.getSequenceNumber(), false);
+ bindingController.getCurId(),
+ bindingController.getSequenceNumber(), false);
} else {
EventLog.writeEvent(EventLogTags.IMF_FORCE_RECONNECT_IME,
getSelectedMethodIdLocked(), bindingDuration, 0);
@@ -2473,13 +2478,14 @@
@GuardedBy("ImfLock.class")
void resetCurrentMethodAndClientLocked(@UnbindReason int unbindClientReason) {
- final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
- userData.mBindingController.setSelectedMethodId(null);
+ final var bindingController =
+ mUserDataRepository.getOrCreate(mCurrentUserId).mBindingController;
+ bindingController.setSelectedMethodId(null);
// Callback before clean-up binding states.
// TODO(b/338461930): Check if this is still necessary or not.
onUnbindCurrentMethodByReset();
- userData.mBindingController.unbindCurrentMethod();
+ bindingController.unbindCurrentMethod();
unbindCurrentClientLocked(unbindClientReason);
}
@@ -3562,13 +3568,14 @@
final InputBindResult result;
synchronized (ImfLock.class) {
final var userData = mUserDataRepository.getOrCreate(userId);
+ final var bindingController = userData.mBindingController;
// If the system is not yet ready, we shouldn't be running third party code.
if (!mSystemReady) {
return new InputBindResult(
InputBindResult.ResultCode.ERROR_SYSTEM_NOT_READY,
null /* method */, null /* accessibilitySessions */, null /* channel */,
getSelectedMethodIdLocked(),
- userData.mBindingController.getSequenceNumber(),
+ bindingController.getSequenceNumber(),
false /* isInputMethodSuppressingSpellChecker */);
}
final ClientState cs = mClientController.getClient(client.asBinder());
@@ -4240,8 +4247,9 @@
// a new Stylus is detected. If IME supports handwriting, and we don't have
// handwriting initialized, lets do it now.
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
if (!mHwController.getCurrentRequestId().isPresent()
- && userData.mBindingController.supportsStylusHandwriting()) {
+ && bindingController.supportsStylusHandwriting()) {
scheduleResetStylusHandwriting();
}
}
@@ -4423,9 +4431,10 @@
private void dumpDebug(ProtoOutputStream proto, long fieldId) {
synchronized (ImfLock.class) {
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
final long token = proto.start(fieldId);
proto.write(CUR_METHOD_ID, getSelectedMethodIdLocked());
- proto.write(CUR_SEQ, userData.mBindingController.getSequenceNumber());
+ proto.write(CUR_SEQ, bindingController.getSequenceNumber());
proto.write(CUR_CLIENT, Objects.toString(mCurClient));
mImeBindingState.dumpDebug(proto, mWindowManagerInternal);
proto.write(LAST_IME_TARGET_WINDOW_NAME,
@@ -4435,13 +4444,13 @@
if (mCurEditorInfo != null) {
mCurEditorInfo.dumpDebug(proto, CUR_ATTRIBUTE);
}
- proto.write(CUR_ID, userData.mBindingController.getCurId());
+ proto.write(CUR_ID, bindingController.getCurId());
mVisibilityStateComputer.dumpDebug(proto, fieldId);
proto.write(IN_FULLSCREEN_MODE, mInFullscreenMode);
proto.write(CUR_TOKEN, Objects.toString(getCurTokenLocked()));
proto.write(CUR_TOKEN_DISPLAY_ID, mCurTokenDisplayId);
proto.write(SYSTEM_READY, mSystemReady);
- proto.write(HAVE_CONNECTION, userData.mBindingController.hasMainConnection());
+ proto.write(HAVE_CONNECTION, bindingController.hasMainConnection());
proto.write(BOUND_TO_METHOD, mBoundToMethod);
proto.write(IS_INTERACTIVE, mIsInteractive);
proto.write(BACK_DISPOSITION, mBackDisposition);
@@ -4812,7 +4821,8 @@
case MSG_RESET_HANDWRITING: {
synchronized (ImfLock.class) {
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
- if (userData.mBindingController.supportsStylusHandwriting()
+ final var bindingController = userData.mBindingController;
+ if (bindingController.supportsStylusHandwriting()
&& getCurMethodLocked() != null && hasSupportedStylusLocked()) {
Slog.d(TAG, "Initializing Handwriting Spy");
mHwController.initializeHandwritingSpy(mCurTokenDisplayId);
@@ -4838,11 +4848,12 @@
return true;
}
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
final HandwritingModeController.HandwritingSession session =
mHwController.startHandwritingSession(
msg.arg1 /*requestId*/,
msg.arg2 /*pid*/,
- userData.mBindingController.getCurMethodUid(),
+ bindingController.getCurMethodUid(),
mImeBindingState.mFocusedWindow);
if (session == null) {
Slog.e(TAG,
@@ -4894,8 +4905,9 @@
}
// TODO(b/325515685): user data must be retrieved by a userId parameter
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
if (mImePlatformCompatUtils.shouldUseSetInteractiveProtocol(
- userData.mBindingController.getCurMethodUid())) {
+ bindingController.getCurMethodUid())) {
// Handle IME visibility when interactive changed before finishing the input to
// ensure we preserve the last state as possible.
final ImeVisibilityResult imeVisRes = mVisibilityStateComputer.onInteractiveChanged(
@@ -5140,7 +5152,8 @@
@GuardedBy("ImfLock.class")
void sendOnNavButtonFlagsChangedLocked() {
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
- final IInputMethodInvoker curMethod = userData.mBindingController.getCurMethod();
+ final var bindingController = userData.mBindingController;
+ final IInputMethodInvoker curMethod = bindingController.getCurMethod();
if (curMethod == null) {
// No need to send the data if the IME is not yet bound.
return;
@@ -5626,6 +5639,7 @@
IAccessibilityInputMethodSession session, @UserIdInt int userId) {
synchronized (ImfLock.class) {
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
// TODO(b/305829876): Implement user ID verification
if (mCurClient != null) {
clearClientSessionForAccessibilityLocked(mCurClient, accessibilityConnectionId);
@@ -5648,8 +5662,8 @@
final InputBindResult res = new InputBindResult(
InputBindResult.ResultCode.SUCCESS_WITH_ACCESSIBILITY_SESSION,
imeSession, accessibilityInputMethodSessions, /* channel= */ null,
- userData.mBindingController.getCurId(),
- userData.mBindingController.getSequenceNumber(),
+ bindingController.getCurId(),
+ bindingController.getSequenceNumber(),
/* isInputMethodSuppressingSpellChecker= */ false);
mCurClient.mClient.onBindAccessibilityService(res, accessibilityConnectionId);
}
@@ -5661,6 +5675,7 @@
@UserIdInt int userId) {
synchronized (ImfLock.class) {
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
// TODO(b/305829876): Implement user ID verification
if (mCurClient != null) {
if (DEBUG) {
@@ -5670,7 +5685,7 @@
// A11yManagerService unbinds the disabled accessibility service. We don't need
// to do it here.
mCurClient.mClient.onUnbindAccessibilityService(
- userData.mBindingController.getSequenceNumber(),
+ bindingController.getSequenceNumber(),
accessibilityConnectionId);
}
// We only have sessions when we bound to an input method. Remove this session
@@ -5893,18 +5908,19 @@
};
mClientController.forAllClients(clientControllerDump);
final var userData = mUserDataRepository.getOrCreate(mCurrentUserId);
+ final var bindingController = userData.mBindingController;
p.println(" mCurrentUserId=" + mCurrentUserId);
p.println(" mCurMethodId=" + getSelectedMethodIdLocked());
client = mCurClient;
p.println(" mCurClient=" + client + " mCurSeq="
- + userData.mBindingController.getSequenceNumber());
+ + bindingController.getSequenceNumber());
p.println(" mFocusedWindowPerceptible=" + mFocusedWindowPerceptible);
mImeBindingState.dump(/* prefix= */ " ", p);
- p.println(" mCurId=" + userData.mBindingController.getCurId()
- + " mHaveConnection=" + userData.mBindingController.hasMainConnection()
+ p.println(" mCurId=" + bindingController.getCurId()
+ + " mHaveConnection=" + bindingController.hasMainConnection()
+ " mBoundToMethod=" + mBoundToMethod + " mVisibleBound="
- + userData.mBindingController.isVisibleBound());
+ + bindingController.isVisibleBound());
p.println(" mUserDataRepository=");
// TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
@@ -5920,7 +5936,7 @@
p.println(" mCurToken=" + getCurTokenLocked());
p.println(" mCurTokenDisplayId=" + mCurTokenDisplayId);
p.println(" mCurHostInputToken=" + mAutofillController.getCurHostInputToken());
- p.println(" mCurIntent=" + userData.mBindingController.getCurIntent());
+ p.println(" mCurIntent=" + bindingController.getCurIntent());
method = getCurMethodLocked();
p.println(" mCurMethod=" + getCurMethodLocked());
p.println(" mEnabledSession=" + mEnabledSession);
@@ -6411,7 +6427,8 @@
hideCurrentInputLocked(mImeBindingState.mFocusedWindow, 0 /* flags */,
SoftInputShowHideReason.HIDE_RESET_SHELL_COMMAND);
final var userData = mUserDataRepository.getOrCreate(userId);
- userData.mBindingController.unbindCurrentMethod();
+ final var bindingController = userData.mBindingController;
+ bindingController.unbindCurrentMethod();
// Enable default IMEs, disable others
var toDisable = settings.getEnabledInputMethodList();