Commit 85c2a3d4 authored by boliu@chromium.org's avatar boliu@chromium.org

[Android] Cancel long press on ACTION_CANCEL as well

Public documentation says CANCEL should be treated similarly to UP
except it should not be peforming any of the actual actions.

BUG=
Android only change. Ran through android trybots.
NOTRY=true

Review URL: https://chromiumcodereview.appspot.com/12223101

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182254 0039d316-1c4b-4281-b951-d872f2087c98
parent 12b6f612
...@@ -109,6 +109,7 @@ class LongPressDetector { ...@@ -109,6 +109,7 @@ class LongPressDetector {
} }
break; break;
case MotionEvent.ACTION_UP: case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if (mCurrentDownEvent.getDownTime() + TAP_TIMEOUT + LONGPRESS_TIMEOUT > if (mCurrentDownEvent.getDownTime() + TAP_TIMEOUT + LONGPRESS_TIMEOUT >
ev.getEventTime()) { ev.getEventTime()) {
mInLongPress = false; mInLongPress = false;
......
...@@ -51,14 +51,7 @@ public class LongPressDetectorTest extends InstrumentationTestCase { ...@@ -51,14 +51,7 @@ public class LongPressDetectorTest extends InstrumentationTestCase {
assertTrue("Should have a pending LONG_PRESS", mLongPressDetector.hasPendingMessage()); assertTrue("Should have a pending LONG_PRESS", mLongPressDetector.hasPendingMessage());
} }
/** private void gestureNoLongPressTestHelper(int cancelActionType) throws Exception {
* Verify a DOWN with a corresponding UP will not have a pending Gesture.
*
* @throws Exception
*/
@SmallTest
@Feature({"AndroidWebView"})
public void testGestureNoLongPress() throws Exception {
final long downTime = SystemClock.uptimeMillis(); final long downTime = SystemClock.uptimeMillis();
final long eventTime = SystemClock.uptimeMillis(); final long eventTime = SystemClock.uptimeMillis();
...@@ -67,11 +60,33 @@ public class LongPressDetectorTest extends InstrumentationTestCase { ...@@ -67,11 +60,33 @@ public class LongPressDetectorTest extends InstrumentationTestCase {
assertTrue("Should have a pending LONG_PRESS", mLongPressDetector.hasPendingMessage()); assertTrue("Should have a pending LONG_PRESS", mLongPressDetector.hasPendingMessage());
event = motionEvent(MotionEvent.ACTION_UP, downTime, eventTime + 10); event = motionEvent(cancelActionType, downTime, eventTime + 10);
mLongPressDetector.cancelLongPressIfNeeded(event); mLongPressDetector.cancelLongPressIfNeeded(event);
assertTrue("Should not have a pending LONG_PRESS", !mLongPressDetector.hasPendingMessage()); assertTrue("Should not have a pending LONG_PRESS", !mLongPressDetector.hasPendingMessage());
} }
/**
* Verify a DOWN with a corresponding UP will not have a pending Gesture.
*
* @throws Exception
*/
@SmallTest
@Feature({"AndroidWebView"})
public void testGestureNoLongPressOnUp() throws Exception {
gestureNoLongPressTestHelper(MotionEvent.ACTION_UP);
}
/**
* Verify a DOWN with a corresponding CANCEL will not have a pending Gesture.
*
* @throws Exception
*/
@SmallTest
@Feature({"AndroidWebView"})
public void testGestureNoLongPressOnCancel() throws Exception {
gestureNoLongPressTestHelper(MotionEvent.ACTION_CANCEL);
}
/** /**
* Verify that a DOWN followed by an UP after the long press timer would * Verify that a DOWN followed by an UP after the long press timer would
* detect a long press (that is, the UP will not trigger a tap or cancel the * detect a long press (that is, the UP will not trigger a tap or cancel the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment