Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +7 −6 Original line number Diff line number Diff line Loading @@ -107,13 +107,16 @@ public final class BinaryDictionary extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, 0); final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords, 0 /* sessionId */); } @Override public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo, int sessionId) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords, final int sessionId) { if (!isValidDictionary()) return null; Arrays.fill(mInputCodePoints, Constants.NOT_A_CODE); Loading @@ -139,8 +142,6 @@ public final class BinaryDictionary extends Dictionary { inputSize, 0 /* commitPoint */, isGesture, prevWordCodePointArray, mUseFullEditDistance, mOutputCodePoints, mOutputScores, mSpaceIndices, mOutputTypes); final boolean blockPotentiallyOffensive = Settings.getInstance().getBlockPotentiallyOffensive(); final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList(); for (int j = 0; j < count; ++j) { final int start = j * MAX_WORD_LENGTH; Loading @@ -150,7 +151,7 @@ public final class BinaryDictionary extends Dictionary { } if (len > 0) { final int flags = mOutputTypes[j] & SuggestedWordInfo.KIND_MASK_FLAGS; if (blockPotentiallyOffensive if (blockOffensiveWords && 0 != (flags & SuggestedWordInfo.KIND_FLAG_POSSIBLY_OFFENSIVE) && 0 == (flags & SuggestedWordInfo.KIND_FLAG_EXACT_MATCH)) { // If we block potentially offensive words, and if the word is possibly Loading java/src/com/android/inputmethod/latin/Dictionary.java +6 −3 Original line number Diff line number Diff line Loading @@ -51,18 +51,21 @@ public abstract class Dictionary { * @param composer the key sequence to match with coordinate info, as a WordComposer * @param prevWord the previous word, or null if none * @param proximityInfo the object for key proximity. May be ignored by some implementations. * @param blockOffensiveWords whether to block potentially offensive words * @return the list of suggestions (possibly null if none) */ // TODO: pass more context than just the previous word, to enable better suggestions (n-gram // and more) abstract public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo); final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords); // The default implementation of this method ignores sessionId. // Subclasses that want to use sessionId need to override this method. public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo, final int sessionId) { return getSuggestions(composer, prevWord, proximityInfo); final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords, final int sessionId) { return getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords); } /** Loading java/src/com/android/inputmethod/latin/DictionaryCollection.java +4 −3 Original line number Diff line number Diff line Loading @@ -56,18 +56,19 @@ public final class DictionaryCollection extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries; if (dictionaries.isEmpty()) return null; // To avoid creating unnecessary objects, we get the list out of the first // dictionary and add the rest to it if not null, hence the get(0) ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getSuggestions(composer, prevWord, proximityInfo); prevWord, proximityInfo, blockOffensiveWords); if (null == suggestions) suggestions = CollectionUtils.newArrayList(); final int length = dictionaries.size(); for (int i = 1; i < length; ++ i) { final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getSuggestions(composer, prevWord, proximityInfo); prevWord, proximityInfo, blockOffensiveWords); if (null != sugg) suggestions.addAll(sugg); } return suggestions; Loading java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +4 −2 Original line number Diff line number Diff line Loading @@ -200,12 +200,14 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { asyncReloadDictionaryIfRequired(); if (mLocalDictionaryController.tryLock()) { try { if (mBinaryDictionary != null) { return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo); return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords); } } finally { mLocalDictionaryController.unlock(); Loading java/src/com/android/inputmethod/latin/ExpandableDictionary.java +2 −1 Original line number Diff line number Diff line Loading @@ -253,7 +253,8 @@ public class ExpandableDictionary extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { if (reloadDictionaryIfRequired()) return null; if (composer.size() > 1) { if (composer.size() >= Constants.Dictionary.MAX_WORD_LENGTH) { Loading Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +7 −6 Original line number Diff line number Diff line Loading @@ -107,13 +107,16 @@ public final class BinaryDictionary extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, 0); final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords, 0 /* sessionId */); } @Override public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo, int sessionId) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords, final int sessionId) { if (!isValidDictionary()) return null; Arrays.fill(mInputCodePoints, Constants.NOT_A_CODE); Loading @@ -139,8 +142,6 @@ public final class BinaryDictionary extends Dictionary { inputSize, 0 /* commitPoint */, isGesture, prevWordCodePointArray, mUseFullEditDistance, mOutputCodePoints, mOutputScores, mSpaceIndices, mOutputTypes); final boolean blockPotentiallyOffensive = Settings.getInstance().getBlockPotentiallyOffensive(); final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList(); for (int j = 0; j < count; ++j) { final int start = j * MAX_WORD_LENGTH; Loading @@ -150,7 +151,7 @@ public final class BinaryDictionary extends Dictionary { } if (len > 0) { final int flags = mOutputTypes[j] & SuggestedWordInfo.KIND_MASK_FLAGS; if (blockPotentiallyOffensive if (blockOffensiveWords && 0 != (flags & SuggestedWordInfo.KIND_FLAG_POSSIBLY_OFFENSIVE) && 0 == (flags & SuggestedWordInfo.KIND_FLAG_EXACT_MATCH)) { // If we block potentially offensive words, and if the word is possibly Loading
java/src/com/android/inputmethod/latin/Dictionary.java +6 −3 Original line number Diff line number Diff line Loading @@ -51,18 +51,21 @@ public abstract class Dictionary { * @param composer the key sequence to match with coordinate info, as a WordComposer * @param prevWord the previous word, or null if none * @param proximityInfo the object for key proximity. May be ignored by some implementations. * @param blockOffensiveWords whether to block potentially offensive words * @return the list of suggestions (possibly null if none) */ // TODO: pass more context than just the previous word, to enable better suggestions (n-gram // and more) abstract public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo); final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords); // The default implementation of this method ignores sessionId. // Subclasses that want to use sessionId need to override this method. public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo, final int sessionId) { return getSuggestions(composer, prevWord, proximityInfo); final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords, final int sessionId) { return getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords); } /** Loading
java/src/com/android/inputmethod/latin/DictionaryCollection.java +4 −3 Original line number Diff line number Diff line Loading @@ -56,18 +56,19 @@ public final class DictionaryCollection extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries; if (dictionaries.isEmpty()) return null; // To avoid creating unnecessary objects, we get the list out of the first // dictionary and add the rest to it if not null, hence the get(0) ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getSuggestions(composer, prevWord, proximityInfo); prevWord, proximityInfo, blockOffensiveWords); if (null == suggestions) suggestions = CollectionUtils.newArrayList(); final int length = dictionaries.size(); for (int i = 1; i < length; ++ i) { final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getSuggestions(composer, prevWord, proximityInfo); prevWord, proximityInfo, blockOffensiveWords); if (null != sugg) suggestions.addAll(sugg); } return suggestions; Loading
java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +4 −2 Original line number Diff line number Diff line Loading @@ -200,12 +200,14 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { asyncReloadDictionaryIfRequired(); if (mLocalDictionaryController.tryLock()) { try { if (mBinaryDictionary != null) { return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo); return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords); } } finally { mLocalDictionaryController.unlock(); Loading
java/src/com/android/inputmethod/latin/ExpandableDictionary.java +2 −1 Original line number Diff line number Diff line Loading @@ -253,7 +253,8 @@ public class ExpandableDictionary extends Dictionary { @Override public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo) { final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords) { if (reloadDictionaryIfRequired()) return null; if (composer.size() > 1) { if (composer.size() >= Constants.Dictionary.MAX_WORD_LENGTH) { Loading