[automerger] Select only preinstalled Spell Checker Services am: ed5973b8a8 am: 5ab7f995ba am: d71a5db522 am: 276e18c147 am: d962aabf4c
am: 3c2abaa4da
Change-Id: I2b4a8618280a602b4eb42db9bf822a14324b587f
This commit is contained in:
@@ -184,7 +184,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
||||
buildSpellCheckerMapLocked(mContext, mSpellCheckerList, mSpellCheckerMap, mSettings);
|
||||
SpellCheckerInfo sci = getCurrentSpellChecker(null);
|
||||
if (sci == null) {
|
||||
sci = findAvailSpellCheckerLocked(null);
|
||||
sci = findAvailSystemSpellCheckerLocked(null);
|
||||
if (sci != null) {
|
||||
// Set the current spell checker if there is one or more spell checkers
|
||||
// available. In this case, "sci" is the first one in the available spell
|
||||
@@ -228,7 +228,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
||||
change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE
|
||||
// Package modified
|
||||
|| isPackageModified(packageName)) {
|
||||
sci = findAvailSpellCheckerLocked(packageName);
|
||||
sci = findAvailSystemSpellCheckerLocked(packageName);
|
||||
if (sci != null) {
|
||||
setCurrentSpellCheckerLocked(sci.getId());
|
||||
}
|
||||
@@ -372,18 +372,26 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
||||
mSpellCheckerBindGroups.clear();
|
||||
}
|
||||
|
||||
private SpellCheckerInfo findAvailSpellCheckerLocked(String prefPackage) {
|
||||
final int spellCheckersCount = mSpellCheckerList.size();
|
||||
private SpellCheckerInfo findAvailSystemSpellCheckerLocked(String prefPackage) {
|
||||
// Filter the spell checker list to remove spell checker services that are not pre-installed
|
||||
ArrayList<SpellCheckerInfo> spellCheckerList = new ArrayList<>();
|
||||
for (SpellCheckerInfo sci : mSpellCheckerList) {
|
||||
if ((sci.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
|
||||
spellCheckerList.add(sci);
|
||||
}
|
||||
}
|
||||
|
||||
final int spellCheckersCount = spellCheckerList.size();
|
||||
if (spellCheckersCount == 0) {
|
||||
Slog.w(TAG, "no available spell checker services found");
|
||||
return null;
|
||||
}
|
||||
if (prefPackage != null) {
|
||||
for (int i = 0; i < spellCheckersCount; ++i) {
|
||||
final SpellCheckerInfo sci = mSpellCheckerList.get(i);
|
||||
final SpellCheckerInfo sci = spellCheckerList.get(i);
|
||||
if (prefPackage.equals(sci.getPackageName())) {
|
||||
if (DBG) {
|
||||
Slog.d(TAG, "findAvailSpellCheckerLocked: " + sci.getPackageName());
|
||||
Slog.d(TAG, "findAvailSystemSpellCheckerLocked: " + sci.getPackageName());
|
||||
}
|
||||
return sci;
|
||||
}
|
||||
@@ -397,7 +405,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
||||
final ArrayList<Locale> suitableLocales =
|
||||
InputMethodUtils.getSuitableLocalesForSpellChecker(systemLocal);
|
||||
if (DBG) {
|
||||
Slog.w(TAG, "findAvailSpellCheckerLocked suitableLocales="
|
||||
Slog.w(TAG, "findAvailSystemSpellCheckerLocked suitableLocales="
|
||||
+ Arrays.toString(suitableLocales.toArray(new Locale[suitableLocales.size()])));
|
||||
}
|
||||
final int localeCount = suitableLocales.size();
|
||||
@@ -405,7 +413,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
||||
final Locale locale = suitableLocales.get(localeIndex);
|
||||
for (int spellCheckersIndex = 0; spellCheckersIndex < spellCheckersCount;
|
||||
++spellCheckersIndex) {
|
||||
final SpellCheckerInfo info = mSpellCheckerList.get(spellCheckersIndex);
|
||||
final SpellCheckerInfo info = spellCheckerList.get(spellCheckersIndex);
|
||||
final int subtypeCount = info.getSubtypeCount();
|
||||
for (int subtypeIndex = 0; subtypeIndex < subtypeCount; ++subtypeIndex) {
|
||||
final SpellCheckerSubtype subtype = info.getSubtypeAt(subtypeIndex);
|
||||
@@ -424,7 +432,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
||||
if (spellCheckersCount > 1) {
|
||||
Slog.w(TAG, "more than one spell checker service found, picking first");
|
||||
}
|
||||
return mSpellCheckerList.get(0);
|
||||
return spellCheckerList.get(0);
|
||||
}
|
||||
|
||||
// TODO: Save SpellCheckerService by supported languages. Currently only one spell
|
||||
|
||||
Reference in New Issue
Block a user