Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e2f5f27 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Clarify how IME ID is treated in ImeSubtypeListItem#compareTo()"

parents 6dc4e652 7e06f2be
Loading
Loading
Loading
Loading
+55 −38
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import android.content.ComponentName;
import android.content.pm.ApplicationInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
@@ -99,17 +100,18 @@ public class InputMethodSubtypeSwitchingControllerTest {
        }
    }

    private static ImeSubtypeListItem createDummyItem(String imeName,
            String subtypeName, String subtypeLocale, int subtypeIndex, String systemLocale) {
    private static ImeSubtypeListItem createDummyItem(ComponentName imeComponentName,
            String imeName, String subtypeName, String subtypeLocale, int subtypeIndex,
            String systemLocale) {
        final ResolveInfo ri = new ResolveInfo();
        final ServiceInfo si = new ServiceInfo();
        final ApplicationInfo ai = new ApplicationInfo();
        ai.packageName = DUMMY_PACKAGE_NAME;
        ai.packageName = imeComponentName.getPackageName();
        ai.enabled = true;
        si.applicationInfo = ai;
        si.enabled = true;
        si.packageName = DUMMY_PACKAGE_NAME;
        si.name = imeName;
        si.packageName = imeComponentName.getPackageName();
        si.name = imeComponentName.getClassName();
        si.exported = true;
        si.nonLocalizedLabel = DUMMY_IME_LABEL;
        ri.serviceInfo = si;
@@ -367,52 +369,56 @@ public class InputMethodSubtypeSwitchingControllerTest {

    @Test
    public void testImeSubtypeListComparator() throws Exception {
        final ComponentName imeX1 = new ComponentName("com.example.imeX", "Ime1");
        final ComponentName imeX2 = new ComponentName("com.example.imeX", "Ime2");
        final ComponentName imeY1 = new ComponentName("com.example.imeY", "Ime1");
        final ComponentName imeZ1 = new ComponentName("com.example.imeZ", "Ime1");
        {
            final List<ImeSubtypeListItem> items = Arrays.asList(
                    // Subtypes of IME "X".
                    // Subtypes that has the same locale of the system's.
                    createDummyItem("X", "E", "en_US", 0, "en_US"),
                    createDummyItem("X", "Z", "en_US", 3, "en_US"),
                    createDummyItem("X", "", "en_US", 6, "en_US"),
                    createDummyItem(imeX1, "X", "E", "en_US", 0, "en_US"),
                    createDummyItem(imeX1, "X", "Z", "en_US", 3, "en_US"),
                    createDummyItem(imeX1, "X", "", "en_US", 6, "en_US"),
                    // Subtypes that has the same language of the system's.
                    createDummyItem("X", "E", "en", 1, "en_US"),
                    createDummyItem("X", "Z", "en", 4, "en_US"),
                    createDummyItem("X", "", "en", 7, "en_US"),
                    createDummyItem(imeX1, "X", "E", "en", 1, "en_US"),
                    createDummyItem(imeX1, "X", "Z", "en", 4, "en_US"),
                    createDummyItem(imeX1, "X", "", "en", 7, "en_US"),
                    // Subtypes that has different language than the system's.
                    createDummyItem("X", "A", "hi_IN", 27, "en_US"),
                    createDummyItem("X", "E", "ja", 2, "en_US"),
                    createDummyItem("X", "Z", "ja", 5, "en_US"),
                    createDummyItem("X", "", "ja", 8, "en_US"),
                    createDummyItem(imeX1, "X", "A", "hi_IN", 27, "en_US"),
                    createDummyItem(imeX1, "X", "E", "ja", 2, "en_US"),
                    createDummyItem(imeX1, "X", "Z", "ja", 5, "en_US"),
                    createDummyItem(imeX1, "X", "", "ja", 8, "en_US"),

                    // Subtypes of IME "Y".
                    // Subtypes that has the same locale of the system's.
                    createDummyItem("Y", "E", "en_US", 9, "en_US"),
                    createDummyItem("Y", "Z", "en_US", 12, "en_US"),
                    createDummyItem("Y", "", "en_US", 15, "en_US"),
                    createDummyItem(imeY1, "Y", "E", "en_US", 9, "en_US"),
                    createDummyItem(imeY1, "Y", "Z", "en_US", 12, "en_US"),
                    createDummyItem(imeY1, "Y", "", "en_US", 15, "en_US"),
                    // Subtypes that has the same language of the system's.
                    createDummyItem("Y", "E", "en", 10, "en_US"),
                    createDummyItem("Y", "Z", "en", 13, "en_US"),
                    createDummyItem("Y", "", "en", 16, "en_US"),
                    createDummyItem(imeY1, "Y", "E", "en", 10, "en_US"),
                    createDummyItem(imeY1, "Y", "Z", "en", 13, "en_US"),
                    createDummyItem(imeY1, "Y", "", "en", 16, "en_US"),
                    // Subtypes that has different language than the system's.
                    createDummyItem("Y", "A", "hi_IN", 28, "en_US"),
                    createDummyItem("Y", "E", "ja", 11, "en_US"),
                    createDummyItem("Y", "Z", "ja", 14, "en_US"),
                    createDummyItem("Y", "", "ja", 17, "en_US"),
                    createDummyItem(imeY1, "Y", "A", "hi_IN", 28, "en_US"),
                    createDummyItem(imeY1, "Y", "E", "ja", 11, "en_US"),
                    createDummyItem(imeY1, "Y", "Z", "ja", 14, "en_US"),
                    createDummyItem(imeY1, "Y", "", "ja", 17, "en_US"),

                    // Subtypes of IME "".
                    // Subtypes of IME Z.
                    // Subtypes that has the same locale of the system's.
                    createDummyItem("", "E", "en_US", 18, "en_US"),
                    createDummyItem("", "Z", "en_US", 21, "en_US"),
                    createDummyItem("", "", "en_US", 24, "en_US"),
                    createDummyItem(imeZ1, "", "E", "en_US", 18, "en_US"),
                    createDummyItem(imeZ1, "", "Z", "en_US", 21, "en_US"),
                    createDummyItem(imeZ1, "", "", "en_US", 24, "en_US"),
                    // Subtypes that has the same language of the system's.
                    createDummyItem("", "E", "en", 19, "en_US"),
                    createDummyItem("", "Z", "en", 22, "en_US"),
                    createDummyItem("", "", "en", 25, "en_US"),
                    createDummyItem(imeZ1, "", "E", "en", 19, "en_US"),
                    createDummyItem(imeZ1, "", "Z", "en", 22, "en_US"),
                    createDummyItem(imeZ1, "", "", "en", 25, "en_US"),
                    // Subtypes that has different language than the system's.
                    createDummyItem("", "A", "hi_IN", 29, "en_US"),
                    createDummyItem("", "E", "ja", 20, "en_US"),
                    createDummyItem("", "Z", "ja", 23, "en_US"),
                    createDummyItem("", "", "ja", 26, "en_US"));
                    createDummyItem(imeZ1, "", "A", "hi_IN", 29, "en_US"),
                    createDummyItem(imeZ1, "", "E", "ja", 20, "en_US"),
                    createDummyItem(imeZ1, "", "Z", "ja", 23, "en_US"),
                    createDummyItem(imeZ1, "", "", "ja", 26, "en_US"));

            // Ensure {@link java.lang.Comparable#compareTo} contracts are satisfied.
            for (int i = 0; i < items.size(); ++i) {
@@ -432,14 +438,25 @@ public class InputMethodSubtypeSwitchingControllerTest {
        {
            // Following two items have the same priority.
            final ImeSubtypeListItem nonSystemLocale1 =
                    createDummyItem("X", "A", "ja_JP", 0, "en_US");
                    createDummyItem(imeX1, "X", "A", "ja_JP", 0, "en_US");
            final ImeSubtypeListItem nonSystemLocale2 =
                    createDummyItem("X", "A", "hi_IN", 1, "en_US");
                    createDummyItem(imeX1, "X", "A", "hi_IN", 1, "en_US");
            assertTrue(nonSystemLocale1.compareTo(nonSystemLocale2) == 0);
            assertTrue(nonSystemLocale2.compareTo(nonSystemLocale1) == 0);
            // But those aren't equal to each other.
            assertFalse(nonSystemLocale1.equals(nonSystemLocale2));
            assertFalse(nonSystemLocale2.equals(nonSystemLocale1));
        }

        {
            // Currently ComponentName is not used for sorting.
            final ImeSubtypeListItem ime1 = createDummyItem(imeX1, "X", "A", "ja_JP", 0, "en_US");
            final ImeSubtypeListItem ime2 = createDummyItem(imeX2, "X", "A", "ja_JP", 0, "en_US");
            assertTrue(ime1.compareTo(ime2) == 0);
            assertTrue(ime2.compareTo(ime1) == 0);
            // But those aren't equal to each other.
            assertFalse(ime1.equals(ime2));
            assertFalse(ime2.equals(ime1));
        }
    }
}