[Rlog59b] Log CodeInput and KeyCode properly

- Fix function calls to happen at more resilient times
- In the case of phantom spaces, ensure that the logStatement goes to the
  correct logUnit

Change-Id: Ida8f6eba1e4f33d9f9b4735316e3c6316ed316c0
main
Kurt Partridge 2013-01-10 14:40:29 -08:00
parent 75e69753b7
commit 99931201d0
2 changed files with 29 additions and 9 deletions

View File

@ -1301,13 +1301,13 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
} }
private void sendKeyCodePoint(final int code) { private void sendKeyCodePoint(final int code) {
if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.latinIME_sendKeyCodePoint(code);
}
// TODO: Remove this special handling of digit letters. // TODO: Remove this special handling of digit letters.
// For backward compatibility. See {@link InputMethodService#sendKeyChar(char)}. // For backward compatibility. See {@link InputMethodService#sendKeyChar(char)}.
if (code >= '0' && code <= '9') { if (code >= '0' && code <= '9') {
sendDownUpKeyEventForBackwardCompatibility(code - '0' + KeyEvent.KEYCODE_0); sendDownUpKeyEventForBackwardCompatibility(code - '0' + KeyEvent.KEYCODE_0);
if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.latinIME_sendKeyCodePoint(code);
}
return; return;
} }
@ -1327,6 +1327,9 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
// Implementation of {@link KeyboardActionListener}. // Implementation of {@link KeyboardActionListener}.
@Override @Override
public void onCodeInput(final int primaryCode, final int x, final int y) { public void onCodeInput(final int primaryCode, final int x, final int y) {
if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.latinIME_onCodeInput(primaryCode, x, y);
}
final long when = SystemClock.uptimeMillis(); final long when = SystemClock.uptimeMillis();
if (primaryCode != Constants.CODE_DELETE || when > mLastKeyTime + QUICK_PRESS) { if (primaryCode != Constants.CODE_DELETE || when > mLastKeyTime + QUICK_PRESS) {
mDeleteCount = 0; mDeleteCount = 0;
@ -1420,9 +1423,6 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
mEnteredText = null; mEnteredText = null;
} }
mConnection.endBatchEdit(); mConnection.endBatchEdit();
if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.latinIME_onCodeInput(primaryCode, x, y);
}
} }
// Called from PointerTracker through the KeyboardActionListener interface // Called from PointerTracker through the KeyboardActionListener interface
@ -2324,6 +2324,9 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
public void promotePhantomSpace() { public void promotePhantomSpace() {
if (mSettings.getCurrent().shouldInsertSpacesAutomatically()) { if (mSettings.getCurrent().shouldInsertSpacesAutomatically()) {
sendKeyCodePoint(Constants.CODE_SPACE); sendKeyCodePoint(Constants.CODE_SPACE);
if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.latinIME_promotePhantomSpace();
}
} }
} }

View File

@ -1175,9 +1175,8 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
/** /**
* Log a call to LatinIME.sendKeyCodePoint(). * Log a call to LatinIME.sendKeyCodePoint().
* *
* SystemResponse: The IME is simulating a hardware keypress. This happens for numbers; other * SystemResponse: The IME is inserting text into the TextView for numbers, fixed strings, or
* input typically goes through RichInputConnection.setComposingText() and * some other unusual mechanism.
* RichInputConnection.commitText().
*/ */
private static final LogStatement LOGSTATEMENT_LATINIME_SENDKEYCODEPOINT = private static final LogStatement LOGSTATEMENT_LATINIME_SENDKEYCODEPOINT =
new LogStatement("LatinIMESendKeyCodePoint", true, false, "code"); new LogStatement("LatinIMESendKeyCodePoint", true, false, "code");
@ -1190,6 +1189,24 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
} }
} }
/**
* Log a call to LatinIME.promotePhantomSpace().
*
* SystemResponse: The IME is inserting a real space in place of a phantom space.
*/
private static final LogStatement LOGSTATEMENT_LATINIME_PROMOTEPHANTOMSPACE =
new LogStatement("LatinIMEPromotPhantomSpace", false, false);
public static void latinIME_promotePhantomSpace() {
final ResearchLogger researchLogger = getInstance();
final LogUnit logUnit;
if (researchLogger.mMainLogBuffer == null) {
logUnit = researchLogger.mCurrentLogUnit;
} else {
logUnit = researchLogger.mMainLogBuffer.peekLastLogUnit();
}
researchLogger.enqueueEvent(logUnit, LOGSTATEMENT_LATINIME_PROMOTEPHANTOMSPACE);
}
/** /**
* Log a call to LatinIME.swapSwapperAndSpace(). * Log a call to LatinIME.swapSwapperAndSpace().
* *