From 01303e39f52daf1ccd931a15ca4ffd5a2e507f9c Mon Sep 17 00:00:00 2001 From: satok Date: Wed, 19 May 2010 14:03:00 +0900 Subject: [PATCH] Commit on finishInput Change-Id: I26254cfdaecd0d85571be3f930476040de935d6c --- java/res/values/strings.xml | 3 + java/res/xml/prefs.xml | 11 +++- .../android/inputmethod/latin/LatinIME.java | 4 ++ .../inputmethod/latin/LatinImeLogger.java | 65 ++++++++++++------- 4 files changed, 60 insertions(+), 23 deletions(-) diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 579375863..a1b4810bf 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -354,4 +354,7 @@ 4 5 + + Debug (Temporary) + diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index d6b7486ee..8b44dd974 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -38,10 +38,11 @@ /> + + + diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index d96ef888a..1933ad8ba 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -554,6 +554,8 @@ public class LatinIME extends InputMethodService public void onFinishInput() { super.onFinishInput(); + LatinImeLogger.commit(); + if (VOICE_INSTALLED && !mConfigurationChanging) { if (mAfterVoiceInput) { mVoiceInput.flushAllTextModificationCounters(); @@ -655,6 +657,8 @@ public class LatinIME extends InputMethodService @Override public void hideWindow() { + LatinImeLogger.commit(); + if (TRACE) Debug.stopMethodTracing(); if (mOptionsDialog != null && mOptionsDialog.isShowing()) { mOptionsDialog.dismiss(); diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java index 716932497..54778b9ef 100644 --- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java +++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.DropBoxManager; import android.preference.PreferenceManager; +import android.text.TextUtils; import android.text.format.DateUtils; import android.util.Log; @@ -28,7 +29,7 @@ import java.util.Collections; public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "LatinIMELogs"; - private static final boolean DBG = false; + private static boolean sDBG = false; // DEFAULT_LOG_ENABLED should be false when released to public. private static final boolean DEFAULT_LOG_ENABLED = true; @@ -44,7 +45,8 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang private static final int ID_ACTUAL_CHAR_COUNT = 6; private static final int ID_THEME_ID = 7; - private static final String PREF_ENABLE_LOG = "enable_log"; + private static final String PREF_ENABLE_LOG = "enable_logging"; + private static final String PREF_DEBUG_MODE = "debug_mode"; public static boolean sLogEnabled = true; private static LatinImeLogger sLatinImeLogger = new LatinImeLogger(); @@ -107,6 +109,7 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang sLogEnabled = prefs.getBoolean(PREF_ENABLE_LOG, DEFAULT_LOG_ENABLED); mThemeId = prefs.getString(KeyboardSwitcher.PREF_KEYBOARD_LAYOUT, KeyboardSwitcher.DEFAULT_LAYOUT_ID); + sDBG = prefs.getBoolean(PREF_DEBUG_MODE, sDBG); prefs.registerOnSharedPreferenceChangeListener(this); } @@ -126,6 +129,9 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang * Check if the input string is safe as an entry or not. */ private static boolean checkStringDataSafe(String s) { + if (sDBG) { + Log.d(TAG, "Check String safety: " + s); + } for (int i = 0; i < s.length(); ++i) { if (!Character.isDigit(s.charAt(i))) { return true; @@ -134,15 +140,6 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang return false; } - private static boolean checkStringsDataSafe(String[] strings) { - for(String s: strings) { - if (!checkStringDataSafe(s)) { - return false; - } - } - return true; - } - private void addCountEntry(long time) { mLogBuffer.add(new LogEntry (time, ID_DELETE_COUNT, new String[] {String.valueOf(mDeleteCount)})); @@ -200,12 +197,18 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang case ID_AUTOSUGGESTION: ++mWordCount; String[] dataStrings = (String[]) data; + if (dataStrings.length != 3) { + if (sDBG) { + Log.e(TAG, "The length of string array is invalid."); + } + break; + } mActualCharCount += dataStrings[1].length(); - if (checkStringsDataSafe(dataStrings)) { + if (checkStringDataSafe(dataStrings[0]) && checkStringDataSafe(dataStrings[1])) { mPrivacyLogBuffer.add( new LogEntry (System.currentTimeMillis(), tag, dataStrings)); } else { - if (DBG) { + if (sDBG) { Log.d(TAG, "Skipped to add an entry because data is unsafe."); } } @@ -213,18 +216,24 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang case ID_AUTOSUGGESTIONCANCELED: --mWordCount; dataStrings = (String[]) data; + if (dataStrings.length != 3) { + if (sDBG) { + Log.e(TAG, "The length of string array is invalid."); + } + break; + } mActualCharCount -= dataStrings[1].length(); - if (checkStringsDataSafe(dataStrings)) { + if (checkStringDataSafe(dataStrings[0]) && checkStringDataSafe(dataStrings[1])) { mPrivacyLogBuffer.add( new LogEntry (System.currentTimeMillis(), tag, dataStrings)); } else { - if (DBG) { + if (sDBG) { Log.d(TAG, "Skipped to add an entry because data is unsafe."); } } break; default: - if (DBG) { + if (sDBG) { Log.e(TAG, "Log Tag is not entried."); } break; @@ -237,19 +246,29 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang addCountEntry(now); addThemeIdEntry(now); String s = LogSerializer.createStringFromEntries(mLogBuffer); - if (DBG) { - Log.d(TAG, "Commit log: " + s); + if (!TextUtils.isEmpty(s)) { + if (sDBG) { + Log.d(TAG, "Commit log: " + s); + } + mDropBox.addText(TAG, s); } - mDropBox.addText(TAG, s); reset(); mLastTimeSend = now; } private synchronized void sendLogToDropBox(int tag, Object s) { long now = System.currentTimeMillis(); - if (DBG) { - Log.d(TAG, "SendLog: " + tag + ";" + s + "," - + (now - mLastTimeSend - MINIMUMSENDINTERVAL) ); + if (sDBG) { + String out = ""; + if (s instanceof String[]) { + for (String str: ((String[]) s)) { + out += str + ","; + } + } else if (s instanceof Integer) { + out += (Integer) s; + } + Log.d(TAG, "SendLog: " + tag + ";" + out + ", will be sent after " + + (- (now - mLastTimeSend - MINIMUMSENDINTERVAL) / 1000) + " sec."); } if (now - mLastTimeActive > MINIMUMSENDINTERVAL) { // Send a log before adding an log entry if the last data is too old. @@ -275,6 +294,8 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang } else if (KeyboardSwitcher.PREF_KEYBOARD_LAYOUT.equals(key)) { mThemeId = sharedPreferences.getString(KeyboardSwitcher.PREF_KEYBOARD_LAYOUT, KeyboardSwitcher.DEFAULT_LAYOUT_ID); + } else if (PREF_DEBUG_MODE.equals(key)) { + sDBG = sharedPreferences.getBoolean(PREF_DEBUG_MODE, sDBG); } }