Merge "Bidi wrap keyboard names before displaying them." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-04-21 01:02:34 +00:00
committed by Android (Google) Code Review
2 changed files with 41 additions and 2 deletions

View File

@@ -20,6 +20,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.text.BidiFormatter;
import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
@@ -76,12 +77,15 @@ public class VirtualKeyboardPreferenceController extends PreferenceController {
return; return;
} }
final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
String summary = null; String summary = null;
for (String label : labels) { for (String label : labels) {
if (summary == null) { if (summary == null) {
summary = label; summary = bidiFormatter.unicodeWrap(label);
} else { } 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); preference.setSummary(summary);

View File

@@ -18,6 +18,8 @@ package com.android.settings.inputmethod;
import static com.google.common.truth.Truth.assertThat; 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.mock;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -26,6 +28,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.support.v4.text.BidiFormatter;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
@@ -39,6 +42,7 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import java.util.ArrayList; import java.util.ArrayList;
@@ -96,4 +100,35 @@ public class VirtualKeyboardPreferenceControllerTest {
verify(mPreference).setSummary("label"); 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));
}
} }