159c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka/*
259c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * Copyright (C) 2014 The Android Open Source Project
359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka *
459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License");
559c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * you may not use this file except in compliance with the License.
659c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * You may obtain a copy of the License at
759c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka *
859c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka *      http://www.apache.org/licenses/LICENSE-2.0
959c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka *
1059c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software
1159c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS,
1259c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * See the License for the specific language governing permissions and
1459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka * limitations under the License.
1559c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka */
1659c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
1759c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaokapackage com.android.inputmethod.keyboard;
1859c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
1978cff10f8d317641dd3531cce04e74502be8ad44Tadashi G. Takaokaimport static com.android.inputmethod.compat.BuildCompatUtils.VERSION_CODES_LXX;
20f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaokaimport static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_ICS;
21f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaokaimport static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_KLP;
22f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaokaimport static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_DARK;
23f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaokaimport static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_LIGHT;
24f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka
2559c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaokaimport android.content.SharedPreferences;
2659c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaokaimport android.os.Build.VERSION_CODES;
2759c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaokaimport android.preference.PreferenceManager;
2859c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaokaimport android.test.AndroidTestCase;
2959c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaokaimport android.test.suitebuilder.annotation.SmallTest;
3059c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
3159c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka@SmallTest
3259c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaokapublic class KeyboardThemeTests extends AndroidTestCase {
3359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    private SharedPreferences mPrefs;
3459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
3559c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    private static final int THEME_ID_NULL = -1;
363b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private static final int THEME_ID_UNKNOWN = -2;
373b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private static final int THEME_ID_ILLEGAL = -3;
383b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private static final String ILLEGAL_THEME_ID_STRING = "ThisCausesNumberFormatExecption";
3959c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
4059c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    @Override
4159c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    protected void setUp() throws Exception {
4259c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka        super.setUp();
4359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka        mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
4459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
4559c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
463b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    /*
473b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     * Helper functions.
483b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     */
493b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
503b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private static boolean isValidKeyboardThemeId(final int themeId) {
513b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        switch (themeId) {
523b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        case THEME_ID_ICS:
533b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        case THEME_ID_KLP:
54f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        case THEME_ID_LXX_LIGHT:
5504e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        case THEME_ID_LXX_DARK:
563b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            return true;
573b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        default:
583b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            return false;
593b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        }
603b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
613b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
623b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void setKeyboardThemePreference(final String prefKey, final int themeId) {
633b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final String themeIdString = Integer.toString(themeId);
643b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        if (isValidKeyboardThemeId(themeId) || themeId == THEME_ID_UNKNOWN) {
653b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            // Set valid theme id to preference.
663b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            mPrefs.edit().putString(prefKey, themeIdString).apply();
673b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            return;
683b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        }
693b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        if (themeId == THEME_ID_NULL) {
703b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            // Simulate undefined preference.
713b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            mPrefs.edit().remove(prefKey).apply();
723b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            return;
733b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        }
743b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // themeId == THEME_ID_ILLEGAL
753b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // Simulate illegal format theme id in preference.
763b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        mPrefs.edit().putString(prefKey, ILLEGAL_THEME_ID_STRING).apply();
773b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
783b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
793b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertKeyboardTheme(final int sdkVersion, final int expectedThemeId) {
803b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertEquals(expectedThemeId, KeyboardTheme.getKeyboardTheme(mPrefs, sdkVersion).mThemeId);
813b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
823b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
833b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    /*
843b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     * Test keyboard theme preference on the same platform version and the same keyboard version.
853b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     */
863b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
87f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka    private void assertKeyboardThemePreference(final int sdkVersion, final int previousThemeId,
883b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            final int expectedThemeId) {
89f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        // Clear preferences before testing.
90f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL);
91f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL);
92f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        // Set the preference of the sdkVersion to previousThemeId.
933b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final String prefKey = KeyboardTheme.getPreferenceKey(sdkVersion);
94f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        setKeyboardThemePreference(prefKey, previousThemeId);
953b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardTheme(sdkVersion, expectedThemeId);
963b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
973b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
983b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertKeyboardThemePreferenceOnKlp(final int sdkVersion) {
993b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final int defaultThemeId = THEME_ID_KLP;
1003b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
1013b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
1023b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
103f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT);
10404e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
1053b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
1063b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
1073b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
1083b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1093b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testKeyboardThemePreferenceOnKlp() {
1103b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH);
1113b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
1123b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN);
1133b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN_MR1);
1143b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN_MR2);
1153b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.KITKAT);
1163b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
1173b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1183b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertKeyboardThemePreferenceOnLxx(final int sdkVersion) {
119f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        final int defaultThemeId = THEME_ID_LXX_LIGHT;
1203b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
1213b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
1223b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
123f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT);
12404e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
1253b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
1263b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
1273b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
1283b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1293b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testKeyboardThemePreferenceOnLxx() {
1303b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardThemePreferenceOnLxx(VERSION_CODES_LXX);
1313b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
1323b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1333b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    /*
1343b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     * Test default keyboard theme based on the platform version.
1353b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     */
1363b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
137f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka    private void assertDefaultKeyboardTheme(final int sdkVersion, final int previousThemeId,
13859c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka            final int expectedThemeId) {
1393b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final String oldPrefKey = KeyboardTheme.KLP_KEYBOARD_THEME_KEY;
140f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        setKeyboardThemePreference(oldPrefKey, previousThemeId);
1413b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
14259c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka        final KeyboardTheme defaultTheme =
14359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka                KeyboardTheme.getDefaultKeyboardTheme(mPrefs, sdkVersion);
1443b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
14559c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka        assertNotNull(defaultTheme);
14659c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka        assertEquals(expectedThemeId, defaultTheme.mThemeId);
1473b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        if (sdkVersion <= VERSION_CODES.KITKAT) {
1483b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            // Old preference must be retained if it is valid. Otherwise it must be pruned.
149f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka            assertEquals(isValidKeyboardThemeId(previousThemeId), mPrefs.contains(oldPrefKey));
1503b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            return;
1513b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        }
1523b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // Old preference must be removed.
1533b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertFalse(mPrefs.contains(oldPrefKey));
15459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
15559c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
1563b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertDefaultKeyboardThemeOnKlp(final int sdkVersion) {
1573b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_KLP);
15859c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
15959c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
1603b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_KLP);
1613b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_KLP);
16259c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
16359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
1643b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testDefaultKeyboardThemeOnKlp() {
1653b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH);
1663b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
1673b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN);
1683b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN_MR1);
1693b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN_MR2);
1703b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.KITKAT);
17159c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
17259c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
1733b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertDefaultKeyboardThemeOnLxx(final int sdkVersion) {
17436100397231addedc6e3bfde4003a83476e8f9c9Tadashi G. Takaoka        // Forced to switch to LXX theme.
175f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
176f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT);
177f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT);
178f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
179f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
1803b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
1813b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1823b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testDefaultKeyboardThemeOnLxx() {
1833b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertDefaultKeyboardThemeOnLxx(VERSION_CODES_LXX);
1843b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
1853b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1863b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    /*
1873b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     * Test keyboard theme preference while upgrading the keyboard that doesn't support LXX theme
1883b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     * to the keyboard that supports LXX theme.
1893b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     */
1903b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
191f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka    private void assertUpgradeKeyboardToLxxOn(final int sdkVersion, final int previousThemeId,
1923b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            final int expectedThemeId) {
193f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, previousThemeId);
1943b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // Clean up new keyboard theme preference to simulate "upgrade to LXX keyboard".
1953b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL);
1963b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1973b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final KeyboardTheme theme = KeyboardTheme.getKeyboardTheme(mPrefs, sdkVersion);
1983b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
1993b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertNotNull(theme);
2003b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertEquals(expectedThemeId, theme.mThemeId);
2013b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        if (sdkVersion <= VERSION_CODES.KITKAT) {
2023b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            // New preference must not exist.
2033b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            assertFalse(mPrefs.contains(KeyboardTheme.LXX_KEYBOARD_THEME_KEY));
2043b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            // Old preference must be retained if it is valid. Otherwise it must be pruned.
205f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka            assertEquals(isValidKeyboardThemeId(previousThemeId),
2063b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka                    mPrefs.contains(KeyboardTheme.KLP_KEYBOARD_THEME_KEY));
207f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka            if (isValidKeyboardThemeId(previousThemeId)) {
2083b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka                // Old preference must have an expected value.
2093b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka                assertEquals(mPrefs.getString(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, null),
2103b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka                        Integer.toString(expectedThemeId));
2113b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            }
2123b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            return;
2133b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        }
2143b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // Old preference must be removed.
2153b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertFalse(mPrefs.contains(KeyboardTheme.KLP_KEYBOARD_THEME_KEY));
2163b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // New preference must not exist.
2173b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertFalse(mPrefs.contains(KeyboardTheme.LXX_KEYBOARD_THEME_KEY));
2183b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
2193b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2203b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertUpgradeKeyboardToLxxOnKlp(final int sdkVersion) {
2213b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_KLP);
2223b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
2233b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
2243b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_KLP);
2253b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_KLP);
2263b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
2273b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2283b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    // Upgrading keyboard on I,J and K.
2293b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testUpgradeKeyboardToLxxOnKlp() {
2303b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH);
2313b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
2323b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN);
2333b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN_MR1);
2343b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN_MR2);
2353b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.KITKAT);
2363b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
2373b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2383b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertUpgradeKeyboardToLxxOnLxx(final int sdkVersion) {
2393b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // Forced to switch to LXX theme.
240f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
241f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT);
242f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT);
243f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
244f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
2453b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
2463b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2473b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    // Upgrading keyboard on L.
2483b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testUpgradeKeyboardToLxxOnLxx() {
2493b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradeKeyboardToLxxOnLxx(VERSION_CODES_LXX);
25059c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
25159c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
2523b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    /*
2533b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     * Test keyboard theme preference while upgrading platform version.
2543b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka     */
2553b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2563b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertUpgradePlatformFromTo(final int oldSdkVersion, final int newSdkVersion,
257f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka            final int previousThemeId, final int expectedThemeId) {
2583b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        if (newSdkVersion < oldSdkVersion) {
2593b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            // No need to test.
2603b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            return;
2613b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        }
2623b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // Clean up preferences.
2633b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL);
2643b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL);
2653b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2663b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final String oldPrefKey = KeyboardTheme.getPreferenceKey(oldSdkVersion);
267f67172552033ad5bfc9aadea5d2729d65a666e91Tadashi G. Takaoka        setKeyboardThemePreference(oldPrefKey, previousThemeId);
2683b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2693b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertKeyboardTheme(newSdkVersion, expectedThemeId);
27059c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
27159c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
2723b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertUpgradePlatformFromKlpToKlp(final int oldSdkVersion,
2733b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka            final int newSdkVersion) {
2743b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_KLP);
2753b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
2763b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
2773b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_KLP);
2783b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_KLP);
2793b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
2803b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2813b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertUpgradePlatformToKlpFrom(final int oldSdkVersion) {
2823b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.ICE_CREAM_SANDWICH);
2833b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
2843b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN);
2853b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN_MR1);
2863b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN_MR2);
2873b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.KITKAT);
2883b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
2893b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
2903b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    // Update platform from I,J, and K to I,J, and K
2913b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testUpgradePlatformToKlpFromKlp() {
2923b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH);
2933b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
2943b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN);
2953b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN_MR1);
2963b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN_MR2);
2973b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToKlpFrom(VERSION_CODES.KITKAT);
2983b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    }
2993b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka
3003b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    private void assertUpgradePlatformToLxxFrom(final int oldSdkVersion) {
3013b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        // Forced to switch to LXX theme.
3023b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final int newSdkVersion = VERSION_CODES_LXX;
30304e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
304f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
30504e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
306f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT);
30704e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
308f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT);
30904e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
310f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
31104e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
312f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
31359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
31459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
3153b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    // Update platform from I,J, and K to L
3163b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testUpgradePlatformToLxx() {
3173b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH);
3183b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
3193b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN);
3203b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN_MR1);
3213b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN_MR2);
3223b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        assertUpgradePlatformToLxxFrom(VERSION_CODES.KITKAT);
32359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
32459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka
3253b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    // Update platform from L to L.
3263b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka    public void testUpgradePlatformToLxxFromLxx() {
3273b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final int oldSdkVersion = VERSION_CODES_LXX;
3283b12718537f40b262e5eeb5c8168d69b2afa6955Tadashi G. Takaoka        final int newSdkVersion = VERSION_CODES_LXX;
32904e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
330f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
33104e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
33204e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
33304e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
33404e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
33504e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
336f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT);
337f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertUpgradePlatformFromTo(
338f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
339f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka        assertUpgradePlatformFromTo(
340f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
34104e2a494e2bcdf50b6e6bb8ba0e2b25efd91fd35Tadashi G. Takaoka        assertUpgradePlatformFromTo(
342f9f409530ccdc975ef965b1d1fee44bbd341d718Tadashi G. Takaoka                oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
34359c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka    }
34459c3ef1ff8df23e3c3e3f549c0289c479553c666Tadashi G. Takaoka}
345