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

Commit f73769c6 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Remove word from personalized dicts when it's canceled."

parents 0f6f5b1f 0fbca1ac
Loading
Loading
Loading
Loading
+10 −6
Original line number Original line Diff line number Diff line
@@ -468,15 +468,19 @@ public class DictionaryFacilitator {
                isValid, timeStampInSeconds, mDistracterFilter);
                isValid, timeStampInSeconds, mDistracterFilter);
    }
    }


    public void cancelAddingUserHistory(final PrevWordsInfo prevWordsInfo,
    private void removeWord(final String dictName, final String word) {
            final String committedWord) {
        final ExpandableBinaryDictionary dictionary = mDictionaries.getSubDict(dictName);
        final ExpandableBinaryDictionary userHistoryDictionary =
        if (dictionary != null) {
                mDictionaries.getSubDict(Dictionary.TYPE_USER_HISTORY);
            dictionary.removeUnigramEntryDynamically(word);
        if (userHistoryDictionary != null) {
            userHistoryDictionary.removeNgramDynamically(prevWordsInfo, committedWord);
        }
        }
    }
    }


    public void removeWordFromPersonalizedDicts(final String word) {
        removeWord(Dictionary.TYPE_USER_HISTORY, word);
        removeWord(Dictionary.TYPE_PERSONALIZATION, word);
        removeWord(Dictionary.TYPE_CONTEXTUAL, word);
    }

    // TODO: Revise the way to fusion suggestion results.
    // TODO: Revise the way to fusion suggestion results.
    public SuggestionResults getSuggestionResults(final WordComposer composer,
    public SuggestionResults getSuggestionResults(final WordComposer composer,
            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+21 −0
Original line number Original line Diff line number Diff line
@@ -310,6 +310,27 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
        }
        }
    }
    }


    /**
     * Dynamically remove the unigram entry from the dictionary.
     */
    public void removeUnigramEntryDynamically(final String word) {
        reloadDictionaryIfRequired();
        asyncExecuteTaskWithWriteLock(new Runnable() {
            @Override
            public void run() {
                if (mBinaryDictionary == null) {
                    return;
                }
                runGCIfRequiredLocked(true /* mindsBlockByGC */);
                if (!mBinaryDictionary.removeUnigramEntry(word)) {
                    if (DEBUG) {
                        Log.i(TAG, "Cannot remove unigram entry: " + word);
                    }
                }
            }
        });
    }

    /**
    /**
     * Adds n-gram information of a word to the dictionary. May overwrite an existing entry.
     * Adds n-gram information of a word to the dictionary. May overwrite an existing entry.
     */
     */
+5 −3
Original line number Original line Diff line number Diff line
@@ -884,6 +884,9 @@ public final class InputLogic {
                final String rejectedSuggestion = mWordComposer.getTypedWord();
                final String rejectedSuggestion = mWordComposer.getTypedWord();
                mWordComposer.reset();
                mWordComposer.reset();
                mWordComposer.setRejectedBatchModeSuggestion(rejectedSuggestion);
                mWordComposer.setRejectedBatchModeSuggestion(rejectedSuggestion);
                if (!TextUtils.isEmpty(rejectedSuggestion)) {
                    mDictionaryFacilitator.removeWordFromPersonalizedDicts(rejectedSuggestion);
                }
            } else {
            } else {
                mWordComposer.processEvent(inputTransaction.mEvent);
                mWordComposer.processEvent(inputTransaction.mEvent);
            }
            }
@@ -1365,7 +1368,6 @@ public final class InputLogic {
     * @param inputTransaction The transaction in progress.
     * @param inputTransaction The transaction in progress.
     */
     */
    private void revertCommit(final InputTransaction inputTransaction) {
    private void revertCommit(final InputTransaction inputTransaction) {
        final PrevWordsInfo prevWordsInfo = mLastComposedWord.mPrevWordsInfo;
        final CharSequence originallyTypedWord = mLastComposedWord.mTypedWord;
        final CharSequence originallyTypedWord = mLastComposedWord.mTypedWord;
        final CharSequence committedWord = mLastComposedWord.mCommittedWord;
        final CharSequence committedWord = mLastComposedWord.mCommittedWord;
        final String committedWordString = committedWord.toString();
        final String committedWordString = committedWord.toString();
@@ -1387,8 +1389,8 @@ public final class InputLogic {
            }
            }
        }
        }
        mConnection.deleteSurroundingText(deleteLength, 0);
        mConnection.deleteSurroundingText(deleteLength, 0);
        if (!TextUtils.isEmpty(prevWordsInfo.mPrevWord) && !TextUtils.isEmpty(committedWord)) {
        if (!TextUtils.isEmpty(committedWord)) {
            mDictionaryFacilitator.cancelAddingUserHistory(prevWordsInfo, committedWordString);
            mDictionaryFacilitator.removeWordFromPersonalizedDicts(committedWordString);
        }
        }
        final String stringToCommit = originallyTypedWord + mLastComposedWord.mSeparatorString;
        final String stringToCommit = originallyTypedWord + mLastComposedWord.mSeparatorString;
        final SpannableString textToCommit = new SpannableString(stringToCommit);
        final SpannableString textToCommit = new SpannableString(stringToCommit);
+1 −1
Original line number Original line Diff line number Diff line
@@ -58,7 +58,7 @@ class Ver4PatriciaTrieNodeReader : public PtNodeReader {


    ~Ver4PatriciaTrieNodeReader() {}
    ~Ver4PatriciaTrieNodeReader() {}


    virtual const PtNodeParams fetchNodeInfoInBufferFromPtNodePos(const int ptNodePos) const {
    virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(const int ptNodePos) const {
        return fetchPtNodeInfoFromBufferAndProcessMovedPtNode(ptNodePos,
        return fetchPtNodeInfoFromBufferAndProcessMovedPtNode(ptNodePos,
                NOT_A_DICT_POS /* siblingNodePos */);
                NOT_A_DICT_POS /* siblingNodePos */);
    }
    }
+4 −4
Original line number Original line Diff line number Diff line
@@ -135,7 +135,7 @@ int Ver4PatriciaTriePolicy::getUnigramProbabilityOfPtNode(const int ptNodePos) c
    if (ptNodePos == NOT_A_DICT_POS) {
    if (ptNodePos == NOT_A_DICT_POS) {
        return NOT_A_PROBABILITY;
        return NOT_A_PROBABILITY;
    }
    }
    const PtNodeParams ptNodeParams(mNodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos));
    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
    if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) {
    if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) {
        return NOT_A_PROBABILITY;
        return NOT_A_PROBABILITY;
    }
    }
@@ -146,7 +146,7 @@ int Ver4PatriciaTriePolicy::getShortcutPositionOfPtNode(const int ptNodePos) con
    if (ptNodePos == NOT_A_DICT_POS) {
    if (ptNodePos == NOT_A_DICT_POS) {
        return NOT_A_DICT_POS;
        return NOT_A_DICT_POS;
    }
    }
    const PtNodeParams ptNodeParams(mNodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos));
    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
    if (ptNodeParams.isDeleted()) {
    if (ptNodeParams.isDeleted()) {
        return NOT_A_DICT_POS;
        return NOT_A_DICT_POS;
    }
    }
@@ -158,7 +158,7 @@ int Ver4PatriciaTriePolicy::getBigramsPositionOfPtNode(const int ptNodePos) cons
    if (ptNodePos == NOT_A_DICT_POS) {
    if (ptNodePos == NOT_A_DICT_POS) {
        return NOT_A_DICT_POS;
        return NOT_A_DICT_POS;
    }
    }
    const PtNodeParams ptNodeParams(mNodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos));
    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
    if (ptNodeParams.isDeleted()) {
    if (ptNodeParams.isDeleted()) {
        return NOT_A_DICT_POS;
        return NOT_A_DICT_POS;
    }
    }
@@ -410,7 +410,7 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty(const int *const code
        AKLOGE("getWordProperty is called for invalid word.");
        AKLOGE("getWordProperty is called for invalid word.");
        return WordProperty();
        return WordProperty();
    }
    }
    const PtNodeParams ptNodeParams = mNodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos);
    const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
    std::vector<int> codePointVector(ptNodeParams.getCodePoints(),
    std::vector<int> codePointVector(ptNodeParams.getCodePoints(),
            ptNodeParams.getCodePoints() + ptNodeParams.getCodePointCount());
            ptNodeParams.getCodePoints() + ptNodeParams.getCodePointCount());
    const ProbabilityEntry probabilityEntry =
    const ProbabilityEntry probabilityEntry =
Loading