Fix a bug where Latin IME crashes on spell checker request

Bug: 6611183
Change-Id: I8a879feb598e1ac55d73f9cb27e54aa533d3a010
This commit is contained in:
Jean Chalard 2012-06-05 16:33:21 +09:00
parent 7f7739fee8
commit a6166d3776
2 changed files with 13 additions and 6 deletions

View file

@ -20,12 +20,13 @@ import android.content.Context;
import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.keyboard.ProximityInfo;
import java.util.Locale;
public class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryDictionary { public class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryDictionary {
private boolean mClosed; private boolean mClosed;
public SynchronouslyLoadedContactsBinaryDictionary(final Context context) { public SynchronouslyLoadedContactsBinaryDictionary(final Context context, final Locale locale) {
// TODO: add locale information. super(context, Suggest.DIC_CONTACTS, locale);
super(context, Suggest.DIC_CONTACTS, null);
} }
@Override @Override
@ -51,4 +52,4 @@ public class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryD
mClosed = true; mClosed = true;
super.close(); super.close();
} }
} }

View file

@ -155,7 +155,9 @@ public class AndroidSpellCheckerService extends SpellCheckerService
private void startUsingContactsDictionaryLocked() { private void startUsingContactsDictionaryLocked() {
if (null == mContactsDictionary) { if (null == mContactsDictionary) {
if (LatinIME.USE_BINARY_CONTACTS_DICTIONARY) { if (LatinIME.USE_BINARY_CONTACTS_DICTIONARY) {
mContactsDictionary = new SynchronouslyLoadedContactsBinaryDictionary(this); // TODO: use the right locale for each session
mContactsDictionary =
new SynchronouslyLoadedContactsBinaryDictionary(this, Locale.getDefault());
} else { } else {
mContactsDictionary = new SynchronouslyLoadedContactsDictionary(this); mContactsDictionary = new SynchronouslyLoadedContactsDictionary(this);
} }
@ -436,7 +438,11 @@ public class AndroidSpellCheckerService extends SpellCheckerService
// TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY is no // TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY is no
// longer needed // longer needed
if (LatinIME.USE_BINARY_CONTACTS_DICTIONARY) { if (LatinIME.USE_BINARY_CONTACTS_DICTIONARY) {
mContactsDictionary = new SynchronouslyLoadedContactsBinaryDictionary(this); // TODO: use the right locale. We can't do it right now because the
// spell checker is reusing the contacts dictionary across sessions
// without regard for their locale, so we need to fix that first.
mContactsDictionary = new SynchronouslyLoadedContactsBinaryDictionary(this,
Locale.getDefault());
} else { } else {
mContactsDictionary = new SynchronouslyLoadedContactsDictionary(this); mContactsDictionary = new SynchronouslyLoadedContactsDictionary(this);
} }