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