Merge "Track selection end in RichInputConnection"
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
index 05d855e..f7e43a6 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
@@ -27,6 +27,7 @@
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.util.Arrays;
 import java.util.HashMap;
 
 public final class KeyStylesSet {
@@ -90,7 +91,8 @@
             }
             final Object value = mStyleAttributes.get(index);
             if (value != null) {
-                return (String[])value;
+                final String[] array = (String[])value;
+                return Arrays.copyOf(array, array.length);
             }
             final KeyStyle parentStyle = mStyles.get(mParentStyleName);
             return parentStyle.getStringArray(a, index);
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index cae59d8..955b835 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -722,8 +722,7 @@
         LatinImeLogger.commit();
         LatinImeLogger.onDestroy();
         if (mInputUpdater != null) {
-            mInputUpdater.onDestroy();
-            mInputUpdater = null;
+            mInputUpdater.quitLooper();
         }
         super.onDestroy();
     }
@@ -1807,13 +1806,13 @@
         mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
     }
 
-    private static final class InputUpdater implements Handler.Callback {
+    static final class InputUpdater implements Handler.Callback {
         private final Handler mHandler;
         private final LatinIME mLatinIme;
         private final Object mLock = new Object();
         private boolean mInBatchInput; // synchronized using {@link #mLock}.
 
-        private InputUpdater(final LatinIME latinIme) {
+        InputUpdater(final LatinIME latinIme) {
             final HandlerThread handlerThread = new HandlerThread(
                     InputUpdater.class.getSimpleName());
             handlerThread.start();
@@ -1930,7 +1929,7 @@
                     .sendToTarget();
         }
 
-        private void onDestroy() {
+        void quitLooper() {
             mHandler.removeMessages(MSG_GET_SUGGESTED_WORDS);
             mHandler.removeMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
             mHandler.getLooper().quit();