| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 } | 166 } |
| 167 | 167 |
| 168 WebGestureEvent GestureEventQueueEventAt(int i) { | 168 WebGestureEvent GestureEventQueueEventAt(int i) { |
| 169 return queue()->coalesced_gesture_events_.at(i).event; | 169 return queue()->coalesced_gesture_events_.at(i).event; |
| 170 } | 170 } |
| 171 | 171 |
| 172 bool ScrollingInProgress() { | 172 bool ScrollingInProgress() { |
| 173 return queue()->scrolling_in_progress_; | 173 return queue()->scrolling_in_progress_; |
| 174 } | 174 } |
| 175 | 175 |
| 176 bool FlingInProgress() { | 176 int ActiveFlingCount() { return queue()->active_fling_count_; } |
| 177 return queue()->fling_in_progress_; | |
| 178 } | |
| 179 | 177 |
| 180 bool WillIgnoreNextACK() { | 178 bool WillIgnoreNextACK() { |
| 181 return queue()->ignore_next_ack_; | 179 return queue()->ignore_next_ack_; |
| 182 } | 180 } |
| 183 | 181 |
| 184 GestureEventQueue* queue() const { | 182 GestureEventQueue* queue() const { |
| 185 return queue_.get(); | 183 return queue_.get(); |
| 186 } | 184 } |
| 187 | 185 |
| 188 private: | 186 private: |
| (...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 955 | 953 |
| 956 #if GTEST_HAS_PARAM_TEST | 954 #if GTEST_HAS_PARAM_TEST |
| 957 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) { | 955 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) { |
| 958 WebGestureDevice source_device = GetParam(); | 956 WebGestureDevice source_device = GetParam(); |
| 959 | 957 |
| 960 // GFC without previous GFS is dropped. | 958 // GFC without previous GFS is dropped. |
| 961 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 959 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 962 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 960 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
| 963 EXPECT_EQ(0U, GestureEventQueueSize()); | 961 EXPECT_EQ(0U, GestureEventQueueSize()); |
| 964 | 962 |
| 963 // GFC after unconsumed fling is dropped. |
| 964 SimulateGestureEvent(WebInputEvent::GestureFlingStart, source_device); |
| 965 SendInputEventACK(WebInputEvent::GestureFlingStart, |
| 966 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 967 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
| 968 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
| 969 EXPECT_EQ(0U, GestureEventQueueSize()); |
| 970 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 971 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
| 972 EXPECT_EQ(0U, GestureEventQueueSize()); |
| 973 |
| 974 // GFC after fling has ended is dropped. |
| 975 SimulateGestureEvent(WebInputEvent::GestureFlingStart, source_device); |
| 976 SendInputEventACK(WebInputEvent::GestureFlingStart, |
| 977 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 978 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
| 979 EXPECT_EQ(0U, GestureEventQueueSize()); |
| 980 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
| 981 |
| 982 EXPECT_EQ(1, ActiveFlingCount()); |
| 983 queue()->DidStopFlinging(); |
| 984 EXPECT_EQ(0, ActiveFlingCount()); |
| 985 |
| 986 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 987 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
| 988 EXPECT_EQ(0U, GestureEventQueueSize()); |
| 989 |
| 965 // GFC after previous GFS is dispatched and acked. | 990 // GFC after previous GFS is dispatched and acked. |
| 966 SimulateGestureFlingStartEvent(0, -10, source_device); | 991 SimulateGestureFlingStartEvent(0, -10, source_device); |
| 967 EXPECT_TRUE(FlingInProgress()); | |
| 968 SendInputEventACK(WebInputEvent::GestureFlingStart, | 992 SendInputEventACK(WebInputEvent::GestureFlingStart, |
| 969 INPUT_EVENT_ACK_STATE_CONSUMED); | 993 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 994 EXPECT_EQ(1, ActiveFlingCount()); |
| 970 RunUntilIdle(); | 995 RunUntilIdle(); |
| 971 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); | 996 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
| 972 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 997 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 973 EXPECT_FALSE(FlingInProgress()); | 998 queue()->DidStopFlinging(); |
| 999 EXPECT_EQ(0, ActiveFlingCount()); |
| 974 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); | 1000 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); |
| 975 SendInputEventACK(WebInputEvent::GestureFlingCancel, | 1001 SendInputEventACK(WebInputEvent::GestureFlingCancel, |
| 976 INPUT_EVENT_ACK_STATE_CONSUMED); | 1002 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 977 RunUntilIdle(); | 1003 RunUntilIdle(); |
| 978 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); | 1004 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
| 979 EXPECT_EQ(0U, GestureEventQueueSize()); | 1005 EXPECT_EQ(0U, GestureEventQueueSize()); |
| 980 | 1006 |
| 981 // GFC before previous GFS is acked. | 1007 // GFC before previous GFS is acked. |
| 982 SimulateGestureFlingStartEvent(0, -10, source_device); | 1008 SimulateGestureFlingStartEvent(0, -10, source_device); |
| 983 EXPECT_TRUE(FlingInProgress()); | |
| 984 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 1009 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 985 EXPECT_FALSE(FlingInProgress()); | |
| 986 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 1010 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
| 987 EXPECT_EQ(2U, GestureEventQueueSize()); | 1011 EXPECT_EQ(2U, GestureEventQueueSize()); |
| 988 | 1012 |
| 989 // Advance state realistically. | 1013 // Advance state realistically. |
| 990 SendInputEventACK(WebInputEvent::GestureFlingStart, | 1014 SendInputEventACK(WebInputEvent::GestureFlingStart, |
| 991 INPUT_EVENT_ACK_STATE_CONSUMED); | 1015 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 992 RunUntilIdle(); | 1016 RunUntilIdle(); |
| 993 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 1017 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
| 994 SendInputEventACK(WebInputEvent::GestureFlingCancel, | 1018 SendInputEventACK(WebInputEvent::GestureFlingCancel, |
| 995 INPUT_EVENT_ACK_STATE_CONSUMED); | 1019 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 996 RunUntilIdle(); | 1020 RunUntilIdle(); |
| 997 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount()); | 1021 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount()); |
| 998 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 1022 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
| 999 EXPECT_EQ(0U, GestureEventQueueSize()); | 1023 EXPECT_EQ(0U, GestureEventQueueSize()); |
| 1000 | 1024 |
| 1001 // GFS is added to the queue if another event is pending | 1025 // GFS is added to the queue if another event is pending |
| 1002 SimulateGestureScrollUpdateEvent(8, -7, 0); | 1026 SimulateGestureScrollUpdateEvent(8, -7, 0); |
| 1003 SimulateGestureFlingStartEvent(0, -10, source_device); | 1027 SimulateGestureFlingStartEvent(0, -10, source_device); |
| 1004 EXPECT_EQ(2U, GestureEventQueueSize()); | 1028 EXPECT_EQ(2U, GestureEventQueueSize()); |
| 1005 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 1029 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
| 1006 WebGestureEvent merged_event = GestureEventLastQueueEvent(); | 1030 WebGestureEvent merged_event = GestureEventLastQueueEvent(); |
| 1007 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); | 1031 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); |
| 1008 EXPECT_TRUE(FlingInProgress()); | |
| 1009 EXPECT_EQ(2U, GestureEventQueueSize()); | 1032 EXPECT_EQ(2U, GestureEventQueueSize()); |
| 1010 | 1033 |
| 1011 // GFS in queue means that a GFC is added to the queue | 1034 // GFS in queue means that a GFC is added to the queue |
| 1012 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 1035 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 1013 merged_event =GestureEventLastQueueEvent(); | 1036 merged_event =GestureEventLastQueueEvent(); |
| 1014 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); | 1037 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); |
| 1015 EXPECT_FALSE(FlingInProgress()); | |
| 1016 EXPECT_EQ(3U, GestureEventQueueSize()); | 1038 EXPECT_EQ(3U, GestureEventQueueSize()); |
| 1017 | 1039 |
| 1018 // Adding a second GFC is dropped. | 1040 // Adding a second GFC is dropped. |
| 1019 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 1041 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 1020 EXPECT_FALSE(FlingInProgress()); | |
| 1021 EXPECT_EQ(3U, GestureEventQueueSize()); | 1042 EXPECT_EQ(3U, GestureEventQueueSize()); |
| 1022 | 1043 |
| 1023 // Adding another GFS will add it to the queue. | 1044 // Adding another GFS will add it to the queue. |
| 1024 SimulateGestureFlingStartEvent(0, -10, source_device); | 1045 SimulateGestureFlingStartEvent(0, -10, source_device); |
| 1025 merged_event = GestureEventLastQueueEvent(); | 1046 merged_event = GestureEventLastQueueEvent(); |
| 1026 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); | 1047 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); |
| 1027 EXPECT_TRUE(FlingInProgress()); | |
| 1028 EXPECT_EQ(4U, GestureEventQueueSize()); | 1048 EXPECT_EQ(4U, GestureEventQueueSize()); |
| 1029 | 1049 |
| 1030 // GFS in queue means that a GFC is added to the queue | 1050 // GFS in queue means that a GFC is added to the queue |
| 1031 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 1051 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 1032 merged_event = GestureEventLastQueueEvent(); | 1052 merged_event = GestureEventLastQueueEvent(); |
| 1033 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); | 1053 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); |
| 1034 EXPECT_FALSE(FlingInProgress()); | |
| 1035 EXPECT_EQ(5U, GestureEventQueueSize()); | 1054 EXPECT_EQ(5U, GestureEventQueueSize()); |
| 1036 | 1055 |
| 1037 // Adding another GFC with a GFC already there is dropped. | 1056 // Adding another GFC with a GFC already there is dropped. |
| 1038 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 1057 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
| 1039 merged_event = GestureEventLastQueueEvent(); | 1058 merged_event = GestureEventLastQueueEvent(); |
| 1040 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); | 1059 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); |
| 1041 EXPECT_FALSE(FlingInProgress()); | |
| 1042 EXPECT_EQ(5U, GestureEventQueueSize()); | 1060 EXPECT_EQ(5U, GestureEventQueueSize()); |
| 1043 } | 1061 } |
| 1044 | 1062 |
| 1045 INSTANTIATE_TEST_CASE_P(AllSources, | 1063 INSTANTIATE_TEST_CASE_P(AllSources, |
| 1046 GestureEventQueueWithSourceTest, | 1064 GestureEventQueueWithSourceTest, |
| 1047 testing::Values(blink::WebGestureDeviceTouchscreen, | 1065 testing::Values(blink::WebGestureDeviceTouchscreen, |
| 1048 blink::WebGestureDeviceTouchpad)); | 1066 blink::WebGestureDeviceTouchpad)); |
| 1049 #endif // GTEST_HAS_PARAM_TEST | 1067 #endif // GTEST_HAS_PARAM_TEST |
| 1050 | 1068 |
| 1051 // Test that a GestureScrollEnd | GestureFlingStart are deferred during the | 1069 // Test that a GestureScrollEnd | GestureFlingStart are deferred during the |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 WebInputEvent::GestureScrollUpdate}; | 1164 WebInputEvent::GestureScrollUpdate}; |
| 1147 | 1165 |
| 1148 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type); | 1166 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type); |
| 1149 i++) { | 1167 i++) { |
| 1150 WebGestureEvent merged_event = GestureEventQueueEventAt(i); | 1168 WebGestureEvent merged_event = GestureEventQueueEventAt(i); |
| 1151 EXPECT_EQ(expected[i], merged_event.type); | 1169 EXPECT_EQ(expected[i], merged_event.type); |
| 1152 } | 1170 } |
| 1153 } | 1171 } |
| 1154 | 1172 |
| 1155 } // namespace content | 1173 } // namespace content |
| OLD | NEW |