[AC3] Start calling the methods for auto-commit.

Bug: 9059617
Change-Id: I190a4baf2fa831b70e00e129b5dfaa8c9c32b3a0
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index a1d9a00..d9ded7c 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -134,6 +134,16 @@
     }
 
     /**
+     * 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 65309b7..51ede3b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1767,6 +1767,12 @@
 
     @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 3d6d0d7..b27fd81 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -143,6 +143,12 @@
         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 @@
             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;