| Index: content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java | 
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java | 
| index 053aa9a48a3dbd1c1d2577f13d47d772a41cdd2d..37fd170fccbf5f29d9657186799313187c0f9411 100644 | 
| --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java | 
| +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java | 
| @@ -176,6 +176,7 @@ class ContentViewGestureHandler implements LongPressDelegate { | 
| static final int DOUBLE_TAP_DRAG_MODE_NONE = 0; | 
| static final int DOUBLE_TAP_DRAG_MODE_DETECTION_IN_PROGRESS = 1; | 
| static final int DOUBLE_TAP_DRAG_MODE_ZOOM = 2; | 
| +    static final int DOUBLE_TAP_DRAG_MODE_DISABLED = 3; | 
|  | 
| private class TouchEventTimeoutHandler implements Runnable { | 
| private static final int TOUCH_EVENT_TIMEOUT = 200; | 
| @@ -510,6 +511,7 @@ class ContentViewGestureHandler implements LongPressDelegate { | 
|  | 
| @Override | 
| public boolean onDoubleTapEvent(MotionEvent e) { | 
| +                        if (isDoubleTapDragDisabled()) return false; | 
| switch (e.getActionMasked()) { | 
| case MotionEvent.ACTION_DOWN: | 
| sendShowPressCancelIfNecessary(e); | 
| @@ -569,7 +571,8 @@ class ContentViewGestureHandler implements LongPressDelegate { | 
| @Override | 
| public void onLongPress(MotionEvent e) { | 
| if (!mZoomManager.isScaleGestureDetectionInProgress() && | 
| -                                mDoubleTapDragMode == DOUBLE_TAP_DRAG_MODE_NONE) { | 
| +                                (mDoubleTapDragMode == DOUBLE_TAP_DRAG_MODE_NONE || | 
| +                                 isDoubleTapDragDisabled())) { | 
| sendShowPressCancelIfNecessary(e); | 
| sendMotionEventAsGesture(GESTURE_LONG_PRESS, e, null); | 
| } | 
| @@ -664,6 +667,7 @@ class ContentViewGestureHandler implements LongPressDelegate { | 
| *              to send. This argument is an optional and can be null. | 
| */ | 
| void endDoubleTapDragMode(MotionEvent event) { | 
| +        if (isDoubleTapDragDisabled()) return; | 
| if (mDoubleTapDragMode == DOUBLE_TAP_DRAG_MODE_ZOOM) { | 
| if (event == null) event = obtainActionCancelMotionEvent(); | 
| pinchEnd(event.getEventTime()); | 
| @@ -1148,4 +1152,15 @@ class ContentViewGestureHandler implements LongPressDelegate { | 
| boolean hasScheduledTouchTimeoutEventForTesting() { | 
| return mTouchEventTimeoutHandler.hasScheduledTimeoutEventForTesting(); | 
| } | 
| + | 
| +    public void updateDoubleTapDragSupport(boolean supportDoubleTapDrag) { | 
| +        assert (mDoubleTapDragMode == DOUBLE_TAP_DRAG_MODE_DISABLED || | 
| +                mDoubleTapDragMode == DOUBLE_TAP_DRAG_MODE_NONE); | 
| +        mDoubleTapDragMode = supportDoubleTapDrag ? | 
| +                DOUBLE_TAP_DRAG_MODE_NONE : DOUBLE_TAP_DRAG_MODE_DISABLED; | 
| +    } | 
| + | 
| +    private boolean isDoubleTapDragDisabled() { | 
| +        return mDoubleTapDragMode == DOUBLE_TAP_DRAG_MODE_DISABLED; | 
| +    } | 
| } | 
|  |