aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorSatoshi Kataoka <satok@google.com>2013-01-23 15:13:52 +0900
committerSatoshi Kataoka <satok@google.com>2013-01-23 16:29:19 +0900
commitf1074c508e70b3489dc85c036f7ed49d3196ba47 (patch)
tree9a5bc9d17604ff6ea62af1f6f84f3b4b0cc4eee8 /java/src
parent19d68ce2009c2ef4808d1d9096c77ec06818ef2c (diff)
downloadlatinime-f1074c508e70b3489dc85c036f7ed49d3196ba47.tar.gz
latinime-f1074c508e70b3489dc85c036f7ed49d3196ba47.tar.xz
latinime-f1074c508e70b3489dc85c036f7ed49d3196ba47.zip
Throw exception when invalid time stamps are detected in debug mode
Change-Id: I360b5bd09869bc85ab3bccb8a43a20fed0035d9b
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/InputPointers.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/InputPointers.java b/java/src/com/android/inputmethod/latin/InputPointers.java
index 4d6c4f356..81c833000 100644
--- a/java/src/com/android/inputmethod/latin/InputPointers.java
+++ b/java/src/com/android/inputmethod/latin/InputPointers.java
@@ -18,8 +18,11 @@ package com.android.inputmethod.latin;
import com.android.inputmethod.annotations.UsedForTesting;
+import android.util.Log;
+
// TODO: This class is not thread-safe.
public final class InputPointers {
+ private static final String TAG = InputPointers.class.getSimpleName();
private final int mDefaultCapacity;
private final ResizableIntArray mXCoordinates;
private final ResizableIntArray mYCoordinates;
@@ -126,6 +129,11 @@ public final class InputPointers {
}
public int[] getTimes() {
+ if (LatinImeLogger.sDBG) {
+ if (!isValidTimeStamps()) {
+ throw new RuntimeException("Time stamps are invalid.");
+ }
+ }
return mTimes.getPrimitiveArray();
}
@@ -134,4 +142,18 @@ public final class InputPointers {
return "size=" + getPointerSize() + " id=" + mPointerIds + " time=" + mTimes
+ " x=" + mXCoordinates + " y=" + mYCoordinates;
}
+
+ private boolean isValidTimeStamps() {
+ final int[] times = mTimes.getPrimitiveArray();
+ for (int i = 1; i < getPointerSize(); ++i) {
+ if (times[i] < times[i - 1]) {
+ // dump
+ for (int j = 0; j < times.length; ++j) {
+ Log.d(TAG, "--- (" + j + ") " + times[j]);
+ }
+ return false;
+ }
+ }
+ return true;
+ }
}