[Rlog32] ResearchLogger segment motion data around gestures correctly
multi-project commit with I684ba5fed8c653777942e6b0366113ca40dfa37c Change-Id: Id3804e6cfa97b4cdde212b8eebc413f76fa4772cmain
parent
f763dc5915
commit
99f3189645
|
@ -1153,7 +1153,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
||||||
commitChosenWord(typedWord, LastComposedWord.COMMIT_TYPE_USER_TYPED_WORD,
|
commitChosenWord(typedWord, LastComposedWord.COMMIT_TYPE_USER_TYPED_WORD,
|
||||||
separatorString);
|
separatorString);
|
||||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||||
ResearchLogger.getInstance().onWordComplete(typedWord, Long.MAX_VALUE);
|
ResearchLogger.getInstance().onWordFinished(typedWord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1193,8 +1193,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
||||||
final String text = lastTwo.charAt(1) + " ";
|
final String text = lastTwo.charAt(1) + " ";
|
||||||
mConnection.commitText(text, 1);
|
mConnection.commitText(text, 1);
|
||||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||||
ResearchLogger.getInstance().onWordComplete(text, Long.MAX_VALUE);
|
ResearchLogger.latinIME_swapSwapperAndSpace(text);
|
||||||
ResearchLogger.latinIME_swapSwapperAndSpace();
|
|
||||||
}
|
}
|
||||||
mKeyboardSwitcher.updateShiftState();
|
mKeyboardSwitcher.updateShiftState();
|
||||||
}
|
}
|
||||||
|
@ -1214,7 +1213,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
||||||
final String textToInsert = ". ";
|
final String textToInsert = ". ";
|
||||||
mConnection.commitText(textToInsert, 1);
|
mConnection.commitText(textToInsert, 1);
|
||||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||||
ResearchLogger.getInstance().onWordComplete(textToInsert, Long.MAX_VALUE);
|
ResearchLogger.latinIME_maybeDoubleSpacePeriod(textToInsert);
|
||||||
}
|
}
|
||||||
mKeyboardSwitcher.updateShiftState();
|
mKeyboardSwitcher.updateShiftState();
|
||||||
return true;
|
return true;
|
||||||
|
@ -1465,7 +1464,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
||||||
}
|
}
|
||||||
mConnection.commitText(text, 1);
|
mConnection.commitText(text, 1);
|
||||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||||
ResearchLogger.getInstance().onWordComplete(text, Long.MAX_VALUE);
|
ResearchLogger.latinIME_onTextInput(text);
|
||||||
}
|
}
|
||||||
mConnection.endBatchEdit();
|
mConnection.endBatchEdit();
|
||||||
// Space state must be updated before calling updateShiftState
|
// Space state must be updated before calling updateShiftState
|
||||||
|
@ -1726,7 +1725,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
||||||
}
|
}
|
||||||
if (SPACE_STATE_DOUBLE == spaceState) {
|
if (SPACE_STATE_DOUBLE == spaceState) {
|
||||||
mHandler.cancelDoubleSpacePeriodTimer();
|
mHandler.cancelDoubleSpacePeriodTimer();
|
||||||
if (mConnection.revertDoubleSpace()) {
|
if (mConnection.revertDoubleSpacePeriod()) {
|
||||||
// No need to reset mSpaceState, it has already be done (that's why we
|
// No need to reset mSpaceState, it has already be done (that's why we
|
||||||
// receive it as a parameter)
|
// receive it as a parameter)
|
||||||
return;
|
return;
|
||||||
|
@ -2324,7 +2323,6 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
||||||
}
|
}
|
||||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||||
ResearchLogger.latinIME_revertCommit(committedWord, originallyTypedWord);
|
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
|
// Don't restart suggestion yet. We'll restart if the user deletes the
|
||||||
// separator.
|
// separator.
|
||||||
|
|
|
@ -648,7 +648,7 @@ public final class RichInputConnection {
|
||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean revertDoubleSpace() {
|
public boolean revertDoubleSpacePeriod() {
|
||||||
if (DEBUG_BATCH_NESTING) checkBatchEdit();
|
if (DEBUG_BATCH_NESTING) checkBatchEdit();
|
||||||
// Here we test whether we indeed have a period and a space before us. This should not
|
// 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.
|
// be needed, but it's there just in case something went wrong.
|
||||||
|
@ -665,7 +665,7 @@ public final class RichInputConnection {
|
||||||
final String doubleSpace = " ";
|
final String doubleSpace = " ";
|
||||||
commitText(doubleSpace, 1);
|
commitText(doubleSpace, 1);
|
||||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||||
ResearchLogger.getInstance().onWordComplete(doubleSpace, Long.MAX_VALUE);
|
ResearchLogger.richInputConnection_revertDoubleSpacePeriod(doubleSpace);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -690,7 +690,7 @@ public final class RichInputConnection {
|
||||||
final String text = " " + textBeforeCursor.subSequence(0, 1);
|
final String text = " " + textBeforeCursor.subSequence(0, 1);
|
||||||
commitText(text, 1);
|
commitText(text, 1);
|
||||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||||
ResearchLogger.getInstance().onWordComplete(text, Long.MAX_VALUE);
|
ResearchLogger.richInputConnection_revertSwapPunctuation(text);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,6 +153,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
|
|
||||||
private LogUnit mCurrentLogUnit = new LogUnit();
|
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() {
|
private ResearchLogger() {
|
||||||
mStatistics = Statistics.getInstance();
|
mStatistics = Statistics.getInstance();
|
||||||
}
|
}
|
||||||
|
@ -739,9 +744,15 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
return false;
|
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 =
|
private static final LogStatement LOGSTATEMENT_COMMIT_RECORD_SPLIT_WORDS =
|
||||||
new LogStatement("recordSplitWords", true, false);
|
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();
|
final Dictionary dictionary = getDictionary();
|
||||||
if (word != null && word.length() > 0 && hasLetters(word)) {
|
if (word != null && word.length() > 0 && hasLetters(word)) {
|
||||||
mCurrentLogUnit.setWord(word);
|
mCurrentLogUnit.setWord(word);
|
||||||
|
@ -755,6 +766,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
mCurrentLogUnit = newLogUnit;
|
mCurrentLogUnit = newLogUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onWordFinished(final String word) {
|
||||||
|
commitCurrentLogUnitAsWord(word, mSavedDownEventTime);
|
||||||
|
mSavedDownEventTime = Long.MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
private static int scrubDigitFromCodePoint(int codePoint) {
|
private static int scrubDigitFromCodePoint(int codePoint) {
|
||||||
return Character.isDigit(codePoint) ? DIGIT_REPLACEMENT_CODEPOINT : codePoint;
|
return Character.isDigit(codePoint) ? DIGIT_REPLACEMENT_CODEPOINT : codePoint;
|
||||||
}
|
}
|
||||||
|
@ -896,8 +912,14 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
}
|
}
|
||||||
final float size = me.getSize(index);
|
final float size = me.getSize(index);
|
||||||
final float pressure = me.getPressure(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);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1035,6 +1057,16 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
expectingUpdateSelectionFromLogger, scrubbedWord);
|
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().
|
* Log a call to LatinIME.pickSuggestionManually().
|
||||||
*
|
*
|
||||||
|
@ -1051,7 +1083,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
scrubDigitsFromString(replacedWord), index,
|
scrubDigitsFromString(replacedWord), index,
|
||||||
suggestion == null ? null : scrubbedWord, Constants.SUGGESTION_STRIP_COORDINATE,
|
suggestion == null ? null : scrubbedWord, Constants.SUGGESTION_STRIP_COORDINATE,
|
||||||
Constants.SUGGESTION_STRIP_COORDINATE);
|
Constants.SUGGESTION_STRIP_COORDINATE);
|
||||||
researchLogger.onWordComplete(scrubbedWord, Long.MAX_VALUE);
|
researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE);
|
||||||
researchLogger.mStatistics.recordManualSuggestion();
|
researchLogger.mStatistics.recordManualSuggestion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1067,7 +1099,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
final ResearchLogger researchLogger = getInstance();
|
final ResearchLogger researchLogger = getInstance();
|
||||||
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_PUNCTUATIONSUGGESTION, index, suggestion,
|
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_PUNCTUATIONSUGGESTION, index, suggestion,
|
||||||
Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE);
|
Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE);
|
||||||
researchLogger.onWordComplete(suggestion, Long.MAX_VALUE);
|
researchLogger.commitCurrentLogUnitAsWord(suggestion, Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1096,8 +1128,20 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
*/
|
*/
|
||||||
private static final LogStatement LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE =
|
private static final LogStatement LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE =
|
||||||
new LogStatement("LatinIMESwapSwapperAndSpace", false, false);
|
new LogStatement("LatinIMESwapSwapperAndSpace", false, false);
|
||||||
public static void latinIME_swapSwapperAndSpace() {
|
public static void latinIME_swapSwapperAndSpace(final String text) {
|
||||||
getInstance().enqueueEvent(LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1154,6 +1198,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_REVERTCOMMIT, committedWord,
|
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_REVERTCOMMIT, committedWord,
|
||||||
originallyTypedWord);
|
originallyTypedWord);
|
||||||
researchLogger.mStatistics.recordRevertCommit();
|
researchLogger.mStatistics.recordRevertCommit();
|
||||||
|
researchLogger.commitCurrentLogUnitAsWord(originallyTypedWord, Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1247,6 +1292,26 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
completionInfo);
|
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().
|
* Log a call to LatinIME.commitCurrentAutoCorrection().
|
||||||
*
|
*
|
||||||
|
@ -1263,7 +1328,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
final ResearchLogger researchLogger = getInstance();
|
final ResearchLogger researchLogger = getInstance();
|
||||||
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_COMMITCURRENTAUTOCORRECTION,
|
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_COMMITCURRENTAUTOCORRECTION,
|
||||||
scrubbedTypedWord, scrubbedAutoCorrection, separatorString);
|
scrubbedTypedWord, scrubbedAutoCorrection, separatorString);
|
||||||
researchLogger.onWordComplete(scrubbedAutoCorrection, Long.MAX_VALUE);
|
researchLogger.commitCurrentLogUnitAsWord(scrubbedAutoCorrection, Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isExpectingCommitText = false;
|
private boolean isExpectingCommitText = false;
|
||||||
|
@ -1282,7 +1347,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
final ResearchLogger researchLogger = getInstance();
|
final ResearchLogger researchLogger = getInstance();
|
||||||
final String scrubbedWord = scrubDigitsFromString(committedWord.toString());
|
final String scrubbedWord = scrubDigitsFromString(committedWord.toString());
|
||||||
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_COMMIT_PARTIAL_TEXT);
|
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_COMMIT_PARTIAL_TEXT);
|
||||||
researchLogger.onWordComplete(scrubbedWord, lastTimestampOfWordData);
|
researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, lastTimestampOfWordData);
|
||||||
researchLogger.mStatistics.recordSplitWords();
|
researchLogger.mStatistics.recordSplitWords();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1301,7 +1366,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||||
if (!researchLogger.isExpectingCommitText) {
|
if (!researchLogger.isExpectingCommitText) {
|
||||||
researchLogger.enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTIONCOMMITTEXT,
|
researchLogger.enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTIONCOMMITTEXT,
|
||||||
newCursorPosition);
|
newCursorPosition);
|
||||||
researchLogger.onWordComplete(scrubbedWord, Long.MAX_VALUE);
|
researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
researchLogger.isExpectingCommitText = false;
|
researchLogger.isExpectingCommitText = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue