OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "content/browser/renderer_host/input/tap_suppression_controller.h" | 7 #include "content/browser/renderer_host/input/tap_suppression_controller.h" |
8 #include "content/browser/renderer_host/input/tap_suppression_controller_client.
h" | 8 #include "content/browser/renderer_host/input/tap_suppression_controller_client.
h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
11 using base::TimeDelta; | 11 using base::TimeDelta; |
12 | 12 |
13 namespace content { | 13 namespace content { |
14 | 14 |
15 class MockTapSuppressionController : public TapSuppressionController, | 15 class MockTapSuppressionController : public TapSuppressionController, |
16 public TapSuppressionControllerClient { | 16 public TapSuppressionControllerClient { |
17 public: | 17 public: |
| 18 using TapSuppressionController::DISABLED; |
18 using TapSuppressionController::NOTHING; | 19 using TapSuppressionController::NOTHING; |
19 using TapSuppressionController::GFC_IN_PROGRESS; | 20 using TapSuppressionController::GFC_IN_PROGRESS; |
20 using TapSuppressionController::TAP_DOWN_STASHED; | 21 using TapSuppressionController::TAP_DOWN_STASHED; |
21 using TapSuppressionController::LAST_CANCEL_STOPPED_FLING; | 22 using TapSuppressionController::LAST_CANCEL_STOPPED_FLING; |
22 | 23 |
23 enum Action { | 24 enum Action { |
24 NONE = 0, | 25 NONE = 0, |
25 TAP_DOWN_DEFERRED = 1 << 0, | 26 TAP_DOWN_DEFERRED = 1 << 0, |
26 TAP_DOWN_FORWARDED = 1 << 1, | 27 TAP_DOWN_FORWARDED = 1 << 1, |
27 TAP_DOWN_DROPPED = 1 << 2, | 28 TAP_DOWN_DROPPED = 1 << 2, |
28 TAP_UP_SUPPRESSED = 1 << 3, | 29 TAP_UP_SUPPRESSED = 1 << 3, |
29 TAP_UP_FORWARDED = 1 << 4, | 30 TAP_UP_FORWARDED = 1 << 4, |
30 TAP_CANCEL_SUPPRESSED = 1 << 5, | 31 TAP_CANCEL_SUPPRESSED = 1 << 5, |
31 TAP_CANCEL_FORWARDED = 1 << 6, | 32 TAP_CANCEL_FORWARDED = 1 << 6, |
32 STASHED_TAP_DOWN_FORWARDED = 1 << 7, | 33 STASHED_TAP_DOWN_FORWARDED = 1 << 7, |
33 }; | 34 }; |
34 | 35 |
35 MockTapSuppressionController() | 36 MockTapSuppressionController(const TapSuppressionController::Config& config) |
36 : TapSuppressionController(this), | 37 : TapSuppressionController(this, config), |
37 max_cancel_to_down_time_in_ms_(1), | |
38 max_tap_gap_time_in_ms_(1), | |
39 last_actions_(NONE), | 38 last_actions_(NONE), |
40 time_(), | 39 time_(), |
41 timer_started_(false) { | 40 timer_started_(false) { |
42 } | 41 } |
43 | 42 |
44 virtual ~MockTapSuppressionController() {} | 43 virtual ~MockTapSuppressionController() {} |
45 | 44 |
46 void SendGestureFlingCancel() { | 45 void SendGestureFlingCancel() { |
47 last_actions_ = NONE; | 46 last_actions_ = NONE; |
48 GestureFlingCancel(); | 47 GestureFlingCancel(); |
(...skipping 30 matching lines...) Expand all Loading... |
79 | 78 |
80 void AdvanceTime(const base::TimeDelta& delta) { | 79 void AdvanceTime(const base::TimeDelta& delta) { |
81 last_actions_ = NONE; | 80 last_actions_ = NONE; |
82 time_ += delta; | 81 time_ += delta; |
83 if (timer_started_ && time_ >= timer_expiry_time_) { | 82 if (timer_started_ && time_ >= timer_expiry_time_) { |
84 timer_started_ = false; | 83 timer_started_ = false; |
85 TapDownTimerExpired(); | 84 TapDownTimerExpired(); |
86 } | 85 } |
87 } | 86 } |
88 | 87 |
89 void set_max_cancel_to_down_time_in_ms(int val) { | |
90 max_cancel_to_down_time_in_ms_ = val; | |
91 } | |
92 | |
93 void set_max_tap_gap_time_in_ms(int val) { | |
94 max_tap_gap_time_in_ms_ = val; | |
95 } | |
96 | |
97 State state() { return state_; } | 88 State state() { return state_; } |
98 | 89 |
99 int last_actions() { return last_actions_; } | 90 int last_actions() { return last_actions_; } |
100 | 91 |
101 protected: | 92 protected: |
102 virtual base::TimeTicks Now() OVERRIDE { | 93 virtual base::TimeTicks Now() OVERRIDE { |
103 return time_; | 94 return time_; |
104 } | 95 } |
105 | 96 |
106 virtual void StartTapDownTimer(const base::TimeDelta& delay) OVERRIDE { | 97 virtual void StartTapDownTimer(const base::TimeDelta& delay) OVERRIDE { |
107 timer_expiry_time_ = time_ + delay; | 98 timer_expiry_time_ = time_ + delay; |
108 timer_started_ = true; | 99 timer_started_ = true; |
109 } | 100 } |
110 | 101 |
111 virtual void StopTapDownTimer() OVERRIDE { | 102 virtual void StopTapDownTimer() OVERRIDE { |
112 timer_started_ = false; | 103 timer_started_ = false; |
113 } | 104 } |
114 | 105 |
115 private: | 106 private: |
116 // TapSuppressionControllerClient implementation | 107 // TapSuppressionControllerClient implementation |
117 virtual int MaxCancelToDownTimeInMs() OVERRIDE { | |
118 return max_cancel_to_down_time_in_ms_; | |
119 } | |
120 | |
121 virtual int MaxTapGapTimeInMs() OVERRIDE { | |
122 return max_tap_gap_time_in_ms_; | |
123 } | |
124 | |
125 virtual void DropStashedTapDown() OVERRIDE { | 108 virtual void DropStashedTapDown() OVERRIDE { |
126 last_actions_ |= TAP_DOWN_DROPPED; | 109 last_actions_ |= TAP_DOWN_DROPPED; |
127 } | 110 } |
128 | 111 |
129 virtual void ForwardStashedTapDown() OVERRIDE { | 112 virtual void ForwardStashedTapDown() OVERRIDE { |
130 last_actions_ |= STASHED_TAP_DOWN_FORWARDED; | 113 last_actions_ |= STASHED_TAP_DOWN_FORWARDED; |
131 } | 114 } |
132 | 115 |
133 // Hiding some derived public methods | 116 // Hiding some derived public methods |
134 using TapSuppressionController::GestureFlingCancel; | 117 using TapSuppressionController::GestureFlingCancel; |
135 using TapSuppressionController::GestureFlingCancelAck; | 118 using TapSuppressionController::GestureFlingCancelAck; |
136 using TapSuppressionController::ShouldDeferTapDown; | 119 using TapSuppressionController::ShouldDeferTapDown; |
137 using TapSuppressionController::ShouldSuppressTapEnd; | 120 using TapSuppressionController::ShouldSuppressTapEnd; |
138 | 121 |
139 int max_cancel_to_down_time_in_ms_; | |
140 int max_tap_gap_time_in_ms_; | |
141 | |
142 int last_actions_; | 122 int last_actions_; |
143 | 123 |
144 base::TimeTicks time_; | 124 base::TimeTicks time_; |
145 bool timer_started_; | 125 bool timer_started_; |
146 base::TimeTicks timer_expiry_time_; | 126 base::TimeTicks timer_expiry_time_; |
147 | 127 |
148 DISALLOW_COPY_AND_ASSIGN(MockTapSuppressionController); | 128 DISALLOW_COPY_AND_ASSIGN(MockTapSuppressionController); |
149 }; | 129 }; |
150 | 130 |
151 class TapSuppressionControllerTest : public testing::Test { | 131 class TapSuppressionControllerTest : public testing::Test { |
152 public: | 132 public: |
153 TapSuppressionControllerTest() { | 133 TapSuppressionControllerTest() { |
154 } | 134 } |
155 virtual ~TapSuppressionControllerTest() { | 135 virtual ~TapSuppressionControllerTest() { |
156 } | 136 } |
157 | 137 |
158 protected: | 138 protected: |
159 // testing::Test | 139 // testing::Test |
160 virtual void SetUp() { | 140 virtual void SetUp() { |
161 tap_suppression_controller_.reset(new MockTapSuppressionController()); | 141 tap_suppression_controller_.reset( |
| 142 new MockTapSuppressionController(GetConfig())); |
162 } | 143 } |
163 | 144 |
164 virtual void TearDown() { | 145 virtual void TearDown() { |
165 tap_suppression_controller_.reset(); | 146 tap_suppression_controller_.reset(); |
166 } | 147 } |
167 | 148 |
| 149 static TapSuppressionController::Config GetConfig() { |
| 150 TapSuppressionController::Config config; |
| 151 config.enabled = true; |
| 152 config.max_cancel_to_down_time = base::TimeDelta::FromMilliseconds(10); |
| 153 config.max_tap_gap_time = base::TimeDelta::FromMilliseconds(10); |
| 154 return config; |
| 155 } |
| 156 |
168 scoped_ptr<MockTapSuppressionController> tap_suppression_controller_; | 157 scoped_ptr<MockTapSuppressionController> tap_suppression_controller_; |
169 }; | 158 }; |
170 | 159 |
171 // Test TapSuppressionController for when GestureFlingCancel Ack comes before | 160 // Test TapSuppressionController for when GestureFlingCancel Ack comes before |
172 // TapDown and everything happens without any delays. | 161 // TapDown and everything happens without any delays. |
173 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapFast) { | 162 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapFast) { |
174 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
175 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
176 | |
177 // Send GestureFlingCancel. | 163 // Send GestureFlingCancel. |
178 tap_suppression_controller_->SendGestureFlingCancel(); | 164 tap_suppression_controller_->SendGestureFlingCancel(); |
179 EXPECT_EQ(MockTapSuppressionController::NONE, | 165 EXPECT_EQ(MockTapSuppressionController::NONE, |
180 tap_suppression_controller_->last_actions()); | 166 tap_suppression_controller_->last_actions()); |
181 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 167 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
182 tap_suppression_controller_->state()); | 168 tap_suppression_controller_->state()); |
183 | 169 |
184 // Send GestureFlingCancel Ack. | 170 // Send GestureFlingCancel Ack. |
185 tap_suppression_controller_->SendGestureFlingCancelAck(true); | 171 tap_suppression_controller_->SendGestureFlingCancelAck(true); |
186 EXPECT_EQ(MockTapSuppressionController::NONE, | 172 EXPECT_EQ(MockTapSuppressionController::NONE, |
(...skipping 13 matching lines...) Expand all Loading... |
200 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | | 186 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | |
201 MockTapSuppressionController::TAP_DOWN_DROPPED, | 187 MockTapSuppressionController::TAP_DOWN_DROPPED, |
202 tap_suppression_controller_->last_actions()); | 188 tap_suppression_controller_->last_actions()); |
203 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 189 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
204 tap_suppression_controller_->state()); | 190 tap_suppression_controller_->state()); |
205 } | 191 } |
206 | 192 |
207 // Test TapSuppressionController for when GestureFlingCancel Ack comes before | 193 // Test TapSuppressionController for when GestureFlingCancel Ack comes before |
208 // TapDown, but there is a small delay between TapDown and TapUp. | 194 // TapDown, but there is a small delay between TapDown and TapUp. |
209 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapInsufficientlyLateTapUp) { | 195 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapInsufficientlyLateTapUp) { |
210 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
211 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
212 | |
213 // Send GestureFlingCancel. | 196 // Send GestureFlingCancel. |
214 tap_suppression_controller_->SendGestureFlingCancel(); | 197 tap_suppression_controller_->SendGestureFlingCancel(); |
215 EXPECT_EQ(MockTapSuppressionController::NONE, | 198 EXPECT_EQ(MockTapSuppressionController::NONE, |
216 tap_suppression_controller_->last_actions()); | 199 tap_suppression_controller_->last_actions()); |
217 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 200 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
218 tap_suppression_controller_->state()); | 201 tap_suppression_controller_->state()); |
219 | 202 |
220 // Send GestureFlingCancel Ack. | 203 // Send GestureFlingCancel Ack. |
221 tap_suppression_controller_->SendGestureFlingCancelAck(true); | 204 tap_suppression_controller_->SendGestureFlingCancelAck(true); |
222 EXPECT_EQ(MockTapSuppressionController::NONE, | 205 EXPECT_EQ(MockTapSuppressionController::NONE, |
(...skipping 21 matching lines...) Expand all Loading... |
244 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | | 227 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | |
245 MockTapSuppressionController::TAP_DOWN_DROPPED, | 228 MockTapSuppressionController::TAP_DOWN_DROPPED, |
246 tap_suppression_controller_->last_actions()); | 229 tap_suppression_controller_->last_actions()); |
247 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 230 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
248 tap_suppression_controller_->state()); | 231 tap_suppression_controller_->state()); |
249 } | 232 } |
250 | 233 |
251 // Test TapSuppressionController for when GestureFlingCancel Ack comes before | 234 // Test TapSuppressionController for when GestureFlingCancel Ack comes before |
252 // TapDown, but there is a long delay between TapDown and TapUp. | 235 // TapDown, but there is a long delay between TapDown and TapUp. |
253 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapSufficientlyLateTapUp) { | 236 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapSufficientlyLateTapUp) { |
254 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
255 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
256 | |
257 // Send GestureFlingCancel. | 237 // Send GestureFlingCancel. |
258 tap_suppression_controller_->SendGestureFlingCancel(); | 238 tap_suppression_controller_->SendGestureFlingCancel(); |
259 EXPECT_EQ(MockTapSuppressionController::NONE, | 239 EXPECT_EQ(MockTapSuppressionController::NONE, |
260 tap_suppression_controller_->last_actions()); | 240 tap_suppression_controller_->last_actions()); |
261 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 241 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
262 tap_suppression_controller_->state()); | 242 tap_suppression_controller_->state()); |
263 | 243 |
264 // Send processed GestureFlingCancel Ack. | 244 // Send processed GestureFlingCancel Ack. |
265 tap_suppression_controller_->SendGestureFlingCancelAck(true); | 245 tap_suppression_controller_->SendGestureFlingCancelAck(true); |
266 EXPECT_EQ(MockTapSuppressionController::NONE, | 246 EXPECT_EQ(MockTapSuppressionController::NONE, |
(...skipping 20 matching lines...) Expand all Loading... |
287 tap_suppression_controller_->SendTapUp(); | 267 tap_suppression_controller_->SendTapUp(); |
288 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, | 268 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, |
289 tap_suppression_controller_->last_actions()); | 269 tap_suppression_controller_->last_actions()); |
290 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 270 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
291 tap_suppression_controller_->state()); | 271 tap_suppression_controller_->state()); |
292 } | 272 } |
293 | 273 |
294 // Test TapSuppressionController for when GestureFlingCancel Ack comes before | 274 // Test TapSuppressionController for when GestureFlingCancel Ack comes before |
295 // TapDown, but there is a small delay between the Ack and TapDown. | 275 // TapDown, but there is a small delay between the Ack and TapDown. |
296 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapInsufficientlyLateTapDown) { | 276 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapInsufficientlyLateTapDown) { |
297 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
298 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
299 | |
300 // Send GestureFlingCancel. | 277 // Send GestureFlingCancel. |
301 tap_suppression_controller_->SendGestureFlingCancel(); | 278 tap_suppression_controller_->SendGestureFlingCancel(); |
302 EXPECT_EQ(MockTapSuppressionController::NONE, | 279 EXPECT_EQ(MockTapSuppressionController::NONE, |
303 tap_suppression_controller_->last_actions()); | 280 tap_suppression_controller_->last_actions()); |
304 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 281 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
305 tap_suppression_controller_->state()); | 282 tap_suppression_controller_->state()); |
306 | 283 |
307 // Send GestureFlingCancel Ack. | 284 // Send GestureFlingCancel Ack. |
308 tap_suppression_controller_->SendGestureFlingCancelAck(true); | 285 tap_suppression_controller_->SendGestureFlingCancelAck(true); |
309 EXPECT_EQ(MockTapSuppressionController::NONE, | 286 EXPECT_EQ(MockTapSuppressionController::NONE, |
(...skipping 21 matching lines...) Expand all Loading... |
331 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | | 308 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | |
332 MockTapSuppressionController::TAP_DOWN_DROPPED, | 309 MockTapSuppressionController::TAP_DOWN_DROPPED, |
333 tap_suppression_controller_->last_actions()); | 310 tap_suppression_controller_->last_actions()); |
334 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 311 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
335 tap_suppression_controller_->state()); | 312 tap_suppression_controller_->state()); |
336 } | 313 } |
337 | 314 |
338 // Test TapSuppressionController for when GestureFlingCancel Ack comes before | 315 // Test TapSuppressionController for when GestureFlingCancel Ack comes before |
339 // TapDown, but there is a long delay between the Ack and TapDown. | 316 // TapDown, but there is a long delay between the Ack and TapDown. |
340 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapSufficientlyLateTapDown) { | 317 TEST_F(TapSuppressionControllerTest, GFCAckBeforeTapSufficientlyLateTapDown) { |
341 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
342 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
343 | |
344 // Send GestureFlingCancel. | 318 // Send GestureFlingCancel. |
345 tap_suppression_controller_->SendGestureFlingCancel(); | 319 tap_suppression_controller_->SendGestureFlingCancel(); |
346 EXPECT_EQ(MockTapSuppressionController::NONE, | 320 EXPECT_EQ(MockTapSuppressionController::NONE, |
347 tap_suppression_controller_->last_actions()); | 321 tap_suppression_controller_->last_actions()); |
348 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 322 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
349 tap_suppression_controller_->state()); | 323 tap_suppression_controller_->state()); |
350 | 324 |
351 // Send GestureFlingCancel Ack. | 325 // Send GestureFlingCancel Ack. |
352 tap_suppression_controller_->SendGestureFlingCancelAck(true); | 326 tap_suppression_controller_->SendGestureFlingCancelAck(true); |
353 EXPECT_EQ(MockTapSuppressionController::NONE, | 327 EXPECT_EQ(MockTapSuppressionController::NONE, |
(...skipping 20 matching lines...) Expand all Loading... |
374 tap_suppression_controller_->SendTapUp(); | 348 tap_suppression_controller_->SendTapUp(); |
375 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, | 349 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, |
376 tap_suppression_controller_->last_actions()); | 350 tap_suppression_controller_->last_actions()); |
377 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 351 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
378 tap_suppression_controller_->state()); | 352 tap_suppression_controller_->state()); |
379 } | 353 } |
380 | 354 |
381 // Test TapSuppressionController for when unprocessed GestureFlingCancel Ack | 355 // Test TapSuppressionController for when unprocessed GestureFlingCancel Ack |
382 // comes after TapDown and everything happens without any delay. | 356 // comes after TapDown and everything happens without any delay. |
383 TEST_F(TapSuppressionControllerTest, GFCAckUnprocessedAfterTapFast) { | 357 TEST_F(TapSuppressionControllerTest, GFCAckUnprocessedAfterTapFast) { |
384 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
385 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
386 | |
387 // Send GestureFlingCancel. | 358 // Send GestureFlingCancel. |
388 tap_suppression_controller_->SendGestureFlingCancel(); | 359 tap_suppression_controller_->SendGestureFlingCancel(); |
389 EXPECT_EQ(MockTapSuppressionController::NONE, | 360 EXPECT_EQ(MockTapSuppressionController::NONE, |
390 tap_suppression_controller_->last_actions()); | 361 tap_suppression_controller_->last_actions()); |
391 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 362 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
392 tap_suppression_controller_->state()); | 363 tap_suppression_controller_->state()); |
393 | 364 |
394 // Send TapDown. This TapDown should be suppressed, for now. | 365 // Send TapDown. This TapDown should be suppressed, for now. |
395 tap_suppression_controller_->SendTapDown(); | 366 tap_suppression_controller_->SendTapDown(); |
396 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, | 367 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, |
(...skipping 13 matching lines...) Expand all Loading... |
410 tap_suppression_controller_->SendTapUp(); | 381 tap_suppression_controller_->SendTapUp(); |
411 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, | 382 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, |
412 tap_suppression_controller_->last_actions()); | 383 tap_suppression_controller_->last_actions()); |
413 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 384 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
414 tap_suppression_controller_->state()); | 385 tap_suppression_controller_->state()); |
415 } | 386 } |
416 | 387 |
417 // Test TapSuppressionController for when processed GestureFlingCancel Ack comes | 388 // Test TapSuppressionController for when processed GestureFlingCancel Ack comes |
418 // after TapDown and everything happens without any delay. | 389 // after TapDown and everything happens without any delay. |
419 TEST_F(TapSuppressionControllerTest, GFCAckProcessedAfterTapFast) { | 390 TEST_F(TapSuppressionControllerTest, GFCAckProcessedAfterTapFast) { |
420 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
421 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
422 | |
423 // Send GestureFlingCancel. | 391 // Send GestureFlingCancel. |
424 tap_suppression_controller_->SendGestureFlingCancel(); | 392 tap_suppression_controller_->SendGestureFlingCancel(); |
425 EXPECT_EQ(MockTapSuppressionController::NONE, | 393 EXPECT_EQ(MockTapSuppressionController::NONE, |
426 tap_suppression_controller_->last_actions()); | 394 tap_suppression_controller_->last_actions()); |
427 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 395 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
428 tap_suppression_controller_->state()); | 396 tap_suppression_controller_->state()); |
429 | 397 |
430 // Send TapDown. This TapDown should be suppressed. | 398 // Send TapDown. This TapDown should be suppressed. |
431 tap_suppression_controller_->SendTapDown(); | 399 tap_suppression_controller_->SendTapDown(); |
432 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, | 400 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, |
(...skipping 13 matching lines...) Expand all Loading... |
446 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | | 414 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | |
447 MockTapSuppressionController::TAP_DOWN_DROPPED, | 415 MockTapSuppressionController::TAP_DOWN_DROPPED, |
448 tap_suppression_controller_->last_actions()); | 416 tap_suppression_controller_->last_actions()); |
449 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 417 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
450 tap_suppression_controller_->state()); | 418 tap_suppression_controller_->state()); |
451 } | 419 } |
452 | 420 |
453 // Test TapSuppressionController for when GestureFlingCancel Ack comes after | 421 // Test TapSuppressionController for when GestureFlingCancel Ack comes after |
454 // TapDown and there is a small delay between the Ack and TapUp. | 422 // TapDown and there is a small delay between the Ack and TapUp. |
455 TEST_F(TapSuppressionControllerTest, GFCAckAfterTapInsufficientlyLateTapUp) { | 423 TEST_F(TapSuppressionControllerTest, GFCAckAfterTapInsufficientlyLateTapUp) { |
456 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
457 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
458 | |
459 // Send GestureFlingCancel. | 424 // Send GestureFlingCancel. |
460 tap_suppression_controller_->SendGestureFlingCancel(); | 425 tap_suppression_controller_->SendGestureFlingCancel(); |
461 EXPECT_EQ(MockTapSuppressionController::NONE, | 426 EXPECT_EQ(MockTapSuppressionController::NONE, |
462 tap_suppression_controller_->last_actions()); | 427 tap_suppression_controller_->last_actions()); |
463 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 428 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
464 tap_suppression_controller_->state()); | 429 tap_suppression_controller_->state()); |
465 | 430 |
466 // Send TapDown. This TapDown should be suppressed. | 431 // Send TapDown. This TapDown should be suppressed. |
467 tap_suppression_controller_->SendTapDown(); | 432 tap_suppression_controller_->SendTapDown(); |
468 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, | 433 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, |
(...skipping 21 matching lines...) Expand all Loading... |
490 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | | 455 EXPECT_EQ(MockTapSuppressionController::TAP_UP_SUPPRESSED | |
491 MockTapSuppressionController::TAP_DOWN_DROPPED, | 456 MockTapSuppressionController::TAP_DOWN_DROPPED, |
492 tap_suppression_controller_->last_actions()); | 457 tap_suppression_controller_->last_actions()); |
493 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 458 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
494 tap_suppression_controller_->state()); | 459 tap_suppression_controller_->state()); |
495 } | 460 } |
496 | 461 |
497 // Test TapSuppressionController for when GestureFlingCancel Ack comes after | 462 // Test TapSuppressionController for when GestureFlingCancel Ack comes after |
498 // TapDown and there is a long delay between the Ack and TapUp. | 463 // TapDown and there is a long delay between the Ack and TapUp. |
499 TEST_F(TapSuppressionControllerTest, GFCAckAfterTapSufficientlyLateTapUp) { | 464 TEST_F(TapSuppressionControllerTest, GFCAckAfterTapSufficientlyLateTapUp) { |
500 tap_suppression_controller_->set_max_cancel_to_down_time_in_ms(10); | |
501 tap_suppression_controller_->set_max_tap_gap_time_in_ms(10); | |
502 | |
503 // Send GestureFlingCancel. | 465 // Send GestureFlingCancel. |
504 tap_suppression_controller_->SendGestureFlingCancel(); | 466 tap_suppression_controller_->SendGestureFlingCancel(); |
505 EXPECT_EQ(MockTapSuppressionController::NONE, | 467 EXPECT_EQ(MockTapSuppressionController::NONE, |
506 tap_suppression_controller_->last_actions()); | 468 tap_suppression_controller_->last_actions()); |
507 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, | 469 EXPECT_EQ(MockTapSuppressionController::GFC_IN_PROGRESS, |
508 tap_suppression_controller_->state()); | 470 tap_suppression_controller_->state()); |
509 | 471 |
510 // Send TapDown. This TapDown should be suppressed, for now. | 472 // Send TapDown. This TapDown should be suppressed, for now. |
511 tap_suppression_controller_->SendTapDown(); | 473 tap_suppression_controller_->SendTapDown(); |
512 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, | 474 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_DEFERRED, |
(...skipping 17 matching lines...) Expand all Loading... |
530 tap_suppression_controller_->state()); | 492 tap_suppression_controller_->state()); |
531 | 493 |
532 // Send TapUp. This TapUp should not be suppressed. | 494 // Send TapUp. This TapUp should not be suppressed. |
533 tap_suppression_controller_->SendTapUp(); | 495 tap_suppression_controller_->SendTapUp(); |
534 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, | 496 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, |
535 tap_suppression_controller_->last_actions()); | 497 tap_suppression_controller_->last_actions()); |
536 EXPECT_EQ(MockTapSuppressionController::NOTHING, | 498 EXPECT_EQ(MockTapSuppressionController::NOTHING, |
537 tap_suppression_controller_->state()); | 499 tap_suppression_controller_->state()); |
538 } | 500 } |
539 | 501 |
| 502 // Test that no suppression occurs if the TapSuppressionController is disabled. |
| 503 TEST_F(TapSuppressionControllerTest, NoSuppressionIfDisabled) { |
| 504 TapSuppressionController::Config disabled_config; |
| 505 disabled_config.enabled = false; |
| 506 tap_suppression_controller_.reset( |
| 507 new MockTapSuppressionController(disabled_config)); |
| 508 |
| 509 // Send GestureFlingCancel. |
| 510 tap_suppression_controller_->SendGestureFlingCancel(); |
| 511 EXPECT_EQ(MockTapSuppressionController::NONE, |
| 512 tap_suppression_controller_->last_actions()); |
| 513 EXPECT_EQ(MockTapSuppressionController::DISABLED, |
| 514 tap_suppression_controller_->state()); |
| 515 |
| 516 // Send GestureFlingCancel Ack. |
| 517 tap_suppression_controller_->SendGestureFlingCancelAck(true); |
| 518 EXPECT_EQ(MockTapSuppressionController::NONE, |
| 519 tap_suppression_controller_->last_actions()); |
| 520 EXPECT_EQ(MockTapSuppressionController::DISABLED, |
| 521 tap_suppression_controller_->state()); |
| 522 |
| 523 // Send TapDown. This TapDown should not be suppressed. |
| 524 tap_suppression_controller_->SendTapDown(); |
| 525 EXPECT_EQ(MockTapSuppressionController::TAP_DOWN_FORWARDED, |
| 526 tap_suppression_controller_->last_actions()); |
| 527 EXPECT_EQ(MockTapSuppressionController::DISABLED, |
| 528 tap_suppression_controller_->state()); |
| 529 |
| 530 // Send TapUp. This TapUp should not be suppressed. |
| 531 tap_suppression_controller_->SendTapUp(); |
| 532 EXPECT_EQ(MockTapSuppressionController::TAP_UP_FORWARDED, |
| 533 tap_suppression_controller_->last_actions()); |
| 534 EXPECT_EQ(MockTapSuppressionController::DISABLED, |
| 535 tap_suppression_controller_->state()); |
| 536 } |
| 537 |
| 538 |
540 } // namespace content | 539 } // namespace content |
OLD | NEW |