diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 8c8a824d8..152118d98 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1843,6 +1843,9 @@ public final class LatinIME extends InputMethodService implements KeyboardAction // Returns true if we did an autocorrection, false otherwise. private boolean handleSeparator(final int primaryCode, final int x, final int y, final int spaceState) { + if (ProductionFlag.IS_EXPERIMENTAL) { + ResearchLogger.latinIME_handleSeparator(); + } boolean didAutoCorrect = false; // Handle separator if (mWordComposer.isComposingWord()) { diff --git a/java/src/com/android/inputmethod/research/ResearchLogger.java b/java/src/com/android/inputmethod/research/ResearchLogger.java index 01b5bdda5..e8c3bdf81 100644 --- a/java/src/com/android/inputmethod/research/ResearchLogger.java +++ b/java/src/com/android/inputmethod/research/ResearchLogger.java @@ -838,6 +838,10 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang mCurrentLogUnit = newLogUnit; } + private void setSavedDownEventTime(final long time) { + mSavedDownEventTime = time; + } + public void onWordFinished(final String word, final boolean isBatchMode) { commitCurrentLogUnitAsWord(word, mSavedDownEventTime, isBatchMode); mSavedDownEventTime = Long.MAX_VALUE; @@ -987,7 +991,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang if (action == MotionEvent.ACTION_DOWN) { // Subtract 1 from eventTime so the down event is included in the later // LogUnit, not the earlier (the test is for inequality). - researchLogger.mSavedDownEventTime = eventTime - 1; + researchLogger.setSavedDownEventTime(eventTime - 1); } } } @@ -1637,6 +1641,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang researchLogger.mStatistics.recordGestureDelete(); } + public static void latinIME_handleSeparator() { + // Reset the saved down event time. For tapping, motion events, etc. before the separator + // are assigned to the previous LogUnit, and events after the separator are assigned to the + // next LogUnit. In the case of multitap, this might capture down events corresponding to + // the next word, however it should not be more than a character or two. + getInstance().setSavedDownEventTime(SystemClock.uptimeMillis()); + } + /** * Log statistics. *