From 912ad4614f4bd10d871b16b5307fed1405f8c1e2 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Wed, 9 Jan 2013 20:55:41 +0900 Subject: [PATCH] Fix international tests Tests have been broken again by recent changes to subtype choice within Latin IME. This fixes the problem and all tests pass again. This change also includes a small fix to one test that was checking for something irrelevant. Change-Id: I6a03dea24f99b0d2ad84c4161a8413f3060bb811 --- .../inputmethod/latin/SubtypeSwitcher.java | 8 +++++ .../inputmethod/latin/BlueUnderlineTests.java | 2 -- .../inputmethod/latin/InputTestsBase.java | 29 +------------------ 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java index fe2908428..eb0ec3990 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java +++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java @@ -31,6 +31,7 @@ import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; +import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.KeyboardSwitcher; import java.util.List; @@ -239,7 +240,14 @@ public final class SubtypeSwitcher { return mNeedsToDisplayLanguage.getValue(); } + private static Locale sForcedLocaleForTesting = null; + @UsedForTesting + void forceLocale(final Locale locale) { + sForcedLocaleForTesting = locale; + } + public Locale getCurrentSubtypeLocale() { + if (null != sForcedLocaleForTesting) return sForcedLocaleForTesting; return SubtypeLocale.getSubtypeLocale(getCurrentSubtype()); } diff --git a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java index e2d669bf6..6b4d52d62 100644 --- a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java +++ b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java @@ -117,7 +117,5 @@ public class BlueUnderlineTests extends InputTestsBase { // Now simulate the user moving the cursor. SpanGetter span = new SpanGetter(mTextView.getText(), UnderlineSpan.class); assertNull("should not be composing, so should not have an underline span", span.mSpan); - span = new SpanGetter(mTextView.getText(), SuggestionSpan.class); - assertNull("should not be composing, so should not have an underline span", span.mSpan); } } diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java index 86298674b..a01fef2e2 100644 --- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java +++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java @@ -55,8 +55,6 @@ public class InputTestsBase extends ServiceTestCase { protected MyTextView mTextView; protected View mInputView; protected InputConnection mInputConnection; - private final HashMap mSubtypeMap = - new HashMap(); // A helper class to ease span tests public static class SpanGetter { @@ -143,7 +141,6 @@ public class InputTestsBase extends ServiceTestCase { final boolean previousDebugSetting = setDebugMode(true); mLatinIME.onCreate(); setDebugMode(previousDebugSetting); - initSubtypeMap(); final EditorInfo ei = new EditorInfo(); ei.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT; final InputConnection ic = mTextView.onCreateInputConnection(ei); @@ -161,26 +158,6 @@ public class InputTestsBase extends ServiceTestCase { changeLanguage("en_US"); } - private void initSubtypeMap() { - final InputMethodManager imm = (InputMethodManager)mLatinIME.getSystemService( - Context.INPUT_METHOD_SERVICE); - final String packageName = mLatinIME.getPackageName(); - // The IMEs and subtypes don't need to be enabled to run this test because IMF isn't - // involved here. - for (final InputMethodInfo imi : imm.getInputMethodList()) { - if (imi.getPackageName().equals(packageName)) { - final int subtypeCount = imi.getSubtypeCount(); - for (int i = 0; i < subtypeCount; i++) { - final InputMethodSubtype ims = imi.getSubtypeAt(i); - final String locale = ims.getLocale(); - mSubtypeMap.put(locale, ims); - } - return; - } - } - fail("LatinIME is not found"); - } - // We need to run the messages added to the handler from LatinIME. The only way to do // that is to call Looper#loop() on the right looper, so we're going to get the looper // object and call #loop() here. The messages in the handler actually run on the UI @@ -270,12 +247,8 @@ public class InputTestsBase extends ServiceTestCase { } protected void changeLanguage(final String locale) { - final InputMethodSubtype subtype = mSubtypeMap.get(locale); mTextView.mCurrentLocale = LocaleUtils.constructLocaleFromString(locale); - if (subtype == null) { - fail("InputMethodSubtype for locale " + locale + " is not enabled"); - } - SubtypeSwitcher.getInstance().onSubtypeChanged(subtype); + SubtypeSwitcher.getInstance().forceLocale(mTextView.mCurrentLocale); mLatinIME.loadKeyboard(); mKeyboard = mLatinIME.mKeyboardSwitcher.getKeyboard(); waitForDictionaryToBeLoaded();