Make getLanguageFromLocaleString private

As part of effort to lock down the use of InputMethodUtils only within
the core system components, this CL removes the dependency on
InputMethodUtils#getLanguageFromLocaleString() from the Settings UI
code.

At high level, there should be no user visible behavior change.

Bug: 77730201
Test: atest SettingsLibTests:com.android.settingslib.inputmethod.InputMethodSubtypePreferenceTest
Change-Id: I92cc0b0808f3e40ab92b60ec783ad218141f2bbd
diff --git a/core/java/com/android/internal/inputmethod/InputMethodUtils.java b/core/java/com/android/internal/inputmethod/InputMethodUtils.java
index 634c661..726e8fb 100644
--- a/core/java/com/android/internal/inputmethod/InputMethodUtils.java
+++ b/core/java/com/android/internal/inputmethod/InputMethodUtils.java
@@ -583,7 +583,7 @@
      * Returns the language component of a given locale string.
      * TODO: Use {@link Locale#toLanguageTag()} and {@link Locale#forLanguageTag(String)}
      */
-    public static String getLanguageFromLocaleString(String locale) {
+    private static String getLanguageFromLocaleString(String locale) {
         final int idx = locale.indexOf('_');
         if (idx < 0) {
             return locale;
diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java
index f824ec7..262e8db 100644
--- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java
+++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java
@@ -42,7 +42,7 @@
         this(context,
                 imi.getId() + subtype.hashCode(),
                 InputMethodAndSubtypeUtil.getSubtypeLocaleNameAsSentence(subtype, context, imi),
-                subtype.getLocale(),
+                subtype.getLocaleObject(),
                 context.getResources().getConfiguration().locale);
     }
 
@@ -51,20 +51,19 @@
             final Context context,
             final String prefKey,
             final CharSequence title,
-            final String subtypeLocaleString,
+            final Locale subtypeLocale,
             final Locale systemLocale) {
         super(context);
         setPersistent(false);
         setKey(prefKey);
         setTitle(title);
-        if (TextUtils.isEmpty(subtypeLocaleString)) {
+        if (subtypeLocale == null) {
             mIsSystemLocale = false;
             mIsSystemLanguage = false;
         } else {
-            mIsSystemLocale = subtypeLocaleString.equals(systemLocale.toString());
+            mIsSystemLocale = subtypeLocale.equals(systemLocale);
             mIsSystemLanguage = mIsSystemLocale
-                    || InputMethodUtils.getLanguageFromLocaleString(subtypeLocaleString)
-                            .equals(systemLocale.getLanguage());
+                    || TextUtils.equals(subtypeLocale.getLanguage(), systemLocale.getLanguage());
         }
     }
 
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java
index 131d742..e591d8c 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java
@@ -19,6 +19,7 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
+import android.text.TextUtils;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -98,11 +99,14 @@
             final String subtypeLocaleString,
             final Locale systemLocale) {
         final String key = subtypeName + "-" + subtypeLocaleString + "-" + systemLocale;
+        final String subtypeLanguageTag = subtypeLocaleString.replace('_', '-');
+        final Locale subtypeLocale = TextUtils.isEmpty(subtypeLanguageTag)
+                ? null : Locale.forLanguageTag(subtypeLanguageTag);
         return new InputMethodSubtypePreference(
                 InstrumentationRegistry.getTargetContext(),
                 key,
                 subtypeName,
-                subtypeLocaleString,
+                subtypeLocale,
                 systemLocale);
     }
 }