From ee35e69eae734448d0aa90e46037273cc3f1e6ad Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Thu, 9 Jan 2014 18:29:11 +0900 Subject: [PATCH] Passing SpacingAndPunctuations to StringUtils.looksValidForDictionaryInsertion This change must be checked in together with Iec437d6df0. Change-Id: Idf745b8870965f3bdf690de7ff3b22f83f6204bf --- .../latin/settings/SettingsValues.java | 48 ------------------- .../settings/SpacingAndPunctuations.java | 19 -------- .../inputmethod/latin/utils/StringUtils.java | 9 ++-- .../latin/utils/StringAndJsonUtilsTests.java | 29 ++++++----- 4 files changed, 21 insertions(+), 84 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java index 6ecee8167..e4ae64fdc 100644 --- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java @@ -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(); - 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; } diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java index 124c97517..dbe30e260 100644 --- a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java +++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java @@ -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)); diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java index 85f44541e..0042d8b42 100644 --- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java +++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java @@ -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 diff --git a/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java index 0c88f34f0..7130e36f1 100644 --- a/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java @@ -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 job = new RunInLocale() { + @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,