Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: content/browser/renderer_host/input/gesture_event_filter.h

Issue 43203004: Remove GestureEventFilter and clean up related bits assuming that we turn on Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_EVENT_FILTER_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_EVENT_FILTER_H_
7
8 #include <deque>
9
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/timer/timer.h"
13 #include "content/browser/renderer_host/input/base_gesture_event_filter.h"
14 #include "content/browser/renderer_host/input/gesture_event_filter_client.h"
15 #include "content/common/content_export.h"
16 #include "content/port/browser/event_with_latency_info.h"
17 #include "content/port/common/input_event_ack_state.h"
18 #include "third_party/WebKit/public/web/WebInputEvent.h"
19 #include "ui/gfx/transform.h"
20
21 namespace content {
22 class GestureEventFilterTest;
23 class InputRouter;
24 class MockRenderWidgetHost;
25 class TouchpadTapSuppressionController;
26 class TouchpadTapSuppressionControllerClient;
27 class TouchscreenTapSuppressionController;
28
29 // Adds the following filters on top of BaseGestureEventFilter's filtering
30 // 1. Zero-velocity fling-starts from touchpad are filtered.
31 // 2. Unnecessary GestureFlingCancel events are filtered. These are
32 // GestureFlingCancels that have no corresponding GestureFlingStart in the
33 // queue.
34 // 3. Taps immediately after a GestureFlingCancel (caused by the same tap) are
35 // filtered.
36 class CONTENT_EXPORT GestureEventFilter : public BaseGestureEventFilter {
37 public:
38 // Both |client| and |touchpad_client| must outlive the GestureEventFilter.
39 GestureEventFilter(GestureEventFilterClient* client,
40 TouchpadTapSuppressionControllerClient* touchpad_client);
41 ~GestureEventFilter();
42
43 // Overridden from BaseGestureEventFilter.
44 virtual bool ShouldForward(const GestureEventWithLatencyInfo&) OVERRIDE;
45 virtual void ProcessGestureAck(InputEventAckState ack_result,
46 WebKit::WebInputEvent::Type type,
47 const ui::LatencyInfo& latency) OVERRIDE;
48
49 // Sets the state of the |fling_in_progress_| field to indicate that a fling
50 // is definitely not in progress.
51 void FlingHasBeenHalted();
52
53 // Returns the |TouchpadTapSuppressionController| instance.
54 TouchpadTapSuppressionController* GetTouchpadTapSuppressionController();
55
56 private:
57 friend class MockRenderWidgetHost;
58 friend class GestureEventFilterTest;
59
60 // Overridden from BaseGestureEventFilter.
61 virtual bool ShouldForwardScrollEndingEvent(
62 const GestureEventWithLatencyInfo& event) OVERRIDE;
63 virtual bool ShouldForwardForCoalescing(
64 const GestureEventWithLatencyInfo& gesture_event) OVERRIDE;
65
66 // Returns |true| if the given GestureFlingCancel should be discarded
67 // as unnecessary.
68 bool ShouldDiscardFlingCancelEvent(
69 const GestureEventWithLatencyInfo& gesture_event) const;
70
71 // Sub-filter for removing zero-velocity fling-starts from touchpad.
72 bool ShouldForwardForZeroVelocityFlingStart(
73 const GestureEventWithLatencyInfo& gesture_event) const;
74
75 // Sub-filter for removing unnecessary GestureFlingCancels.
76 bool ShouldForwardForGFCFiltering(
77 const GestureEventWithLatencyInfo& gesture_event) const;
78
79 // Sub-filter for suppressing taps immediately after a GestureFlingCancel.
80 bool ShouldForwardForTapSuppression(
81 const GestureEventWithLatencyInfo& gesture_event);
82
83 // True if a GestureFlingStart is in progress on the renderer or
84 // queued without a subsequent queued GestureFlingCancel event.
85 bool fling_in_progress_;
86
87 // An object tracking the state of touchpad on the delivery of mouse events to
88 // the renderer to filter mouse immediately after a touchpad fling canceling
89 // tap.
90 // TODO(mohsen): Move touchpad tap suppression out of GestureEventFilter since
91 // GEF is meant to only be used for touchscreen gesture events.
92 scoped_ptr<TouchpadTapSuppressionController>
93 touchpad_tap_suppression_controller_;
94
95 // An object tracking the state of touchscreen on the delivery of gesture tap
96 // events to the renderer to filter taps immediately after a touchscreen fling
97 // canceling tap.
98 scoped_ptr<TouchscreenTapSuppressionController>
99 touchscreen_tap_suppression_controller_;
100
101 DISALLOW_COPY_AND_ASSIGN(GestureEventFilter);
102 };
103
104 } // namespace content
105
106 #endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_EVENT_FILTER_H_
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/fling/flinger.h ('k') | content/browser/renderer_host/input/gesture_event_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698