Fix bug 2557891 - incorrect cts test.
Change-Id: I531d07453567d8a01c73224c76a5b397422b8c44
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index 0054ebb..462f164 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -43,6 +43,7 @@
import android.test.TouchUtils;
import android.test.UiThreadTest;
import android.util.AttributeSet;
+import android.util.Log;
import android.util.SparseArray;
import android.util.Xml;
import android.view.ContextMenu;
@@ -98,6 +99,8 @@
/** timeout delta when wait in case the system is sluggish */
private static final long TIMEOUT_DELTA = 1000;
+ private static final String LOG_TAG = "ViewTest";
+
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -3645,6 +3648,21 @@
}
}
+ /**
+ * For the duration of the tap timeout we are in a 'prepressed' state
+ * to differentiate between taps and touch scrolls.
+ * Wait at least this long before testing if the view is pressed
+ * by calling this function.
+ */
+ private void waitPrepressedTimeout() {
+ try {
+ Thread.sleep(ViewConfiguration.getTapTimeout() + 10);
+ } catch (InterruptedException e) {
+ Log.e(LOG_TAG, "waitPrepressedTimeout() interrupted! Test may fail!", e);
+ }
+ getInstrumentation().waitForIdleSync();
+ }
+
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "onTouchEvent",
@@ -3687,6 +3705,7 @@
x, y, 0);
assertFalse(view.isPressed());
getInstrumentation().sendPointerSync(event);
+ waitPrepressedTimeout();
assertTrue(view.hasCalledOnTouchEvent());
assertTrue(view.isPressed());
@@ -3711,8 +3730,9 @@
y = xy[1] + viewHeight - 1;
event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x, y, 0);
getInstrumentation().sendPointerSync(event);
+ waitPrepressedTimeout();
assertTrue(view.hasCalledOnTouchEvent());
- assertTrue(view.isPressed());
+ assertFalse(view.isPressed());
// MotionEvent.ACTION_UP
OnClickListenerImpl listener = new OnClickListenerImpl();
@@ -3723,7 +3743,7 @@
event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0);
getInstrumentation().sendPointerSync(event);
assertTrue(view.hasCalledOnTouchEvent());
- assertTrue(listener.hasOnClick());
+ assertFalse(listener.hasOnClick());
view.reset();
x = xy[0] + viewWidth / 2.0f;