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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user