summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tony Mak <tonymak@google.com> 2019-03-07 17:30:33 +0000
committer Tony Mak <tonymak@google.com> 2019-03-07 20:33:53 +0000
commit6fc4318b6b74e4620ada44c02051889b468da320 (patch)
treedf25ddf263457dee3b7d81aa7736af32c86240b8
parent9a3ebed84247f1780b5d2b2170f5fdb496dcdd67 (diff)
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
-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 632328be973e..79cc2cae8d5e 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.
@@ -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 {