diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 586fbe6..75b476c 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -85,8 +85,8 @@
     <dimen name="suggestion_text_size">22dp</dimen>
     <dimen name="more_suggestions_hint_text_size">33dp</dimen>
 
-    <!-- Gesture preview trail parameters -->
-    <dimen name="gesture_preview_trail_width">2.5dp</dimen>
+    <!-- Gesture trail parameters -->
+    <dimen name="gesture_trail_width">2.5dp</dimen>
     <!-- Gesture floating preview text parameters -->
     <dimen name="gesture_floating_preview_text_size">28dp</dimen>
     <dimen name="gesture_floating_preview_text_offset">87dp</dimen>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 2fd7322..91251f5 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -86,8 +86,8 @@
     <dimen name="suggestion_text_size">22dp</dimen>
     <dimen name="more_suggestions_hint_text_size">33dp</dimen>
 
-    <!-- Gesture preview trail parameters -->
-    <dimen name="gesture_preview_trail_width">2.5dp</dimen>
+    <!-- Gesture trail parameters -->
+    <dimen name="gesture_trail_width">2.5dp</dimen>
     <!-- Gesture floating preview text parameters -->
     <dimen name="gesture_floating_preview_text_size">26dp</dimen>
     <dimen name="gesture_floating_preview_text_offset">86dp</dimen>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 8a67336..478a5c0 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -108,25 +108,25 @@
         <attr name="backgroundDimAlpha" format="integer" />
         <!-- More keys keyboard will shown at touched point. -->
         <attr name="showMoreKeysKeyboardAtTouchedPoint" format="boolean" />
-        <!-- Minimum distance between gesture preview trail sampling points. -->
-        <attr name="gesturePreviewTrailMinSamplingDistance" format="dimension" />
-        <!-- Maximum angular threshold between gesture preview trail interpolation segments in degree. -->
-        <attr name="gesturePreviewTrailMaxInterpolationAngularThreshold" format="integer" />
-        <!-- Maximum distance threshold between gesture preview trail interpolation segments. -->
-        <attr name="gesturePreviewTrailMaxInterpolationDistanceThreshold" format="dimension" />
-        <!-- Maximum number of gesture preview trail interpolation segments. -->
-        <attr name="gesturePreviewTrailMaxInterpolationSegments" format="integer" />
+        <!-- Minimum distance between gesture trail sampling points. -->
+        <attr name="gestureTrailMinSamplingDistance" format="dimension" />
+        <!-- Maximum angular threshold between gesture trail interpolation segments in degree. -->
+        <attr name="gestureTrailMaxInterpolationAngularThreshold" format="integer" />
+        <!-- Maximum distance threshold between gesture trail interpolation segments. -->
+        <attr name="gestureTrailMaxInterpolationDistanceThreshold" format="dimension" />
+        <!-- Maximum number of gesture trail interpolation segments. -->
+        <attr name="gestureTrailMaxInterpolationSegments" format="integer" />
         <!-- Delay after gesture trail starts fading out in millisecond. -->
-        <attr name="gesturePreviewTrailFadeoutStartDelay" format="integer" />
-        <!-- Duration while gesture preview trail is fading out in millisecond. -->
-        <attr name="gesturePreviewTrailFadeoutDuration" format="integer" />
-        <!-- Interval of updating gesture preview trail in millisecond. -->
-        <attr name="gesturePreviewTrailUpdateInterval" format="integer" />
-        <attr name="gesturePreviewTrailColor" format="color" />
-        <attr name="gesturePreviewTrailStartWidth" format="dimension" />
-        <attr name="gesturePreviewTrailEndWidth" format="dimension" />
-        <attr name="gesturePreviewTrailBodyRatio" format="integer" />
-        <attr name="gesturePreviewTrailShadowRatio" format="integer" />
+        <attr name="gestureTrailFadeoutStartDelay" format="integer" />
+        <!-- Duration while gesture trail is fading out in millisecond. -->
+        <attr name="gestureTrailFadeoutDuration" format="integer" />
+        <!-- Interval of updating gesture trail in millisecond. -->
+        <attr name="gestureTrailUpdateInterval" format="integer" />
+        <attr name="gestureTrailColor" format="color" />
+        <attr name="gestureTrailStartWidth" format="dimension" />
+        <attr name="gestureTrailEndWidth" format="dimension" />
+        <attr name="gestureTrailBodyRatio" format="integer" />
+        <attr name="gestureTrailShadowRatio" format="integer" />
         <!-- Delay after gesture input and gesture floating preview text dismissing in millisecond -->
         <attr name="gestureFloatingPreviewTextLingerTimeout" format="integer" />
         <!-- Attributes for GestureFloatingPreviewText -->
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 23b5794..742860b 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -75,9 +75,9 @@
     <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
     <bool name="config_block_potentially_offensive">true</bool>
     <integer name="config_gesture_floating_preview_text_linger_timeout">200</integer>
-    <integer name="config_gesture_preview_trail_fadeout_start_delay">100</integer>
-    <integer name="config_gesture_preview_trail_fadeout_duration">800</integer>
-    <integer name="config_gesture_preview_trail_update_interval">20</integer>
+    <integer name="config_gesture_trail_fadeout_start_delay">100</integer>
+    <integer name="config_gesture_trail_fadeout_duration">800</integer>
+    <integer name="config_gesture_trail_update_interval">20</integer>
     <!-- Static threshold for gesture after fast typing (msec) -->
     <integer name="config_gesture_static_time_threshold_after_fast_typing">500</integer>
     <!-- Static threshold for starting gesture detection (keyWidth%/sec) -->
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 5c33275..b6413b3 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -100,22 +100,22 @@
     <integer name="suggestions_count_in_strip">3</integer>
     <fraction name="center_suggestion_percentile">36%</fraction>
 
-    <!-- Gesture preview trail parameters -->
-    <!-- Minimum distance between gesture preview trail sampling points. -->
-    <dimen name="gesture_preview_trail_min_sampling_distance">6.4dp</dimen>
-    <!-- Maximum angular threshold between gesture preview trails interpolation segments in degree. -->
-    <integer name="gesture_preview_trail_max_interpolation_angular_threshold">15</integer>
-    <!-- Maximum distance threshold between gesture preview trails interpolation segments. -->
-    <dimen name="gesture_preview_trail_max_interpolation_distance_threshold">16.0dp</dimen>
-    <!-- Maximum number of gesture preview trail interpolation segments. -->
-    <integer name="gesture_preview_trail_max_interpolation_segments">6</integer>
-    <dimen name="gesture_preview_trail_start_width">10.0dp</dimen>
-    <dimen name="gesture_preview_trail_end_width">2.5dp</dimen>
+    <!-- Gesture trail parameters -->
+    <!-- Minimum distance between gesture trail sampling points. -->
+    <dimen name="gesture_trail_min_sampling_distance">6.4dp</dimen>
+    <!-- Maximum angular threshold between gesture trails interpolation segments in degree. -->
+    <integer name="gesture_trail_max_interpolation_angular_threshold">15</integer>
+    <!-- Maximum distance threshold between gesture trails interpolation segments. -->
+    <dimen name="gesture_trail_max_interpolation_distance_threshold">16.0dp</dimen>
+    <!-- Maximum number of gesture trail interpolation segments. -->
+    <integer name="gesture_trail_max_interpolation_segments">6</integer>
+    <dimen name="gesture_trail_start_width">10.0dp</dimen>
+    <dimen name="gesture_trail_end_width">2.5dp</dimen>
     <!-- Percentages of gesture preview taril body and shadow, in proportion to the trail width.
          A negative value of the shadow ratio disables drawing shadow. -->
     <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
-    <integer name="gesture_preview_trail_body_ratio">100</integer>
-    <integer name="gesture_preview_trail_shadow_ratio">-1</integer>
+    <integer name="gesture_trail_body_ratio">100</integer>
+    <integer name="gesture_trail_shadow_ratio">-1</integer>
     <!-- Gesture floating preview text parameters -->
     <dimen name="gesture_floating_preview_text_size">24dp</dimen>
     <dimen name="gesture_floating_preview_text_offset">73dp</dimen>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index fa40e51..8b6c29e 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -64,18 +64,18 @@
         <item name="gestureFloatingPreviewHorizontalPadding">@dimen/gesture_floating_preview_horizontal_padding</item>
         <item name="gestureFloatingPreviewVerticalPadding">@dimen/gesture_floating_preview_vertical_padding</item>
         <item name="gestureFloatingPreviewRoundRadius">@dimen/gesture_floating_preview_round_radius</item>
-        <item name="gesturePreviewTrailMinSamplingDistance">@dimen/gesture_preview_trail_min_sampling_distance</item>
-        <item name="gesturePreviewTrailMaxInterpolationAngularThreshold">@integer/gesture_preview_trail_max_interpolation_angular_threshold</item>
-        <item name="gesturePreviewTrailMaxInterpolationDistanceThreshold">@dimen/gesture_preview_trail_max_interpolation_distance_threshold</item>
-        <item name="gesturePreviewTrailMaxInterpolationSegments">@integer/gesture_preview_trail_max_interpolation_segments</item>
-        <item name="gesturePreviewTrailFadeoutStartDelay">@integer/config_gesture_preview_trail_fadeout_start_delay</item>
-        <item name="gesturePreviewTrailFadeoutDuration">@integer/config_gesture_preview_trail_fadeout_duration</item>
-        <item name="gesturePreviewTrailUpdateInterval">@integer/config_gesture_preview_trail_update_interval</item>
-        <item name="gesturePreviewTrailColor">@color/highlight_color_default</item>
-        <item name="gesturePreviewTrailStartWidth">@dimen/gesture_preview_trail_start_width</item>
-        <item name="gesturePreviewTrailEndWidth">@dimen/gesture_preview_trail_end_width</item>
-        <item name="gesturePreviewTrailBodyRatio">@integer/gesture_preview_trail_body_ratio</item>
-        <item name="gesturePreviewTrailShadowRatio">@integer/gesture_preview_trail_shadow_ratio</item>
+        <item name="gestureTrailMinSamplingDistance">@dimen/gesture_trail_min_sampling_distance</item>
+        <item name="gestureTrailMaxInterpolationAngularThreshold">@integer/gesture_trail_max_interpolation_angular_threshold</item>
+        <item name="gestureTrailMaxInterpolationDistanceThreshold">@dimen/gesture_trail_max_interpolation_distance_threshold</item>
+        <item name="gestureTrailMaxInterpolationSegments">@integer/gesture_trail_max_interpolation_segments</item>
+        <item name="gestureTrailFadeoutStartDelay">@integer/config_gesture_trail_fadeout_start_delay</item>
+        <item name="gestureTrailFadeoutDuration">@integer/config_gesture_trail_fadeout_duration</item>
+        <item name="gestureTrailUpdateInterval">@integer/config_gesture_trail_update_interval</item>
+        <item name="gestureTrailColor">@color/highlight_color_default</item>
+        <item name="gestureTrailStartWidth">@dimen/gesture_trail_start_width</item>
+        <item name="gestureTrailEndWidth">@dimen/gesture_trail_end_width</item>
+        <item name="gestureTrailBodyRatio">@integer/gesture_trail_body_ratio</item>
+        <item name="gestureTrailShadowRatio">@integer/gesture_trail_shadow_ratio</item>
         <!-- Common attributes of MainKeyboardView -->
         <item name="keyHysteresisDistance">@dimen/config_key_hysteresis_distance</item>
         <item name="keyHysteresisDistanceForSlidingModifier">@dimen/config_key_hysteresis_distance_for_sliding_modifier</item>
@@ -348,7 +348,7 @@
         <item name="keyTextShadowRadius">0.0</item>
         <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_ics</item>
         <item name="gestureFloatingPreviewTextColor">@color/highlight_color_ics</item>
-        <item name="gesturePreviewTrailColor">@color/highlight_color_ics</item>
+        <item name="gestureTrailColor">@color/highlight_color_ics</item>
     </style>
     <style
         name="MainKeyboardView.IceCreamSandwich"
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index a0ac475..3201d2e 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -910,10 +910,10 @@
         mSlidingKeyInputPreview.dismissSlidingKeyInputPreview();
     }
 
-    public void setGesturePreviewMode(final boolean drawsGesturePreviewTrail,
+    public void setGesturePreviewMode(final boolean drawsGestureTrail,
             final boolean drawsGestureFloatingPreviewText) {
         mGestureFloatingPreviewText.setPreviewEnabled(drawsGestureFloatingPreviewText);
-        mGestureTrailsPreview.setPreviewEnabled(drawsGesturePreviewTrail);
+        mGestureTrailsPreview.setPreviewEnabled(drawsGestureTrail);
     }
 
     public void showGestureFloatingPreviewText(final SuggestedWords suggestedWords) {
@@ -927,7 +927,7 @@
     }
 
     @Override
-    public void showGesturePreviewTrail(final PointerTracker tracker) {
+    public void showGestureTrail(final PointerTracker tracker) {
         locatePreviewPlacerView();
         mGestureFloatingPreviewText.setPreviewPosition(tracker);
         mGestureTrailsPreview.setPreviewPosition(tracker);
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 2d79164..5e4b1a5 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -84,7 +84,7 @@
         public void dismissKeyPreview(PointerTracker tracker);
         public void showSlidingKeyInputPreview(PointerTracker tracker);
         public void dismissSlidingKeyInputPreview();
-        public void showGesturePreviewTrail(PointerTracker tracker);
+        public void showGestureTrail(PointerTracker tracker);
     }
 
     public interface TimerProxy {
@@ -737,7 +737,7 @@
             dismissAllMoreKeysPanels();
         }
         mTimerProxy.cancelLongPressTimer();
-        mDrawingProxy.showGesturePreviewTrail(this);
+        mDrawingProxy.showGestureTrail(this);
     }
 
     public void updateBatchInputByTimer(final long eventTime) {
@@ -753,7 +753,7 @@
         if (mIsTrackingForActionDisabled) {
             return;
         }
-        mDrawingProxy.showGesturePreviewTrail(this);
+        mDrawingProxy.showGestureTrail(this);
     }
 
     private void updateBatchInput(final long eventTime) {
@@ -794,7 +794,7 @@
         if (mIsTrackingForActionDisabled) {
             return;
         }
-        mDrawingProxy.showGesturePreviewTrail(this);
+        mDrawingProxy.showGestureTrail(this);
     }
 
     private void cancelBatchInput() {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeWithPreviewPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeWithPreviewPoints.java
index ccb8802..b31f00b 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeWithPreviewPoints.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeWithPreviewPoints.java
@@ -63,18 +63,18 @@
 
         public GestureStrokePreviewParams(final TypedArray mainKeyboardViewAttr) {
             mMinSamplingDistance = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailMinSamplingDistance,
+                    R.styleable.MainKeyboardView_gestureTrailMinSamplingDistance,
                     (float)DEFAULT.mMinSamplingDistance);
             final int interpolationAngularDegree = mainKeyboardViewAttr.getInteger(R.styleable
-                    .MainKeyboardView_gesturePreviewTrailMaxInterpolationAngularThreshold, 0);
+                    .MainKeyboardView_gestureTrailMaxInterpolationAngularThreshold, 0);
             mMaxInterpolationAngularThreshold = (interpolationAngularDegree <= 0)
                     ? DEFAULT.mMaxInterpolationAngularThreshold
                     : degreeToRadian(interpolationAngularDegree);
             mMaxInterpolationDistanceThreshold = mainKeyboardViewAttr.getDimension(R.styleable
-                    .MainKeyboardView_gesturePreviewTrailMaxInterpolationDistanceThreshold,
+                    .MainKeyboardView_gestureTrailMaxInterpolationDistanceThreshold,
                     (float)DEFAULT.mMaxInterpolationDistanceThreshold);
             mMaxInterpolationSegments = mainKeyboardViewAttr.getInteger(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailMaxInterpolationSegments,
+                    R.styleable.MainKeyboardView_gestureTrailMaxInterpolationSegments,
                     DEFAULT.mMaxInterpolationSegments);
         }
     }
@@ -145,9 +145,9 @@
      *
      * @param lastInterpolatedIndex the start index of the last interpolated segment of
      *        <code>eventTimes</code>, <code>xCoords</code>, and <code>yCoords</code>.
-     * @param eventTimes the event time array of gesture preview trail to be drawn.
-     * @param xCoords the x-coordinates array of gesture preview trail to be drawn.
-     * @param yCoords the y-coordinates array of gesture preview trail to be drawn.
+     * @param eventTimes the event time array of gesture trail to be drawn.
+     * @param xCoords the x-coordinates array of gesture trail to be drawn.
+     * @param yCoords the y-coordinates array of gesture trail to be drawn.
      * @return the start index of the last interpolated segment of input arrays.
      */
     public int interpolateStrokeAndReturnStartIndexOfLastSegment(final int lastInterpolatedIndex,
@@ -189,16 +189,16 @@
                 eventTimes.add(d1, (int)(dt * t) + t1);
                 xCoords.add(d1, (int)mInterpolator.mInterpolatedX);
                 yCoords.add(d1, (int)mInterpolator.mInterpolatedY);
-                if (GesturePreviewTrail.DBG_SHOW_POINTS) {
-                    types.add(d1, GesturePreviewTrail.POINT_TYPE_INTERPOLATED);
+                if (GestureTrail.DBG_SHOW_POINTS) {
+                    types.add(d1, GestureTrail.POINT_TYPE_INTERPOLATED);
                 }
                 d1++;
             }
             eventTimes.add(d1, pt[p2]);
             xCoords.add(d1, px[p2]);
             yCoords.add(d1, py[p2]);
-            if (GesturePreviewTrail.DBG_SHOW_POINTS) {
-                types.add(d1, GesturePreviewTrail.POINT_TYPE_SAMPLED);
+            if (GestureTrail.DBG_SHOW_POINTS) {
+                types.add(d1, GestureTrail.POINT_TYPE_SAMPLED);
             }
         }
         return lastInterpolatedDrawIndex;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTrail.java
similarity index 90%
rename from java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java
rename to java/src/com/android/inputmethod/keyboard/internal/GestureTrail.java
index 761d9dc..03dd1c3 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureTrail.java
@@ -29,13 +29,13 @@
 import com.android.inputmethod.latin.ResizableIntArray;
 
 /*
- * @attr ref R.styleable#MainKeyboardView_gesturePreviewTrailFadeoutStartDelay
- * @attr ref R.styleable#MainKeyboardView_gesturePreviewTrailFadeoutDuration
- * @attr ref R.styleable#MainKeyboardView_gesturePreviewTrailUpdateInterval
- * @attr ref R.styleable#MainKeyboardView_gesturePreviewTrailColor
- * @attr ref R.styleable#MainKeyboardView_gesturePreviewTrailWidth
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutStartDelay
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutDuration
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailUpdateInterval
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailColor
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailWidth
  */
-final class GesturePreviewTrail {
+final class GestureTrail {
     public static final boolean DBG_SHOW_POINTS = false;
     public static final int POINT_TYPE_SAMPLED = 0;
     public static final int POINT_TYPE_INTERPOLATED = 1;
@@ -70,26 +70,26 @@
 
         public Params(final TypedArray mainKeyboardViewAttr) {
             mTrailColor = mainKeyboardViewAttr.getColor(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailColor, 0);
+                    R.styleable.MainKeyboardView_gestureTrailColor, 0);
             mTrailStartWidth = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailStartWidth, 0.0f);
+                    R.styleable.MainKeyboardView_gestureTrailStartWidth, 0.0f);
             mTrailEndWidth = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailEndWidth, 0.0f);
+                    R.styleable.MainKeyboardView_gestureTrailEndWidth, 0.0f);
             final int PERCENTAGE_INT = 100;
             mTrailBodyRatio = (float)mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailBodyRatio, PERCENTAGE_INT)
+                    R.styleable.MainKeyboardView_gestureTrailBodyRatio, PERCENTAGE_INT)
                     / (float)PERCENTAGE_INT;
             final int trailShadowRatioInt = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailShadowRatio, 0);
+                    R.styleable.MainKeyboardView_gestureTrailShadowRatio, 0);
             mTrailShadowEnabled = (trailShadowRatioInt > 0);
             mTrailShadowRatio = (float)trailShadowRatioInt / (float)PERCENTAGE_INT;
             mFadeoutStartDelay = DBG_SHOW_POINTS ? 2000 : mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailFadeoutStartDelay, 0);
+                    R.styleable.MainKeyboardView_gestureTrailFadeoutStartDelay, 0);
             mFadeoutDuration = DBG_SHOW_POINTS ? 200 : mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailFadeoutDuration, 0);
+                    R.styleable.MainKeyboardView_gestureTrailFadeoutDuration, 0);
             mTrailLingerDuration = mFadeoutStartDelay + mFadeoutDuration;
             mUpdateInterval = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gesturePreviewTrailUpdateInterval, 0);
+                    R.styleable.MainKeyboardView_gestureTrailUpdateInterval, 0);
         }
     }
 
@@ -186,12 +186,12 @@
     private final Rect mRoundedLineBounds = new Rect();
 
     /**
-     * Draw gesture preview trail
-     * @param canvas The canvas to draw the gesture preview trail
-     * @param paint The paint object to be used to draw the gesture preview trail
+     * Draw gesture trail
+     * @param canvas The canvas to draw the gesture trail
+     * @param paint The paint object to be used to draw the gesture trail
      * @param outBoundsRect the bounding box of this gesture trail drawing
-     * @param params The drawing parameters of gesture preview trail
-     * @return true if some gesture preview trails remain to be drawn
+     * @param params The drawing parameters of gesture trail
+     * @return true if some gesture trails remain to be drawn
      */
     public boolean drawGestureTrail(final Canvas canvas, final Paint paint,
             final Rect outBoundsRect, final Params params) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsPreview.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsPreview.java
index 85558f1..1e4c43e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsPreview.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsPreview.java
@@ -29,7 +29,7 @@
 import android.view.View;
 
 import com.android.inputmethod.keyboard.PointerTracker;
-import com.android.inputmethod.keyboard.internal.GesturePreviewTrail.Params;
+import com.android.inputmethod.keyboard.internal.GestureTrail.Params;
 import com.android.inputmethod.latin.CollectionUtils;
 import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
 
@@ -37,9 +37,8 @@
  * Draw gesture trail preview graphics during gesture.
  */
 public final class GestureTrailsPreview extends AbstractDrawingPreview {
-    private final SparseArray<GesturePreviewTrail> mGesturePreviewTrails =
-            CollectionUtils.newSparseArray();
-    private final Params mGesturePreviewTrailParams;
+    private final SparseArray<GestureTrail> mGestureTrails = CollectionUtils.newSparseArray();
+    private final Params mGestureTrailParams;
     private final Paint mGesturePaint;
     private int mOffscreenWidth;
     private int mOffscreenHeight;
@@ -48,20 +47,20 @@
     private final Canvas mOffscreenCanvas = new Canvas();
     private final Rect mOffscreenSrcRect = new Rect();
     private final Rect mDirtyRect = new Rect();
-    private final Rect mGesturePreviewTrailBoundsRect = new Rect(); // per trail
+    private final Rect mGestureTrailBoundsRect = new Rect(); // per trail
 
     private final DrawingHandler mDrawingHandler;
 
     private static final class DrawingHandler
             extends StaticInnerHandlerWrapper<GestureTrailsPreview> {
-        private static final int MSG_UPDATE_GESTURE_PREVIEW_TRAIL = 0;
+        private static final int MSG_UPDATE_GESTURE_TRAIL = 0;
 
-        private final Params mGesturePreviewTrailParams;
+        private final Params mGestureTrailParams;
 
         public DrawingHandler(final GestureTrailsPreview outerInstance,
-                final Params gesturePreviewTrailParams) {
+                final Params gestureTrailParams) {
             super(outerInstance);
-            mGesturePreviewTrailParams = gesturePreviewTrailParams;
+            mGestureTrailParams = gestureTrailParams;
         }
 
         @Override
@@ -69,23 +68,23 @@
             final GestureTrailsPreview preview = getOuterInstance();
             if (preview == null) return;
             switch (msg.what) {
-            case MSG_UPDATE_GESTURE_PREVIEW_TRAIL:
+            case MSG_UPDATE_GESTURE_TRAIL:
                 preview.getDrawingView().invalidate();
                 break;
             }
         }
 
         public void postUpdateGestureTrailPreview() {
-            removeMessages(MSG_UPDATE_GESTURE_PREVIEW_TRAIL);
-            sendMessageDelayed(obtainMessage(MSG_UPDATE_GESTURE_PREVIEW_TRAIL),
-                    mGesturePreviewTrailParams.mUpdateInterval);
+            removeMessages(MSG_UPDATE_GESTURE_TRAIL);
+            sendMessageDelayed(obtainMessage(MSG_UPDATE_GESTURE_TRAIL),
+                    mGestureTrailParams.mUpdateInterval);
         }
     }
 
     public GestureTrailsPreview(final View drawingView, final TypedArray mainKeyboardViewAttr) {
         super(drawingView);
-        mGesturePreviewTrailParams = new Params(mainKeyboardViewAttr);
-        mDrawingHandler = new DrawingHandler(this, mGesturePreviewTrailParams);
+        mGestureTrailParams = new Params(mainKeyboardViewAttr);
+        mDrawingHandler = new DrawingHandler(this, mGestureTrailParams);
         final Paint gesturePaint = new Paint();
         gesturePaint.setAntiAlias(true);
         gesturePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
@@ -133,21 +132,20 @@
             offscreenCanvas.drawRect(dirtyRect, paint);
         }
         dirtyRect.setEmpty();
-        boolean needsUpdatingGesturePreviewTrail = false;
+        boolean needsUpdatingGestureTrail = false;
         // Draw gesture trails to offscreen buffer.
-        synchronized (mGesturePreviewTrails) {
+        synchronized (mGestureTrails) {
             // Trails count == fingers count that have ever been active.
-            final int trailsCount = mGesturePreviewTrails.size();
+            final int trailsCount = mGestureTrails.size();
             for (int index = 0; index < trailsCount; index++) {
-                final GesturePreviewTrail trail = mGesturePreviewTrails.valueAt(index);
-                needsUpdatingGesturePreviewTrail |=
-                        trail.drawGestureTrail(offscreenCanvas, paint,
-                                mGesturePreviewTrailBoundsRect, mGesturePreviewTrailParams);
-                // {@link #mGesturePreviewTrailBoundsRect} has bounding box of the trail.
-                dirtyRect.union(mGesturePreviewTrailBoundsRect);
+                final GestureTrail trail = mGestureTrails.valueAt(index);
+                needsUpdatingGestureTrail |= trail.drawGestureTrail(offscreenCanvas, paint,
+                        mGestureTrailBoundsRect, mGestureTrailParams);
+                // {@link #mGestureTrailBoundsRect} has bounding box of the trail.
+                dirtyRect.union(mGestureTrailBoundsRect);
             }
         }
-        return needsUpdatingGesturePreviewTrail;
+        return needsUpdatingGestureTrail;
     }
 
     /**
@@ -161,9 +159,9 @@
         }
         mayAllocateOffscreenBuffer();
         // Draw gesture trails to offscreen buffer.
-        final boolean needsUpdatingGesturePreviewTrail = drawGestureTrails(
+        final boolean needsUpdatingGestureTrail = drawGestureTrails(
                 mOffscreenCanvas, mGesturePaint, mDirtyRect);
-        if (needsUpdatingGesturePreviewTrail) {
+        if (needsUpdatingGestureTrail) {
             mDrawingHandler.postUpdateGestureTrailPreview();
         }
         // Transfer offscreen buffer to screen.
@@ -185,12 +183,12 @@
         if (!isPreviewEnabled()) {
             return;
         }
-        GesturePreviewTrail trail;
-        synchronized (mGesturePreviewTrails) {
-            trail = mGesturePreviewTrails.get(tracker.mPointerId);
+        GestureTrail trail;
+        synchronized (mGestureTrails) {
+            trail = mGestureTrails.get(tracker.mPointerId);
             if (trail == null) {
-                trail = new GesturePreviewTrail();
-                mGesturePreviewTrails.put(tracker.mPointerId, trail);
+                trail = new GestureTrail();
+                mGestureTrails.put(tracker.mPointerId, trail);
             }
         }
         trail.addStroke(tracker.getGestureStrokeWithPreviewPoints(), tracker.getDownTime());
