diff options
author | 2013-01-23 15:13:52 +0900 | |
---|---|---|
committer | 2013-01-23 16:29:19 +0900 | |
commit | f1074c508e70b3489dc85c036f7ed49d3196ba47 (patch) | |
tree | 9a5bc9d17604ff6ea62af1f6f84f3b4b0cc4eee8 /java/src/com/android/inputmethod/latin/InputPointers.java | |
parent | 19d68ce2009c2ef4808d1d9096c77ec06818ef2c (diff) | |
download | latinime-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/com/android/inputmethod/latin/InputPointers.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/InputPointers.java | 22 |
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; + } } |