Add a functionality to clear and flush prediction dictionary

Bug: 9429906
Change-Id: I84ec444e9d46a0080dc3450b8ab32bfb99407cfe
diff --git a/java/src/com/android/inputmethod/latin/personalization/DynamicPredictionDictionaryBase.java b/java/src/com/android/inputmethod/latin/personalization/DynamicPredictionDictionaryBase.java
index 916be44..8160501 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DynamicPredictionDictionaryBase.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DynamicPredictionDictionaryBase.java
@@ -411,4 +411,18 @@
     public void unRegisterUpdateSession(PersonalizationDictionaryUpdateSession session) {
         mSessions.remove(session);
     }
+
+    public void clearAndFlushDictionary() {
+        // Clear the node structure on memory
+        clearDictionary();
+        mBigramListLock.lock();
+        try {
+            // Clear the bigram list on memory
+            mBigramList.evictAll();
+        } finally {
+            mBigramListLock.unlock();
+        }
+        // Then flush the cleared state of the dictionary on disk.
+        flushPendingWrites();
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java
index 433c69c..77f0cdb 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java
@@ -69,6 +69,13 @@
         dictionary.unRegisterUpdateSession(this);
     }
 
+    public void clearAndFlushPredictionDictionary(Context context) {
+        final DynamicPredictionDictionaryBase dictionary = getPredictionDictionary();
+        if (dictionary == null) {
+            return;
+        }
+        dictionary.clearAndFlushDictionary();
+    }
 
     public void closeSession(Context context) {
         unsetPredictionDictionary();