| Index: content/public/android/javatests/src/org/chromium/content/browser/ContentViewGestureHandlerTest.java
|
| diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ContentViewGestureHandlerTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewGestureHandlerTest.java
|
| index a05863fab915ebdce55cbfd55c00b9e47fede5c0..c86054e93e23f3254c3eb12b22b81003bc3d2064 100644
|
| --- a/content/public/android/javatests/src/org/chromium/content/browser/ContentViewGestureHandlerTest.java
|
| +++ b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewGestureHandlerTest.java
|
| @@ -133,11 +133,6 @@ public class ContentViewGestureHandlerTest extends InstrumentationTestCase {
|
| // Not implemented.
|
| }
|
|
|
| - @Override
|
| - public boolean hasFixedPageScale() {
|
| - return false;
|
| - }
|
| -
|
| public void enableSynchronousConfirmTouchEvent(
|
| ContentViewGestureHandler handler, int ackResult) {
|
| mSynchronousConfirmTarget = handler;
|
| @@ -1035,8 +1030,7 @@ public class ContentViewGestureHandlerTest extends InstrumentationTestCase {
|
| mGestureHandler = new ContentViewGestureHandler(
|
| getInstrumentation().getTargetContext(), mockDelegate, mMockZoomManager,
|
| ContentViewCore.INPUT_EVENTS_DELIVERED_AT_VSYNC);
|
| -
|
| - mGestureHandler.updateDoubleTapDragSupport(false);
|
| + mGestureHandler.updateDoubleTapSupport(false);
|
|
|
| MotionEvent event = motionEvent(MotionEvent.ACTION_DOWN, downTime1, downTime1);
|
| assertTrue(mGestureHandler.onTouchEvent(event));
|
| @@ -1054,24 +1048,27 @@ public class ContentViewGestureHandlerTest extends InstrumentationTestCase {
|
| event = MotionEvent.obtain(
|
| downTime2, downTime2 + 5, MotionEvent.ACTION_MOVE,
|
| FAKE_COORD_X, FAKE_COORD_Y + 100, 0);
|
| - // As double tap and drag to zoom is disabled, we won't handle
|
| - // the move event.
|
| - assertFalse(mGestureHandler.onTouchEvent(event));
|
|
|
| - assertFalse("No GESTURE_SCROLL_START should have been sent",
|
| + // The move should become a scroll, as double tap and drag to zoom is
|
| + // disabled.
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertTrue("GESTURE_SCROLL_START should have been sent",
|
| mockDelegate.mGestureTypeList.contains(
|
| ContentViewGestureHandler.GESTURE_SCROLL_START));
|
| - assertTrue("No GESTURE_PINCH_BEGIN should have been sent",
|
| - ContentViewGestureHandler.GESTURE_PINCH_BEGIN !=
|
| - mockDelegate.mMostRecentGestureEvent.mType);
|
| + assertFalse("No GESTURE_PINCH_BEGIN should have been sent",
|
| + mockDelegate.mGestureTypeList.contains(
|
| + ContentViewGestureHandler.GESTURE_PINCH_BEGIN));
|
|
|
| event = MotionEvent.obtain(
|
| downTime2, downTime2 + 10, MotionEvent.ACTION_MOVE,
|
| FAKE_COORD_X, FAKE_COORD_Y + 200, 0);
|
| - assertFalse(mGestureHandler.onTouchEvent(event));
|
| - assertFalse("No GESTURE_SCROLL_BY should have been sent",
|
| - mockDelegate.mGestureTypeList.contains(
|
| - ContentViewGestureHandler.GESTURE_SCROLL_BY));
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertEquals("GESTURE_SCROLL_BY should have been sent",
|
| + ContentViewGestureHandler.GESTURE_SCROLL_BY,
|
| + mockDelegate.mMostRecentGestureEvent.mType);
|
| + assertEquals("GESTURE_SCROLL_BY should have been sent",
|
| + event.getEventTime(),
|
| + mockDelegate.mMostRecentGestureEvent.getTimeMs());
|
| assertTrue("No GESTURE_PINCH_BY should have been sent",
|
| ContentViewGestureHandler.GESTURE_PINCH_BY !=
|
| mockDelegate.mMostRecentGestureEvent.mType);
|
| @@ -1079,7 +1076,7 @@ public class ContentViewGestureHandlerTest extends InstrumentationTestCase {
|
| event = MotionEvent.obtain(
|
| downTime2, downTime2 + 15, MotionEvent.ACTION_UP,
|
| FAKE_COORD_X, FAKE_COORD_Y + 200, 0);
|
| - assertFalse(mGestureHandler.onTouchEvent(event));
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| assertFalse("No GESTURE_PINCH_END should have been sent",
|
| mockDelegate.mGestureTypeList.contains(
|
| ContentViewGestureHandler.GESTURE_PINCH_END));
|
| @@ -1137,6 +1134,7 @@ public class ContentViewGestureHandlerTest extends InstrumentationTestCase {
|
|
|
| @Override
|
| public boolean sendGesture(int type, long timeMs, int x, int y, Bundle extraParams) {
|
| + Log.i(TAG,"Gesture event received with type id " + type);
|
| mMostRecentGestureEvent = new GestureEvent(type, timeMs, x, y, extraParams);
|
| mMostRecentGestureEventWasLastForVSync = false;
|
| mGestureTypeList.add(mMostRecentGestureEvent.mType);
|
| @@ -1160,11 +1158,6 @@ public class ContentViewGestureHandlerTest extends InstrumentationTestCase {
|
| // Not implemented.
|
| }
|
|
|
| - @Override
|
| - public boolean hasFixedPageScale() {
|
| - return false;
|
| - }
|
| -
|
| public GestureEvent getMostRecentGestureEvent() {
|
| return mMostRecentGestureEvent;
|
| }
|
| @@ -1709,4 +1702,127 @@ public class ContentViewGestureHandlerTest extends InstrumentationTestCase {
|
| assertEquals(0, mMockMotionEventDelegate.mTotalSentLastGestureForVSyncCount);
|
| }
|
| }
|
| +
|
| + /**
|
| + * Verify that no double tap gestures are created if the page has a fixed
|
| + * page scale.
|
| + * @throws Exception
|
| + */
|
| + @SmallTest
|
| + @Feature({"Gestures"})
|
| + public void testNoDoubleTapWhenPageScaleFixed() throws Exception {
|
| + final long downTime = SystemClock.uptimeMillis();
|
| + final long eventTime = SystemClock.uptimeMillis();
|
| +
|
| + GestureRecordingMotionEventDelegate mockDelegate =
|
| + new GestureRecordingMotionEventDelegate();
|
| + mGestureHandler = new ContentViewGestureHandler(
|
| + getInstrumentation().getTargetContext(), mockDelegate, mMockZoomManager,
|
| + ContentViewCore.INPUT_EVENTS_DELIVERED_AT_VSYNC);
|
| + mGestureHandler.updateHasFixedPageScale(true);
|
| +
|
| + MotionEvent event = MotionEvent.obtain(
|
| + downTime, downTime, MotionEvent.ACTION_DOWN,
|
| + FAKE_COORD_X, FAKE_COORD_Y, 0);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertEquals("No events should have been sent",
|
| + 0, mockDelegate.mGestureTypeList.size());
|
| +
|
| + event = MotionEvent.obtain(
|
| + downTime, eventTime + 5, MotionEvent.ACTION_UP,
|
| + FAKE_COORD_X, FAKE_COORD_Y, 0);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertEquals("A GESTURE_SINGLE_TAP_CONFIRMED event should have been sent",
|
| + ContentViewGestureHandler.GESTURE_SINGLE_TAP_CONFIRMED,
|
| + mockDelegate.mMostRecentGestureEvent.mType);
|
| + assertEquals("Only GESTURE_SINGLE_TAP_CONFIRMED should have been sent",
|
| + 1, mockDelegate.mGestureTypeList.size());
|
| +
|
| + event = MotionEvent.obtain(
|
| + eventTime + 10, eventTime + 10, MotionEvent.ACTION_DOWN,
|
| + FAKE_COORD_X, FAKE_COORD_Y, 0);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertEquals("Only GESTURE_SINGLE_TAP_CONFIRMED should have been sent",
|
| + 1, mockDelegate.mGestureTypeList.size());
|
| +
|
| + event = MotionEvent.obtain(
|
| + eventTime + 10, eventTime + 15, MotionEvent.ACTION_UP,
|
| + FAKE_COORD_X, FAKE_COORD_Y, 0);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertEquals("A double tap should not have occurred",
|
| + ContentViewGestureHandler.GESTURE_SINGLE_TAP_CONFIRMED,
|
| + mockDelegate.mMostRecentGestureEvent.mType);
|
| + assertEquals("Only GESTURE_SINGLE_TAP_CONFIRMED and " +
|
| + "GESTURE_SINGLE_TAP_CONFIRMED should have been sent",
|
| + 2, mockDelegate.mGestureTypeList.size());
|
| + }
|
| +
|
| + /**
|
| + * Verify that double tap drag zoom feature is not invoked
|
| + * when the page scale is fixed. The second tap sequence should be
|
| + * treated just as the first would be.
|
| + * @throws Exception
|
| + */
|
| + @SmallTest
|
| + @Feature({"Gestures"})
|
| + public void testNoDoubleTapDragZoomWhenPageScaleFixed() throws Exception {
|
| + final long downTime1 = SystemClock.uptimeMillis();
|
| + final long downTime2 = downTime1 + 100;
|
| +
|
| + GestureRecordingMotionEventDelegate mockDelegate =
|
| + new GestureRecordingMotionEventDelegate();
|
| + mGestureHandler = new ContentViewGestureHandler(
|
| + getInstrumentation().getTargetContext(), mockDelegate, mMockZoomManager,
|
| + ContentViewCore.INPUT_EVENTS_DELIVERED_AT_VSYNC);
|
| + mGestureHandler.updateHasFixedPageScale(true);
|
| +
|
| + MotionEvent event = motionEvent(MotionEvent.ACTION_DOWN, downTime1, downTime1);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| +
|
| + event = MotionEvent.obtain(
|
| + downTime1, downTime1 + 5, MotionEvent.ACTION_UP,
|
| + FAKE_COORD_X, FAKE_COORD_Y, 0);
|
| + mGestureHandler.onTouchEvent(event);
|
| +
|
| + event = MotionEvent.obtain(
|
| + downTime2, downTime2, MotionEvent.ACTION_DOWN,
|
| + FAKE_COORD_X, FAKE_COORD_Y, 0);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| +
|
| + event = MotionEvent.obtain(
|
| + downTime2, downTime2 + 5, MotionEvent.ACTION_MOVE,
|
| + FAKE_COORD_X, FAKE_COORD_Y + 100, 0);
|
| +
|
| + // The move should become a scroll, as double tap and drag to zoom is
|
| + // disabled.
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertTrue("GESTURE_SCROLL_START should have been sent",
|
| + mockDelegate.mGestureTypeList.contains(
|
| + ContentViewGestureHandler.GESTURE_SCROLL_START));
|
| + assertFalse("No GESTURE_PINCH_BEGIN should have been sent",
|
| + mockDelegate.mGestureTypeList.contains(
|
| + ContentViewGestureHandler.GESTURE_PINCH_BEGIN));
|
| +
|
| + event = MotionEvent.obtain(
|
| + downTime2, downTime2 + 10, MotionEvent.ACTION_MOVE,
|
| + FAKE_COORD_X, FAKE_COORD_Y + 200, 0);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertEquals("GESTURE_SCROLL_BY should have been sent",
|
| + ContentViewGestureHandler.GESTURE_SCROLL_BY,
|
| + mockDelegate.mMostRecentGestureEvent.mType);
|
| + assertEquals("GESTURE_SCROLL_BY should have been sent",
|
| + event.getEventTime(),
|
| + mockDelegate.mMostRecentGestureEvent.getTimeMs());
|
| + assertTrue("No GESTURE_PINCH_BY should have been sent",
|
| + ContentViewGestureHandler.GESTURE_PINCH_BY !=
|
| + mockDelegate.mMostRecentGestureEvent.mType);
|
| +
|
| + event = MotionEvent.obtain(
|
| + downTime2, downTime2 + 15, MotionEvent.ACTION_UP,
|
| + FAKE_COORD_X, FAKE_COORD_Y + 200, 0);
|
| + assertTrue(mGestureHandler.onTouchEvent(event));
|
| + assertFalse("No GESTURE_PINCH_END should have been sent",
|
| + mockDelegate.mGestureTypeList.contains(
|
| + ContentViewGestureHandler.GESTURE_PINCH_END));
|
| + }
|
| }
|
|
|