Fix issue #2537384: Default keyboard input method switched
on Eclaire to FRE77D upgrade

We want to prefer system IMEs when our current IME disappears.

Change-Id: Ief7332bc4f029991cd833ce0968d75bde987b594
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 11020c2..1179500 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -1394,9 +1394,18 @@
     private boolean chooseNewDefaultIMELocked() {
         List<InputMethodInfo> enabled = getEnabledInputMethodListLocked();
         if (enabled != null && enabled.size() > 0) {
+            // We'd prefer to fall back on a system IME, since that is safer.
+            int i=enabled.size();
+            while (i > 0) {
+                i--;
+                if ((enabled.get(i).getServiceInfo().applicationInfo.flags
+                        & ApplicationInfo.FLAG_SYSTEM) != 0) {
+                    break;
+                }
+            }
             Settings.Secure.putString(mContext.getContentResolver(),
                     Settings.Secure.DEFAULT_INPUT_METHOD,
-                    enabled.get(0).getId());
+                    enabled.get(i).getId());
             return true;
         }
 
@@ -1435,7 +1444,7 @@
 
                 // System IMEs are enabled by default
                 if (isSystemIme(p)) {
-                    setInputMethodEnabled(p.getId(), true);
+                    setInputMethodEnabledLocked(p.getId(), true);
                 }
 
                 if (DEBUG) {