From 7eee18151a881b44841a68c2c42aba7a3eedab92 Mon Sep 17 00:00:00 2001 From: Yohei Yukawa Date: Tue, 20 Nov 2018 17:32:24 -0800 Subject: [PATCH] Unextract getExplicitlyOrImplicitlyEnabledInputMethodsAndSubtypeListLocked() By un-extracting it, we no longer need to instantiate HashMap just to pass data from InputMethodSettings to InputMethodAndSubtypeList. This also helps us elimicate the use of HashMap/HashSet in com.android.server.inputmethod (Bug 119839847). This is a mechanical refactoring. There should be no user-visible behavior change. Fix: 119837138 Test: Manually verified as follows: 1. Open Settings. 2. Go to System -> Languages & input -> Languages 3. Tap "Add a language" 4. Select "Afrikaans" -> Suid-Afrika 5. make -j SoftKeyboard 6. adb install -r $OUT/system/app/SoftKeyboard/SoftKeyboard.apk 7. adb shell ime enable com.example.android.softkeyboard/.SoftKeyboard 8. Tap the keyboard icon on the navigation bar. 9. Make sure that items are sorted in the following order: * English (US) - Android Keyboard (AOSP) * Afrikaans - Android Keyboard (AOSP) * English (United States) - Sample Soft Keyboard Change-Id: I0444b9bd82f63bbca1841144f5c02b0b34acc807 --- ...InputMethodSubtypeSwitchingController.java | 19 ++++++++----------- .../server/inputmethod/InputMethodUtils.java | 11 ----------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java b/services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java index 27c59d462b8e2..88e9976dfd3d7 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java @@ -31,7 +31,6 @@ import com.android.server.inputmethod.InputMethodUtils.InputMethodSettings; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; @@ -184,11 +183,8 @@ final class InputMethodSubtypeSwitchingController { public List getSortedInputMethodAndSubtypeList( boolean includeAuxiliarySubtypes, boolean isScreenLocked) { - final ArrayList imList = new ArrayList<>(); - final HashMap> immis = - mSettings.getExplicitlyOrImplicitlyEnabledInputMethodsAndSubtypeListLocked( - mContext); - if (immis == null || immis.size() == 0) { + final ArrayList imis = mSettings.getEnabledInputMethodListLocked(); + if (imis.isEmpty()) { return Collections.emptyList(); } if (isScreenLocked && includeAuxiliarySubtypes) { @@ -197,11 +193,12 @@ final class InputMethodSubtypeSwitchingController { } includeAuxiliarySubtypes = false; } - for (InputMethodInfo imi : immis.keySet()) { - if (imi == null) { - continue; - } - List explicitlyOrImplicitlyEnabledSubtypeList = immis.get(imi); + final ArrayList imList = new ArrayList<>(); + final int numImes = imis.size(); + for (int i = 0; i < numImes; ++i) { + final InputMethodInfo imi = imis.get(i); + final List explicitlyOrImplicitlyEnabledSubtypeList = + mSettings.getEnabledInputMethodSubtypeListLocked(mContext, imi, true); HashSet enabledSubtypeSet = new HashSet<>(); for (InputMethodSubtype subtype : explicitlyOrImplicitlyEnabledSubtypeList) { enabledSubtypeSet.add(String.valueOf(subtype.hashCode())); diff --git a/services/core/java/com/android/server/inputmethod/InputMethodUtils.java b/services/core/java/com/android/server/inputmethod/InputMethodUtils.java index 154e8b3101284..db6d8260ccd74 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodUtils.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodUtils.java @@ -1277,17 +1277,6 @@ final class InputMethodUtils { } } - public HashMap> - getExplicitlyOrImplicitlyEnabledInputMethodsAndSubtypeListLocked(Context context) { - HashMap> enabledInputMethodAndSubtypes = - new HashMap<>(); - for (InputMethodInfo imi: getEnabledInputMethodListLocked()) { - enabledInputMethodAndSubtypes.put( - imi, getEnabledInputMethodSubtypeListLocked(context, imi, true)); - } - return enabledInputMethodAndSubtypes; - } - public void dumpLocked(final Printer pw, final String prefix) { pw.println(prefix + "mCurrentUserId=" + mCurrentUserId); pw.println(prefix + "mCurrentProfileIds=" + Arrays.toString(mCurrentProfileIds));