Stop apply Completion for DicNodes without any proximity chars.

Bug: 13538127
Change-Id: Ifffc0cde1ea8a0ceb13e4e4e57c151b3ea33a522
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 65dad56..82b738d 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -270,9 +270,10 @@
 
     bool hasMatchedOrProximityCodePoints() const {
         // This DicNode does not have matched or proximity code points when all code points have
-        // been handled as edit corrections so far.
-        return mDicNodeState.mDicNodeStateScoring.getEditCorrectionCount()
-                < getNodeCodePointCount();
+        // been handled as edit corrections or completion so far.
+        const int editCorrectionCount = mDicNodeState.mDicNodeStateScoring.getEditCorrectionCount();
+        const int completionCount = mDicNodeState.mDicNodeStateScoring.getCompletionCount();
+        return (editCorrectionCount + completionCount) < getNodeCodePointCount();
     }
 
     bool isTotalInputSizeExceedingLimit() const {
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
index 458eac8..b0db55f 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
@@ -31,7 +31,7 @@
     AK_FORCE_INLINE DicNodeStateScoring()
             : mDoubleLetterLevel(NOT_A_DOUBLE_LETTER),
               mDigraphIndex(DigraphUtils::NOT_A_DIGRAPH_INDEX),
-              mEditCorrectionCount(0), mProximityCorrectionCount(0),
+              mEditCorrectionCount(0), mProximityCorrectionCount(0), mCompletionCount(0),
               mNormalizedCompoundDistance(0.0f), mSpatialDistance(0.0f), mLanguageDistance(0.0f),
               mRawLength(0.0f), mContainedErrorTypes(ErrorTypeUtils::NOT_AN_ERROR),
               mNormalizedCompoundDistanceAfterFirstWord(MAX_VALUE_FOR_WEIGHTING) {
@@ -42,6 +42,7 @@
     void init() {
         mEditCorrectionCount = 0;
         mProximityCorrectionCount = 0;
+        mCompletionCount = 0;
         mNormalizedCompoundDistance = 0.0f;
         mSpatialDistance = 0.0f;
         mLanguageDistance = 0.0f;
@@ -55,6 +56,7 @@
     AK_FORCE_INLINE void init(const DicNodeStateScoring *const scoring) {
         mEditCorrectionCount = scoring->mEditCorrectionCount;
         mProximityCorrectionCount = scoring->mProximityCorrectionCount;
+        mCompletionCount = scoring->mCompletionCount;
         mNormalizedCompoundDistance = scoring->mNormalizedCompoundDistance;
         mSpatialDistance = scoring->mSpatialDistance;
         mLanguageDistance = scoring->mLanguageDistance;
@@ -77,6 +79,9 @@
         if (ErrorTypeUtils::isProximityCorrectionError(errorType)) {
             ++mProximityCorrectionCount;
         }
+        if (ErrorTypeUtils::isCompletion(errorType)) {
+            ++mCompletionCount;
+        }
     }
 
     // Saves the current normalized distance for space-aware gestures.
@@ -129,6 +134,10 @@
         return mProximityCorrectionCount;
     }
 
+    int16_t getCompletionCount() const {
+        return mCompletionCount;
+    }
+
     float getRawLength() const {
         return mRawLength;
     }
@@ -182,6 +191,7 @@
 
     int16_t mEditCorrectionCount;
     int16_t mProximityCorrectionCount;
+    int16_t mCompletionCount;
 
     float mNormalizedCompoundDistance;
     float mSpatialDistance;
diff --git a/native/jni/src/suggest/core/dictionary/error_type_utils.h b/native/jni/src/suggest/core/dictionary/error_type_utils.h
index 1122291..cc77867 100644
--- a/native/jni/src/suggest/core/dictionary/error_type_utils.h
+++ b/native/jni/src/suggest/core/dictionary/error_type_utils.h
@@ -59,6 +59,10 @@
         return (errorType & PROXIMITY_CORRECTION) != 0;
     }
 
+    static bool isCompletion(const ErrorType errorType) {
+        return (errorType & COMPLETION) != 0;
+    }
+
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(ErrorTypeUtils);