Merge "[IL108] Remove some uses of LatinIME in input logic."
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index 71e3eee..f3cfae2 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -484,11 +484,9 @@
             return;
         }
 
-        final TextView previewTextView = mKeyPreviewChoreographer.getKeyPreviewTextView(
-                key, getContext());
         locatePreviewPlacerView();
-        mDrawingPreviewPlacerView.addView(
-                previewTextView, ViewLayoutUtils.newLayoutParam(mDrawingPreviewPlacerView, 0, 0));
+        final TextView previewTextView = mKeyPreviewChoreographer.getKeyPreviewTextView(
+                key, mDrawingPreviewPlacerView);
         getLocationInWindow(mOriginCoords);
         mKeyPreviewChoreographer.placeKeyPreview(key, previewTextView, keyboard.mIconsSet,
                 mKeyDrawParams, getWidth(), mOriginCoords);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java
index c1922b7..df869b2 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java
@@ -58,7 +58,7 @@
         mParams = params;
     }
 
-    public TextView getKeyPreviewTextView(final Key key, final Context context) {
+    public TextView getKeyPreviewTextView(final Key key, final ViewGroup placerView) {
         TextView previewTextView = mShowingKeyPreviewTextViews.remove(key);
         if (previewTextView != null) {
             return previewTextView;
@@ -67,10 +67,15 @@
         if (previewTextView != null) {
             return previewTextView;
         }
+        final Context context = placerView.getContext();
         if (mParams.mLayoutId != 0) {
-            return (TextView)LayoutInflater.from(context).inflate(mParams.mLayoutId, null);
+            previewTextView = (TextView)LayoutInflater.from(context)
+                    .inflate(mParams.mLayoutId, null);
+        } else {
+            previewTextView = new TextView(context);
         }
-        return new TextView(context);
+        placerView.addView(previewTextView, ViewLayoutUtils.newLayoutParam(placerView, 0, 0));
+        return previewTextView;
     }
 
     public boolean isShowingKeyPreview(final Key key) {
@@ -244,7 +249,7 @@
         zoomOutAnimation.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationEnd(final Animator animation) {
-                dismissKeyPreview(key, true /* withAnimation */);
+                dismissKeyPreview(key, false /* withAnimation */);
             }
         });
         return zoomOutAnimation;
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
index e29181c..9b6c462 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
@@ -21,7 +21,7 @@
 import com.android.inputmethod.latin.Constants;
 
 @SmallTest
-public final class KeySpecParserTests extends KeySpecParserBase {
+public final class KeySpecParserTests extends KeySpecParserTestsBase {
     @Override
     protected void assertParser(final String message, final String keySpec,
             final String expectedLabel, final String expectedOutputText, final int expectedIcon,
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
similarity index 98%
rename from tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserBase.java
rename to tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
index aecef23..04b7008 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
@@ -30,7 +30,7 @@
 
 import java.util.Locale;
 
-abstract class KeySpecParserBase extends AndroidTestCase {
+abstract class KeySpecParserTestsBase extends AndroidTestCase {
     private final static Locale TEST_LOCALE = Locale.ENGLISH;
     protected final KeyboardCodesSet mCodesSet = new KeyboardCodesSet();
     protected final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
@@ -251,8 +251,12 @@
     }
 
     public void testFormatError() {
+        assertParserError("Null spec", null, null,
+                null, ICON_UNDEFINED, CODE_UNSPECIFIED);
         assertParserError("Empty spec", "", null,
                 null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParserError("Single bar", "|",
+                "|", null, ICON_UNDEFINED, '|');
         assertParserError("Empty label with outputText", "|a",
                 null, "a", ICON_UNDEFINED, CODE_UNSPECIFIED);
         assertParserError("Empty label with code", "|" + CODE_SETTINGS,
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecTests.java
index 213e2d4..e49c624 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecTests.java
@@ -24,7 +24,7 @@
 import java.util.Locale;
 
 @SmallTest
-public final class MoreKeySpecTests extends KeySpecParserBase {
+public final class MoreKeySpecTests extends KeySpecParserTestsBase {
     @Override
     protected void assertParser(final String message, final String moreKeySpec,
             final String expectedLabel, final String expectedOutputText, final int expectedIconId,