aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/DictionaryFactory.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2011-07-20 19:02:29 +0900
committerJean Chalard <jchalard@google.com>2011-07-20 19:53:47 +0900
commit7e19a64c86147967b39442ba78b175d4c8a0c860 (patch)
treefc0f0e4dc9f8644fa8c7e07a463c098a9a1759d8 /java/src/com/android/inputmethod/latin/DictionaryFactory.java
parent597b1157970462dcd429be608cac21e33011e9df (diff)
downloadlatinime-7e19a64c86147967b39442ba78b175d4c8a0c860.tar.gz
latinime-7e19a64c86147967b39442ba78b175d4c8a0c860.tar.xz
latinime-7e19a64c86147967b39442ba78b175d4c8a0c860.zip
Fallback to the included dict if the passed one is invalid
If all dictionaries returned by the dictionary pack are invalid, then fallback to the dictionary included in the resources for this locale. Bug: 5052486 Change-Id: Id875194ca56a74b2ed6f5b0b4fdd55475f6842c8
Diffstat (limited to 'java/src/com/android/inputmethod/latin/DictionaryFactory.java')
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFactory.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
index a35b0f5b0..f0637b8ce 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
@@ -56,8 +56,11 @@ public class DictionaryFactory {
BinaryDictionaryGetter.getDictionaryFiles(locale, context, fallbackResId);
if (null != assetFileList) {
for (final AssetFileAddress f : assetFileList) {
- dictList.add(
- new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, null));
+ final BinaryDictionary binaryDictionary =
+ new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, null);
+ if (binaryDictionary.isValidDictionary()) {
+ dictList.add(binaryDictionary);
+ }
}
}
@@ -67,7 +70,16 @@ public class DictionaryFactory {
if (null == dictList) {
return new DictionaryCollection();
} else {
- return new DictionaryCollection(dictList);
+ if (dictList.isEmpty()) {
+ // The list may be empty if no dictionaries have been added. The getter should not
+ // return an empty list, but if it does we end up here. Likewise, if the files
+ // we found could not be opened by the native code for any reason (format mismatch,
+ // file too big to fit in memory, etc) then we could have an empty list. In this
+ // case we want to fall back on the resource.
+ return new DictionaryCollection(createBinaryDictionary(context, fallbackResId));
+ } else {
+ return new DictionaryCollection(dictList);
+ }
}
}