Chromium Code Reviews| 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/logging.h" | 6 #include "base/logging.h" |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "content/browser/renderer_host/input/timeout_monitor.h" | 9 #include "content/browser/renderer_host/input/timeout_monitor.h" |
| 10 #include "content/browser/renderer_host/input/touch_event_queue.h" | 10 #include "content/browser/renderer_host/input/touch_event_queue.h" |
| (...skipping 1918 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1929 EXPECT_EQ(1U, queued_event_count()); | 1929 EXPECT_EQ(1U, queued_event_count()); |
| 1930 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1930 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1931 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1931 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1932 | 1932 |
| 1933 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1933 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1934 EXPECT_EQ(0U, queued_event_count()); | 1934 EXPECT_EQ(0U, queued_event_count()); |
| 1935 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1935 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 1936 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1936 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1937 } | 1937 } |
| 1938 | 1938 |
| 1939 TEST_F(TouchEventQueueTest, AsyncTouchDeferredDuringTouchAck) { | |
| 1940 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
| 1941 | |
| 1942 // Initiate scroll-induced touch throttling. | |
| 1943 PressTouchPoint(0, 0); | |
| 1944 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 1945 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
| 1946 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
| 1947 | |
| 1948 MoveTouchPoint(0, 0, 5); | |
| 1949 EXPECT_EQ(1U, queued_event_count()); | |
| 1950 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
| 1951 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | |
| 1952 SendGestureEvent(WebInputEvent::GestureScrollBegin); | |
| 1953 SendGestureEvent(WebInputEvent::GestureScrollUpdate); | |
| 1954 | |
| 1955 // Now queue a touchmove that exceeds the application slop region. | |
| 1956 MoveTouchPoint(0, 0, 20); | |
| 1957 EXPECT_FALSE(HasPendingAsyncTouchMove()); | |
| 1958 EXPECT_EQ(2U, queued_event_count()); | |
| 1959 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
| 1960 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | |
| 1961 | |
| 1962 // Despite the second touchmove exceeding the application slop region, its | |
| 1963 // sending will be deferred until after the original touch was ack'ed. | |
| 1964 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 1965 EXPECT_TRUE(HasPendingAsyncTouchMove()); | |
| 1966 EXPECT_EQ(0U, queued_event_count()); | |
| 1967 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
| 1968 EXPECT_EQ(2U, GetAndResetAckedEventCount()); | |
| 1969 | |
| 1970 // A subsequent touchmove will flush the deferred async touchmove, | |
|
Rick Byers
2015/01/27 17:59:15
coalescing means it's more like 'replace' than 'fl
| |
| 1971 MoveTouchPoint(0, 0, 25); | |
| 1972 EXPECT_FALSE(HasPendingAsyncTouchMove()); | |
| 1973 EXPECT_FALSE(sent_event().cancelable); | |
| 1974 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
| 1975 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | |
| 1976 } | |
| 1977 | |
| 1939 // Ensure that async touch dispatch and touch ack timeout interactions work | 1978 // Ensure that async touch dispatch and touch ack timeout interactions work |
| 1940 // appropriately. | 1979 // appropriately. |
| 1941 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) { | 1980 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) { |
| 1942 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | 1981 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); |
| 1943 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay()); | 1982 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay()); |
| 1944 | 1983 |
| 1945 // The touchstart should start the timeout. | 1984 // The touchstart should start the timeout. |
| 1946 PressTouchPoint(0, 0); | 1985 PressTouchPoint(0, 0); |
| 1947 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1986 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1948 EXPECT_TRUE(IsTimeoutRunning()); | 1987 EXPECT_TRUE(IsTimeoutRunning()); |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2249 | 2288 |
| 2250 // Give the touchmove a valid id; it should be sent. | 2289 // Give the touchmove a valid id; it should be sent. |
| 2251 event.touches[0].id = press_id; | 2290 event.touches[0].id = press_id; |
| 2252 SendTouchEvent(event); | 2291 SendTouchEvent(event); |
| 2253 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2292 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 2254 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2293 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 2255 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2294 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 2256 } | 2295 } |
| 2257 | 2296 |
| 2258 } // namespace content | 2297 } // namespace content |
| OLD | NEW |