From 8834e3dbce5db35e6e3d43f9a567458ad4999b6d Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Tue, 10 Apr 2012 15:05:55 +0900 Subject: [PATCH] Fix KeyboardCodesSet code mapping This is a follow up for Icfd6d06f. Change-Id: I9a11c6f1c8d9654e3fb004940791055c2bcf9f17 --- .../inputmethod/keyboard/Keyboard.java | 2 +- .../keyboard/internal/KeyboardCodesSet.java | 25 +++++++++---------- .../keyboard/internal/KeySpecParserTests.java | 6 +++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index 4b9ff28fe..36a988bb6 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -777,7 +777,7 @@ public class Keyboard { params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0); params.mIconsSet.loadIcons(keyboardAttr); - params.mCodesSet.setLocale(params.mId.mLocale); + params.mCodesSet.setLanguage(params.mId.mLocale.getLanguage()); final int resourceId = keyboardAttr.getResourceId( R.styleable.Keyboard_touchPositionCorrectionData, 0); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java index 964c8cac2..736a96c56 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java @@ -19,17 +19,16 @@ package com.android.inputmethod.keyboard.internal; import com.android.inputmethod.keyboard.Keyboard; import java.util.HashMap; -import java.util.Locale; public class KeyboardCodesSet { - private static final HashMap sLocaleToCodesMap = - new HashMap(); + private static final HashMap sLanguageToCodesMap = + new HashMap(); private static final HashMap sNameToIdMap = new HashMap(); private int[] mCodes = DEFAULT; - public void setLocale(final Locale locale) { - final int[] codes = sLocaleToCodesMap.get(locale); + public void setLanguage(final String language) { + final int[] codes = sLanguageToCodesMap.get(language); mCodes = (codes != null) ? codes : DEFAULT; } @@ -85,6 +84,7 @@ public class KeyboardCodesSet { Keyboard.CODE_SHORTCUT, Keyboard.CODE_ACTION_ENTER, Keyboard.CODE_ACTION_NEXT, + Keyboard.CODE_ACTION_PREVIOUS, Keyboard.CODE_LANGUAGE_SWITCH, Keyboard.CODE_UNSPECIFIED, CODE_LEFT_PARENTHESIS, @@ -111,6 +111,7 @@ public class KeyboardCodesSet { DEFAULT[10], DEFAULT[11], DEFAULT[12], + DEFAULT[13], CODE_RIGHT_PARENTHESIS, CODE_LEFT_PARENTHESIS, CODE_GREATER_THAN_SIGN, @@ -121,12 +122,12 @@ public class KeyboardCodesSet { CODE_LEFT_CURLY_BRACKET, }; - private static final String LANGUAGE_DEFAULT = null; + private static final String LANGUAGE_DEFAULT = "DEFAULT"; private static final String LANGUAGE_ARABIC = "ar"; private static final String LANGUAGE_PERSIAN = "fa"; private static final String LANGUAGE_HEBREW = "iw"; - private static final Object[] LOCALE_AND_CODES = { + private static final Object[] LANGUAGE_AND_CODES = { LANGUAGE_DEFAULT, DEFAULT, LANGUAGE_ARABIC, RTL, LANGUAGE_PERSIAN, RTL, @@ -138,12 +139,10 @@ public class KeyboardCodesSet { sNameToIdMap.put(ID_TO_NAME[i], i); } - for (int i = 0; i < LOCALE_AND_CODES.length; i += 2) { - final String localeString = (String)LOCALE_AND_CODES[i]; - final int[] codes = (int[])LOCALE_AND_CODES[i + 1]; - final Locale locale = (localeString == LANGUAGE_DEFAULT) - ? null : new Locale(localeString); - sLocaleToCodesMap.put(locale, codes); + for (int i = 0; i < LANGUAGE_AND_CODES.length; i += 2) { + final String language = (String)LANGUAGE_AND_CODES[i]; + final int[] codes = (int[])LANGUAGE_AND_CODES[i + 1]; + sLanguageToCodesMap.put(language, codes); } } } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java index 58b43d46c..980b1e4d5 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java @@ -41,8 +41,10 @@ public class KeySpecParserTests extends AndroidTestCase { private int mSettingsIconId; @Override - protected void setUp() { - mCodesSet.setLocale(Locale.US); + protected void setUp() throws Exception { + super.setUp(); + + mCodesSet.setLanguage(Locale.ENGLISH.getLanguage()); mCodeSettings = mCodesSet.getCode(CODE_SETTINGS_NAME); mSettingsIconId = KeyboardIconsSet.getIconId(ICON_SETTINGS_NAME); }