From bb0a2247147139e7f01b66366e4552858b5747a4 Mon Sep 17 00:00:00 2001 From: Yohei Yukawa Date: Fri, 15 Jun 2018 16:36:39 -0700 Subject: [PATCH] Remove dependency on IME subtype from TSMS Now that we are going to reduce the dependency on InputMethodSubtype everywhere, TextServicesManagerService#getCurrentSpellCheckerSubtype() is a good candidate to clean up. Given that imm.getCurrentInputMethodSubtype().getLocale() is not that reliable, always using the fallback logic to use the system locale is less likely to make things worse. Also, directly calling IME API from TextServicesManagerService have caused multiple issues like Bug 28889203 and Bug 31273203. Removing this API call should have positive impact on code health and system stability. Fix: 110275412 Test: Manually verified that spell checker still works Change-Id: Ic222b21ce5ec4fc17b338eb5519e6928d853c8b6 --- .../server/TextServicesManagerService.java | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java index e85958791d5c8..d82ca0b8c3c11 100644 --- a/services/core/java/com/android/server/TextServicesManagerService.java +++ b/services/core/java/com/android/server/TextServicesManagerService.java @@ -57,8 +57,6 @@ import android.service.textservice.SpellCheckerService; import android.text.TextUtils; import android.util.Slog; import android.util.SparseArray; -import android.view.inputmethod.InputMethodManager; -import android.view.inputmethod.InputMethodSubtype; import android.view.textservice.SpellCheckerInfo; import android.view.textservice.SpellCheckerSubtype; @@ -541,22 +539,8 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { String candidateLocale = null; if (subtypeHashCode == 0) { // Spell checker language settings == "auto" - final InputMethodManager imm = mContext.getSystemService(InputMethodManager.class); - if (imm != null) { - final InputMethodSubtype currentInputMethodSubtype = - imm.getCurrentInputMethodSubtype(); - if (currentInputMethodSubtype != null) { - final String localeString = currentInputMethodSubtype.getLocale(); - if (!TextUtils.isEmpty(localeString)) { - // 1. Use keyboard locale if available in the spell checker - candidateLocale = localeString; - } - } - } - if (candidateLocale == null) { - // 2. Use System locale if available in the spell checker - candidateLocale = systemLocale.toString(); - } + // Use System locale if available in the spell checker + candidateLocale = systemLocale.toString(); } SpellCheckerSubtype candidate = null; for (int i = 0; i < sci.getSubtypeCount(); ++i) { @@ -576,12 +560,12 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (DBG) { Slog.w(TAG, "Return subtype " + scs.hashCode() + ", " + scs.getLocale()); } - // 3. Use the user specified spell check language + // Use the user specified spell check language return scs; } } - // 4. Fall back to the applicable language and return it if not null - // 5. Simply just return it even if it's null which means we could find no suitable + // Fall back to the applicable language and return it if not null + // Simply just return it even if it's null which means we could find no suitable // spell check languages return candidate; }