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

Commit b8d6222e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 746eb9e1 b1bdf90c
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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);
+35 −0
Original line number Diff line number Diff line
@@ -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));
    }
}