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);
}
}