diff options
author | 2012-08-07 01:01:47 -0700 | |
---|---|---|
committer | 2012-08-07 01:01:47 -0700 | |
commit | a1ec8195d664a16d38e8ee7e18d1deb6b97fb3f7 (patch) | |
tree | d3be99e2ddeba1bcf5cd72b0064b16c7c8388c91 /java | |
parent | 18cab3539f236993d4c87074c739084af90d058f (diff) | |
parent | 5db161d7732933469799ed683411be8f3dd02c70 (diff) | |
download | latinime-a1ec8195d664a16d38e8ee7e18d1deb6b97fb3f7.tar.gz latinime-a1ec8195d664a16d38e8ee7e18d1deb6b97fb3f7.tar.xz latinime-a1ec8195d664a16d38e8ee7e18d1deb6b97fb3f7.zip |
am 5db161d7: am 0cc425bd: Add PointerTrackerQueue unit tests
* commit '5db161d7732933469799ed683411be8f3dd02c70':
Add PointerTrackerQueue unit tests
Diffstat (limited to 'java')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/PointerTracker.java | 19 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java | 50 |
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() + "]"; } } |