Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9bad176e authored by Kurt Partridge's avatar Kurt Partridge Committed by Android (Google) Code Review
Browse files

Merge "[Rlog32] ResearchLogger segment motion data around gestures correctly"

parents b7fb16e8 99f31896
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -1131,7 +1131,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            commitChosenWord(typedWord, LastComposedWord.COMMIT_TYPE_USER_TYPED_WORD,
                    separatorString);
            if (ProductionFlag.IS_EXPERIMENTAL) {
                ResearchLogger.getInstance().onWordComplete(typedWord, Long.MAX_VALUE);
                ResearchLogger.getInstance().onWordFinished(typedWord);
            }
        }
    }
@@ -1171,8 +1171,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            final String text = lastTwo.charAt(1) + " ";
            mConnection.commitText(text, 1);
            if (ProductionFlag.IS_EXPERIMENTAL) {
                ResearchLogger.getInstance().onWordComplete(text, Long.MAX_VALUE);
                ResearchLogger.latinIME_swapSwapperAndSpace();
                ResearchLogger.latinIME_swapSwapperAndSpace(text);
            }
            mKeyboardSwitcher.updateShiftState();
        }
@@ -1192,7 +1191,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            final String textToInsert = ". ";
            mConnection.commitText(textToInsert, 1);
            if (ProductionFlag.IS_EXPERIMENTAL) {
                ResearchLogger.getInstance().onWordComplete(textToInsert, Long.MAX_VALUE);
                ResearchLogger.latinIME_maybeDoubleSpacePeriod(textToInsert);
            }
            mKeyboardSwitcher.updateShiftState();
            return true;
@@ -1441,7 +1440,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
        }
        mConnection.commitText(text, 1);
        if (ProductionFlag.IS_EXPERIMENTAL) {
            ResearchLogger.getInstance().onWordComplete(text, Long.MAX_VALUE);
            ResearchLogger.latinIME_onTextInput(text);
        }
        mConnection.endBatchEdit();
        // Space state must be updated before calling updateShiftState
@@ -1700,7 +1699,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            }
            if (SPACE_STATE_DOUBLE == spaceState) {
                mHandler.cancelDoubleSpacePeriodTimer();
                if (mConnection.revertDoubleSpace()) {
                if (mConnection.revertDoubleSpacePeriod()) {
                    // No need to reset mSpaceState, it has already be done (that's why we
                    // receive it as a parameter)
                    return;
@@ -2294,7 +2293,6 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
        }
        if (ProductionFlag.IS_EXPERIMENTAL) {
            ResearchLogger.latinIME_revertCommit(committedWord, originallyTypedWord);
            ResearchLogger.getInstance().onWordComplete(originallyTypedWord, Long.MAX_VALUE);
        }
        // Don't restart suggestion yet. We'll restart if the user deletes the
        // separator.
+3 −3
Original line number Diff line number Diff line
@@ -643,7 +643,7 @@ public final class RichInputConnection {
        return word;
    }

    public boolean revertDoubleSpace() {
    public boolean revertDoubleSpacePeriod() {
        if (DEBUG_BATCH_NESTING) checkBatchEdit();
        // Here we test whether we indeed have a period and a space before us. This should not
        // be needed, but it's there just in case something went wrong.
@@ -660,7 +660,7 @@ public final class RichInputConnection {
        final String doubleSpace = "  ";
        commitText(doubleSpace, 1);
        if (ProductionFlag.IS_EXPERIMENTAL) {
            ResearchLogger.getInstance().onWordComplete(doubleSpace, Long.MAX_VALUE);
            ResearchLogger.richInputConnection_revertDoubleSpacePeriod(doubleSpace);
        }
        return true;
    }
@@ -685,7 +685,7 @@ public final class RichInputConnection {
        final String text = " " + textBeforeCursor.subSequence(0, 1);
        commitText(text, 1);
        if (ProductionFlag.IS_EXPERIMENTAL) {
            ResearchLogger.getInstance().onWordComplete(text, Long.MAX_VALUE);
            ResearchLogger.richInputConnection_revertSwapPunctuation(text);
        }
        return true;
    }
+74 −9
Original line number Diff line number Diff line
@@ -154,6 +154,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang

    private LogUnit mCurrentLogUnit = new LogUnit();

    // Gestured or tapped words may be committed after the gesture of the next word has started.
    // To ensure that the gesture data of the next word is not associated with the previous word,
    // thereby leaking private data, we store the time of the down event that started the second
    // gesture, and when committing the earlier word, split the LogUnit.
    private long mSavedDownEventTime;
    private ResearchLogger() {
        mStatistics = Statistics.getInstance();
    }
@@ -741,9 +746,15 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        return false;
    }

    /**
     * Commit the portion of mCurrentLogUnit before maxTime as a worded logUnit.
     *
     * After this operation completes, mCurrentLogUnit will hold any logStatements that happened
     * after maxTime.
     */
    private static final LogStatement LOGSTATEMENT_COMMIT_RECORD_SPLIT_WORDS =
            new LogStatement("recordSplitWords", true, false);
    public void onWordComplete(final String word, final long maxTime) {
    /* package for test */ void commitCurrentLogUnitAsWord(final String word, final long maxTime) {
        final Dictionary dictionary = getDictionary();
        if (word != null && word.length() > 0 && hasLetters(word)) {
            mCurrentLogUnit.setWord(word);
@@ -757,6 +768,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        mCurrentLogUnit = newLogUnit;
    }

    public void onWordFinished(final String word) {
        commitCurrentLogUnitAsWord(word, mSavedDownEventTime);
        mSavedDownEventTime = Long.MAX_VALUE;
    }

    private static int scrubDigitFromCodePoint(int codePoint) {
        return Character.isDigit(codePoint) ? DIGIT_REPLACEMENT_CODEPOINT : codePoint;
    }
@@ -898,8 +914,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
            }
            final float size = me.getSize(index);
            final float pressure = me.getPressure(index);
            getInstance().enqueueEvent(LOGSTATEMENT_MAIN_KEYBOARD_VIEW_PROCESS_MOTION_EVENT,
            final ResearchLogger researchLogger = getInstance();
            researchLogger.enqueueEvent(LOGSTATEMENT_MAIN_KEYBOARD_VIEW_PROCESS_MOTION_EVENT,
                    actionString, eventTime, id, x, y, size, pressure);
            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;
            }
        }
    }

@@ -1037,6 +1059,16 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
                expectingUpdateSelectionFromLogger, scrubbedWord);
    }

    /**
     * Log a call to LatinIME.onTextInput().
     *
     * SystemResponse: Raw text is added to the TextView.
     */
    public static void latinIME_onTextInput(final String text) {
        final ResearchLogger researchLogger = getInstance();
        researchLogger.commitCurrentLogUnitAsWord(text, Long.MAX_VALUE);
    }

    /**
     * Log a call to LatinIME.pickSuggestionManually().
     *
@@ -1053,7 +1085,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
                scrubDigitsFromString(replacedWord), index,
                suggestion == null ? null : scrubbedWord, Constants.SUGGESTION_STRIP_COORDINATE,
                Constants.SUGGESTION_STRIP_COORDINATE);
        researchLogger.onWordComplete(scrubbedWord, Long.MAX_VALUE);
        researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE);
        researchLogger.mStatistics.recordManualSuggestion();
    }

@@ -1069,7 +1101,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        final ResearchLogger researchLogger = getInstance();
        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_PUNCTUATIONSUGGESTION, index, suggestion,
                Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE);
        researchLogger.onWordComplete(suggestion, Long.MAX_VALUE);
        researchLogger.commitCurrentLogUnitAsWord(suggestion, Long.MAX_VALUE);
    }

    /**
@@ -1098,8 +1130,20 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
     */
    private static final LogStatement LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE =
            new LogStatement("LatinIMESwapSwapperAndSpace", false, false);
    public static void latinIME_swapSwapperAndSpace() {
        getInstance().enqueueEvent(LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE);
    public static void latinIME_swapSwapperAndSpace(final String text) {
        final ResearchLogger researchLogger = getInstance();
        researchLogger.commitCurrentLogUnitAsWord(text, Long.MAX_VALUE);
        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE);
    }

    /**
     * Log a call to LatinIME.maybeDoubleSpacePeriod().
     *
     * SystemResponse: Two spaces have been replaced by period space.
     */
    public static void latinIME_maybeDoubleSpacePeriod(final String text) {
        final ResearchLogger researchLogger = getInstance();
        researchLogger.commitCurrentLogUnitAsWord(text, Long.MAX_VALUE);
    }

    /**
@@ -1156,6 +1200,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_REVERTCOMMIT, committedWord,
                originallyTypedWord);
        researchLogger.mStatistics.recordRevertCommit();
        researchLogger.commitCurrentLogUnitAsWord(originallyTypedWord, Long.MAX_VALUE);
    }

    /**
@@ -1249,6 +1294,26 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
                completionInfo);
    }

    /**
     * Log a call to RichInputConnection.revertDoubleSpacePeriod().
     *
     * SystemResponse: The IME has reverted ". ", which had previously replaced two typed spaces.
     */
    public static void richInputConnection_revertDoubleSpacePeriod(final String doubleSpace) {
        final ResearchLogger researchLogger = getInstance();
        researchLogger.commitCurrentLogUnitAsWord(doubleSpace, Long.MAX_VALUE);
    }

    /**
     * Log a call to RichInputConnection.revertSwapPunctuation().
     *
     * SystemResponse: The IME has reverted a punctuation swap.
     */
    public static void richInputConnection_revertSwapPunctuation(final String text) {
        final ResearchLogger researchLogger = getInstance();
        researchLogger.commitCurrentLogUnitAsWord(text, Long.MAX_VALUE);
    }

    /**
     * Log a call to LatinIME.commitCurrentAutoCorrection().
     *
@@ -1265,7 +1330,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        final ResearchLogger researchLogger = getInstance();
        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_COMMITCURRENTAUTOCORRECTION,
                scrubbedTypedWord, scrubbedAutoCorrection, separatorString);
        researchLogger.onWordComplete(scrubbedAutoCorrection, Long.MAX_VALUE);
        researchLogger.commitCurrentLogUnitAsWord(scrubbedAutoCorrection, Long.MAX_VALUE);
    }

    private boolean isExpectingCommitText = false;
@@ -1284,7 +1349,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        final ResearchLogger researchLogger = getInstance();
        final String scrubbedWord = scrubDigitsFromString(committedWord.toString());
        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_COMMIT_PARTIAL_TEXT);
        researchLogger.onWordComplete(scrubbedWord, lastTimestampOfWordData);
        researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, lastTimestampOfWordData);
        researchLogger.mStatistics.recordSplitWords();
    }

@@ -1303,7 +1368,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        if (!researchLogger.isExpectingCommitText) {
            researchLogger.enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTIONCOMMITTEXT,
                    newCursorPosition);
            researchLogger.onWordComplete(scrubbedWord, Long.MAX_VALUE);
            researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE);
        }
        researchLogger.isExpectingCommitText = false;
    }