Index: content/browser/renderer_host/input/immediate_input_router.cc |
diff --git a/content/browser/renderer_host/input/immediate_input_router.cc b/content/browser/renderer_host/input/immediate_input_router.cc |
index 3b6e88bf79675962fd42786ea24269c7f7eede5e..cc488ef3b6c19aa005ac123425b7d37c6ac85cd1 100644 |
--- a/content/browser/renderer_host/input/immediate_input_router.cc |
+++ b/content/browser/renderer_host/input/immediate_input_router.cc |
@@ -7,11 +7,10 @@ |
#include "base/auto_reset.h" |
#include "base/command_line.h" |
#include "base/metrics/histogram.h" |
-#include "content/browser/renderer_host/input/gesture_event_filter.h" |
+#include "content/browser/renderer_host/input/base_gesture_event_filter.h" |
#include "content/browser/renderer_host/input/input_ack_handler.h" |
#include "content/browser/renderer_host/input/input_router_client.h" |
#include "content/browser/renderer_host/input/touch_event_queue.h" |
-#include "content/browser/renderer_host/input/touchpad_tap_suppression_controller.h" |
#include "content/browser/renderer_host/overscroll_controller.h" |
#include "content/common/content_constants_internal.h" |
#include "content/common/edit_command.h" |
@@ -70,73 +69,8 @@ const char* GetEventAckName(InputEventAckState ack_result) { |
return ""; |
} |
-bool BrowserSideFlingEnabled() { |
- return CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kEnableBrowserSideFling); |
-} |
- |
} // namespace |
-// A helper class that based on the value of the |kEnableBrowserSideFling| flag |
-// does event filtering using either |BaseGestureEventFilter| or |
-// |GestureEventFilter|. |
-class ImmediateInputRouter::EventFilteringHelper { |
- public: |
- // |router| must outlive us. |
- explicit EventFilteringHelper(ImmediateInputRouter* router) { |
- if (BrowserSideFlingEnabled()) |
- gesture_event_filter_.reset(new BaseGestureEventFilter(router)); |
- else |
- gesture_event_filter_.reset(new GestureEventFilter(router, router)); |
- } |
- virtual ~EventFilteringHelper() {} |
- |
- bool ShouldDeferMouseDown(const MouseEventWithLatencyInfo& mouse_event) { |
- if (BrowserSideFlingEnabled()) |
- return false; |
- |
- return static_cast<GestureEventFilter*>(gesture_event_filter_.get())-> |
- GetTouchpadTapSuppressionController()->ShouldDeferMouseDown( |
- mouse_event); |
- } |
- |
- bool ShouldDeferMouseUp(const MouseEventWithLatencyInfo& mouse_event) { |
- if (BrowserSideFlingEnabled()) |
- return false; |
- |
- return static_cast<GestureEventFilter*>(gesture_event_filter_.get())-> |
- GetTouchpadTapSuppressionController()->ShouldSuppressMouseUp(); |
- } |
- |
- void FlingHasBeenHalted() { |
- if (BrowserSideFlingEnabled()) |
- return; |
- |
- static_cast<GestureEventFilter*>(gesture_event_filter_.get())-> |
- FlingHasBeenHalted(); |
- } |
- |
- bool ShouldForwardGesture(const GestureEventWithLatencyInfo& gesture_event) { |
- return gesture_event_filter_->ShouldForward(gesture_event); |
- } |
- |
- bool HasQueuedGestureEvents() { |
- return gesture_event_filter_->HasQueuedGestureEvents(); |
- } |
- |
- void ProcessGestureAck(InputEventAckState ack_result, |
- WebKit::WebInputEvent::Type type, |
- const ui::LatencyInfo& latency) { |
- gesture_event_filter_->ProcessGestureAck(ack_result, type, latency); |
- } |
- |
- private: |
- friend class ImmediateInputRouter; |
- scoped_ptr<BaseGestureEventFilter> gesture_event_filter_; |
- |
- DISALLOW_COPY_AND_ASSIGN(EventFilteringHelper); |
-}; |
- |
ImmediateInputRouter::ImmediateInputRouter(IPC::Sender* sender, |
InputRouterClient* client, |
InputAckHandler* ack_handler, |
@@ -153,7 +87,7 @@ ImmediateInputRouter::ImmediateInputRouter(IPC::Sender* sender, |
current_ack_source_(ACK_SOURCE_NONE), |
touch_event_queue_(new TouchEventQueue(this)), |
flinger_(new Flinger(this)), |
- event_filter_(new EventFilteringHelper(this)) { |
+ event_filter_(new BaseGestureEventFilter(this)) { |
DCHECK(sender); |
DCHECK(client); |
DCHECK(ack_handler); |
@@ -185,29 +119,22 @@ bool ImmediateInputRouter::SendInput(scoped_ptr<IPC::Message> message) { |
void ImmediateInputRouter::SendMouseEvent( |
const MouseEventWithLatencyInfo& mouse_event) { |
// Order is important here; we need to convert all MouseEvents before they |
- // propagate further, e.g., to the tap suppression controller. |
+ // propagate further. |
if (CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kSimulateTouchScreenWithMouse)) { |
SimulateTouchGestureWithMouse(mouse_event); |
return; |
} |
- if (BrowserSideFlingEnabled() && flinger_->HandleMouseEvent(mouse_event)) |
+ if (flinger_->HandleMouseEvent(mouse_event)) |
return; |
- if (mouse_event.event.type == WebInputEvent::MouseDown && |
- event_filter_->ShouldDeferMouseDown(mouse_event)) |
- return; |
- if (mouse_event.event.type == WebInputEvent::MouseUp && |
- event_filter_->ShouldDeferMouseUp(mouse_event)) |
- return; |
- |
SendMouseEventImmediately(mouse_event); |
} |
void ImmediateInputRouter::SendWheelEvent( |
const MouseWheelEventWithLatencyInfo& wheel_event) { |
- if (BrowserSideFlingEnabled() && flinger_->HandleWheelEvent(wheel_event)) |
+ if (flinger_->HandleWheelEvent(wheel_event)) |
return; |
// If there's already a mouse wheel event waiting to be sent to the renderer, |
@@ -236,7 +163,7 @@ void ImmediateInputRouter::SendKeyboardEvent( |
const NativeWebKeyboardEvent& key_event, |
const ui::LatencyInfo& latency_info, |
bool is_keyboard_shortcut) { |
- if (BrowserSideFlingEnabled() && flinger_->HandleKeyboardEvent()) |
+ if (flinger_->HandleKeyboardEvent()) |
return; |
// Put all WebKeyboardEvent objects in a queue since we can't trust the |
@@ -245,8 +172,6 @@ void ImmediateInputRouter::SendKeyboardEvent( |
key_queue_.push_back(key_event); |
HISTOGRAM_COUNTS_100("Renderer.KeyboardQueueSize", key_queue_.size()); |
- event_filter_->FlingHasBeenHalted(); |
- |
// Only forward the non-native portions of our event. |
FilterAndSendWebInputEvent(key_event, latency_info, is_keyboard_shortcut); |
} |
@@ -255,11 +180,11 @@ void ImmediateInputRouter::SendGestureEvent( |
const GestureEventWithLatencyInfo& gesture_event) { |
HandleGestureScroll(gesture_event); |
- if (BrowserSideFlingEnabled() && flinger_->HandleGestureEvent(gesture_event)) |
+ if (flinger_->HandleGestureEvent(gesture_event)) |
return; |
if (!IsInOverscrollGesture() && |
- !event_filter_->ShouldForwardGesture(gesture_event)) { |
+ !event_filter_->ShouldForward(gesture_event)) { |
OverscrollController* controller = client_->GetOverscrollController(); |
if (controller) |
controller->DiscardingGestureEvent(gesture_event.event); |
@@ -274,8 +199,6 @@ void ImmediateInputRouter::SendTouchEvent( |
touch_event_queue_->QueueEvent(touch_event); |
} |
-// Forwards MouseEvent without passing it through |
-// TouchpadTapSuppressionController. |
void ImmediateInputRouter::SendMouseEventImmediately( |
const MouseEventWithLatencyInfo& mouse_event) { |
// Avoid spamming the renderer with mouse move events. It is important |
@@ -458,7 +381,7 @@ bool ImmediateInputRouter::OfferToOverscrollController( |
const WebKit::WebGestureEvent& gesture_event = |
static_cast<const WebKit::WebGestureEvent&>(input_event); |
// An ACK is expected for the event, so mark it as consumed. |
- consumed = !event_filter_->ShouldForwardGesture( |
+ consumed = !event_filter_->ShouldForward( |
GestureEventWithLatencyInfo(gesture_event, latency_info)); |
} |
@@ -776,8 +699,4 @@ bool ImmediateInputRouter::IsInOverscrollGesture() const { |
return controller && controller->overscroll_mode() != OVERSCROLL_NONE; |
} |
-BaseGestureEventFilter* ImmediateInputRouter::gesture_event_filter() { |
- return event_filter_->gesture_event_filter_.get(); |
-} |
- |
} // namespace content |