From 05d60e52a348c0b42a815118655344525fba8c4a Mon Sep 17 00:00:00 2001
From: Ken Wakasa <kwakasa@google.com>
Date: Sat, 28 Apr 2012 03:24:05 +0900
Subject: [PATCH] Avoid Resources$NotFoundException

bug: 6410653
Change-Id: I4263632e76b44abf8ecd9114a9eb185ad39201fd
---
 java/src/com/android/inputmethod/latin/ImfUtils.java      | 1 +
 java/src/com/android/inputmethod/latin/SubtypeLocale.java | 7 +++++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/ImfUtils.java b/java/src/com/android/inputmethod/latin/ImfUtils.java
index 4633b82f5..af46a02c0 100644
--- a/java/src/com/android/inputmethod/latin/ImfUtils.java
+++ b/java/src/com/android/inputmethod/latin/ImfUtils.java
@@ -66,6 +66,7 @@ public class ImfUtils {
     public static boolean checkIfSubtypeBelongsToThisIme(Context context, InputMethodSubtype ims) {
         final InputMethodInfo myImi = getInputMethodInfoOfThisIme(context);
         final InputMethodManager imm = getInputMethodManager(context);
+        // TODO: Cache all subtypes of this IME for optimization
         final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(myImi, true);
         for (final InputMethodSubtype subtype : subtypes) {
             if (subtype.equals(ims)) {
diff --git a/java/src/com/android/inputmethod/latin/SubtypeLocale.java b/java/src/com/android/inputmethod/latin/SubtypeLocale.java
index d10c42ccd..9f89f9ee1 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeLocale.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeLocale.java
@@ -33,11 +33,10 @@ public class SubtypeLocale {
 
     // Special language code to represent "no language".
     public static final String NO_LANGUAGE = "zz";
-
     public static final String QWERTY = "qwerty";
-
     public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic;
 
+    private static Context sContext;
     private static String[] sPredefinedKeyboardLayoutSet;
     // Keyboard layout to its display name map.
     private static final HashMap<String, String> sKeyboardKayoutToDisplayNameMap =
@@ -58,6 +57,7 @@ public class SubtypeLocale {
     }
 
     public static void init(Context context) {
+        sContext = context;
         final Resources res = context.getResources();
 
         final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts);
@@ -128,6 +128,9 @@ public class SubtypeLocale {
     //  zz    azerty T  No language (AZERTY)
 
     public static String getSubtypeDisplayName(InputMethodSubtype subtype, Resources res) {
+        // TODO: Remove this check when InputMethodManager.getLastInputMethodSubtype is
+        // fixed.
+        if (!ImfUtils.checkIfSubtypeBelongsToThisIme(sContext, subtype)) return "";
         final String language = getSubtypeLocaleDisplayName(subtype.getLocale());
         return res.getString(subtype.getNameResId(), language);
     }