| Index: content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| diff --git a/content/browser/renderer_host/input/touch_event_queue_unittest.cc b/content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| index e322a5f23f9ea72d88e404a010f65b017079097f..682472aed5b8c5b65b7f54c67907b5a9b34f4281 100644
|
| --- a/content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| +++ b/content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| @@ -258,6 +258,10 @@ class TouchEventQueueTest : public testing::Test,
|
| queue_->OnHasTouchEventHandlers(has_handlers);
|
| }
|
|
|
| + void OnHasTouchMoveEventHandlers(bool has_handlers) {
|
| + queue_->OnHasTouchMoveEventHandlers(has_handlers);
|
| + }
|
| +
|
| void SetAckTimeoutDisabled() { queue_->SetAckTimeoutEnabled(false); }
|
|
|
| void SetIsMobileOptimizedSite(bool is_mobile_optimized) {
|
| @@ -316,6 +320,7 @@ class TouchEventQueueTest : public testing::Test,
|
| void ResetQueueWithConfig(const TouchEventQueue::Config& config) {
|
| queue_.reset(new TouchEventQueue(this, config));
|
| queue_->OnHasTouchEventHandlers(true);
|
| + queue_->OnHasTouchMoveEventHandlers(true);
|
| }
|
|
|
| scoped_ptr<TouchEventQueue> queue_;
|
| @@ -579,6 +584,37 @@ TEST_F(TouchEventQueueTest,
|
| EXPECT_EQ(1U, queued_event_count());
|
| }
|
|
|
| +TEST_F(TouchEventQueueTest, TouchMoveNotForwardedIfNoTouchMoveHandlers) {
|
| + OnHasTouchEventHandlers(true);
|
| + OnHasTouchMoveEventHandlers(false);
|
| +
|
| + // Send a touch-press event.
|
| + PressTouchPoint(1, 1);
|
| + SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
|
| + EXPECT_EQ(1U, GetAndResetSentEventCount());
|
| + EXPECT_EQ(1U, GetAndResetAckedEventCount());
|
| +
|
| + // As there are no touchmove handlers, touchmoves should not be forwarded.
|
| + MoveTouchPoint(0, 5, 5);
|
| + EXPECT_EQ(0U, queued_event_count());
|
| + EXPECT_EQ(1U, GetAndResetAckedEventCount());
|
| + EXPECT_EQ(0U, GetAndResetSentEventCount());
|
| + EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state());
|
| +
|
| + // If a touchmove handler is added, we should resume forwarding touchmove's
|
| + // (even if we've dropped previous touchmoves).
|
| + OnHasTouchMoveEventHandlers(true);
|
| + MoveTouchPoint(0, 50, 50);
|
| + EXPECT_EQ(1U, GetAndResetSentEventCount());
|
| + SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
|
| + EXPECT_EQ(1U, GetAndResetAckedEventCount());
|
| +
|
| + ReleaseTouchPoint(0);
|
| + EXPECT_EQ(1U, GetAndResetSentEventCount());
|
| + SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| + EXPECT_EQ(1U, GetAndResetAckedEventCount());
|
| +}
|
| +
|
| // Tests that touch-events are coalesced properly in the queue.
|
| TEST_F(TouchEventQueueTest, Coalesce) {
|
| // Send a touch-press event.
|
|
|