From 6a76537d3b952932bbf6ab660b64e4678cf9e57d Mon Sep 17 00:00:00 2001 From: Aleksandras Kostarevas Date: Sat, 31 Aug 2024 18:33:59 +0300 Subject: [PATCH] Make KeyboardTheme a stub, remove KeyboardThemeTests --- java/res/values/themes-lxx-dark.xml | 160 ------- .../inputmethod/keyboard/KeyboardTheme.java | 141 +----- .../keyboard/KeyboardLayoutSetTestsBase.java | 3 +- .../keyboard/KeyboardThemeTests.java | 421 ------------------ 4 files changed, 5 insertions(+), 720 deletions(-) delete mode 100644 java/res/values/themes-lxx-dark.xml delete mode 100644 tests/src/org/futo/inputmethod/keyboard/KeyboardThemeTests.java diff --git a/java/res/values/themes-lxx-dark.xml b/java/res/values/themes-lxx-dark.xml deleted file mode 100644 index 19cda1be5..000000000 --- a/java/res/values/themes-lxx-dark.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/java/src/org/futo/inputmethod/keyboard/KeyboardTheme.java b/java/src/org/futo/inputmethod/keyboard/KeyboardTheme.java index cba99d19e..0a970635c 100644 --- a/java/src/org/futo/inputmethod/keyboard/KeyboardTheme.java +++ b/java/src/org/futo/inputmethod/keyboard/KeyboardTheme.java @@ -17,46 +17,21 @@ package org.futo.inputmethod.keyboard; import android.content.Context; -import android.content.SharedPreferences; import android.os.Build; -import android.os.Build.VERSION_CODES; -import android.preference.PreferenceManager; -import android.util.Log; -import org.futo.inputmethod.compat.BuildCompatUtils; import org.futo.inputmethod.latin.R; -import java.util.ArrayList; -import java.util.Arrays; - +// Actual theming is handled in DynamicThemeProvider/BasicThemeProvider these days. +// This class is left as a stub since some code still depends on it. +// TODO: Eventually remove this class public final class KeyboardTheme implements Comparable { - private static final String TAG = KeyboardTheme.class.getSimpleName(); - - static final String KLP_KEYBOARD_THEME_KEY = "pref_keyboard_layout_20110916"; - static final String LXX_KEYBOARD_THEME_KEY = "pref_keyboard_theme_20140509"; - - // These should be aligned with Keyboard.themeId and Keyboard.Case.keyboardTheme - // attributes' values in attrs.xml. public static final int THEME_ID_LXX_LIGHT = 3; - public static final int THEME_ID_LXX_DARK = 4; - public static final int DEFAULT_THEME_ID = THEME_ID_LXX_LIGHT; - private static KeyboardTheme[] AVAILABLE_KEYBOARD_THEMES; - - /* package private for testing */ static final KeyboardTheme[] KEYBOARD_THEMES = { new KeyboardTheme(THEME_ID_LXX_LIGHT, "LXXLight", R.style.KeyboardTheme_LXX_Light, - // Default theme for LXX. - Build.VERSION_CODES.LOLLIPOP), - new KeyboardTheme(THEME_ID_LXX_DARK, "LXXDark", R.style.KeyboardTheme_LXX_Dark, - // This has never been selected as default theme. - VERSION_CODES.BASE), + Build.VERSION_CODES.LOLLIPOP) }; - static { - // Sort {@link #KEYBOARD_THEME} by descending order of {@link #mMinApiVersion}. - Arrays.sort(KEYBOARD_THEMES); - } public final int mThemeId; public final int mStyleId; @@ -91,115 +66,7 @@ public final class KeyboardTheme implements Comparable { return mThemeId; } - /* package private for testing */ - static KeyboardTheme searchKeyboardThemeById(final int themeId, - final KeyboardTheme[] availableThemeIds) { - // TODO: This search algorithm isn't optimal if there are many themes. - for (final KeyboardTheme theme : availableThemeIds) { - if (theme.mThemeId == themeId) { - return theme; - } - } - return null; - } - - /* package private for testing */ - static KeyboardTheme getDefaultKeyboardTheme(final SharedPreferences prefs, - final int sdkVersion, final KeyboardTheme[] availableThemeArray) { - final String klpThemeIdString = prefs.getString(KLP_KEYBOARD_THEME_KEY, null); - if (klpThemeIdString != null) { - if (sdkVersion <= VERSION_CODES.KITKAT) { - try { - final int themeId = Integer.parseInt(klpThemeIdString); - final KeyboardTheme theme = searchKeyboardThemeById(themeId, - availableThemeArray); - if (theme != null) { - return theme; - } - Log.w(TAG, "Unknown keyboard theme in KLP preference: " + klpThemeIdString); - } catch (final NumberFormatException e) { - Log.w(TAG, "Illegal keyboard theme in KLP preference: " + klpThemeIdString, e); - } - } - // Remove old preference. - Log.i(TAG, "Remove KLP keyboard theme preference: " + klpThemeIdString); - prefs.edit().remove(KLP_KEYBOARD_THEME_KEY).apply(); - } - // TODO: This search algorithm isn't optimal if there are many themes. - for (final KeyboardTheme theme : availableThemeArray) { - if (sdkVersion >= theme.mMinApiVersion) { - return theme; - } - } - return searchKeyboardThemeById(DEFAULT_THEME_ID, availableThemeArray); - } - - public static String getKeyboardThemeName(final int themeId) { - final KeyboardTheme theme = searchKeyboardThemeById(themeId, KEYBOARD_THEMES); - return theme.mThemeName; - } - - public static void saveKeyboardThemeId(final int themeId, final SharedPreferences prefs) { - saveKeyboardThemeId(themeId, prefs, BuildCompatUtils.EFFECTIVE_SDK_INT); - } - - /* package private for testing */ - static String getPreferenceKey(final int sdkVersion) { - if (sdkVersion <= VERSION_CODES.KITKAT) { - return KLP_KEYBOARD_THEME_KEY; - } - return LXX_KEYBOARD_THEME_KEY; - } - - /* package private for testing */ - static void saveKeyboardThemeId(final int themeId, final SharedPreferences prefs, - final int sdkVersion) { - final String prefKey = getPreferenceKey(sdkVersion); - prefs.edit().putString(prefKey, Integer.toString(themeId)).apply(); - } - public static KeyboardTheme getKeyboardTheme(final Context context) { return KEYBOARD_THEMES[0]; } - - /* package private for testing */ - static KeyboardTheme[] getAvailableThemeArray(final Context context) { - if (AVAILABLE_KEYBOARD_THEMES == null) { - final int[] availableThemeIdStringArray = context.getResources().getIntArray( - R.array.keyboard_theme_ids); - final ArrayList availableThemeList = new ArrayList<>(); - for (final int id : availableThemeIdStringArray) { - final KeyboardTheme theme = searchKeyboardThemeById(id, KEYBOARD_THEMES); - if (theme != null) { - availableThemeList.add(theme); - } - } - AVAILABLE_KEYBOARD_THEMES = availableThemeList.toArray( - new KeyboardTheme[availableThemeList.size()]); - Arrays.sort(AVAILABLE_KEYBOARD_THEMES); - } - return AVAILABLE_KEYBOARD_THEMES; - } - - /* package private for testing */ - static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs, final int sdkVersion, - final KeyboardTheme[] availableThemeArray) { - final String lxxThemeIdString = prefs.getString(LXX_KEYBOARD_THEME_KEY, null); - if (lxxThemeIdString == null) { - return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray); - } - try { - final int themeId = Integer.parseInt(lxxThemeIdString); - final KeyboardTheme theme = searchKeyboardThemeById(themeId, availableThemeArray); - if (theme != null) { - return theme; - } - Log.w(TAG, "Unknown keyboard theme in LXX preference: " + lxxThemeIdString); - } catch (final NumberFormatException e) { - Log.w(TAG, "Illegal keyboard theme in LXX preference: " + lxxThemeIdString, e); - } - // Remove preference that contains unknown or illegal theme id. - prefs.edit().remove(LXX_KEYBOARD_THEME_KEY).apply(); - return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray); - } } diff --git a/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java b/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java index d71b884c0..406511c0f 100644 --- a/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java +++ b/tests/src/org/futo/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java @@ -83,8 +83,7 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase { res.getStringArray(R.array.predefined_subtypes))); //mRichImm.setAdditionalInputMethodSubtypes(predefinedAdditionalSubtypes); - final KeyboardTheme keyboardTheme = KeyboardTheme.searchKeyboardThemeById( - getKeyboardThemeForTests(), KeyboardTheme.KEYBOARD_THEMES); + final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(context); setContext(new ContextThemeWrapper(getContext(), keyboardTheme.mStyleId)); KeyboardLayoutSetV2.onKeyboardThemeChanged(); diff --git a/tests/src/org/futo/inputmethod/keyboard/KeyboardThemeTests.java b/tests/src/org/futo/inputmethod/keyboard/KeyboardThemeTests.java deleted file mode 100644 index ba648096f..000000000 --- a/tests/src/org/futo/inputmethod/keyboard/KeyboardThemeTests.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.futo.inputmethod.keyboard; - -import static org.futo.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_DARK; -import static org.futo.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_LIGHT; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import android.content.Context; -import android.content.SharedPreferences; -import android.os.Build; -import android.os.Build.VERSION_CODES; -import android.preference.PreferenceManager; - -import androidx.test.InstrumentationRegistry; -import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.util.Arrays; - -@SmallTest -@RunWith(AndroidJUnit4.class) -public class KeyboardThemeTests { - private SharedPreferences mPrefs; - - private static final int THEME_ID_NULL = -1; - private static final int THEME_ID_UNKNOWN = -2; - private static final int THEME_ID_ILLEGAL = -3; - private static final String ILLEGAL_THEME_ID_STRING = "ThisCausesNumberFormatExecption"; - - private Context getContext() { - return InstrumentationRegistry.getTargetContext(); - } - - @Before - public void setUp() throws Exception { - mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - } - - /* - * Helper functions. - */ - - private static boolean isValidKeyboardThemeId(final int themeId) { - switch (themeId) { - case THEME_ID_LXX_LIGHT: - case THEME_ID_LXX_DARK: - return true; - default: - return false; - } - } - - private void setKeyboardThemePreference(final String prefKey, final int themeId) { - final String themeIdString = Integer.toString(themeId); - if (isValidKeyboardThemeId(themeId) || themeId == THEME_ID_UNKNOWN) { - // Set valid theme id to preference. - mPrefs.edit().putString(prefKey, themeIdString).apply(); - return; - } - if (themeId == THEME_ID_NULL) { - // Simulate undefined preference. - mPrefs.edit().remove(prefKey).apply(); - return; - } - // themeId == THEME_ID_ILLEGAL - // Simulate illegal format theme id in preference. - mPrefs.edit().putString(prefKey, ILLEGAL_THEME_ID_STRING).apply(); - } - - private void assertKeyboardTheme(final int sdkVersion, final int expectedThemeId) { - final KeyboardTheme actualTheme = KeyboardTheme.getKeyboardTheme( - mPrefs, sdkVersion, KeyboardTheme.KEYBOARD_THEMES); - assertEquals(expectedThemeId, actualTheme.mThemeId); - } - - /* - * Test keyboard theme preference on the same platform version and the same keyboard version. - */ - - private void assertKeyboardThemePreference(final int sdkVersion, final int previousThemeId, - final int expectedThemeId) { - // Clear preferences before testing. - setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); - setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL); - // Set the preference of the sdkVersion to previousThemeId. - final String prefKey = KeyboardTheme.getPreferenceKey(sdkVersion); - setKeyboardThemePreference(prefKey, previousThemeId); - assertKeyboardTheme(sdkVersion, expectedThemeId); - } - - private void assertKeyboardThemePreferenceOnKlp(final int sdkVersion) { - final int defaultThemeId = THEME_ID_LXX_LIGHT; - assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId); - assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT); - assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK); - assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId); - assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId); - } - - @Test - public void testKeyboardThemePreferenceOnKlp() { - assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH); - assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); - assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN); - assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN_MR1); - assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN_MR2); - assertKeyboardThemePreferenceOnKlp(VERSION_CODES.KITKAT); - } - - private void assertKeyboardThemePreferenceOnLxx(final int sdkVersion) { - final int defaultThemeId = THEME_ID_LXX_LIGHT; - assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId); - assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT); - assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK); - assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId); - assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId); - } - - @Test - public void testKeyboardThemePreferenceOnLxx() { - assertKeyboardThemePreferenceOnLxx(Build.VERSION_CODES.LOLLIPOP); - } - - /* - * Test default keyboard theme based on the platform version. - */ - - private void assertDefaultKeyboardTheme(final int sdkVersion, final int previousThemeId, - final int expectedThemeId) { - final String oldPrefKey = KeyboardTheme.KLP_KEYBOARD_THEME_KEY; - setKeyboardThemePreference(oldPrefKey, previousThemeId); - - final KeyboardTheme defaultTheme = KeyboardTheme.getDefaultKeyboardTheme( - mPrefs, sdkVersion, KeyboardTheme.KEYBOARD_THEMES); - - assertNotNull(defaultTheme); - assertEquals(expectedThemeId, defaultTheme.mThemeId); - if (sdkVersion <= VERSION_CODES.KITKAT) { - // Old preference must be retained if it is valid. Otherwise it must be pruned. - assertEquals(isValidKeyboardThemeId(previousThemeId), mPrefs.contains(oldPrefKey)); - return; - } - // Old preference must be removed. - assertFalse(mPrefs.contains(oldPrefKey)); - } - - private void assertDefaultKeyboardThemeOnKlp(final int sdkVersion) { - } - - @Test - public void testDefaultKeyboardThemeOnKlp() { - assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH); - assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); - assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN); - assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN_MR1); - assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN_MR2); - assertDefaultKeyboardThemeOnKlp(VERSION_CODES.KITKAT); - } - - private void assertDefaultKeyboardThemeOnLxx(final int sdkVersion) { - // Forced to switch to LXX theme. - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); - } - - @Test - public void testDefaultKeyboardThemeOnLxx() { - assertDefaultKeyboardThemeOnLxx(Build.VERSION_CODES.LOLLIPOP); - } - - /* - * Test keyboard theme preference while upgrading the keyboard that doesn't support LXX theme - * to the keyboard that supports LXX theme. - */ - - private void assertUpgradeKeyboardToLxxOn(final int sdkVersion, final int previousThemeId, - final int expectedThemeId) { - setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, previousThemeId); - // Clean up new keyboard theme preference to simulate "upgrade to LXX keyboard". - setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL); - - final KeyboardTheme theme = KeyboardTheme.getKeyboardTheme( - mPrefs, sdkVersion, KeyboardTheme.KEYBOARD_THEMES); - - assertNotNull(theme); - assertEquals(expectedThemeId, theme.mThemeId); - if (sdkVersion <= VERSION_CODES.KITKAT) { - // New preference must not exist. - assertFalse(mPrefs.contains(KeyboardTheme.LXX_KEYBOARD_THEME_KEY)); - // Old preference must be retained if it is valid. Otherwise it must be pruned. - assertEquals(isValidKeyboardThemeId(previousThemeId), - mPrefs.contains(KeyboardTheme.KLP_KEYBOARD_THEME_KEY)); - if (isValidKeyboardThemeId(previousThemeId)) { - // Old preference must have an expected value. - assertEquals(mPrefs.getString(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, null), - Integer.toString(expectedThemeId)); - } - return; - } - // Old preference must be removed. - assertFalse(mPrefs.contains(KeyboardTheme.KLP_KEYBOARD_THEME_KEY)); - // New preference must not exist. - assertFalse(mPrefs.contains(KeyboardTheme.LXX_KEYBOARD_THEME_KEY)); - } - - private void assertUpgradeKeyboardToLxxOnKlp(final int sdkVersion) { - } - - // Upgrading keyboard on I,J and K. - @Test - public void testUpgradeKeyboardToLxxOnKlp() { - assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH); - assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); - assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN); - assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN_MR1); - assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN_MR2); - assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.KITKAT); - } - - private void assertUpgradeKeyboardToLxxOnLxx(final int sdkVersion) { - // Forced to switch to LXX theme. - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); - } - - // Upgrading keyboard on L. - @Test - public void testUpgradeKeyboardToLxxOnLxx() { - assertUpgradeKeyboardToLxxOnLxx(Build.VERSION_CODES.LOLLIPOP); - } - - /* - * Test keyboard theme preference while upgrading platform version. - */ - - private void assertUpgradePlatformFromTo(final int oldSdkVersion, final int newSdkVersion, - final int previousThemeId, final int expectedThemeId) { - if (newSdkVersion < oldSdkVersion) { - // No need to test. - return; - } - // Clean up preferences. - setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); - setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL); - - final String oldPrefKey = KeyboardTheme.getPreferenceKey(oldSdkVersion); - setKeyboardThemePreference(oldPrefKey, previousThemeId); - - assertKeyboardTheme(newSdkVersion, expectedThemeId); - } - - private void assertUpgradePlatformFromKlpToKlp(final int oldSdkVersion, - final int newSdkVersion) { - } - - private void assertUpgradePlatformToKlpFrom(final int oldSdkVersion) { - assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.ICE_CREAM_SANDWICH); - assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.ICE_CREAM_SANDWICH_MR1); - assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN); - assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN_MR1); - assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN_MR2); - assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.KITKAT); - } - - // Update platform from I,J, and K to I,J, and K - @Test - public void testUpgradePlatformToKlpFromKlp() { - assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH); - assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); - assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN); - assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN_MR1); - assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN_MR2); - assertUpgradePlatformToKlpFrom(VERSION_CODES.KITKAT); - } - - private void assertUpgradePlatformToLxxFrom(final int oldSdkVersion) { - // Forced to switch to LXX theme. - final int newSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); - } - - // Update platform from I,J, and K to L - @Test - public void testUpgradePlatformToLxx() { - assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH); - assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); - assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN); - assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN_MR1); - assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN_MR2); - assertUpgradePlatformToLxxFrom(VERSION_CODES.KITKAT); - } - - // Update platform from L to L. - @Test - public void testUpgradePlatformToLxxFromLxx() { - final int oldSdkVersion = Build.VERSION_CODES.LOLLIPOP; - final int newSdkVersion = Build.VERSION_CODES.LOLLIPOP; - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT); - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK); - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); - assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); - } - - /* - * Test that KeyboardTheme array should be sorted by descending order of - * {@link KeyboardTheme#mMinApiVersion}. - */ - private static void assertSortedKeyboardThemeArray(final KeyboardTheme[] array) { - assertNotNull(array); - final int length = array.length; - assertTrue("array length=" + length, length > 0); - for (int index = 0; index < length - 1; index++) { - final KeyboardTheme theme = array[index]; - final KeyboardTheme nextTheme = array[index + 1]; - assertTrue("sorted MinApiVersion: " - + theme.mThemeName + ": minApiVersion=" + theme.mMinApiVersion, - theme.mMinApiVersion >= nextTheme.mMinApiVersion); - } - } - - @Test - public void testSortedKeyboardTheme() { - assertSortedKeyboardThemeArray(KeyboardTheme.KEYBOARD_THEMES); - } - - @Test - public void testSortedAvailableKeyboardTheme() { - assertSortedKeyboardThemeArray(KeyboardTheme.getAvailableThemeArray(getContext())); - } - - /* - * Test for missing selected theme. - */ - private static KeyboardTheme[] LIMITED_THEMES = { - }; - static { - Arrays.sort(LIMITED_THEMES); - assertSortedKeyboardThemeArray(LIMITED_THEMES); - } - - @Test - public void testMissingSelectedThemeIcs() { - // Clean up preferences. - setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); - setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL); - - final int sdkVersion = VERSION_CODES.ICE_CREAM_SANDWICH; - final String oldPrefKey = KeyboardTheme.getPreferenceKey(sdkVersion); - setKeyboardThemePreference(oldPrefKey, THEME_ID_LXX_LIGHT); - - final KeyboardTheme actualTheme = KeyboardTheme.getKeyboardTheme( - mPrefs, sdkVersion, LIMITED_THEMES); - // LXX_LIGHT is missing, fall-back to KLP. - } - - @Test - public void testMissingSelectedThemeKlp() { - // Clean up preferences. - setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); - setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL); - - final int sdkVersion = VERSION_CODES.KITKAT; - final String oldPrefKey = KeyboardTheme.getPreferenceKey(sdkVersion); - setKeyboardThemePreference(oldPrefKey, THEME_ID_LXX_LIGHT); - - final KeyboardTheme actualTheme = KeyboardTheme.getKeyboardTheme( - mPrefs, sdkVersion, LIMITED_THEMES); - // LXX_LIGHT is missing, fall-back to KLP. - } - - @Test - public void testMissingSelectedThemeLxx() { - // Clean up preferences. - setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); - setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL); - - final int sdkVersion = Build.VERSION_CODES.LOLLIPOP; - final String oldPrefKey = KeyboardTheme.getPreferenceKey(sdkVersion); - setKeyboardThemePreference(oldPrefKey, THEME_ID_LXX_DARK); - - final KeyboardTheme actualTheme = KeyboardTheme.getKeyboardTheme( - mPrefs, sdkVersion, LIMITED_THEMES); - // LXX_DARK is missing, fall-back to KLP. - } -}