summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java13
-rw-r--r--services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java2
2 files changed, 9 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index fb0f6588e80e..7f6f700a2cbd 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -474,6 +474,9 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
IInputMethodSession mSession;
InputChannel mChannel;
+ @UserIdInt
+ final int mUserId;
+
@Override
public String toString() {
return "SessionState{uid=" + mClient.mUid + " pid=" + mClient.mPid
@@ -482,15 +485,17 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
+ " session=" + Integer.toHexString(
System.identityHashCode(mSession))
+ " channel=" + mChannel
+ + " userId=" + mUserId
+ "}";
}
SessionState(ClientState client, IInputMethodInvoker method,
- IInputMethodSession session, InputChannel channel) {
+ IInputMethodSession session, InputChannel channel, @UserIdInt int userId) {
mClient = client;
mMethod = method;
mSession = session;
mChannel = channel;
+ mUserId = userId;
}
}
@@ -2349,7 +2354,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
if (userData.mCurClient != null) {
clearClientSessionLocked(userData.mCurClient);
userData.mCurClient.mCurSession = new SessionState(
- userData.mCurClient, method, session, channel);
+ userData.mCurClient, method, session, channel, userId);
InputBindResult res = attachNewInputLocked(
StartInputReason.SESSION_CREATED_BY_IME, true, userId);
attachNewAccessibilityLocked(StartInputReason.SESSION_CREATED_BY_IME, true,
@@ -2490,9 +2495,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
sessionState.mSession.finishSession();
} catch (RemoteException e) {
Slog.w(TAG, "Session failed to close due to remote exception", e);
- // TODO(b/350386877): Propagate userId from the caller or infer it from
- // sessionState
- final int userId = mCurrentUserId;
+ final int userId = sessionState.mUserId;
final var bindingController = getInputMethodBindingController(userId);
updateSystemUiLocked(0 /* vis */, bindingController.getBackDisposition(),
userId);
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
index d427a6d365de..1dc5126e9a7e 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
@@ -348,7 +348,7 @@ public class InputMethodManagerServiceTestBase {
ClientState cs = mInputMethodManagerService.getClientStateLocked(client);
cs.mCurSession = new InputMethodManagerService.SessionState(cs,
mMockInputMethodInvoker, mMockInputMethodSession, mock(
- InputChannel.class));
+ InputChannel.class), mCallingUserId);
}
}
}