Merge "Remove country name from space bar text when appropriate"
This commit is contained in:
commit
fd2f420442
7 changed files with 261 additions and 142 deletions
|
@ -204,10 +204,12 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady());
|
||||
final boolean subtypeChanged = (oldKeyboard == null)
|
||||
|| !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale);
|
||||
final boolean needsToDisplayLanguage = mSubtypeSwitcher.needsToDisplayLanguage(
|
||||
final int languageOnSpacebarFormatType = mSubtypeSwitcher.getLanguageOnSpacebarFormatType(
|
||||
keyboard.mId.mSubtype);
|
||||
keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, needsToDisplayLanguage,
|
||||
RichInputMethodManager.getInstance().hasMultipleEnabledIMEsOrSubtypes(true));
|
||||
final boolean hasMultipleEnabledIMEsOrSubtypes = RichInputMethodManager.getInstance()
|
||||
.hasMultipleEnabledIMEsOrSubtypes(true /* shouldIncludeAuxiliarySubtypes */);
|
||||
keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, languageOnSpacebarFormatType,
|
||||
hasMultipleEnabledIMEsOrSubtypes);
|
||||
}
|
||||
|
||||
public Keyboard getKeyboard() {
|
||||
|
|
|
@ -49,6 +49,7 @@ import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview;
|
|||
import com.android.inputmethod.keyboard.internal.KeyDrawParams;
|
||||
import com.android.inputmethod.keyboard.internal.KeyPreviewChoreographer;
|
||||
import com.android.inputmethod.keyboard.internal.KeyPreviewDrawParams;
|
||||
import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper;
|
||||
import com.android.inputmethod.keyboard.internal.NonDistinctMultitouchHelper;
|
||||
import com.android.inputmethod.keyboard.internal.SlidingKeyInputDrawingPreview;
|
||||
import com.android.inputmethod.keyboard.internal.TimerHandler;
|
||||
|
@ -123,7 +124,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
// Stuff to draw language name on spacebar.
|
||||
private final int mLanguageOnSpacebarFinalAlpha;
|
||||
private ObjectAnimator mLanguageOnSpacebarFadeoutAnimator;
|
||||
private boolean mNeedsToDisplayLanguage;
|
||||
private int mLanguageOnSpacebarFormatType;
|
||||
private boolean mHasMultipleEnabledIMEsOrSubtypes;
|
||||
private int mLanguageOnSpacebarAnimAlpha = Constants.Color.ALPHA_OPAQUE;
|
||||
private final float mLanguageOnSpacebarTextRatio;
|
||||
|
@ -811,14 +812,16 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
}
|
||||
|
||||
public void startDisplayLanguageOnSpacebar(final boolean subtypeChanged,
|
||||
final boolean needsToDisplayLanguage, final boolean hasMultipleEnabledIMEsOrSubtypes) {
|
||||
mNeedsToDisplayLanguage = needsToDisplayLanguage;
|
||||
final int languageOnSpacebarFormatType,
|
||||
final boolean hasMultipleEnabledIMEsOrSubtypes) {
|
||||
mLanguageOnSpacebarFormatType = languageOnSpacebarFormatType;
|
||||
mHasMultipleEnabledIMEsOrSubtypes = hasMultipleEnabledIMEsOrSubtypes;
|
||||
final ObjectAnimator animator = mLanguageOnSpacebarFadeoutAnimator;
|
||||
if (animator == null) {
|
||||
mNeedsToDisplayLanguage = false;
|
||||
mLanguageOnSpacebarFormatType = LanguageOnSpacebarHelper.FORMAT_TYPE_NONE;
|
||||
} else {
|
||||
if (subtypeChanged && needsToDisplayLanguage) {
|
||||
if (subtypeChanged
|
||||
&& languageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) {
|
||||
setLanguageOnSpacebarAnimAlpha(Constants.Color.ALPHA_OPAQUE);
|
||||
if (animator.isStarted()) {
|
||||
animator.cancel();
|
||||
|
@ -919,9 +922,11 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
private String layoutLanguageOnSpacebar(final Paint paint,
|
||||
final InputMethodSubtype subtype, final int width) {
|
||||
// Choose appropriate language name to fit into the width.
|
||||
final String fullText = SpacebarLanguageUtils.getFullDisplayName(subtype);
|
||||
if (fitsTextIntoWidth(width, fullText, paint)) {
|
||||
return fullText;
|
||||
if (mLanguageOnSpacebarFormatType == LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE) {
|
||||
final String fullText = SpacebarLanguageUtils.getFullDisplayName(subtype);
|
||||
if (fitsTextIntoWidth(width, fullText, paint)) {
|
||||
return fullText;
|
||||
}
|
||||
}
|
||||
|
||||
final String middleText = SpacebarLanguageUtils.getMiddleDisplayName(subtype);
|
||||
|
@ -937,7 +942,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
final int height = key.getHeight();
|
||||
|
||||
// If input language are explicitly selected.
|
||||
if (mNeedsToDisplayLanguage) {
|
||||
if (mLanguageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) {
|
||||
paint.setTextAlign(Align.CENTER);
|
||||
paint.setTypeface(Typeface.DEFAULT);
|
||||
paint.setTextSize(mLanguageOnSpacebarTextSize);
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.keyboard.internal;
|
||||
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class determines that the language name on the spacebar should be displayed in what format.
|
||||
*/
|
||||
public final class LanguageOnSpacebarHelper {
|
||||
public static final int FORMAT_TYPE_NONE = 0;
|
||||
public static final int FORMAT_TYPE_LANGUAGE_ONLY = 1;
|
||||
public static final int FORMAT_TYPE_FULL_LOCALE = 2;
|
||||
|
||||
private List<InputMethodSubtype> mEnabledSubtypes = Collections.emptyList();
|
||||
private boolean mIsSystemLanguageSameAsInputLanguage;
|
||||
|
||||
public int getLanguageOnSpacebarFormatType(final InputMethodSubtype subtype) {
|
||||
if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
|
||||
return FORMAT_TYPE_FULL_LOCALE;
|
||||
}
|
||||
// Only this subtype is enabled and equals to the system locale.
|
||||
if (mEnabledSubtypes.size() < 2 && mIsSystemLanguageSameAsInputLanguage) {
|
||||
return FORMAT_TYPE_NONE;
|
||||
}
|
||||
final String keyboardLanguage = SubtypeLocaleUtils.getSubtypeLocale(subtype).getLanguage();
|
||||
final String keyboardLayout = SubtypeLocaleUtils.getKeyboardLayoutSetName(subtype);
|
||||
int sameLanguageAndLayoutCount = 0;
|
||||
for (final InputMethodSubtype ims : mEnabledSubtypes) {
|
||||
final String language = SubtypeLocaleUtils.getSubtypeLocale(ims).getLanguage();
|
||||
if (keyboardLanguage.equals(language) && keyboardLayout.equals(
|
||||
SubtypeLocaleUtils.getKeyboardLayoutSetName(ims))) {
|
||||
sameLanguageAndLayoutCount++;
|
||||
}
|
||||
}
|
||||
// Display full locale name only when there are multiple subtypes that have the same
|
||||
// locale and keyboard layout. Otherwise displaying language name is enough.
|
||||
return sameLanguageAndLayoutCount > 1 ? FORMAT_TYPE_FULL_LOCALE
|
||||
: FORMAT_TYPE_LANGUAGE_ONLY;
|
||||
}
|
||||
|
||||
public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
|
||||
mEnabledSubtypes = enabledSubtypes;
|
||||
}
|
||||
|
||||
public void updateIsSystemLanguageSameAsInputLanguage(final boolean isSame) {
|
||||
mIsSystemLanguageSameAsInputLanguage = isSame;
|
||||
}
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.keyboard.internal;
|
||||
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
/**
|
||||
* This class determines that the language name on the spacebar should be displayed or not.
|
||||
*/
|
||||
public final class NeedsToDisplayLanguage {
|
||||
private int mEnabledSubtypeCount;
|
||||
private boolean mIsSystemLanguageSameAsInputLanguage;
|
||||
|
||||
public boolean needsToDisplayLanguage(final InputMethodSubtype subtype) {
|
||||
if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
|
||||
return true;
|
||||
}
|
||||
return mEnabledSubtypeCount >= 2 || !mIsSystemLanguageSameAsInputLanguage;
|
||||
}
|
||||
|
||||
public void updateEnabledSubtypeCount(final int count) {
|
||||
mEnabledSubtypeCount = count;
|
||||
}
|
||||
|
||||
public void updateIsSystemLanguageSameAsInputLanguage(final boolean isSame) {
|
||||
mIsSystemLanguageSameAsInputLanguage = isSame;
|
||||
}
|
||||
}
|
|
@ -34,7 +34,7 @@ import android.view.inputmethod.InputMethodSubtype;
|
|||
import com.android.inputmethod.annotations.UsedForTesting;
|
||||
import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
|
||||
import com.android.inputmethod.keyboard.KeyboardSwitcher;
|
||||
import com.android.inputmethod.keyboard.internal.NeedsToDisplayLanguage;
|
||||
import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
|
@ -54,7 +54,8 @@ public final class SubtypeSwitcher {
|
|||
private /* final */ Resources mResources;
|
||||
private /* final */ ConnectivityManager mConnectivityManager;
|
||||
|
||||
private final NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage();
|
||||
private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper =
|
||||
new LanguageOnSpacebarHelper();
|
||||
private InputMethodInfo mShortcutInputMethodInfo;
|
||||
private InputMethodSubtype mShortcutSubtype;
|
||||
private InputMethodSubtype mNoLanguageSubtype;
|
||||
|
@ -127,7 +128,7 @@ public final class SubtypeSwitcher {
|
|||
public void updateParametersOnStartInputView() {
|
||||
final List<InputMethodSubtype> enabledSubtypesOfThisIme =
|
||||
mRichImm.getMyEnabledInputMethodSubtypeList(true);
|
||||
mNeedsToDisplayLanguage.updateEnabledSubtypeCount(enabledSubtypesOfThisIme.size());
|
||||
mLanguageOnSpacebarHelper.updateEnabledSubtypes(enabledSubtypesOfThisIme);
|
||||
updateShortcutIME();
|
||||
}
|
||||
|
||||
|
@ -176,7 +177,7 @@ public final class SubtypeSwitcher {
|
|||
final boolean sameLanguage = systemLocale.getLanguage().equals(newLocale.getLanguage());
|
||||
final boolean implicitlyEnabled =
|
||||
mRichImm.checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(newSubtype);
|
||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(
|
||||
sameLocale || (sameLanguage && implicitlyEnabled));
|
||||
|
||||
updateShortcutIME();
|
||||
|
@ -249,8 +250,8 @@ public final class SubtypeSwitcher {
|
|||
// Subtype Switching functions //
|
||||
//////////////////////////////////
|
||||
|
||||
public boolean needsToDisplayLanguage(final InputMethodSubtype subtype) {
|
||||
return mNeedsToDisplayLanguage.needsToDisplayLanguage(subtype);
|
||||
public int getLanguageOnSpacebarFormatType(final InputMethodSubtype subtype) {
|
||||
return mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(subtype);
|
||||
}
|
||||
|
||||
public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes() {
|
||||
|
|
|
@ -0,0 +1,167 @@
|
|||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.keyboard.internal;
|
||||
|
||||
import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE;
|
||||
import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_LANGUAGE_ONLY;
|
||||
import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_NONE;
|
||||
|
||||
import android.content.Context;
|
||||
import android.test.AndroidTestCase;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
import com.android.inputmethod.latin.RichInputMethodManager;
|
||||
import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
@SmallTest
|
||||
public class LanguageOnSpacebarHelperTests extends AndroidTestCase {
|
||||
private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper =
|
||||
new LanguageOnSpacebarHelper();
|
||||
|
||||
private RichInputMethodManager mRichImm;
|
||||
|
||||
InputMethodSubtype EN_US_QWERTY;
|
||||
InputMethodSubtype EN_GB_QWERTY;
|
||||
InputMethodSubtype FR_AZERTY;
|
||||
InputMethodSubtype FR_CA_QWERTY;
|
||||
InputMethodSubtype FR_CH_SWISS;
|
||||
InputMethodSubtype FR_CH_QWERTY;
|
||||
InputMethodSubtype FR_CH_QWERTZ;
|
||||
InputMethodSubtype ZZ_QWERTY;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
final Context context = getContext();
|
||||
RichInputMethodManager.init(context);
|
||||
mRichImm = RichInputMethodManager.getInstance();
|
||||
SubtypeLocaleUtils.init(context);
|
||||
|
||||
EN_US_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.US.toString(), "qwerty");
|
||||
EN_GB_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.UK.toString(), "qwerty");
|
||||
FR_AZERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.FRENCH.toString(), "azerty");
|
||||
FR_CA_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.CANADA_FRENCH.toString(), "qwerty");
|
||||
FR_CH_SWISS = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
"fr_CH", "swiss");
|
||||
FR_CH_QWERTZ = AdditionalSubtypeUtils.createAdditionalSubtype(
|
||||
"fr_CH", "qwertz", null);
|
||||
FR_CH_QWERTY = AdditionalSubtypeUtils.createAdditionalSubtype(
|
||||
"fr_CH", "qwerty", null);
|
||||
ZZ_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
SubtypeLocaleUtils.NO_LANGUAGE, "qwerty");
|
||||
}
|
||||
|
||||
private static List<InputMethodSubtype> asList(final InputMethodSubtype ... subtypes) {
|
||||
return Arrays.asList(subtypes);
|
||||
}
|
||||
|
||||
public void testOneSubtype() {
|
||||
mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(EN_US_QWERTY));
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||
assertEquals("one same English (US)", FORMAT_TYPE_NONE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||
assertEquals("one same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||
|
||||
mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(FR_AZERTY));
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||
assertEquals("one diff English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||
assertEquals("one diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||
}
|
||||
|
||||
public void testTwoSubtypes() {
|
||||
mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(EN_US_QWERTY, FR_AZERTY));
|
||||
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||
assertEquals("two same English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||
assertEquals("two same French)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||
assertEquals("two same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||
assertEquals("two diff English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||
assertEquals("two diff French", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||
assertEquals("two diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||
}
|
||||
|
||||
public void testSameLanuageSubtypes() {
|
||||
mLanguageOnSpacebarHelper.updateEnabledSubtypes(
|
||||
asList(EN_US_QWERTY, EN_GB_QWERTY, FR_AZERTY, ZZ_QWERTY));
|
||||
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||
assertEquals("two same English (US)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||
assertEquals("two same English (UK)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_GB_QWERTY));
|
||||
assertEquals("two same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||
assertEquals("two diff English (US)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||
assertEquals("two diff English (UK)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_GB_QWERTY));
|
||||
assertEquals("two diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||
}
|
||||
|
||||
public void testMultiSameLanuageSubtypes() {
|
||||
mLanguageOnSpacebarHelper.updateEnabledSubtypes(
|
||||
asList(FR_AZERTY, FR_CA_QWERTY, FR_CH_SWISS, FR_CH_QWERTY, FR_CH_QWERTZ));
|
||||
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||
assertEquals("multi same French", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||
assertEquals("multi same French (CA)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CA_QWERTY));
|
||||
assertEquals("multi same French (CH)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_SWISS));
|
||||
assertEquals("multi same French (CH) (QWERTY)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTY));
|
||||
assertEquals("multi same French (CH) (QWERTZ)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTZ));
|
||||
|
||||
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||
assertEquals("multi diff French", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||
assertEquals("multi diff French (CA)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CA_QWERTY));
|
||||
assertEquals("multi diff French (CH)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_SWISS));
|
||||
assertEquals("multi diff French (CH) (QWERTY)", FORMAT_TYPE_FULL_LOCALE,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTY));
|
||||
assertEquals("multi diff French (CH) (QWERTZ)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTZ));
|
||||
}
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.keyboard.internal;
|
||||
|
||||
import android.content.Context;
|
||||
import android.test.AndroidTestCase;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
import com.android.inputmethod.latin.RichInputMethodManager;
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
@SmallTest
|
||||
public class NeedsToDisplayLanguageTests extends AndroidTestCase {
|
||||
private final NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage();
|
||||
|
||||
private RichInputMethodManager mRichImm;
|
||||
|
||||
InputMethodSubtype EN_US;
|
||||
InputMethodSubtype FR;
|
||||
InputMethodSubtype ZZ;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
final Context context = getContext();
|
||||
RichInputMethodManager.init(context);
|
||||
mRichImm = RichInputMethodManager.getInstance();
|
||||
SubtypeLocaleUtils.init(context);
|
||||
|
||||
EN_US = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.US.toString(), "qwerty");
|
||||
FR = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.FRENCH.toString(), "azerty");
|
||||
ZZ = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
SubtypeLocaleUtils.NO_LANGUAGE, "qwerty");
|
||||
}
|
||||
|
||||
public void testOneSubtype() {
|
||||
mNeedsToDisplayLanguage.updateEnabledSubtypeCount(1);
|
||||
|
||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||
assertFalse("one same English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
||||
assertTrue("one same NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
||||
|
||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||
assertTrue("one diff English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
||||
assertTrue("one diff NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
||||
}
|
||||
|
||||
public void testTwoSubtype() {
|
||||
mNeedsToDisplayLanguage.updateEnabledSubtypeCount(2);
|
||||
|
||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||
assertTrue("two same English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
||||
assertTrue("two same French", mNeedsToDisplayLanguage.needsToDisplayLanguage(FR));
|
||||
assertTrue("two same NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
||||
|
||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||
assertTrue("two diff English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
||||
assertTrue("two diff French", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
||||
assertTrue("two diff NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(FR));
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue