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

Commit 5ed30a76 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Set header attributes for ExpandableBinaryDictionary.

Bug: 6669677

Change-Id: I2462777eaa07600f1c774226adfc4f351882f523
parent 67cb282b
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
@@ -234,6 +234,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;
    }

@@ -488,7 +489,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()) {
@@ -503,7 +504,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);
@@ -2746,9 +2746,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;
@@ -2762,8 +2761,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;
    }

@@ -2949,7 +2947,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