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 337012049b784c52aab2da93c087367612afa4f3..97e68f4b22a7f30a404abed84b5902087206e551 100644 |
--- a/content/browser/renderer_host/input/input_router_impl.cc |
+++ b/content/browser/renderer_host/input/input_router_impl.cc |
@@ -31,13 +31,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; |
@@ -50,57 +43,6 @@ 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; |
- |
- *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 |
- |
-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; |
-} |
- |
const char* GetEventAckName(InputEventAckState ack_result) { |
switch(ack_result) { |
case INPUT_EVENT_ACK_STATE_UNKNOWN: return "UNKNOWN"; |
@@ -115,10 +57,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), |
@@ -127,19 +73,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(); |
} |
@@ -748,11 +689,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; |
@@ -767,8 +703,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() { |