diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index 59f53fc21..57f633ccc 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -237,10 +237,6 @@ public class PointerTracker { + " ignoreModifier=" + ignoreModifierKey + " enabled=" + key.isEnabled()); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.pointerTracker_callListenerOnPressAndCheckKeyboardLayoutChange(key, - ignoreModifierKey); - } if (ignoreModifierKey) { return false; } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index c85122ad3..b63343a50 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -302,9 +302,6 @@ public class KeyboardState { Log.d(TAG, "onPressKey: code=" + Keyboard.printableCode(code) + " single=" + isSinglePointer + " autoCaps=" + autoCaps + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onPressKey(code, this); - } if (code == Keyboard.CODE_SHIFT) { onPressShift(); } else if (code == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) { @@ -337,9 +334,6 @@ public class KeyboardState { Log.d(TAG, "onReleaseKey: code=" + Keyboard.printableCode(code) + " sliding=" + withSliding + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onReleaseKey(this, code, withSliding); - } if (code == Keyboard.CODE_SHIFT) { onReleaseShift(withSliding); } else if (code == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) { @@ -371,9 +365,6 @@ public class KeyboardState { if (DEBUG_EVENT) { Log.d(TAG, "onLongPressTimeout: code=" + Keyboard.printableCode(code) + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onLongPressTimeout(code, this); - } if (mIsAlphabetMode && code == Keyboard.CODE_SHIFT) { if (mAlphabetShiftState.isShiftLocked()) { setShiftLocked(false); @@ -510,9 +501,6 @@ public class KeyboardState { if (DEBUG_EVENT) { Log.d(TAG, "onCancelInput: single=" + isSinglePointer + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onCancelInput(isSinglePointer, this); - } // Switch back to the previous keyboard mode if the user cancels sliding input. if (isSinglePointer) { if (mSwitchState == SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL) { @@ -544,9 +532,6 @@ public class KeyboardState { + " single=" + isSinglePointer + " autoCaps=" + autoCaps + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onCodeInput(code, isSinglePointer, autoCaps, this); - } switch (mSwitchState) { case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: diff --git a/java/src/com/android/inputmethod/latin/ResearchLogger.java b/java/src/com/android/inputmethod/latin/ResearchLogger.java index e7d044667..e792d4733 100644 --- a/java/src/com/android/inputmethod/latin/ResearchLogger.java +++ b/java/src/com/android/inputmethod/latin/ResearchLogger.java @@ -16,6 +16,8 @@ package com.android.inputmethod.latin; +import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.KEYBOARD_LAYOUT_SET; + import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.inputmethodservice.InputMethodService; @@ -35,7 +37,8 @@ import android.view.inputmethod.InputConnection; import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.Keyboard; -import com.android.inputmethod.keyboard.internal.KeyboardState; +import com.android.inputmethod.keyboard.KeyboardId; +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.define.ProductionFlag; import java.io.BufferedWriter; @@ -68,7 +71,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang private static final JsonWriter NULL_JSON_WRITER = new JsonWriter( new OutputStreamWriter(new NullOutputStream())); private static final SimpleDateFormat TIMESTAMP_DATEFORMAT = - new SimpleDateFormat("yyyyMMDDHHmmss", Locale.US); + new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); // constants related to specific log points private static final String WHITESPACE_SEPARATORS = " \t\n\r"; @@ -275,15 +278,19 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final Object innerValue = entry.getValue(); if (innerValue == null) { mJsonWriter.nullValue(); + } else if (innerValue instanceof Boolean) { + mJsonWriter.value((Boolean) innerValue); + } else if (innerValue instanceof Number) { + mJsonWriter.value((Number) innerValue); } else { mJsonWriter.value(innerValue.toString()); } } mJsonWriter.endObject(); - } else if (value instanceof Keyboard) { - Keyboard keyboard = (Keyboard) value; + } else if (value instanceof Key[]) { + Key[] keys = (Key[]) value; mJsonWriter.beginArray(); - for (Key key : keyboard.mKeys) { + for (Key key : keys) { mJsonWriter.beginObject(); mJsonWriter.name("code").value(key.mCode); mJsonWriter.name("altCode").value(key.mAltCode); @@ -294,6 +301,29 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang mJsonWriter.endObject(); } mJsonWriter.endArray(); + } else if (value instanceof SuggestedWords) { + SuggestedWords words = (SuggestedWords) value; + mJsonWriter.beginObject(); + mJsonWriter.name("typedWordValid").value(words.mTypedWordValid); + mJsonWriter.name("hasAutoCorrectionCandidate") + .value(words.mHasAutoCorrectionCandidate); + mJsonWriter.name("isPunctuationSuggestions") + .value(words.mIsPunctuationSuggestions); + mJsonWriter.name("allowsToBeAutoCorrected") + .value(words.mAllowsToBeAutoCorrected); + mJsonWriter.name("isObsoleteSuggestions") + .value(words.mIsObsoleteSuggestions); + mJsonWriter.name("isPrediction") + .value(words.mIsPrediction); + mJsonWriter.name("words"); + mJsonWriter.beginArray(); + final int size = words.size(); + for (int j = 0; j < size; j++) { + SuggestedWordInfo wordInfo = words.getWordInfo(j); + mJsonWriter.value(wordInfo.toString()); + } + mJsonWriter.endArray(); + mJsonWriter.endObject(); } else if (value == null) { mJsonWriter.nullValue(); } else { @@ -370,72 +400,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang getInstance().writeEvent(EVENTKEYS_CORRECTION, values); } - private static final String[] EVENTKEYS_STATECHANGE = { - "STATECHANGE", "subgroup", "details" - }; - public static void logStateChange(final String subgroup, final String details) { - final Object[] values = { - subgroup, details - }; - getInstance().writeEvent(EVENTKEYS_STATECHANGE, values); - } - - private static final String[] EVENTKEYS_KEYBOARDSTATE_ONCANCELINPUT = { - "KEYBOARDSTATE_ONCANCELINPUT", "isSinglePointer", "keyboardState" - }; - public static void keyboardState_onCancelInput(final boolean isSinglePointer, - final KeyboardState keyboardState) { - final Object[] values = { - isSinglePointer, keyboardState.toString() - }; - getInstance().writeEvent(EVENTKEYS_KEYBOARDSTATE_ONCANCELINPUT, values); - } - - private static final String[] EVENTKEYS_KEYBOARDSTATE_ONCODEINPUT = { - "KEYBOARDSTATE_ONCODEINPUT", "code", "isSinglePointer", "autoCaps", "keyboardState" - }; - public static void keyboardState_onCodeInput( - final int code, final boolean isSinglePointer, final int autoCaps, - final KeyboardState keyboardState) { - final Object[] values = { - Keyboard.printableCode(code), isSinglePointer, autoCaps, keyboardState.toString() - }; - getInstance().writeEvent(EVENTKEYS_KEYBOARDSTATE_ONCODEINPUT, values); - } - - private static final String[] EVENTKEYS_KEYBOARDSTATE_ONLONGPRESSTIMEOUT = { - "KEYBOARDSTATE_ONLONGPRESSTIMEOUT", "code", "keyboardState" - }; - public static void keyboardState_onLongPressTimeout(final int code, - final KeyboardState keyboardState) { - final Object[] values = { - Keyboard.printableCode(code), keyboardState.toString() - }; - getInstance().writeEvent(EVENTKEYS_KEYBOARDSTATE_ONLONGPRESSTIMEOUT, values); - } - - private static final String[] EVENTKEYS_KEYBOARDSTATE_ONPRESSKEY = { - "KEYBOARDSTATE_ONPRESSKEY", "code", "keyboardState" - }; - public static void keyboardState_onPressKey(final int code, - final KeyboardState keyboardState) { - final Object[] values = { - Keyboard.printableCode(code), keyboardState.toString() - }; - getInstance().writeEvent(EVENTKEYS_KEYBOARDSTATE_ONPRESSKEY, values); - } - - private static final String[] EVENTKEYS_KEYBOARDSTATE_ONRELEASEKEY = { - "KEYBOARDSTATE_ONRELEASEKEY", "code", "withSliding", "keyboardState" - }; - public static void keyboardState_onReleaseKey(final KeyboardState keyboardState, final int code, - final boolean withSliding) { - final Object[] values = { - Keyboard.printableCode(code), withSliding, keyboardState.toString() - }; - getInstance().writeEvent(EVENTKEYS_KEYBOARDSTATE_ONRELEASEKEY, values); - } - private static final String[] EVENTKEYS_LATINIME_COMMITCURRENTAUTOCORRECTION = { "LATINIME_COMMITCURRENTAUTOCORRECTION", "typedWord", "autoCorrection" }; @@ -529,7 +493,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang private static final String[] EVENTKEYS_LATINIME_ONSTARTINPUTVIEWINTERNAL = { "LATINIME_ONSTARTINPUTVIEWINTERNAL", "uuid", "packageName", "inputType", "imeOptions", - "display", "model", "prefs" + "fieldId", "display", "model", "prefs" }; public static void latinIME_onStartInputViewInternal(final EditorInfo editorInfo, @@ -537,7 +501,8 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang if (editorInfo != null) { final Object[] values = { getUUID(prefs), editorInfo.packageName, Integer.toHexString(editorInfo.inputType), - Integer.toHexString(editorInfo.imeOptions), Build.DISPLAY, Build.MODEL, prefs + Integer.toHexString(editorInfo.imeOptions), editorInfo.fieldId, Build.DISPLAY, + Build.MODEL, prefs }; getInstance().writeEvent(EVENTKEYS_LATINIME_ONSTARTINPUTVIEWINTERNAL, values); } @@ -558,7 +523,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang private static final String[] EVENTKEYS_LATINIME_ONUPDATESELECTION = { "LATINIME_ONUPDATESELECTION", "lastSelectionStart", "lastSelectionEnd", "oldSelStart", "oldSelEnd", "newSelStart", "newSelEnd", "composingSpanStart", "composingSpanEnd", - "expectingUpdateSelection", "expectingUpdateSelectionFromLogger", "context" + "expectingUpdateSelection", "expectingUpdateSelectionFromLogger", "context" }; public static void latinIME_onUpdateSelection(final int lastSelectionStart, @@ -666,14 +631,33 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } private static final String[] EVENTKEYS_LATINKEYBOARDVIEW_SETKEYBOARD = { - "LATINKEYBOARDVIEW_SETKEYBOARD", "id", "tw", "th", "keys" + "LATINKEYBOARDVIEW_SETKEYBOARD", "elementId", "locale", "orientation", "width", + "modeName", "action", "navigateNext", "navigatePrevious", "clobberSettingsKey", + "passwordInput", "shortcutKeyEnabled", "hasShortcutKey", "languageSwitchKeyEnabled", + "isMultiLine", "tw", "th", "keys" }; public static void latinKeyboardView_setKeyboard(final Keyboard keyboard) { if (keyboard != null) { + final KeyboardId kid = keyboard.mId; final Object[] values = { - keyboard.mId.toString(), keyboard.mOccupiedWidth, keyboard.mOccupiedHeight, - keyboard - }; + KeyboardId.elementIdToName(kid.mElementId), + kid.mLocale + ":" + kid.mSubtype.getExtraValueOf(KEYBOARD_LAYOUT_SET), + kid.mOrientation, + kid.mWidth, + KeyboardId.modeName(kid.mMode), + kid.imeAction(), + kid.navigateNext(), + kid.navigatePrevious(), + kid.mClobberSettingsKey, + kid.passwordInput(), + kid.mShortcutKeyEnabled, + kid.mHasShortcutKey, + kid.mLanguageSwitchKeyEnabled, + kid.isMultiLine(), + keyboard.mOccupiedWidth, + keyboard.mOccupiedHeight, + keyboard.mKeys + }; getInstance().writeEvent(EVENTKEYS_LATINKEYBOARDVIEW_SETKEYBOARD, values); } } @@ -713,23 +697,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } } - private static final String[] - EVENTKEYS_POINTERTRACKER_CALLLISTENERONPRESSANDCHECKKEYBOARDLAYOUTCHANGE = { - "POINTERTRACKER_CALLLISTENERONPRESSANDCHECKKEYBOARDLAYOUTCHANGE", "code", - "ignoreModifierKey", "isEnabled" - }; - public static void pointerTracker_callListenerOnPressAndCheckKeyboardLayoutChange( - final Key key, final boolean ignoreModifierKey) { - if (key != null) { - final Object[] values = { - KeyDetector.printableCode(key), ignoreModifierKey, key.isEnabled() - }; - getInstance().writeEvent( - EVENTKEYS_POINTERTRACKER_CALLLISTENERONPRESSANDCHECKKEYBOARDLAYOUTCHANGE, - values); - } - } - private static final String[] EVENTKEYS_POINTERTRACKER_CALLLISTENERONRELEASE = { "POINTERTRACKER_CALLLISTENERONRELEASE", "code", "withSliding", "ignoreModifierKey", "isEnabled" @@ -785,7 +752,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang public static void suggestionsView_setSuggestions(final SuggestedWords suggestedWords) { if (suggestedWords != null) { final Object[] values = { - suggestedWords.toString() + suggestedWords }; getInstance().writeEvent(EVENTKEYS_SUGGESTIONSVIEW_SETSUGGESTIONS, values); }