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

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

Merge "Set header attributes for ExpandableBinaryDictionary."

parents b0c5ddb9 5ed30a76
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.inputmethod.latin.makedict.Ver3DictEncoder;

import java.io.File;
import java.io.IOException;
import java.util.Map;

// TODO: Quit extending Dictionary after implementing dynamic binary dictionary.
abstract public class AbstractDictionaryWriter extends Dictionary {
@@ -50,16 +51,16 @@ abstract public class AbstractDictionaryWriter extends Dictionary {

    abstract public void removeBigramWords(final String word0, final String word1);

    abstract protected void writeDictionary(final DictEncoder dictEncoder)
            throws IOException, UnsupportedFormatException;
    abstract protected void writeDictionary(final DictEncoder dictEncoder,
            final Map<String, String> attributeMap) throws IOException, UnsupportedFormatException;

    public void write(final String fileName) {
    public void write(final String fileName, final Map<String, String> attributeMap) {
        final String tempFileName = fileName + ".temp";
        final File file = new File(mContext.getFilesDir(), fileName);
        final File tempFile = new File(mContext.getFilesDir(), tempFileName);
        try {
            final DictEncoder dictEncoder = new Ver3DictEncoder(tempFile);
            writeDictionary(dictEncoder);
            writeDictionary(dictEncoder, attributeMap);
            tempFile.renameTo(file);
        } catch (IOException e) {
            Log.e(TAG, "IO exception while writing file", e);
+6 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.inputmethod.latin.utils.CollectionUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * An in memory dictionary for memorizing entries and writing a binary dictionary.
@@ -84,8 +85,11 @@ public class DictionaryWriter extends AbstractDictionaryWriter {
    }

    @Override
    protected void writeDictionary(final DictEncoder dictEncoder)
            throws IOException, UnsupportedFormatException {
    protected void writeDictionary(final DictEncoder dictEncoder,
            final Map<String, String> attributeMap) throws IOException, UnsupportedFormatException {
        for (final Map.Entry<String, String> entry : attributeMap.entrySet()) {
            mFusionDictionary.addOptionAttribute(entry.getKey(), entry.getValue());
        }
        dictEncoder.writeDictionary(mFusionDictionary, FORMAT_OPTIONS);
    }

+3 −2
Original line number Diff line number Diff line
@@ -236,6 +236,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
        HashMap<String, String> attributeMap = new HashMap<String, String>();
        attributeMap.put(FormatSpec.FileHeader.SUPPORTS_DYNAMIC_UPDATE_ATTRIBUTE,
                SUPPORTS_DYNAMIC_UPDATE);
        attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, mFilename);
        return attributeMap;
    }

@@ -496,7 +497,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
        if (needsToReloadBeforeWriting()) {
            mDictionaryWriter.clear();
            loadDictionaryAsync();
            mDictionaryWriter.write(mFilename);
            mDictionaryWriter.write(mFilename, getHeaderAttributeMap());
        } else {
            if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
                if (mBinaryDictionary == null || !mBinaryDictionary.isValidDictionary()) {
@@ -511,7 +512,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
                    }
                }
            } else {
                mDictionaryWriter.write(mFilename);
                mDictionaryWriter.write(mFilename, getHeaderAttributeMap());
            }
        }
    }
+9 −11
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
import com.android.inputmethod.latin.personalization.PersonalizationDictionarySessionRegister;
import com.android.inputmethod.latin.personalization.PersonalizationHelper;
import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
import com.android.inputmethod.latin.personalization.UserHistoryPredictionDictionary;
import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.settings.SettingsActivity;
import com.android.inputmethod.latin.settings.SettingsValues;
@@ -179,7 +179,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen

    private boolean mIsMainDictionaryAvailable;
    private UserBinaryDictionary mUserDictionary;
    private UserHistoryPredictionDictionary mUserHistoryPredictionDictionary;
    private UserHistoryDictionary mUserHistoryDictionary;
    private PersonalizationPredictionDictionary mPersonalizationPredictionDictionary;
    private PersonalizationDictionary mPersonalizationDictionary;
    private boolean mIsUserDictionaryAvailable;
@@ -623,9 +623,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen

        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

        mUserHistoryPredictionDictionary = PersonalizationHelper
                .getUserHistoryPredictionDictionary(this, localeStr, prefs);
        newSuggest.setUserHistoryPredictionDictionary(mUserHistoryPredictionDictionary);
        mUserHistoryDictionary = PersonalizationHelper.getUserHistoryDictionary(
                this, localeStr, prefs);
        newSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
        mPersonalizationDictionary = PersonalizationHelper
                .getPersonalizationDictionary(this, localeStr, prefs);
        newSuggest.setPersonalizationDictionary(mPersonalizationDictionary);
@@ -2750,9 +2750,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        final SettingsValues currentSettings = mSettings.getCurrent();
        if (!currentSettings.mCorrectionEnabled) return null;

        final UserHistoryPredictionDictionary userHistoryPredictionDictionary =
                mUserHistoryPredictionDictionary;
        if (userHistoryPredictionDictionary == null) return null;
        final UserHistoryDictionary userHistoryDictionary = mUserHistoryDictionary;
        if (userHistoryDictionary == null) return null;

        final String prevWord = mConnection.getNthPreviousWord(currentSettings.mWordSeparators, 2);
        final String secondWord;
@@ -2766,8 +2765,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        final int maxFreq = AutoCorrectionUtils.getMaxFrequency(
                suggest.getUnigramDictionaries(), suggestion);
        if (maxFreq == 0) return null;
        userHistoryPredictionDictionary
                .addToPersonalizationPredictionDictionary(prevWord, secondWord, maxFreq > 0);
        userHistoryDictionary.addToDictionary(prevWord, secondWord, maxFreq > 0);
        return prevWord;
    }

@@ -2953,7 +2951,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        }
        mConnection.deleteSurroundingText(deleteLength, 0);
        if (!TextUtils.isEmpty(previousWord) && !TextUtils.isEmpty(committedWord)) {
            mUserHistoryPredictionDictionary.cancelAddingUserHistory(previousWord, committedWord);
            mUserHistoryDictionary.cancelAddingUserHistory(previousWord, committedWord);
        }
        final String stringToCommit = originallyTypedWord + mLastComposedWord.mSeparatorString;
        if (mSettings.getCurrent().mCurrentLanguageHasSpaces) {
+3 −5
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
import com.android.inputmethod.latin.personalization.UserHistoryPredictionDictionary;
import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.utils.AutoCorrectionUtils;
import com.android.inputmethod.latin.utils.BoundedTreeSet;
@@ -190,10 +190,8 @@ public final class Suggest {
        addOrReplaceDictionaryInternal(Dictionary.TYPE_CONTACTS, contactsDictionary);
    }

    public void setUserHistoryPredictionDictionary(
            final UserHistoryPredictionDictionary userHistoryPredictionDictionary) {
        addOrReplaceDictionaryInternal(Dictionary.TYPE_USER_HISTORY,
                userHistoryPredictionDictionary);
    public void setUserHistoryDictionary(final UserHistoryDictionary userHistoryDictionary) {
        addOrReplaceDictionaryInternal(Dictionary.TYPE_USER_HISTORY, userHistoryDictionary);
    }

    public void setPersonalizationPredictionDictionary(
Loading