Passing SpacingAndPunctuations to StringUtils.looksValidForDictionaryInsertion
This change must be checked in together with Iec437d6df0. Change-Id: Idf745b8870965f3bdf690de7ff3b22f83f6204bf
This commit is contained in:
parent
494e2d6c17
commit
ee35e69eae
4 changed files with 21 additions and 84 deletions
|
@ -24,7 +24,6 @@ import android.content.res.Resources;
|
|||
import android.util.Log;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
|
||||
import com.android.inputmethod.annotations.UsedForTesting;
|
||||
import com.android.inputmethod.compat.AppWorkaroundsUtils;
|
||||
import com.android.inputmethod.latin.InputAttributes;
|
||||
import com.android.inputmethod.latin.R;
|
||||
|
@ -166,53 +165,6 @@ public final class SettingsValues {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: Remove this constructor.
|
||||
// Only for tests
|
||||
private SettingsValues(final Locale locale) {
|
||||
// TODO: locale is saved, but not used yet. May have to change this if tests require.
|
||||
mLocale = locale;
|
||||
mDelayUpdateOldSuggestions = 0;
|
||||
mSpacingAndPunctuations = new SpacingAndPunctuations(locale);
|
||||
mHintToSaveText = "Touch again to save";
|
||||
mInputAttributes = new InputAttributes(null, false /* isFullscreenMode */);
|
||||
mAutoCap = true;
|
||||
mVibrateOn = true;
|
||||
mSoundOn = true;
|
||||
mKeyPreviewPopupOn = true;
|
||||
mSlidingKeyInputPreviewEnabled = true;
|
||||
mShowsVoiceInputKey = true;
|
||||
mIncludesOtherImesInLanguageSwitchList = false;
|
||||
mShowsLanguageSwitchKey = true;
|
||||
mUseContactsDict = true;
|
||||
mUsePersonalizedDicts = true;
|
||||
mUseDoubleSpacePeriod = true;
|
||||
mBlockPotentiallyOffensive = true;
|
||||
mAutoCorrectEnabled = true;
|
||||
mBigramPredictionEnabled = true;
|
||||
mKeyLongpressTimeout = 300;
|
||||
mKeypressVibrationDuration = 5;
|
||||
mKeypressSoundVolume = 1;
|
||||
mKeyPreviewPopupDismissDelay = 70;
|
||||
mAutoCorrectionThreshold = 1;
|
||||
mGestureInputEnabled = true;
|
||||
mGestureTrailEnabled = true;
|
||||
mGestureFloatingPreviewTextEnabled = true;
|
||||
mPhraseGestureEnabled = true;
|
||||
mCorrectionEnabled = mAutoCorrectEnabled && !mInputAttributes.mInputTypeNoAutoCorrect;
|
||||
mSuggestionVisibility = 0;
|
||||
mIsInternal = false;
|
||||
mUseOnlyPersonalizationDictionaryForDebug = false;
|
||||
mDisplayOrientation = Configuration.ORIENTATION_PORTRAIT;
|
||||
mAppWorkarounds = new AsyncResultHolder<AppWorkaroundsUtils>();
|
||||
mAppWorkarounds.set(null);
|
||||
}
|
||||
|
||||
// TODO: Remove this method.
|
||||
@UsedForTesting
|
||||
public static SettingsValues makeDummySettingsValuesForTest(final Locale locale) {
|
||||
return new SettingsValues(locale);
|
||||
}
|
||||
|
||||
public boolean isApplicationSpecifiedCompletionsOn() {
|
||||
return mInputAttributes.mApplicationSpecifiedCompletionOn;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@ package com.android.inputmethod.latin.settings;
|
|||
|
||||
import android.content.res.Resources;
|
||||
|
||||
import com.android.inputmethod.annotations.UsedForTesting;
|
||||
import com.android.inputmethod.keyboard.internal.KeySpecParser;
|
||||
import com.android.inputmethod.latin.Constants;
|
||||
import com.android.inputmethod.latin.Dictionary;
|
||||
|
@ -43,24 +42,6 @@ public final class SpacingAndPunctuations {
|
|||
public final boolean mCurrentLanguageHasSpaces;
|
||||
public final boolean mUsesAmericanTypography;
|
||||
|
||||
// TODO: Remove this constructor.
|
||||
@UsedForTesting
|
||||
SpacingAndPunctuations(final Locale locale) {
|
||||
mSymbolsPrecededBySpace = new int[] { '(', '[', '{', '&' };
|
||||
Arrays.sort(mSymbolsPrecededBySpace);
|
||||
mSymbolsFollowedBySpace = new int[] { '.', ',', ';', ':', '!', '?', ')', ']', '}', '&' };
|
||||
Arrays.sort(mSymbolsFollowedBySpace);
|
||||
mWordConnectors = new int[] { '\'', '-' };
|
||||
Arrays.sort(mWordConnectors);
|
||||
mSentenceSeparator = Constants.CODE_PERIOD;
|
||||
mSentenceSeparatorAndSpace = ". ";
|
||||
final String[] suggestPuncsSpec = new String[] { "!", "?", ",", ":", ";" };
|
||||
mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
|
||||
mWordSeparators = "&\t \n()[]{}*&<>+=|.,;:!?/_\"";
|
||||
mCurrentLanguageHasSpaces = true;
|
||||
mUsesAmericanTypography = Locale.ENGLISH.getLanguage().equals(locale.getLanguage());
|
||||
}
|
||||
|
||||
public SpacingAndPunctuations(final Resources res) {
|
||||
mSymbolsPrecededBySpace =
|
||||
StringUtils.toCodePointArray(res.getString(R.string.symbols_preceded_by_space));
|
||||
|
|
|
@ -17,15 +17,12 @@
|
|||
package com.android.inputmethod.latin.utils;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.inputmethod.annotations.UsedForTesting;
|
||||
import com.android.inputmethod.latin.Constants;
|
||||
import com.android.inputmethod.latin.settings.SettingsValues;
|
||||
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public final class StringUtils {
|
||||
|
@ -270,7 +267,7 @@ public final class StringUtils {
|
|||
|
||||
@UsedForTesting
|
||||
public static boolean looksValidForDictionaryInsertion(final CharSequence text,
|
||||
final SettingsValues settings) {
|
||||
final SpacingAndPunctuations spacingAndPunctuations) {
|
||||
if (TextUtils.isEmpty(text)) return false;
|
||||
final int length = text.length();
|
||||
int i = 0;
|
||||
|
@ -284,7 +281,7 @@ public final class StringUtils {
|
|||
digitCount += charCount;
|
||||
continue;
|
||||
}
|
||||
if (!settings.isWordCodePoint(codePoint)) return false;
|
||||
if (!spacingAndPunctuations.isWordCodePoint(codePoint)) return false;
|
||||
}
|
||||
// We reject strings entirely comprised of digits to avoid using PIN codes or credit
|
||||
// card numbers. It would come in handy for word prediction though; a good example is
|
||||
|
|
|
@ -16,11 +16,12 @@
|
|||
|
||||
package com.android.inputmethod.latin.utils;
|
||||
|
||||
import com.android.inputmethod.latin.settings.SettingsValues;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.test.AndroidTestCase;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
@ -209,15 +210,21 @@ public class StringAndJsonUtilsTests extends AndroidTestCase {
|
|||
}
|
||||
|
||||
public void testLooksValidForDictionaryInsertion() {
|
||||
final SettingsValues settings =
|
||||
SettingsValues.makeDummySettingsValuesForTest(Locale.ENGLISH);
|
||||
assertTrue(StringUtils.looksValidForDictionaryInsertion("aochaueo", settings));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("", settings));
|
||||
assertTrue(StringUtils.looksValidForDictionaryInsertion("ao-ch'aueo", settings));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("2908743256", settings));
|
||||
assertTrue(StringUtils.looksValidForDictionaryInsertion("31aochaueo", settings));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("akeo raeoch oerch .", settings));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("!!!", settings));
|
||||
final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() {
|
||||
@Override
|
||||
protected SpacingAndPunctuations job(final Resources res) {
|
||||
return new SpacingAndPunctuations(res);
|
||||
}
|
||||
};
|
||||
final Resources res = getContext().getResources();
|
||||
final SpacingAndPunctuations sp = job.runInLocale(res, Locale.ENGLISH);
|
||||
assertTrue(StringUtils.looksValidForDictionaryInsertion("aochaueo", sp));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("", sp));
|
||||
assertTrue(StringUtils.looksValidForDictionaryInsertion("ao-ch'aueo", sp));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("2908743256", sp));
|
||||
assertTrue(StringUtils.looksValidForDictionaryInsertion("31aochaueo", sp));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("akeo raeoch oerch .", sp));
|
||||
assertFalse(StringUtils.looksValidForDictionaryInsertion("!!!", sp));
|
||||
}
|
||||
|
||||
private static void checkCapitalize(final String src, final String dst, final String separators,
|
||||
|
|
Loading…
Reference in a new issue