aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2012-08-07 14:45:06 +0900
committerTadashi G. Takaoka <takaoka@google.com>2012-08-07 16:56:41 +0900
commit0cc425bd9c476d3cb6708554282a3242019eb317 (patch)
treeb5036e5e7e915094c6eca25861c2c53a68b6dc00 /java/src
parent27e48447a449d2eb534dfa2dc07060727e1a8fb0 (diff)
downloadlatinime-0cc425bd9c476d3cb6708554282a3242019eb317.tar.gz
latinime-0cc425bd9c476d3cb6708554282a3242019eb317.tar.xz
latinime-0cc425bd9c476d3cb6708554282a3242019eb317.zip
Add PointerTrackerQueue unit tests
This is a groundwork to elminate LinkedList from PointerTrackerQueue. Change-Id: Ib77780537ceb0b4273fb8e483977ab76124c5ce7
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java19
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java50
2 files changed, 37 insertions, 32 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index e7e11f481..184011ffe 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -34,7 +34,7 @@ import com.android.inputmethod.research.ResearchLogger;
import java.util.ArrayList;
-public class PointerTracker {
+public class PointerTracker implements PointerTrackerQueue.ElementActions {
private static final String TAG = PointerTracker.class.getSimpleName();
private static final boolean DEBUG_EVENT = false;
private static final boolean DEBUG_MOVE_EVENT = false;
@@ -414,6 +414,7 @@ public class PointerTracker {
mKeyQuarterWidthSquared = keyQuarterWidth * keyQuarterWidth;
}
+ @Override
public boolean isInSlidingKeyInput() {
return mIsInSlidingKeyInput;
}
@@ -422,6 +423,7 @@ public class PointerTracker {
return mCurrentKey;
}
+ @Override
public boolean isModifier() {
return mCurrentKey != null && mCurrentKey.isModifier();
}
@@ -805,7 +807,7 @@ public class PointerTracker {
if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.pointerTracker_onMoveEvent(x, y, lastX, lastY);
}
- onUpEventInternal(x, y, eventTime);
+ onUpEventInternal();
onDownEventInternal(x, y, eventTime);
} else {
// HACK: If there are currently multiple touches, register the key even if
@@ -815,7 +817,7 @@ public class PointerTracker {
// this hack.
if (me != null && me.getPointerCount() > 1
&& !sPointerTrackerQueue.hasModifierKeyOlderThan(this)) {
- onUpEventInternal(x, y, eventTime);
+ onUpEventInternal();
}
if (!mIsPossibleGesture) {
mKeyAlreadyProcessed = true;
@@ -860,20 +862,21 @@ public class PointerTracker {
}
queue.remove(this);
}
- onUpEventInternal(x, y, eventTime);
+ onUpEventInternal();
}
// Let this pointer tracker know that one of newer-than-this pointer trackers got an up event.
// This pointer tracker needs to keep the key top graphics "pressed", but needs to get a
// "virtual" up event.
- public void onPhantomUpEvent(int x, int y, long eventTime) {
+ @Override
+ public void onPhantomUpEvent(long eventTime) {
if (DEBUG_EVENT)
- printTouchEvent("onPhntEvent:", x, y, eventTime);
- onUpEventInternal(x, y, eventTime);
+ printTouchEvent("onPhntEvent:", getLastX(), getLastY(), eventTime);
+ onUpEventInternal();
mKeyAlreadyProcessed = true;
}
- private void onUpEventInternal(int x, int y, long eventTime) {
+ private void onUpEventInternal() {
mTimerProxy.cancelKeyTimers();
mIsInSlidingKeyInput = false;
mIsPossibleGesture = false;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
index e4a71844a..bd1648014 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
@@ -18,9 +18,6 @@ package com.android.inputmethod.keyboard.internal;
import android.util.Log;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.PointerTracker;
-
import java.util.Iterator;
import java.util.LinkedList;
@@ -28,37 +25,43 @@ public class PointerTrackerQueue {
private static final String TAG = PointerTrackerQueue.class.getSimpleName();
private static final boolean DEBUG = false;
+ public interface ElementActions {
+ public boolean isModifier();
+ public boolean isInSlidingKeyInput();
+ public void onPhantomUpEvent(long eventTime);
+ }
+
// TODO: Use ring buffer instead of {@link LinkedList}.
- private final LinkedList<PointerTracker> mQueue = new LinkedList<PointerTracker>();
+ private final LinkedList<ElementActions> mQueue = new LinkedList<ElementActions>();
public int size() {
return mQueue.size();
}
- public synchronized void add(PointerTracker tracker) {
+ public synchronized void add(ElementActions tracker) {
mQueue.add(tracker);
}
- public synchronized void remove(PointerTracker tracker) {
+ public synchronized void remove(ElementActions tracker) {
mQueue.remove(tracker);
}
- public synchronized void releaseAllPointersOlderThan(PointerTracker tracker,
+ public synchronized void releaseAllPointersOlderThan(ElementActions tracker,
long eventTime) {
if (DEBUG) {
- Log.d(TAG, "releaseAllPoniterOlderThan: [" + tracker.mPointerId + "] " + this);
+ Log.d(TAG, "releaseAllPoniterOlderThan: " + tracker + " " + this);
}
if (!mQueue.contains(tracker)) {
return;
}
- final Iterator<PointerTracker> it = mQueue.iterator();
+ final Iterator<ElementActions> it = mQueue.iterator();
while (it.hasNext()) {
- final PointerTracker t = it.next();
+ final ElementActions t = it.next();
if (t == tracker) {
break;
}
if (!t.isModifier()) {
- t.onPhantomUpEvent(t.getLastX(), t.getLastY(), eventTime);
+ t.onPhantomUpEvent(eventTime);
it.remove();
}
}
@@ -68,28 +71,28 @@ public class PointerTrackerQueue {
releaseAllPointersExcept(null, eventTime);
}
- public synchronized void releaseAllPointersExcept(PointerTracker tracker, long eventTime) {
+ public synchronized void releaseAllPointersExcept(ElementActions tracker, long eventTime) {
if (DEBUG) {
if (tracker == null) {
Log.d(TAG, "releaseAllPoniters: " + this);
} else {
- Log.d(TAG, "releaseAllPoniterExcept: [" + tracker.mPointerId + "] " + this);
+ Log.d(TAG, "releaseAllPoniterExcept: " + tracker + " " + this);
}
}
- final Iterator<PointerTracker> it = mQueue.iterator();
+ final Iterator<ElementActions> it = mQueue.iterator();
while (it.hasNext()) {
- final PointerTracker t = it.next();
+ final ElementActions t = it.next();
if (t != tracker) {
- t.onPhantomUpEvent(t.getLastX(), t.getLastY(), eventTime);
+ t.onPhantomUpEvent(eventTime);
it.remove();
}
}
}
- public synchronized boolean hasModifierKeyOlderThan(PointerTracker tracker) {
- final Iterator<PointerTracker> it = mQueue.iterator();
+ public synchronized boolean hasModifierKeyOlderThan(ElementActions tracker) {
+ final Iterator<ElementActions> it = mQueue.iterator();
while (it.hasNext()) {
- final PointerTracker t = it.next();
+ final ElementActions t = it.next();
if (t == tracker) {
break;
}
@@ -101,7 +104,7 @@ public class PointerTrackerQueue {
}
public synchronized boolean isAnyInSlidingKeyInput() {
- for (final PointerTracker tracker : mQueue) {
+ for (final ElementActions tracker : mQueue) {
if (tracker.isInSlidingKeyInput()) {
return true;
}
@@ -112,12 +115,11 @@ public class PointerTrackerQueue {
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
- for (final PointerTracker tracker : mQueue) {
+ for (final ElementActions tracker : mQueue) {
if (sb.length() > 0)
sb.append(" ");
- sb.append("[" + tracker.mPointerId + " "
- + Keyboard.printableCode(tracker.getKey().mCode) + "]");
+ sb.append(tracker.toString());
}
- return sb.toString();
+ return "[" + sb.toString() + "]";
}
}