Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83757d43 authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Pass blockOffensiveWords as a parameter"

parents 1490b534 2dbb5957
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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);
@@ -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;
@@ -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
+6 −3
Original line number Diff line number Diff line
@@ -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);
    }

    /**
+4 −3
Original line number Diff line number Diff line
@@ -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;
+4 −2
Original line number Diff line number Diff line
@@ -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();
+2 −1
Original line number Diff line number Diff line
@@ -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