Merge "Bidi wrap keyboard names before displaying them." into oc-dev
am: b8d6222e23
Change-Id: I46d9cc46789d193d13cdb64f0cccd65dbb1e727f
This commit is contained in:
@@ -20,6 +20,7 @@ import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.text.BidiFormatter;
|
||||
import android.view.inputmethod.InputMethodInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
@@ -76,12 +77,15 @@ public class VirtualKeyboardPreferenceController extends PreferenceController {
|
||||
return;
|
||||
}
|
||||
|
||||
final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
|
||||
|
||||
String summary = null;
|
||||
for (String label : labels) {
|
||||
if (summary == null) {
|
||||
summary = label;
|
||||
summary = bidiFormatter.unicodeWrap(label);
|
||||
} else {
|
||||
summary = mContext.getString(R.string.join_many_items_middle, summary, label);
|
||||
summary = mContext.getString(R.string.join_many_items_middle, summary,
|
||||
bidiFormatter.unicodeWrap(label));
|
||||
}
|
||||
}
|
||||
preference.setSummary(summary);
|
||||
|
@@ -18,6 +18,8 @@ package com.android.settings.inputmethod;
|
||||
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Matchers.anyString;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -26,6 +28,7 @@ import android.app.admin.DevicePolicyManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.support.v4.text.BidiFormatter;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.view.inputmethod.InputMethodInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
@@ -39,6 +42,7 @@ import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -96,4 +100,35 @@ public class VirtualKeyboardPreferenceControllerTest {
|
||||
|
||||
verify(mPreference).setSummary("label");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_multiImeWithMixedLocale_setImeLabelToSummary() {
|
||||
final BidiFormatter formatter = BidiFormatter.getInstance();
|
||||
final ComponentName componentName = new ComponentName("pkg", "cls");
|
||||
final List<InputMethodInfo> imis = new ArrayList<>();
|
||||
final String label1 = "label";
|
||||
final String label2 = "Keyboard מִקְלֶדֶת";
|
||||
imis.add(mock(InputMethodInfo.class));
|
||||
imis.add(mock(InputMethodInfo.class));
|
||||
|
||||
when(mDpm.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
|
||||
when(mImm.getEnabledInputMethodList()).thenReturn(imis);
|
||||
when(imis.get(0).getPackageName()).thenReturn(componentName.getPackageName());
|
||||
when(imis.get(0).loadLabel(mPm)).thenReturn(label1);
|
||||
when(imis.get(1).getPackageName()).thenReturn(componentName.getPackageName());
|
||||
when(imis.get(1).loadLabel(mPm)).thenReturn(label2);
|
||||
when(mContext.getString(eq(R.string.join_many_items_middle), anyString(), anyString()))
|
||||
.thenAnswer(invocation -> {
|
||||
final Object[] args = invocation.getArguments();
|
||||
final String str1 = (String) args[1];
|
||||
final String str2 = (String) args[2];
|
||||
return RuntimeEnvironment.application.getString(R.string.join_many_items_middle,
|
||||
str1, str2);
|
||||
});
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
verify(mPreference).setSummary(
|
||||
formatter.unicodeWrap(label1) + ", " + formatter.unicodeWrap(label2));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user