aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java')
-rw-r--r--tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java94
1 files changed, 63 insertions, 31 deletions
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
index a002bbe48..29787acc9 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
@@ -26,9 +26,11 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
import com.android.inputmethod.keyboard.KeyboardLayoutSet.Builder;
-import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.RichInputMethodManager;
+import com.android.inputmethod.latin.RichInputMethodSubtype;
+import com.android.inputmethod.latin.common.Constants;
+import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
import com.android.inputmethod.latin.utils.ResourceUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
@@ -39,9 +41,27 @@ import java.util.Locale;
public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase {
// All input method subtypes of LatinIME.
private final ArrayList<InputMethodSubtype> mAllSubtypesList = new ArrayList<>();
- private final ArrayList<InputMethodSubtype> mAsciiCapableSubtypesList = new ArrayList<>();
- private final ArrayList<InputMethodSubtype> mAdditionalSubtypesList = new ArrayList<>();
+ public interface SubtypeFilter {
+ public boolean accept(final InputMethodSubtype subtype);
+ }
+
+ public static final SubtypeFilter FILTER_IS_ASCII_CAPABLE = new SubtypeFilter() {
+ @Override
+ public boolean accept(InputMethodSubtype subtype) {
+ return InputMethodSubtypeCompatUtils.isAsciiCapable(subtype);
+ }
+ };
+
+ public static final SubtypeFilter FILTER_IS_ADDITIONAL_SUBTYPE = new SubtypeFilter() {
+ @Override
+ public boolean accept(InputMethodSubtype subtype) {
+ return AdditionalSubtypeUtils.isAdditionalSubtype(subtype);
+ }
+ };
+
+ private RichInputMethodManager mRichImm;
+ private InputMethodSubtype[] mSavedAdditionalSubtypes;
private int mScreenMetrics;
protected abstract int getKeyboardThemeForTests();
@@ -49,46 +69,57 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
+ final Context context = getContext();
+ final Resources res = context.getResources();
+ RichInputMethodManager.init(context);
+ mRichImm = RichInputMethodManager.getInstance();
+
+ // Save and reset additional subtypes preference.
+ mSavedAdditionalSubtypes = mRichImm.getAdditionalSubtypes();
+ final InputMethodSubtype[] predefinedAdditionalSubtypes =
+ AdditionalSubtypeUtils.createAdditionalSubtypesArray(
+ AdditionalSubtypeUtils.createPrefSubtypes(
+ res.getStringArray(R.array.predefined_subtypes)));
+ mRichImm.setAdditionalInputMethodSubtypes(predefinedAdditionalSubtypes);
+
final KeyboardTheme keyboardTheme = KeyboardTheme.searchKeyboardThemeById(
- getKeyboardThemeForTests());
+ getKeyboardThemeForTests(), KeyboardTheme.KEYBOARD_THEMES);
setContext(new ContextThemeWrapper(getContext(), keyboardTheme.mStyleId));
KeyboardLayoutSet.onKeyboardThemeChanged();
- final Context context = getContext();
- mScreenMetrics = context.getResources().getInteger(R.integer.config_screen_metrics);
- RichInputMethodManager.init(context);
- final RichInputMethodManager richImm = RichInputMethodManager.getInstance();
+ mScreenMetrics = Settings.readScreenMetrics(res);
- final InputMethodInfo imi = richImm.getInputMethodInfoOfThisIme();
+ final InputMethodInfo imi = mRichImm.getInputMethodInfoOfThisIme();
final int subtypeCount = imi.getSubtypeCount();
for (int index = 0; index < subtypeCount; index++) {
- final InputMethodSubtype subtype = imi.getSubtypeAt(index);
- if (AdditionalSubtypeUtils.isAdditionalSubtype(subtype)) {
- mAdditionalSubtypesList.add(subtype);
- continue;
- }
- mAllSubtypesList.add(subtype);
- if (InputMethodSubtypeCompatUtils.isAsciiCapable(subtype)) {
- mAsciiCapableSubtypesList.add(subtype);
- }
+ mAllSubtypesList.add(imi.getSubtypeAt(index));
}
}
- protected final ArrayList<InputMethodSubtype> getAllSubtypesList() {
- return mAllSubtypesList;
+ @Override
+ protected void tearDown() throws Exception {
+ // Restore additional subtypes preference.
+ mRichImm.setAdditionalInputMethodSubtypes(mSavedAdditionalSubtypes);
+ super.tearDown();
}
- protected final ArrayList<InputMethodSubtype> getAsciiCapableSubtypesList() {
- return mAsciiCapableSubtypesList;
+ protected final ArrayList<InputMethodSubtype> getAllSubtypesList() {
+ return mAllSubtypesList;
}
- protected final ArrayList<InputMethodSubtype> getAdditionalSubtypesList() {
- return mAdditionalSubtypesList;
+ protected final ArrayList<InputMethodSubtype> getSubtypesFilteredBy(
+ final SubtypeFilter filter) {
+ final ArrayList<InputMethodSubtype> list = new ArrayList<>();
+ for (final InputMethodSubtype subtype : mAllSubtypesList) {
+ if (filter.accept(subtype)) {
+ list.add(subtype);
+ }
+ }
+ return list;
}
protected final boolean isPhone() {
- return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_PHONE
- || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_PHONE;
+ return Constants.isPhone(mScreenMetrics);
}
protected final InputMethodSubtype getSubtype(final Locale locale,
@@ -101,7 +132,7 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase {
return subtype;
}
}
- for (final InputMethodSubtype subtype : mAsciiCapableSubtypesList) {
+ for (final InputMethodSubtype subtype : getSubtypesFilteredBy(FILTER_IS_ASCII_CAPABLE)) {
final Locale subtypeLocale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
if (locale.equals(subtypeLocale)) {
// Create additional subtype.
@@ -116,21 +147,22 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase {
protected KeyboardLayoutSet createKeyboardLayoutSet(final InputMethodSubtype subtype,
final EditorInfo editorInfo) {
return createKeyboardLayoutSet(subtype, editorInfo, false /* voiceInputKeyEnabled */,
- false /* languageSwitchKeyEnabled */);
+ false /* languageSwitchKeyEnabled */, false /* splitLayoutEnabled */);
}
protected KeyboardLayoutSet createKeyboardLayoutSet(final InputMethodSubtype subtype,
final EditorInfo editorInfo, final boolean voiceInputKeyEnabled,
- final boolean languageSwitchKeyEnabled) {
+ final boolean languageSwitchKeyEnabled, final boolean splitLayoutEnabled) {
final Context context = getContext();
final Resources res = context.getResources();
final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
final int keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
final Builder builder = new Builder(context, editorInfo);
builder.setKeyboardGeometry(keyboardWidth, keyboardHeight)
- .setSubtype(subtype)
+ .setSubtype(RichInputMethodSubtype.getRichInputMethodSubtype(subtype))
.setVoiceInputKeyEnabled(voiceInputKeyEnabled)
- .setLanguageSwitchKeyEnabled(languageSwitchKeyEnabled);
+ .setLanguageSwitchKeyEnabled(languageSwitchKeyEnabled)
+ .setSplitLayoutEnabledByUser(splitLayoutEnabled);
return builder.build();
}
}