Index: content/browser/renderer_host/input/gesture_event_filter.cc |
diff --git a/content/browser/renderer_host/input/gesture_event_filter.cc b/content/browser/renderer_host/input/gesture_event_filter.cc |
deleted file mode 100644 |
index 5b5720c94e83e5e82fb9cb9b8259a6cc2b3a633f..0000000000000000000000000000000000000000 |
--- a/content/browser/renderer_host/input/gesture_event_filter.cc |
+++ /dev/null |
@@ -1,151 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/browser/renderer_host/input/gesture_event_filter.h" |
- |
-#include "base/command_line.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "content/browser/renderer_host/input/input_router.h" |
-#include "content/browser/renderer_host/input/touchpad_tap_suppression_controller.h" |
-#include "content/browser/renderer_host/input/touchscreen_tap_suppression_controller.h" |
-#include "content/public/common/content_switches.h" |
- |
-using WebKit::WebGestureEvent; |
-using WebKit::WebInputEvent; |
- |
-namespace content { |
-GestureEventFilter::GestureEventFilter( |
- GestureEventFilterClient* client, |
- TouchpadTapSuppressionControllerClient* touchpad_client) |
- : BaseGestureEventFilter(client), |
- fling_in_progress_(false), |
- touchpad_tap_suppression_controller_( |
- new TouchpadTapSuppressionController(touchpad_client)), |
- touchscreen_tap_suppression_controller_( |
- new TouchscreenTapSuppressionController(this)) { |
- DCHECK(client); |
- DCHECK(touchpad_tap_suppression_controller_); |
-} |
- |
-GestureEventFilter::~GestureEventFilter() { } |
- |
-bool GestureEventFilter::ShouldDiscardFlingCancelEvent( |
- const GestureEventWithLatencyInfo& gesture_event) const { |
- if (coalesced_gesture_events_.empty() && fling_in_progress_) |
- return false; |
- GestureEventQueue::const_reverse_iterator it = |
- coalesced_gesture_events_.rbegin(); |
- while (it != coalesced_gesture_events_.rend()) { |
- if (it->event.type == WebInputEvent::GestureFlingStart) |
- return false; |
- if (it->event.type == WebInputEvent::GestureFlingCancel) |
- return true; |
- it++; |
- } |
- return true; |
-} |
- |
-// NOTE: The filters are applied successively. This simplifies the change. |
-bool GestureEventFilter::ShouldForward( |
- const GestureEventWithLatencyInfo& gesture_event) { |
- return ShouldForwardForZeroVelocityFlingStart(gesture_event) && |
- ShouldForwardForBounceReduction(gesture_event) && |
- ShouldForwardForGFCFiltering(gesture_event) && |
- ShouldForwardForTapSuppression(gesture_event) && |
- ShouldForwardForCoalescing(gesture_event); |
-} |
- |
-bool GestureEventFilter::ShouldForwardForZeroVelocityFlingStart( |
- const GestureEventWithLatencyInfo& gesture_event) const { |
- return gesture_event.event.type != WebInputEvent::GestureFlingStart || |
- gesture_event.event.sourceDevice != WebGestureEvent::Touchpad || |
- gesture_event.event.data.flingStart.velocityX != 0 || |
- gesture_event.event.data.flingStart.velocityY != 0; |
-} |
- |
-bool GestureEventFilter::ShouldForwardForGFCFiltering( |
- const GestureEventWithLatencyInfo& gesture_event) const { |
- return gesture_event.event.type != WebInputEvent::GestureFlingCancel || |
- !ShouldDiscardFlingCancelEvent(gesture_event); |
-} |
- |
-bool GestureEventFilter::ShouldForwardForTapSuppression( |
- const GestureEventWithLatencyInfo& gesture_event) { |
- switch (gesture_event.event.type) { |
- case WebInputEvent::GestureFlingCancel: |
- if (gesture_event.event.sourceDevice == WebGestureEvent::Touchscreen) |
- touchscreen_tap_suppression_controller_->GestureFlingCancel(); |
- else |
- touchpad_tap_suppression_controller_->GestureFlingCancel(); |
- return true; |
- case WebInputEvent::GestureTapDown: |
- return !touchscreen_tap_suppression_controller_-> |
- ShouldDeferGestureTapDown(gesture_event); |
- case WebInputEvent::GestureTapCancel: |
- return !touchscreen_tap_suppression_controller_-> |
- ShouldSuppressGestureTapCancel(); |
- case WebInputEvent::GestureTap: |
- case WebInputEvent::GestureTapUnconfirmed: |
- return !touchscreen_tap_suppression_controller_-> |
- ShouldSuppressGestureTap(); |
- default: |
- return true; |
- } |
- NOTREACHED(); |
- return false; |
-} |
- |
-bool GestureEventFilter::ShouldForwardScrollEndingEvent( |
- const GestureEventWithLatencyInfo& event) { |
- return ShouldForwardForGFCFiltering(event) && |
- ShouldForwardForTapSuppression(event) && |
- ShouldForwardForCoalescing(event); |
-} |
- |
-bool GestureEventFilter::ShouldForwardForCoalescing( |
- const GestureEventWithLatencyInfo& gesture_event) { |
- switch (gesture_event.event.type) { |
- case WebInputEvent::GestureFlingCancel: |
- fling_in_progress_ = false; |
- break; |
- case WebInputEvent::GestureFlingStart: |
- fling_in_progress_ = true; |
- break; |
- default: |
- break; |
- } |
- return BaseGestureEventFilter::ShouldForwardForCoalescing(gesture_event); |
-} |
- |
-void GestureEventFilter::ProcessGestureAck(InputEventAckState ack_result, |
- WebInputEvent::Type type, |
- const ui::LatencyInfo& latency) { |
- if (coalesced_gesture_events_.empty()) { |
- DLOG(ERROR) << "Received unexpected ACK for event type " << type; |
- return; |
- } |
- DCHECK_EQ(coalesced_gesture_events_.front().event.type, type); |
- |
- const bool processed = (INPUT_EVENT_ACK_STATE_CONSUMED == ack_result); |
- if (type == WebInputEvent::GestureFlingCancel) { |
- if (coalesced_gesture_events_.front().event.sourceDevice == |
- WebGestureEvent::Touchscreen) |
- touchscreen_tap_suppression_controller_->GestureFlingCancelAck(processed); |
- else |
- touchpad_tap_suppression_controller_->GestureFlingCancelAck(processed); |
- } |
- |
- BaseGestureEventFilter::ProcessGestureAck(ack_result, type, latency); |
-} |
- |
-TouchpadTapSuppressionController* |
- GestureEventFilter::GetTouchpadTapSuppressionController() { |
- return touchpad_tap_suppression_controller_.get(); |
-} |
- |
-void GestureEventFilter::FlingHasBeenHalted() { |
- fling_in_progress_ = false; |
-} |
- |
-} // namespace content |