| Index: content/browser/renderer_host/input/input_router_impl.cc
|
| diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
|
| index 83f6fcb164f066646547a34903fa98d2e0f8e787..ee3bdfcf36e716e2c4196642631023fdb8ab0174 100644
|
| --- a/content/browser/renderer_host/input/input_router_impl.cc
|
| +++ b/content/browser/renderer_host/input/input_router_impl.cc
|
| @@ -29,13 +29,6 @@
|
| #include "ui/events/event.h"
|
| #include "ui/events/keycodes/keyboard_codes.h"
|
|
|
| -#if defined(OS_ANDROID)
|
| -#include "ui/gfx/android/view_configuration.h"
|
| -#include "ui/gfx/screen.h"
|
| -#else
|
| -#include "ui/events/gestures/gesture_configuration.h"
|
| -#endif
|
| -
|
| using base::Time;
|
| using base::TimeDelta;
|
| using base::TimeTicks;
|
| @@ -48,55 +41,22 @@ using blink::WebMouseWheelEvent;
|
| namespace content {
|
| namespace {
|
|
|
| -// TODO(jdduke): Instead of relying on command line flags or conditional
|
| -// conditional compilation here, we should instead use an InputRouter::Settings
|
| -// construct, supplied and customized by the RenderWidgetHostView. See
|
| -// crbug.com/343917.
|
| -bool GetTouchAckTimeoutDelay(base::TimeDelta* touch_ack_timeout_delay) {
|
| - CommandLine* parsed_command_line = CommandLine::ForCurrentProcess();
|
| - if (!parsed_command_line->HasSwitch(switches::kTouchAckTimeoutDelayMs))
|
| - return false;
|
| -
|
| - std::string timeout_string = parsed_command_line->GetSwitchValueASCII(
|
| - switches::kTouchAckTimeoutDelayMs);
|
| - size_t timeout_ms;
|
| - if (!base::StringToSizeT(timeout_string, &timeout_ms))
|
| - return false;
|
| +GestureEventWithLatencyInfo MakeGestureEvent(WebInputEvent::Type type,
|
| + double timestamp_seconds,
|
| + int x,
|
| + int y,
|
| + int modifiers,
|
| + const ui::LatencyInfo& latency) {
|
| + WebGestureEvent result;
|
|
|
| - *touch_ack_timeout_delay = base::TimeDelta::FromMilliseconds(timeout_ms);
|
| - return true;
|
| -}
|
| -
|
| -#if defined(OS_ANDROID)
|
| -double GetTouchMoveSlopSuppressionLengthDips() {
|
| - const double touch_slop_length_pixels =
|
| - static_cast<double>(gfx::ViewConfiguration::GetTouchSlopInPixels());
|
| - const double device_scale_factor =
|
| - gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().device_scale_factor();
|
| - return touch_slop_length_pixels / device_scale_factor;
|
| -}
|
| -#elif defined(USE_AURA)
|
| -double GetTouchMoveSlopSuppressionLengthDips() {
|
| - return ui::GestureConfiguration::max_touch_move_in_pixels_for_click();
|
| -}
|
| -#else
|
| -double GetTouchMoveSlopSuppressionLengthDips() {
|
| - return 0;
|
| -}
|
| -#endif
|
| + result.type = type;
|
| + result.x = x;
|
| + result.y = y;
|
| + result.sourceDevice = WebGestureEvent::Touchscreen;
|
| + result.timeStampSeconds = timestamp_seconds;
|
| + result.modifiers = modifiers;
|
|
|
| -TouchEventQueue::TouchScrollingMode GetTouchScrollingMode() {
|
| - std::string modeString = CommandLine::ForCurrentProcess()->
|
| - GetSwitchValueASCII(switches::kTouchScrollingMode);
|
| - if (modeString == switches::kTouchScrollingModeAsyncTouchmove)
|
| - return TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE;
|
| - if (modeString == switches::kTouchScrollingModeSyncTouchmove)
|
| - return TouchEventQueue::TOUCH_SCROLLING_MODE_SYNC_TOUCHMOVE;
|
| - if (modeString == switches::kTouchScrollingModeTouchcancel)
|
| - return TouchEventQueue::TOUCH_SCROLLING_MODE_TOUCHCANCEL;
|
| - if (modeString != "")
|
| - LOG(ERROR) << "Invalid --touch-scrolling-mode option: " << modeString;
|
| - return TouchEventQueue::TOUCH_SCROLLING_MODE_DEFAULT;
|
| + return GestureEventWithLatencyInfo(result, latency);
|
| }
|
|
|
| const char* GetEventAckName(InputEventAckState ack_result) {
|
| @@ -113,10 +73,14 @@ const char* GetEventAckName(InputEventAckState ack_result) {
|
|
|
| } // namespace
|
|
|
| +InputRouterImpl::Config::Config() {
|
| +}
|
| +
|
| InputRouterImpl::InputRouterImpl(IPC::Sender* sender,
|
| InputRouterClient* client,
|
| InputAckHandler* ack_handler,
|
| - int routing_id)
|
| + int routing_id,
|
| + const Config& config)
|
| : sender_(sender),
|
| client_(client),
|
| ack_handler_(ack_handler),
|
| @@ -125,19 +89,14 @@ InputRouterImpl::InputRouterImpl(IPC::Sender* sender,
|
| move_caret_pending_(false),
|
| mouse_move_pending_(false),
|
| mouse_wheel_pending_(false),
|
| - touch_ack_timeout_supported_(false),
|
| current_view_flags_(0),
|
| current_ack_source_(ACK_SOURCE_NONE),
|
| flush_requested_(false),
|
| - touch_event_queue_(this,
|
| - GetTouchScrollingMode(),
|
| - GetTouchMoveSlopSuppressionLengthDips()),
|
| - gesture_event_queue_(this, this) {
|
| + touch_event_queue_(this, config.touch_config),
|
| + gesture_event_queue_(this, this, config.gesture_config) {
|
| DCHECK(sender);
|
| DCHECK(client);
|
| DCHECK(ack_handler);
|
| - touch_ack_timeout_supported_ =
|
| - GetTouchAckTimeoutDelay(&touch_ack_timeout_delay_);
|
| UpdateTouchAckTimeoutEnabled();
|
| }
|
|
|
| @@ -703,11 +662,6 @@ void InputRouterImpl::ProcessAckForOverscroll(const WebInputEvent& event,
|
| }
|
|
|
| void InputRouterImpl::UpdateTouchAckTimeoutEnabled() {
|
| - if (!touch_ack_timeout_supported_) {
|
| - touch_event_queue_.SetAckTimeoutEnabled(false, base::TimeDelta());
|
| - return;
|
| - }
|
| -
|
| // Mobile sites tend to be well-behaved with respect to touch handling, so
|
| // they have less need for the touch timeout fallback.
|
| const bool fixed_page_scale = (current_view_flags_ & FIXED_PAGE_SCALE) != 0;
|
| @@ -722,8 +676,7 @@ void InputRouterImpl::UpdateTouchAckTimeoutEnabled() {
|
| const bool touch_ack_timeout_enabled = !fixed_page_scale &&
|
| !mobile_viewport &&
|
| !touch_action_none;
|
| - touch_event_queue_.SetAckTimeoutEnabled(touch_ack_timeout_enabled,
|
| - touch_ack_timeout_delay_);
|
| + touch_event_queue_.SetAckTimeoutEnabled(touch_ack_timeout_enabled);
|
| }
|
|
|
| void InputRouterImpl::SignalFlushedIfNecessary() {
|
|
|