Add a Dictionary.isUserSpecific method.
As the name suggests, returns true if the Dictionary is of a type
that may use user-specific data, e.g., contacts.
Cherry-pick of I11e71286c7635f50ace156dcc5308dbe51268d4e
Change-Id: I08c3f22f0c34eaa71bbd06594314f3b411658c5c
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index 2f79c76..cad9ee7 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -22,6 +22,8 @@
import java.util.ArrayList;
import java.util.Locale;
+import java.util.Arrays;
+import java.util.HashSet;
/**
* Abstract base class for a dictionary that can do a fuzzy search for words based on a set of key
@@ -65,6 +67,14 @@
// The locale for this dictionary. May be null if unknown (phony dictionary for example).
public final Locale mLocale;
+ /**
+ * Set out of the dictionary types listed above that are based on data specific to the user,
+ * e.g., the user's contacts.
+ */
+ private static final HashSet<String> sUserSpecificDictionaryTypes =
+ new HashSet(Arrays.asList(new String[] { TYPE_USER_TYPED, TYPE_USER, TYPE_CONTACTS,
+ TYPE_USER_HISTORY, TYPE_PERSONALIZATION, TYPE_CONTEXTUAL }));
+
public Dictionary(final String dictType, final Locale locale) {
mDictType = dictType;
mLocale = locale;
@@ -159,6 +169,14 @@
}
/**
+ * Whether this dictionary is based on data specific to the user, e.g., the user's contacts.
+ * @return Whether this dictionary is specific to the user.
+ */
+ public boolean isUserSpecific() {
+ return sUserSpecificDictionaryTypes.contains(mDictType);
+ }
+
+ /**
* Not a true dictionary. A placeholder used to indicate suggestions that don't come from any
* real dictionary.
*/