| Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| index d9e0d77b1061fdcefa7c1225ea7081c0270a3b52..bbaecb042f3589820c14b3a512a58ef311785177 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| @@ -182,15 +182,26 @@ import java.util.Map;
|
| * An interface that allows the embedder to be notified when the pinch gesture starts and
|
| * stops.
|
| */
|
| - public interface PinchGestureStateListener {
|
| + public interface GestureStateListener {
|
| /**
|
| * Called when the pinch gesture starts.
|
| */
|
| void onPinchGestureStart();
|
| +
|
| /**
|
| * Called when the pinch gesture ends.
|
| */
|
| void onPinchGestureEnd();
|
| +
|
| + /**
|
| + * Called when the fling gesture starts.
|
| + */
|
| + void onFlingStartGestureStart(int vx, int vy);
|
| +
|
| + /**
|
| + * Called when a fling event was not handled by the renderer.
|
| + */
|
| + void onUnhandledFlingStartEvent();
|
| }
|
|
|
| /**
|
| @@ -201,10 +212,12 @@ import java.util.Map;
|
| * Called when it's reasonable to show zoom controls.
|
| */
|
| void invokeZoomPicker();
|
| +
|
| /**
|
| * Called when zoom controls need to be hidden (e.g. when the view hides).
|
| */
|
| void dismissZoomPicker();
|
| +
|
| /**
|
| * Called when page scale has been changed, so the controls can update their state.
|
| */
|
| @@ -332,7 +345,7 @@ import java.util.Map;
|
| private boolean mAttachedToWindow = false;
|
|
|
| private ContentViewGestureHandler mContentViewGestureHandler;
|
| - private PinchGestureStateListener mPinchGestureStateListener;
|
| + private GestureStateListener mGestureStateListener;
|
| private UpdateFrameInfoListener mUpdateFrameInfoListener;
|
| private ZoomManager mZoomManager;
|
| private ZoomControlsDelegate mZoomControlsDelegate;
|
| @@ -1216,13 +1229,21 @@ import java.util.Map;
|
| mContentViewGestureHandler.confirmTouchEvent(ackResult);
|
| }
|
|
|
| + @SuppressWarnings("unused")
|
| + @CalledByNative
|
| + private void unhandledFlingStartEvent() {
|
| + if (mGestureStateListener != null) {
|
| + mGestureStateListener.onUnhandledFlingStartEvent();
|
| + }
|
| + }
|
| +
|
| @Override
|
| public boolean sendGesture(int type, long timeMs, int x, int y, boolean lastInputEventForVSync,
|
| Bundle b) {
|
| if (offerGestureToEmbedder(type)) return false;
|
| if (mNativeContentViewCore == 0) return false;
|
| updateTextHandlesForGesture(type);
|
| - updatePinchGestureStateListener(type);
|
| + updateGestureStateListener(type, b);
|
| if (lastInputEventForVSync && isVSyncNotificationEnabled()) {
|
| assert type == ContentViewGestureHandler.GESTURE_SCROLL_BY ||
|
| type == ContentViewGestureHandler.GESTURE_PINCH_BY;
|
| @@ -1291,20 +1312,24 @@ import java.util.Map;
|
| }
|
| }
|
|
|
| - public void setPinchGestureStateListener(PinchGestureStateListener pinchGestureStateListener) {
|
| - mPinchGestureStateListener = pinchGestureStateListener;
|
| + public void setGestureStateListener(GestureStateListener pinchGestureStateListener) {
|
| + mGestureStateListener = pinchGestureStateListener;
|
| }
|
|
|
| - void updatePinchGestureStateListener(int gestureType) {
|
| - if (mPinchGestureStateListener == null) return;
|
| + void updateGestureStateListener(int gestureType, Bundle b) {
|
| + if (mGestureStateListener == null) return;
|
|
|
| switch (gestureType) {
|
| case ContentViewGestureHandler.GESTURE_PINCH_BEGIN:
|
| - mPinchGestureStateListener.onPinchGestureStart();
|
| + mGestureStateListener.onPinchGestureStart();
|
| break;
|
| case ContentViewGestureHandler.GESTURE_PINCH_END:
|
| - mPinchGestureStateListener.onPinchGestureEnd();
|
| + mGestureStateListener.onPinchGestureEnd();
|
| break;
|
| + case ContentViewGestureHandler.GESTURE_FLING_START:
|
| + mGestureStateListener.onFlingStartGestureStart(
|
| + b.getInt(ContentViewGestureHandler.VELOCITY_X, 0),
|
| + b.getInt(ContentViewGestureHandler.VELOCITY_Y, 0));
|
| default:
|
| break;
|
| }
|
|
|