Switch to a better model file if any

The logic is already in annotator, just applies the same logic in
langid and actions.

Test: Change locale to non-english. Observe no more suggestion
      on notification.

FIXES: 122912634

Change-Id: Icf80a1e3edf04db1947fe98c598ecfca3ed6139f
This commit is contained in:
Tony Mak
2019-03-07 17:30:33 +00:00
parent 9a3ebed842
commit 6fc4318b6b

View File

@@ -84,12 +84,17 @@ public final class TextClassifierImpl implements TextClassifier {
private final GenerateLinksLogger mGenerateLinksLogger;
private final Object mLock = new Object();
@GuardedBy("mLock") // Do not access outside this lock.
private ModelFileManager.ModelFile mAnnotatorModelInUse;
@GuardedBy("mLock") // Do not access outside this lock.
private AnnotatorModel mAnnotatorImpl;
@GuardedBy("mLock") // Do not access outside this lock.
private ModelFileManager.ModelFile mLangIdModelInUse;
@GuardedBy("mLock") // Do not access outside this lock.
private LangIdModel mLangIdImpl;
@GuardedBy("mLock") // Do not access outside this lock.
private ModelFileManager.ModelFile mActionModelInUse;
@GuardedBy("mLock") // Do not access outside this lock.
@@ -504,17 +509,19 @@ public final class TextClassifierImpl implements TextClassifier {
private LangIdModel getLangIdImpl() throws FileNotFoundException {
synchronized (mLock) {
if (mLangIdImpl == null) {
final ModelFileManager.ModelFile bestModel =
mLangIdModelFileManager.findBestModelFile(null);
if (bestModel == null) {
throw new FileNotFoundException("No LangID model is found");
}
final ModelFileManager.ModelFile bestModel =
mLangIdModelFileManager.findBestModelFile(null);
if (bestModel == null) {
throw new FileNotFoundException("No LangID model is found");
}
if (mLangIdImpl == null || !Objects.equals(mLangIdModelInUse, bestModel)) {
Log.d(DEFAULT_LOG_TAG, "Loading " + bestModel);
final ParcelFileDescriptor pfd = ParcelFileDescriptor.open(
new File(bestModel.getPath()), ParcelFileDescriptor.MODE_READ_ONLY);
try {
if (pfd != null) {
mLangIdImpl = new LangIdModel(pfd.getFd());
mLangIdModelInUse = bestModel;
}
} finally {
maybeCloseAndLogError(pfd);
@@ -527,13 +534,14 @@ public final class TextClassifierImpl implements TextClassifier {
@Nullable
private ActionsSuggestionsModel getActionsImpl() throws FileNotFoundException {
synchronized (mLock) {
if (mActionsImpl == null) {
// TODO: Use LangID to determine the locale we should use here?
final ModelFileManager.ModelFile bestModel =
mActionsModelFileManager.findBestModelFile(LocaleList.getDefault());
if (bestModel == null) {
return null;
}
// TODO: Use LangID to determine the locale we should use here?
final ModelFileManager.ModelFile bestModel =
mActionsModelFileManager.findBestModelFile(LocaleList.getDefault());
if (bestModel == null) {
return null;
}
if (mActionsImpl == null || !Objects.equals(mActionModelInUse, bestModel)) {
Log.d(DEFAULT_LOG_TAG, "Loading " + bestModel);
final ParcelFileDescriptor pfd = ParcelFileDescriptor.open(
new File(bestModel.getPath()), ParcelFileDescriptor.MODE_READ_ONLY);
try {