Merge "CTS Tests for GestureDetector" into mnc-dev
diff --git a/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java b/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java
index f02a0d6..1c02a89 100644
--- a/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java
+++ b/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java
@@ -25,6 +25,7 @@
import android.view.ViewGroup;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.View.OnTouchListener;
+import android.view.View.OnGenericMotionListener;
import android.widget.Button;
public class GestureDetectorCtsActivity extends Activity {
@@ -38,6 +39,7 @@
public boolean onDoubleTap;
public boolean onDoubleTapEvent;
public boolean onSingleTapConfirmed;
+ public boolean onContextClick;
private GestureDetector mGestureDetector;
private MockOnGestureListener mOnGestureListener;
@@ -56,6 +58,7 @@
mGestureDetector = new GestureDetector(this, mOnGestureListener, mHandler);
mGestureDetector.setOnDoubleTapListener(mOnGestureListener);
+ mGestureDetector.setContextClickListener(mOnGestureListener);
mView = new View(this);
mButton = new Button(this);
mTop = new Button(this);
@@ -86,7 +89,13 @@
return mGestureDetector;
}
+ public MockOnGestureListener getListener() {
+ return mOnGestureListener;
+ }
+
public class MockOnGestureListener extends SimpleOnGestureListener {
+ private MotionEvent mPreviousContextClickEvent;
+
public boolean onDown(MotionEvent e) {
isDown = true;
return true;
@@ -129,14 +138,29 @@
onSingleTapConfirmed = true;
return false;
}
+
+ public boolean onContextClick(MotionEvent e) {
+ onContextClick = true;
+ mPreviousContextClickEvent = e;
+ return false;
+ }
+
+ public MotionEvent getPreviousContextClickEvent() {
+ return mPreviousContextClickEvent;
+ }
}
- class MockOnTouchListener implements OnTouchListener {
+ class MockOnTouchListener implements OnTouchListener, OnGenericMotionListener {
public boolean onTouch(View v, MotionEvent event) {
mGestureDetector.onTouchEvent(event);
return true;
}
+
+ public boolean onGenericMotion(View v, MotionEvent event) {
+ mGestureDetector.onGenericMotionEvent(event);
+ return true;
+ }
}
}
diff --git a/tests/tests/view/src/android/view/cts/GestureDetectorTest.java b/tests/tests/view/src/android/view/cts/GestureDetectorTest.java
index c568cf1..f06455d 100644
--- a/tests/tests/view/src/android/view/cts/GestureDetectorTest.java
+++ b/tests/tests/view/src/android/view/cts/GestureDetectorTest.java
@@ -19,18 +19,31 @@
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
+import android.os.SystemClock;
import android.test.ActivityInstrumentationTestCase2;
import android.test.UiThreadTest;
+import android.view.cts.GestureDetectorCtsActivity.MockOnGestureListener;
import android.view.GestureDetector;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
import android.view.GestureDetector.SimpleOnGestureListener;
public class GestureDetectorTest extends
ActivityInstrumentationTestCase2<GestureDetectorCtsActivity> {
+ private static final float X_3F = 3.0f;
+ private static final float Y_4F = 4.0f;
+
private GestureDetector mGestureDetector;
private GestureDetectorCtsActivity mActivity;
+ private MockOnGestureListener mListener;
private Context mContext;
+ private long mDownTime;
+ private long mEventTime;
+ private MotionEvent mButtonPressPrimaryMotionEvent;
+ private MotionEvent mButtonPressSecondaryMotionEvent;
+
public GestureDetectorTest() {
super("com.android.cts.view", GestureDetectorCtsActivity.class);
}
@@ -40,6 +53,7 @@
super.setUp();
mActivity = getActivity();
mGestureDetector = mActivity.getGestureDetector();
+ mListener = mActivity.getListener();
mContext = getInstrumentation().getTargetContext();
mActivity.isDown = false;
mActivity.isScroll = false;
@@ -50,6 +64,17 @@
mActivity.onDoubleTap = false;
mActivity.onDoubleTapEvent = false;
mActivity.onSingleTapConfirmed = false;
+ mActivity.onContextClick = false;
+
+ mDownTime = SystemClock.uptimeMillis();
+ mEventTime = SystemClock.uptimeMillis();
+ mButtonPressPrimaryMotionEvent = MotionEvent.obtain(mDownTime, mEventTime,
+ MotionEvent.ACTION_BUTTON_PRESS, X_3F, Y_4F, 0);
+ mButtonPressPrimaryMotionEvent.setActionButton(MotionEvent.BUTTON_STYLUS_PRIMARY);
+
+ mButtonPressSecondaryMotionEvent = MotionEvent.obtain(mDownTime, mEventTime,
+ MotionEvent.ACTION_BUTTON_PRESS, X_3F, Y_4F, 0);
+ mButtonPressSecondaryMotionEvent.setActionButton(MotionEvent.BUTTON_SECONDARY);
}
@UiThreadTest
@@ -75,4 +100,35 @@
mGestureDetector.setIsLongpressEnabled(false);
assertFalse(mGestureDetector.isLongpressEnabled());
}
+
+ public void testOnSetContextClickListener() {
+ mActivity.onContextClick = false;
+ mGestureDetector.setContextClickListener(null);
+ mGestureDetector.onGenericMotionEvent(mButtonPressPrimaryMotionEvent);
+ assertFalse(mActivity.onContextClick);
+
+ mGestureDetector.setContextClickListener(mListener);
+ mGestureDetector.onGenericMotionEvent(mButtonPressPrimaryMotionEvent);
+ assertTrue(mActivity.onContextClick);
+ assertSame(mButtonPressPrimaryMotionEvent, mListener.getPreviousContextClickEvent());
+ }
+
+ public void testOnContextClick() {
+ mActivity.onContextClick = false;
+ mListener.onContextClick(mButtonPressPrimaryMotionEvent);
+ assertTrue(mActivity.onContextClick);
+ assertSame(mButtonPressPrimaryMotionEvent, mListener.getPreviousContextClickEvent());
+
+ mActivity.onContextClick = false;
+ mGestureDetector.onGenericMotionEvent(mButtonPressSecondaryMotionEvent);
+ assertTrue(mActivity.onContextClick);
+ assertSame(mButtonPressSecondaryMotionEvent, mListener.getPreviousContextClickEvent());
+ }
+
+ public void testOnGenericMotionEvent() {
+ mActivity.onContextClick = false;
+ mGestureDetector.onGenericMotionEvent(mButtonPressPrimaryMotionEvent);
+ assertTrue(mActivity.onContextClick);
+ assertSame(mButtonPressPrimaryMotionEvent, mListener.getPreviousContextClickEvent());
+ }
}