diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index a1d9a00e64df562d786ae5a59f4a490d2e2f6eeb..d9ded7ceb87c291ee236d96af6fcb5d45ebc4e23 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -133,6 +133,16 @@ public abstract class Dictionary {
         return true;
     }
 
+    /**
+     * Whether we think this suggestion should trigger an auto-commit.
+     */
+    public boolean shouldAutoCommit(final SuggestedWordInfo candidate) {
+        // If we don't have support for auto-commit, or if we don't know, we return false to
+        // avoid auto-committing stuff. Implementations of the Dictionary class that know to
+        // determine whether we should auto-commit will override this.
+        return false;
+    }
+
     /**
      * Not a true dictionary. A placeholder used to indicate suggestions that don't come from any
      * real dictionary.
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 65309b7d31ff5c11b05bab2e87bb37c344823ff5..51ede3bc371a511ad18b827ae6bde8a03b6776f4 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1767,6 +1767,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
 
     @Override
     public void onUpdateBatchInput(final InputPointers batchPointers) {
+        final SuggestedWordInfo candidate = mSuggestedWords.getAutoCommitCandidate();
+        if (null != candidate) {
+            if (candidate.mSourceDict.shouldAutoCommit(candidate)) {
+                // TODO: implement auto-commit
+            }
+        }
         BatchInputUpdater.getInstance().onUpdateBatchInput(batchPointers);
     }
 
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java
index 3d6d0d75172bcdfb14d45bbb23c2745eb211705b..b27fd81e9421d88ff27b56d10e63001dffdc186f 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -143,6 +143,12 @@ public final class SuggestedWords {
         return suggestionsList;
     }
 
+    public SuggestedWordInfo getAutoCommitCandidate() {
+        if (mSuggestedWordInfoList.size() <= 0) return null;
+        final SuggestedWordInfo candidate = mSuggestedWordInfoList.get(0);
+        return candidate.isEligibleForAutoCommit() ? candidate : null;
+    }
+
     public static final class SuggestedWordInfo {
         public static final int NOT_AN_INDEX = -1;
         public static final int MAX_SCORE = Integer.MAX_VALUE;
@@ -186,6 +192,10 @@ public final class SuggestedWords {
             mIndexOfTouchPointOfSecondWord = indexOfTouchPointOfSecondWord;
         }
 
+        public boolean isEligibleForAutoCommit() {
+            return (KIND_CORRECTION == mKind && NOT_AN_INDEX != mIndexOfTouchPointOfSecondWord);
+        }
+
         public void setDebugString(final String str) {
             if (null == str) throw new NullPointerException("Debug info is null");
             mDebugString = str;