OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
mohsen
2013/02/04 15:09:05
This file is renamed to touchpad_tap_suppression_c
rjkroege
2013/02/05 16:00:07
You used git mv to change its name yes?
mohsen
2013/02/06 16:13:06
No. I just renamed (also changed contents) and the
| |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "content/browser/renderer_host/tap_suppression_controller.h" | |
6 | |
7 #include "base/command_line.h" | |
8 #include "base/debug/trace_event.h" | |
9 #include "base/logging.h" | |
10 #include "base/string_number_conversions.h" | |
11 #include "content/browser/renderer_host/render_widget_host_impl.h" | |
12 #include "content/public/common/content_switches.h" | |
13 #include "ui/base/gestures/gesture_configuration.h" | |
14 | |
15 namespace content { | |
16 | |
17 TapSuppressionController::TapSuppressionController(RenderWidgetHostImpl* rwhv) | |
18 : render_widget_host_(rwhv), | |
19 state_(TapSuppressionController::NOTHING) { | |
20 } | |
21 | |
22 TapSuppressionController::~TapSuppressionController() { } | |
23 | |
24 bool TapSuppressionController::ShouldSuppressMouseUp() { | |
25 switch (state_) { | |
26 case NOTHING: | |
27 case GFC_IN_PROGRESS: | |
28 return false; | |
29 case MD_STASHED: | |
30 state_ = NOTHING; | |
31 mouse_down_timer_.Stop(); | |
32 return true; | |
33 case LAST_CANCEL_STOPPED_FLING: | |
34 NOTREACHED() << "Invalid MouseUp on LAST_CANCEL_STOPPED_FLING state"; | |
35 } | |
36 return false; | |
37 } | |
38 | |
39 bool TapSuppressionController::ShouldDeferMouseDown( | |
40 const WebKit::WebMouseEvent& event) { | |
41 switch (state_) { | |
42 case NOTHING: | |
43 return false; | |
44 case GFC_IN_PROGRESS: | |
45 mouse_down_timer_.Start( | |
46 FROM_HERE, | |
47 base::TimeDelta::FromMilliseconds( | |
48 ui::GestureConfiguration::fling_max_tap_gap_time_in_ms()), | |
49 this, | |
50 &TapSuppressionController::MouseDownTimerExpired); | |
51 stashed_mouse_down_ = event; | |
52 state_ = MD_STASHED; | |
53 return true; | |
54 case MD_STASHED: | |
55 NOTREACHED() << "MouseDown on MD_STASHED state"; | |
56 state_ = NOTHING; | |
57 return false; | |
58 case LAST_CANCEL_STOPPED_FLING: | |
59 if ((base::TimeTicks::Now() - fling_cancel_time_).InMilliseconds() | |
60 < ui::GestureConfiguration::fling_max_cancel_to_down_time_in_ms()) { | |
61 state_ = MD_STASHED; | |
62 mouse_down_timer_.Start( | |
63 FROM_HERE, | |
64 base::TimeDelta::FromMilliseconds( | |
65 ui::GestureConfiguration::fling_max_tap_gap_time_in_ms()), | |
66 this, | |
67 &TapSuppressionController::MouseDownTimerExpired); | |
68 stashed_mouse_down_ = event; | |
69 return true; | |
70 } else { | |
71 state_ = NOTHING; | |
72 return false; | |
73 } | |
74 } | |
75 return false; | |
76 } | |
77 | |
78 void TapSuppressionController::GestureFlingCancelAck(bool processed) { | |
79 switch (state_) { | |
80 case NOTHING: | |
81 NOTREACHED() << "GFC_Ack without a GFC"; | |
82 break; | |
83 case GFC_IN_PROGRESS: | |
84 if (processed) | |
85 fling_cancel_time_ = base::TimeTicks::Now(); | |
86 state_ = LAST_CANCEL_STOPPED_FLING; | |
87 break; | |
88 case MD_STASHED: | |
89 if (!processed) { | |
90 TRACE_EVENT0("browser", | |
91 "TapSuppressionController::GestureFlingCancelAck"); | |
92 mouse_down_timer_.Stop(); | |
93 render_widget_host_->ForwardMouseEventImmediately(stashed_mouse_down_); | |
94 state_ = NOTHING; | |
95 } // Else waiting for the timer to release the mouse event. | |
96 break; | |
97 case LAST_CANCEL_STOPPED_FLING: | |
98 break; | |
99 } | |
100 } | |
101 | |
102 void TapSuppressionController::GestureFlingCancel(double cancel_time) { | |
103 switch (state_) { | |
104 case NOTHING: | |
105 case GFC_IN_PROGRESS: | |
106 case LAST_CANCEL_STOPPED_FLING: | |
107 state_ = GFC_IN_PROGRESS; | |
108 break; | |
109 case MD_STASHED: | |
110 break; | |
111 } | |
112 } | |
113 | |
114 void TapSuppressionController::MouseDownTimerExpired() { | |
115 switch (state_) { | |
116 case NOTHING: | |
117 case GFC_IN_PROGRESS: | |
118 case LAST_CANCEL_STOPPED_FLING: | |
119 NOTREACHED() << "Timer fired on invalid state."; | |
120 state_ = NOTHING; | |
121 break; | |
122 case MD_STASHED: | |
123 TRACE_EVENT0("browser", | |
124 "TapSuppressionController::MouseDownTimerExpired"); | |
125 render_widget_host_->ForwardMouseEventImmediately(stashed_mouse_down_); | |
126 state_ = NOTHING; | |
127 break; | |
128 } | |
129 } | |
130 | |
131 } // namespace content | |
OLD | NEW |