summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-03-12 14:55:55 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-03-12 14:55:55 +0000
commitd6cc8426f45fd9cd9de8bd1f72c95b86e11d1634 (patch)
treeae22033ae88cb2f202a4b841b94d83accb79b004
parentbb1e77f2611ae63922bf4203efeb26823c1a5b60 (diff)
parent6fc4318b6b74e4620ada44c02051889b468da320 (diff)
Merge "Switch to a better model file if any"
-rw-r--r--core/java/android/view/textclassifier/TextClassifierImpl.java34
1 files changed, 21 insertions, 13 deletions
diff --git a/core/java/android/view/textclassifier/TextClassifierImpl.java b/core/java/android/view/textclassifier/TextClassifierImpl.java
index 293a230b099e..35cd678dedbb 100644
--- a/core/java/android/view/textclassifier/TextClassifierImpl.java
+++ b/core/java/android/view/textclassifier/TextClassifierImpl.java
@@ -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.
@@ -515,17 +520,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);
@@ -538,13 +545,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 {