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

Commit 6a2fa09f authored by Fan Zhang's avatar Fan Zhang Committed by android-build-merger
Browse files

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

am: b8d6222e

Change-Id: I46d9cc46789d193d13cdb64f0cccd65dbb1e727f
parents 31eb8cb3 b8d6222e
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -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);
+35 −0
Original line number Original line Diff line number Diff line
@@ -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));
    }
}
}