| 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 |