ResearchLog uploadingService now waits for logging to finish

Bug: 6188932
Change-Id: I31c0f380b334d9117990f2d92de8d385e4a52c7c
diff --git a/java/src/com/android/inputmethod/research/ResearchLog.java b/java/src/com/android/inputmethod/research/ResearchLog.java
index cd9ff85..369c6e0 100644
--- a/java/src/com/android/inputmethod/research/ResearchLog.java
+++ b/java/src/com/android/inputmethod/research/ResearchLog.java
@@ -93,7 +93,7 @@
         mFile = outputFile;
     }
 
-    public synchronized void close() {
+    public synchronized void close(final Runnable onClosed) {
         mExecutor.submit(new Callable<Object>() {
             @Override
             public Object call() throws Exception {
@@ -111,6 +111,9 @@
                     if (mFile.exists()) {
                         mFile.setWritable(false, false);
                     }
+                    if (onClosed != null) {
+                        onClosed.run();
+                    }
                 }
                 return null;
             }
diff --git a/java/src/com/android/inputmethod/research/ResearchLogger.java b/java/src/com/android/inputmethod/research/ResearchLogger.java
index 5c24871..816db58 100644
--- a/java/src/com/android/inputmethod/research/ResearchLogger.java
+++ b/java/src/com/android/inputmethod/research/ResearchLogger.java
@@ -376,11 +376,11 @@
 
         if (mMainLogBuffer != null) {
             publishLogBuffer(mMainLogBuffer, mMainResearchLog, false /* isIncludingPrivateData */);
-            mMainResearchLog.close();
+            mMainResearchLog.close(null /* callback */);
             mMainLogBuffer = null;
         }
         if (mFeedbackLogBuffer != null) {
-            mFeedbackLog.close();
+            mFeedbackLog.close(null /* callback */);
             mFeedbackLogBuffer = null;
         }
     }
@@ -549,8 +549,12 @@
                 false /* isPotentiallyPrivate */);
         mFeedbackLogBuffer.shiftIn(feedbackLogUnit);
         publishLogBuffer(mFeedbackLogBuffer, mFeedbackLog, true /* isIncludingPrivateData */);
-        mFeedbackLog.close();
-        uploadNow();
+        mFeedbackLog.close(new Runnable() {
+            @Override
+            public void run() {
+                uploadNow();
+            }
+        });
         mFeedbackLog = new ResearchLog(createLogFile(mFilesDir));
     }