Index: content/browser/renderer_host/render_widget_host_view_android.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc |
index a20849731707fc6014b209a35ff2f86496452d22..f1951f09d3a0e7255ac53d38ca03c63fc5fd613e 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -267,14 +267,16 @@ scoped_ptr<ui::TouchSelectionController> CreateSelectionController( |
ContentViewCore* content_view_core) { |
DCHECK(client); |
DCHECK(content_view_core); |
- int tap_timeout_ms = gfx::ViewConfiguration::GetTapTimeoutInMs(); |
- int touch_slop_pixels = gfx::ViewConfiguration::GetTouchSlopInPixels(); |
- bool show_on_tap_for_empty_editable = false; |
- return make_scoped_ptr(new ui::TouchSelectionController( |
- client, |
- base::TimeDelta::FromMilliseconds(tap_timeout_ms), |
- touch_slop_pixels / content_view_core->GetDpiScale(), |
- show_on_tap_for_empty_editable)); |
+ ui::TouchSelectionController::Config config; |
+ config.tap_timeout = base::TimeDelta::FromMilliseconds( |
+ gfx::ViewConfiguration::GetTapTimeoutInMs()); |
+ config.tap_slop = gfx::ViewConfiguration::GetTouchSlopInPixels() / |
+ content_view_core->GetDpiScale(); |
+ config.show_on_tap_for_empty_editable = false; |
+ config.enable_longpress_drag_selection = |
+ base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableLongpressDragSelection); |
+ return make_scoped_ptr(new ui::TouchSelectionController(client, config)); |
} |
scoped_ptr<OverscrollControllerAndroid> CreateOverscrollController( |
@@ -1609,13 +1611,25 @@ InputEventAckState RenderWidgetHostViewAndroid::FilterInputEvent( |
blink::WebInputEvent::isGestureEventType(input_event.type)) { |
const blink::WebGestureEvent& gesture_event = |
static_cast<const blink::WebGestureEvent&>(input_event); |
- gfx::PointF gesture_location(gesture_event.x, gesture_event.y); |
- if (input_event.type == blink::WebInputEvent::GestureLongPress) { |
- if (selection_controller_->WillHandleLongPressEvent(gesture_location)) |
- return INPUT_EVENT_ACK_STATE_CONSUMED; |
- } else if (input_event.type == blink::WebInputEvent::GestureTap) { |
- if (selection_controller_->WillHandleTapEvent(gesture_location)) |
- return INPUT_EVENT_ACK_STATE_CONSUMED; |
+ switch (gesture_event.type) { |
+ case blink::WebInputEvent::GestureLongPress: |
+ if (selection_controller_->WillHandleLongPressEvent( |
+ base::TimeTicks() + |
+ base::TimeDelta::FromSecondsD(input_event.timeStampSeconds), |
+ gfx::PointF(gesture_event.x, gesture_event.y))) { |
+ return INPUT_EVENT_ACK_STATE_CONSUMED; |
+ } |
+ break; |
+ |
+ case blink::WebInputEvent::GestureTap: |
+ if (selection_controller_->WillHandleTapEvent( |
+ gfx::PointF(gesture_event.x, gesture_event.y))) { |
+ return INPUT_EVENT_ACK_STATE_CONSUMED; |
+ } |
+ break; |
+ |
+ default: |
+ break; |
} |
} |