Merge "[CB01] Reset some old assumptions about dead keys"
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index 323256d..965518e 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -357,9 +357,9 @@
             mExpectedSelEnd -= beforeLength;
         } else {
             // There are fewer characters before the cursor in the buffer than we are being asked to
-            // delete.  Only delete what is there.
-            mExpectedSelStart = 0;
+            // delete. Only delete what is there, and update the end with the amount deleted.
             mExpectedSelEnd -= mExpectedSelStart;
+            mExpectedSelStart = 0;
         }
         if (null != mIC) {
             mIC.deleteSurroundingText(beforeLength, afterLength);
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.cpp
index 9441a75..fb80f38 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.cpp
@@ -68,6 +68,9 @@
         if (dirent->d_type == DT_DIR) {
             continue;
         }
+        if (strcmp(dirent->d_name, ".") == 0 || strcmp(dirent->d_name, "..") == 0) {
+            continue;
+        }
         const int filePathBufSize = getFilePathBufSize(dirPath, dirent->d_name);
         char filePath[filePathBufSize];
         getFilePath(dirPath, dirent->d_name, filePathBufSize, filePath);
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
index d9c35c4..4d44135 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
@@ -948,10 +948,13 @@
             final HashSet<String> bigramWord1s = bigrams.get(word0);
             final WordProperty wordProperty = binaryDictionary.getWordProperty(word0);
             assertEquals(bigramWord1s.size(), wordProperty.mBigrams.size());
+            final int unigramProbability = wordProperty.getProbability();
             for (int j = 0; j < wordProperty.mBigrams.size(); j++) {
                 final String word1 = wordProperty.mBigrams.get(j).mWord;
                 assertTrue(bigramWord1s.contains(word1));
-                final int probability = wordProperty.mBigrams.get(j).getProbability();
+                final int bigramProbability = wordProperty.mBigrams.get(j).getProbability();
+                final int probability = binaryDictionary.calculateProbability(
+                        unigramProbability, bigramProbability);
                 assertEquals((int)bigramProbabilities.get(new Pair<String, String>(word0, word1)),
                         probability);
                 assertEquals(wordProperty.mBigrams.get(j).getProbability(), probability);
@@ -1037,11 +1040,14 @@
             assertEquals((int)wordProbabilitiesToCheckLater.get(word0),
                     wordProperty.mProbabilityInfo.mProbability);
             wordSet.remove(word0);
+            final int unigramProbability = wordProperty.getProbability();
             final HashSet<String> bigramWord1s = bigrams.get(word0);
             for (int j = 0; j < wordProperty.mBigrams.size(); j++) {
                 final String word1 = wordProperty.mBigrams.get(j).mWord;
                 assertTrue(bigramWord1s.contains(word1));
-                final int probability = wordProperty.mBigrams.get(j).getProbability();
+                final int bigramProbability = wordProperty.mBigrams.get(j).getProbability();
+                final int probability = binaryDictionary.calculateProbability(
+                        unigramProbability, bigramProbability);
                 final Pair<String, String> bigram = new Pair<String, String>(word0, word1);
                 assertEquals((int)bigramProbabilitiesToCheckLater.get(bigram), probability);
                 bigramSet.remove(bigram);