summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yohei Yukawa <yukawa@google.com> 2024-01-06 01:26:51 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-01-06 01:26:51 +0000
commit60b6a74df90709a2a3edf94e665df8674708773a (patch)
treef56ce7eee49ba20a342b7bff653a6350b9167176
parent70fa8f1189b4e457ce7547cc71e606e0404615d8 (diff)
parent22b9aa5b474761b64ba78455860e376b80477a3a (diff)
Merge "Prepare to make HardwareKeyboardShortcutController per-user" into main
-rw-r--r--services/core/java/com/android/server/inputmethod/HardwareKeyboardShortcutController.java21
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java25
2 files changed, 39 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/inputmethod/HardwareKeyboardShortcutController.java b/services/core/java/com/android/server/inputmethod/HardwareKeyboardShortcutController.java
index f0e4b0f59b06..898d5a5e0644 100644
--- a/services/core/java/com/android/server/inputmethod/HardwareKeyboardShortcutController.java
+++ b/services/core/java/com/android/server/inputmethod/HardwareKeyboardShortcutController.java
@@ -19,6 +19,8 @@ package com.android.server.inputmethod;
import android.annotation.AnyThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.util.ArrayMap;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodSubtype;
@@ -33,9 +35,26 @@ final class HardwareKeyboardShortcutController {
@GuardedBy("ImfLock.class")
private final ArrayList<InputMethodSubtypeHandle> mSubtypeHandles = new ArrayList<>();
+ @UserIdInt
+ private final int mUserId;
+
+ @AnyThread
+ @UserIdInt
+ int getUserId() {
+ return mUserId;
+ }
+
+ HardwareKeyboardShortcutController(
+ @NonNull ArrayMap<String, InputMethodInfo> methodMap, @UserIdInt int userId) {
+ mUserId = userId;
+ reset(methodMap);
+ }
+
@GuardedBy("ImfLock.class")
- void reset(@NonNull InputMethodUtils.InputMethodSettings settings) {
+ void reset(@NonNull ArrayMap<String, InputMethodInfo> methodMap) {
mSubtypeHandles.clear();
+ final InputMethodUtils.InputMethodSettings settings =
+ new InputMethodUtils.InputMethodSettings(methodMap, mUserId);
for (final InputMethodInfo imi : settings.getEnabledInputMethodListLocked()) {
if (!imi.shouldShowInInputMethodPicker()) {
continue;
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index d722242b20b0..ac1c78f226a2 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -324,8 +324,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
// TODO: Instantiate mSwitchingController for each user.
@NonNull
private InputMethodSubtypeSwitchingController mSwitchingController;
- final HardwareKeyboardShortcutController mHardwareKeyboardShortcutController =
- new HardwareKeyboardShortcutController();
+ // TODO: Instantiate mHardwareKeyboardShortcutController for each user.
+ @NonNull
+ private HardwareKeyboardShortcutController mHardwareKeyboardShortcutController;
/**
* Tracks how many times {@link #mMethodMap} was updated.
@@ -1709,7 +1710,8 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
mSwitchingController =
InputMethodSubtypeSwitchingController.createInstanceLocked(context, mMethodMap,
userId);
- mHardwareKeyboardShortcutController.reset(mSettings);
+ mHardwareKeyboardShortcutController =
+ new HardwareKeyboardShortcutController(mMethodMap, userId);
mMenuController = new InputMethodMenuController(this);
mBindingController =
bindingControllerForTesting != null
@@ -3305,8 +3307,13 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
mSwitchingController = InputMethodSubtypeSwitchingController.createInstanceLocked(
mContext, mMethodMap, mSettings.getCurrentUserId());
}
-
- mHardwareKeyboardShortcutController.reset(mSettings);
+ // TODO: Instantiate mHardwareKeyboardShortcutController for each user.
+ if (mSettings.getCurrentUserId() == mHardwareKeyboardShortcutController.getUserId()) {
+ mHardwareKeyboardShortcutController.reset(mMethodMap);
+ } else {
+ mHardwareKeyboardShortcutController = new HardwareKeyboardShortcutController(
+ mMethodMap, mSettings.getCurrentUserId());
+ }
sendOnNavButtonFlagsChangedLocked();
}
@@ -5328,7 +5335,13 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
mSwitchingController = InputMethodSubtypeSwitchingController.createInstanceLocked(
mContext, mMethodMap, mSettings.getCurrentUserId());
}
- mHardwareKeyboardShortcutController.reset(mSettings);
+ // TODO: Instantiate mHardwareKeyboardShortcutController for each user.
+ if (mSettings.getCurrentUserId() == mHardwareKeyboardShortcutController.getUserId()) {
+ mHardwareKeyboardShortcutController.reset(mMethodMap);
+ } else {
+ mHardwareKeyboardShortcutController = new HardwareKeyboardShortcutController(
+ mMethodMap, mSettings.getCurrentUserId());
+ }
sendOnNavButtonFlagsChangedLocked();