diff options
author | 2024-01-06 01:26:51 +0000 | |
---|---|---|
committer | 2024-01-06 01:26:51 +0000 | |
commit | 60b6a74df90709a2a3edf94e665df8674708773a (patch) | |
tree | f56ce7eee49ba20a342b7bff653a6350b9167176 | |
parent | 70fa8f1189b4e457ce7547cc71e606e0404615d8 (diff) | |
parent | 22b9aa5b474761b64ba78455860e376b80477a3a (diff) |
Merge "Prepare to make HardwareKeyboardShortcutController per-user" into main
-rw-r--r-- | services/core/java/com/android/server/inputmethod/HardwareKeyboardShortcutController.java | 21 | ||||
-rw-r--r-- | services/core/java/com/android/server/inputmethod/InputMethodManagerService.java | 25 |
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(); |