Merge "[Rlog58b] Log user pauses"

main
Kurt Partridge 2013-01-11 10:19:13 -08:00 committed by Android (Google) Code Review
commit b75e2380e2
2 changed files with 56 additions and 26 deletions

View File

@ -1157,7 +1157,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
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.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE, isBatchMode); researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE, isBatchMode);
researchLogger.mStatistics.recordManualSuggestion(); researchLogger.mStatistics.recordManualSuggestion(SystemClock.uptimeMillis());
} }
/** /**
@ -1295,7 +1295,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
} }
researchLogger.enqueueEvent(logUnit != null ? logUnit : researchLogger.mCurrentLogUnit, researchLogger.enqueueEvent(logUnit != null ? logUnit : researchLogger.mCurrentLogUnit,
LOGSTATEMENT_LATINIME_REVERTCOMMIT, committedWord, originallyTypedWord); LOGSTATEMENT_LATINIME_REVERTCOMMIT, committedWord, originallyTypedWord);
researchLogger.mStatistics.recordRevertCommit(); researchLogger.mStatistics.recordRevertCommit(SystemClock.uptimeMillis());
researchLogger.commitCurrentLogUnitAsWord(originallyTypedWord, Long.MAX_VALUE, isBatchMode); researchLogger.commitCurrentLogUnitAsWord(originallyTypedWord, Long.MAX_VALUE, isBatchMode);
} }
@ -1625,7 +1625,8 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
final ResearchLogger researchLogger = getInstance(); final ResearchLogger researchLogger = getInstance();
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_ONENDBATCHINPUT, enteredText, researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_ONENDBATCHINPUT, enteredText,
enteredWordPos); enteredWordPos);
researchLogger.mStatistics.recordGestureInput(enteredText.length()); researchLogger.mStatistics.recordGestureInput(enteredText.length(),
SystemClock.uptimeMillis());
} }
/** /**
@ -1638,7 +1639,20 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
public static void latinIME_handleBackspace_batch(final CharSequence deletedText) { public static void latinIME_handleBackspace_batch(final CharSequence deletedText) {
final ResearchLogger researchLogger = getInstance(); final ResearchLogger researchLogger = getInstance();
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_HANDLEBACKSPACE_BATCH, deletedText); researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_HANDLEBACKSPACE_BATCH, deletedText);
researchLogger.mStatistics.recordGestureDelete(); researchLogger.mStatistics.recordGestureDelete(deletedText.length(),
SystemClock.uptimeMillis());
}
/**
* Log a long interval between user operation.
*
* UserInput: The user has not done anything for a while.
*/
private static final LogStatement LOGSTATEMENT_ONUSERPAUSE = new LogStatement("OnUserPause",
false, false, "intervalInMs");
public static void onUserPause(final long interval) {
final ResearchLogger researchLogger = getInstance();
researchLogger.enqueueEvent(LOGSTATEMENT_ONUSERPAUSE, interval);
} }
public static void latinIME_handleSeparator() { public static void latinIME_handleSeparator() {

View File

@ -134,17 +134,9 @@ public class Statistics {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "recordChar() called"); Log.d(TAG, "recordChar() called");
} }
final long delta = time - mLastTapTime;
if (codePoint == Constants.CODE_DELETE) { if (codePoint == Constants.CODE_DELETE) {
mDeleteKeyCount++; mDeleteKeyCount++;
if (delta < MIN_DELETION_INTERMISSION) { recordUserAction(time, true /* isDeletion */);
if (mIsLastKeyDeleteKey) {
mDuringRepeatedDeleteKeysCounter.add(delta);
} else {
mBeforeDeleteKeyCounter.add(delta);
}
}
mIsLastKeyDeleteKey = true;
} else { } else {
mCharCount++; mCharCount++;
if (Character.isDigit(codePoint)) { if (Character.isDigit(codePoint)) {
@ -156,14 +148,8 @@ public class Statistics {
if (Character.isSpaceChar(codePoint)) { if (Character.isSpaceChar(codePoint)) {
mSpaceCount++; mSpaceCount++;
} }
if (mIsLastKeyDeleteKey && delta < MIN_DELETION_INTERMISSION) { recordUserAction(time, false /* isDeletion */);
mAfterDeleteKeyCounter.add(delta);
} else if (!mIsLastKeyDeleteKey && delta < MIN_TYPING_INTERMISSION) {
mKeyCounter.add(delta);
} }
mIsLastKeyDeleteKey = false;
}
mLastTapTime = time;
} }
public void recordWordEntered(final boolean isDictionaryWord) { public void recordWordEntered(final boolean isDictionaryWord) {
@ -177,9 +163,10 @@ public class Statistics {
mSplitWordsCount++; mSplitWordsCount++;
} }
public void recordGestureInput(final int numCharsEntered) { public void recordGestureInput(final int numCharsEntered, final long time) {
mGesturesInputCount++; mGesturesInputCount++;
mGesturesCharsCount += numCharsEntered; mGesturesCharsCount += numCharsEntered;
recordUserAction(time, false /* isDeletion */);
} }
public void setIsEmptyUponStarting(final boolean isEmpty) { public void setIsEmptyUponStarting(final boolean isEmpty) {
@ -187,14 +174,43 @@ public class Statistics {
mIsEmptinessStateKnown = true; mIsEmptinessStateKnown = true;
} }
public void recordGestureDelete() { public void recordGestureDelete(final int length, final long time) {
mGesturesDeletedCount++; mGesturesDeletedCount++;
} recordUserAction(time, true /* isDeletion */);
public void recordManualSuggestion() {
mManualSuggestionsCount++;
} }
public void recordRevertCommit() { public void recordManualSuggestion(final long time) {
mManualSuggestionsCount++;
recordUserAction(time, false /* isDeletion */);
}
public void recordRevertCommit(final long time) {
mRevertCommitsCount++; mRevertCommitsCount++;
recordUserAction(time, true /* isDeletion */);
}
private void recordUserAction(final long time, final boolean isDeletion) {
final long delta = time - mLastTapTime;
if (isDeletion) {
if (delta < MIN_DELETION_INTERMISSION) {
if (mIsLastKeyDeleteKey) {
mDuringRepeatedDeleteKeysCounter.add(delta);
} else {
mBeforeDeleteKeyCounter.add(delta);
}
} else {
ResearchLogger.onUserPause(delta);
}
} else {
if (mIsLastKeyDeleteKey && delta < MIN_DELETION_INTERMISSION) {
mAfterDeleteKeyCounter.add(delta);
} else if (!mIsLastKeyDeleteKey && delta < MIN_TYPING_INTERMISSION) {
mKeyCounter.add(delta);
} else {
ResearchLogger.onUserPause(delta);
}
}
mIsLastKeyDeleteKey = isDeletion;
mLastTapTime = time;
} }
} }