aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java35
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java11
-rw-r--r--java/src/com/android/inputmethod/latin/LatinImeLogger.java4
-rw-r--r--java/src/com/android/inputmethod/latin/ResearchLogger.java2
-rw-r--r--java/src/com/android/inputmethod/latin/Settings.java6
-rw-r--r--tests/src/com/android/inputmethod/latin/ResearchLoggerTests.java156
6 files changed, 32 insertions, 182 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
index 3f6c37477..7194cced3 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
@@ -52,6 +52,7 @@ import com.android.inputmethod.latin.StringUtils;
import com.android.inputmethod.latin.SubtypeUtils;
import com.android.inputmethod.latin.Utils;
import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils;
+import com.android.inputmethod.latin.define.ProductionFlag;
import java.util.Locale;
import java.util.WeakHashMap;
@@ -694,15 +695,17 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
+ size + "," + pressure);
}
}
- if (ResearchLogger.sIsLogging) {
- // TODO: remove redundant calculations of size and pressure by
- // removing UsabilityStudyLog code once the ResearchLogger is mature enough
- final float size = me.getSize(index);
- final float pressure = me.getPressure(index);
- if (action != MotionEvent.ACTION_MOVE) {
- // Skip ACTION_MOVE events as they are logged below
- ResearchLogger.getInstance().logMotionEvent(action, eventTime, id, x,
- y, size, pressure);
+ if (ProductionFlag.IS_EXPERIMENTAL) {
+ if (ResearchLogger.sIsLogging) {
+ // TODO: remove redundant calculations of size and pressure by
+ // removing UsabilityStudyLog code once the ResearchLogger is mature enough
+ final float size = me.getSize(index);
+ final float pressure = me.getPressure(index);
+ if (action != MotionEvent.ACTION_MOVE) {
+ // Skip ACTION_MOVE events as they are logged below
+ ResearchLogger.getInstance().logMotionEvent(action, eventTime, id, x, y,
+ size, pressure);
+ }
}
}
@@ -770,12 +773,14 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
+ pointerId + "," + px + "," + py + ","
+ pointerSize + "," + pointerPressure);
}
- if (ResearchLogger.sIsLogging) {
- // TODO: earlier comment about redundant calculations applies here too
- final float pointerSize = me.getSize(i);
- final float pointerPressure = me.getPressure(i);
- ResearchLogger.getInstance().logMotionEvent(action, eventTime, pointerId,
- px, py, pointerSize, pointerPressure);
+ if (ProductionFlag.IS_EXPERIMENTAL) {
+ if (ResearchLogger.sIsLogging) {
+ // TODO: earlier comment about redundant calculations applies here too
+ final float pointerSize = me.getSize(i);
+ final float pointerPressure = me.getPressure(i);
+ ResearchLogger.getInstance().logMotionEvent(action, eventTime, pointerId,
+ px, py, pointerSize, pointerPressure);
+ }
}
}
} else {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 7272006a2..0669ee668 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -69,6 +69,7 @@ import com.android.inputmethod.keyboard.KeyboardSwitcher;
import com.android.inputmethod.keyboard.KeyboardView;
import com.android.inputmethod.keyboard.LatinKeyboardView;
import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils;
+import com.android.inputmethod.latin.define.ProductionFlag;
import com.android.inputmethod.latin.suggestions.SuggestionsView;
import java.io.FileDescriptor;
@@ -439,7 +440,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
mPrefs = prefs;
LatinImeLogger.init(this, prefs);
- ResearchLogger.init(this, prefs);
+ if (ProductionFlag.IS_EXPERIMENTAL) {
+ ResearchLogger.init(this, prefs);
+ }
LanguageSwitcherProxy.init(this, prefs);
InputMethodManagerCompatWrapper.init(this);
SubtypeSwitcher.init(this);
@@ -1264,8 +1267,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
mLastKeyTime = when;
- if (ResearchLogger.sIsLogging) {
- ResearchLogger.getInstance().logKeyEvent(primaryCode, x, y);
+ if (ProductionFlag.IS_EXPERIMENTAL) {
+ if (ResearchLogger.sIsLogging) {
+ ResearchLogger.getInstance().logKeyEvent(primaryCode, x, y);
+ }
}
final KeyboardSwitcher switcher = mKeyboardSwitcher;
diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
index 079f3b5dd..732efadd6 100644
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
@@ -80,8 +80,4 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
public static void onPrintAllUsabilityStudyLogs() {
}
-
- public static boolean isResearcherPackage(Context context) {
- return false;
- }
}
diff --git a/java/src/com/android/inputmethod/latin/ResearchLogger.java b/java/src/com/android/inputmethod/latin/ResearchLogger.java
index 3b110bd78..0694ffe77 100644
--- a/java/src/com/android/inputmethod/latin/ResearchLogger.java
+++ b/java/src/com/android/inputmethod/latin/ResearchLogger.java
@@ -41,7 +41,7 @@ import java.util.Date;
* This class logs operations on the IME keyboard, including what the user has typed.
* Data is stored locally in a file in app-specific storage.
*
- * This functionality is off by default.
+ * This functionality is off by default. See {@link ProductionFlag.IS_EXPERIMENTAL}.
*/
public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = ResearchLogger.class.getSimpleName();
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 72391f31e..110264892 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -46,6 +46,7 @@ import com.android.inputmethod.compat.CompatUtils;
import com.android.inputmethod.compat.InputMethodServiceCompatWrapper;
import com.android.inputmethod.compat.VibratorCompatWrapper;
import com.android.inputmethod.deprecated.VoiceProxy;
+import com.android.inputmethod.latin.define.ProductionFlag;
import com.android.inputmethodcommon.InputMethodSettingsActivity;
import java.util.Locale;
@@ -238,17 +239,16 @@ public class Settings extends InputMethodSettingsActivity
textCorrectionGroup.removePreference(dictionaryLink);
}
- final boolean isResearcherPackage = LatinImeLogger.isResearcherPackage(this);
final boolean showUsabilityStudyModeOption =
res.getBoolean(R.bool.config_enable_usability_study_mode_option)
- || isResearcherPackage || ENABLE_EXPERIMENTAL_SETTINGS;
+ || ProductionFlag.IS_EXPERIMENTAL || ENABLE_EXPERIMENTAL_SETTINGS;
final Preference usabilityStudyPref = findPreference(PREF_USABILITY_STUDY_MODE);
if (!showUsabilityStudyModeOption) {
if (usabilityStudyPref != null) {
miscSettings.removePreference(usabilityStudyPref);
}
}
- if (isResearcherPackage) {
+ if (ProductionFlag.IS_EXPERIMENTAL) {
if (usabilityStudyPref instanceof CheckBoxPreference) {
CheckBoxPreference checkbox = (CheckBoxPreference)usabilityStudyPref;
checkbox.setChecked(prefs.getBoolean(PREF_USABILITY_STUDY_MODE, true));
diff --git a/tests/src/com/android/inputmethod/latin/ResearchLoggerTests.java b/tests/src/com/android/inputmethod/latin/ResearchLoggerTests.java
deleted file mode 100644
index 6ccc4f22b..000000000
--- a/tests/src/com/android/inputmethod/latin/ResearchLoggerTests.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.latin;
-
-import android.inputmethodservice.InputMethodService;
-import android.os.Handler;
-import android.util.Log;
-import android.view.MotionEvent;
-
-import com.android.inputmethod.latin.ResearchLogger.LogFileManager;
-
-import java.io.FileNotFoundException;
-
-public class ResearchLoggerTests extends InputTestsBase {
-
- private static final String TAG = ResearchLoggerTests.class.getSimpleName();
- private static final int TEST_INT = 0x12345678;
- private static final long TEST_LONG = 0x1234567812345678L;
-
- private static ResearchLogger sLogger;
- private MockLogFileManager mMockLogFileManager;
-
- @Override
- protected void setUp() {
- super.setUp();
- sLogger = ResearchLogger.getInstance();
- mMockLogFileManager = new MockLogFileManager();
- sLogger.setLogFileManager(mMockLogFileManager);
- ResearchLogger.sIsLogging = true;
- }
-
- public static class MockLogFileManager extends LogFileManager {
- private final StringBuilder mContents = new StringBuilder();
-
- @Override
- public void init(InputMethodService ims) {
- }
-
- @Override
- public synchronized void createLogFile() {
- mContents.setLength(0);
- }
-
- @Override
- public synchronized void createLogFile(String dir, String filename)
- throws FileNotFoundException {
- mContents.setLength(0);
- }
-
- @Override
- public synchronized boolean append(String s) {
- mContents.append(s);
- return true;
- }
-
- @Override
- public synchronized void reset() {
- mContents.setLength(0);
- }
-
- @Override
- public synchronized void close() {
- mContents.setLength(0);
- }
-
- private String getAppendedString() {
- return mContents.toString();
- }
- }
-
- private void waitOnResearchLogger() {
- // post another Runnable that notify()'s the test that it may proceed.
- // assumes that the MessageQueue is processed in-order
- Handler handler = sLogger.mLoggingHandler;
- handler.post(new Runnable() {
- @Override
- public void run() {
- synchronized (ResearchLoggerTests.this) {
- ResearchLoggerTests.this.notify();
- }
- }
- });
- synchronized (this) {
- try {
- wait();
- } catch (InterruptedException e) {
- Log.i(TAG, "interrupted when waiting for handler to finish.", e);
- }
- }
- }
-
- /*********************** Tests *********************/
- public void testLogStartsEmpty() {
- waitOnResearchLogger();
- String result = mMockLogFileManager.getAppendedString();
- assertEquals(result, "");
- }
-
- public void testMotionEvent() {
- // verify that input values appear somewhere in output
- sLogger.logMotionEvent(MotionEvent.ACTION_CANCEL,
- TEST_LONG, TEST_INT, 1111, 3333, 5555, 7777);
- waitOnResearchLogger();
- String output = mMockLogFileManager.getAppendedString();
- assertTrue(output.matches("(?sui).*\\bcancel\\b.*"));
- assertFalse(output.matches("(?sui).*\\bdown\\b.*"));
- assertTrue(output.matches("(?s).*\\b" + TEST_LONG + "\\b.*"));
- assertTrue(output.matches("(?s).*\\b" + TEST_INT + "\\b.*"));
- assertTrue(output.matches("(?s).*\\b1111\\b.*"));
- assertTrue(output.matches("(?s).*\\b3333\\b.*"));
- assertTrue(output.matches("(?s).*\\b5555\\b.*"));
- assertTrue(output.matches("(?s).*\\b7777\\b.*"));
- }
-
- public void testKeyEvent() {
- type("abc");
- waitOnResearchLogger();
- String output = mMockLogFileManager.getAppendedString();
- assertTrue(output.matches("(?s).*\\ba\\b.*"));
- assertTrue(output.matches("(?s).*\\bb\\b.*"));
- assertTrue(output.matches("(?s).*\\bc\\b.*"));
- }
-
- public void testCorrection() {
- sLogger.logCorrection("aaaa", "thos", "this", 1);
- waitOnResearchLogger();
- String output = mMockLogFileManager.getAppendedString();
- assertTrue(output.matches("(?sui).*\\baaaa\\b.*"));
- assertTrue(output.matches("(?sui).*\\bthos\\b.*"));
- assertTrue(output.matches("(?sui).*\\bthis\\b.*"));
- }
-
- public void testStateChange() {
- sLogger.logStateChange("aaaa", "bbbb");
- waitOnResearchLogger();
- String output = mMockLogFileManager.getAppendedString();
- assertTrue(output.matches("(?sui).*\\baaaa\\b.*"));
- assertTrue(output.matches("(?sui).*\\bbbbb\\b.*"));
- }
-
- // TODO: add integration tests that start at point of event generation.
-}