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 "content/common/input/web_input_event_traits.h" | 5 #include "content/common/input/web_input_event_traits.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 #include "third_party/WebKit/public/web/WebInputEvent.h" | 10 #include "third_party/WebKit/public/web/WebInputEvent.h" |
11 | 11 |
12 using blink::WebGestureEvent; | 12 using blink::WebGestureEvent; |
13 using blink::WebInputEvent; | 13 using blink::WebInputEvent; |
14 using blink::WebKeyboardEvent; | 14 using blink::WebKeyboardEvent; |
15 using blink::WebMouseEvent; | 15 using blink::WebMouseEvent; |
16 using blink::WebMouseWheelEvent; | 16 using blink::WebMouseWheelEvent; |
17 using blink::WebTouchEvent; | 17 using blink::WebTouchEvent; |
18 using blink::WebTouchPoint; | 18 using blink::WebTouchPoint; |
19 using std::numeric_limits; | 19 using std::numeric_limits; |
20 | 20 |
21 namespace content { | 21 namespace content { |
22 namespace { | 22 namespace { |
23 | 23 |
24 class WebInputEventTraitsTest : public testing::Test { | 24 class WebInputEventTraitsTest : public testing::Test { |
25 protected: | 25 protected: |
26 static WebTouchPoint CreateTouchPoint(WebTouchPoint::State state, int id) { | 26 static WebTouchPoint CreateTouchPoint(WebTouchPoint::State state, int id) { |
27 WebTouchPoint touch; | 27 WebTouchPoint touch; |
28 touch.state = state; | 28 touch.state = state; |
29 touch.id = id; | 29 touch.pointerId = id; |
30 return touch; | 30 return touch; |
31 } | 31 } |
32 | 32 |
33 static WebTouchEvent CreateTouch(WebInputEvent::Type type) { | 33 static WebTouchEvent CreateTouch(WebInputEvent::Type type) { |
34 return CreateTouch(type, 1); | 34 return CreateTouch(type, 1); |
35 } | 35 } |
36 | 36 |
37 static WebTouchEvent CreateTouch(WebInputEvent::Type type, | 37 static WebTouchEvent CreateTouch(WebInputEvent::Type type, |
38 unsigned touch_count) { | 38 unsigned touch_count) { |
39 WebTouchEvent event; | 39 WebTouchEvent event; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 73 |
74 // Touches of different types won't coalesce. | 74 // Touches of different types won't coalesce. |
75 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); | 75 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); |
76 | 76 |
77 // Touch moves with idential touch lengths and touch ids should coalesce. | 77 // Touch moves with idential touch lengths and touch ids should coalesce. |
78 EXPECT_TRUE(WebInputEventTraits::CanCoalesce(touch1, touch1)); | 78 EXPECT_TRUE(WebInputEventTraits::CanCoalesce(touch1, touch1)); |
79 | 79 |
80 // Touch moves with different touch ids should not coalesce. | 80 // Touch moves with different touch ids should not coalesce. |
81 touch0 = CreateTouch(WebInputEvent::TouchMove); | 81 touch0 = CreateTouch(WebInputEvent::TouchMove); |
82 touch1 = CreateTouch(WebInputEvent::TouchMove); | 82 touch1 = CreateTouch(WebInputEvent::TouchMove); |
83 touch0.touches[0].id = 7; | 83 touch0.touches[0].pointerId = 7; |
84 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); | 84 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); |
85 touch0 = CreateTouch(WebInputEvent::TouchMove, 2); | 85 touch0 = CreateTouch(WebInputEvent::TouchMove, 2); |
86 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); | 86 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); |
87 touch0.touches[0].id = 1; | 87 touch0.touches[0].pointerId = 1; |
88 touch1.touches[0].id = 0; | 88 touch1.touches[0].pointerId = 0; |
89 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); | 89 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); |
90 | 90 |
91 // Touch moves with different touch lengths should not coalesce. | 91 // Touch moves with different touch lengths should not coalesce. |
92 touch0 = CreateTouch(WebInputEvent::TouchMove, 1); | 92 touch0 = CreateTouch(WebInputEvent::TouchMove, 1); |
93 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); | 93 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); |
94 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); | 94 EXPECT_FALSE(WebInputEventTraits::CanCoalesce(touch0, touch1)); |
95 | 95 |
96 // Touch moves with identical touch ids in different orders should coalesce. | 96 // Touch moves with identical touch ids in different orders should coalesce. |
97 touch0 = CreateTouch(WebInputEvent::TouchMove, 2); | 97 touch0 = CreateTouch(WebInputEvent::TouchMove, 2); |
98 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); | 98 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); |
99 touch0.touches[0] = touch1.touches[1] = | 99 touch0.touches[0] = touch1.touches[1] = |
100 CreateTouchPoint(WebTouchPoint::StateMoved, 1); | 100 CreateTouchPoint(WebTouchPoint::StateMoved, 1); |
101 touch0.touches[1] = touch1.touches[0] = | 101 touch0.touches[1] = touch1.touches[0] = |
102 CreateTouchPoint(WebTouchPoint::StateMoved, 0); | 102 CreateTouchPoint(WebTouchPoint::StateMoved, 0); |
103 EXPECT_TRUE(WebInputEventTraits::CanCoalesce(touch0, touch1)); | 103 EXPECT_TRUE(WebInputEventTraits::CanCoalesce(touch0, touch1)); |
104 | 104 |
105 // Pointers with the same ID's should coalesce. | 105 // Pointers with the same ID's should coalesce. |
106 touch0 = CreateTouch(WebInputEvent::TouchMove, 2); | 106 touch0 = CreateTouch(WebInputEvent::TouchMove, 2); |
107 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); | 107 touch1 = CreateTouch(WebInputEvent::TouchMove, 2); |
108 touch0.touches[0] = touch1.touches[1] = | 108 touch0.touches[0] = touch1.touches[1] = |
109 CreateTouchPoint(WebTouchPoint::StateMoved, 1); | 109 CreateTouchPoint(WebTouchPoint::StateMoved, 1); |
110 WebInputEventTraits::Coalesce(touch0, &touch1); | 110 WebInputEventTraits::Coalesce(touch0, &touch1); |
111 ASSERT_EQ(1, touch1.touches[0].id); | 111 ASSERT_EQ(1, touch1.touches[0].pointerId); |
112 ASSERT_EQ(0, touch1.touches[1].id); | 112 ASSERT_EQ(0, touch1.touches[1].pointerId); |
113 EXPECT_EQ(WebTouchPoint::StateUndefined, touch1.touches[1].state); | 113 EXPECT_EQ(WebTouchPoint::StateUndefined, touch1.touches[1].state); |
114 EXPECT_EQ(WebTouchPoint::StateMoved, touch1.touches[0].state); | 114 EXPECT_EQ(WebTouchPoint::StateMoved, touch1.touches[0].state); |
115 | 115 |
116 // Movement from now-stationary pointers should be preserved. | 116 // Movement from now-stationary pointers should be preserved. |
117 touch0 = touch1 = CreateTouch(WebInputEvent::TouchMove, 2); | 117 touch0 = touch1 = CreateTouch(WebInputEvent::TouchMove, 2); |
118 touch0.touches[0] = CreateTouchPoint(WebTouchPoint::StateMoved, 1); | 118 touch0.touches[0] = CreateTouchPoint(WebTouchPoint::StateMoved, 1); |
119 touch1.touches[1] = CreateTouchPoint(WebTouchPoint::StateStationary, 1); | 119 touch1.touches[1] = CreateTouchPoint(WebTouchPoint::StateStationary, 1); |
120 touch0.touches[1] = CreateTouchPoint(WebTouchPoint::StateStationary, 0); | 120 touch0.touches[1] = CreateTouchPoint(WebTouchPoint::StateStationary, 0); |
121 touch1.touches[0] = CreateTouchPoint(WebTouchPoint::StateMoved, 0); | 121 touch1.touches[0] = CreateTouchPoint(WebTouchPoint::StateMoved, 0); |
122 WebInputEventTraits::Coalesce(touch0, &touch1); | 122 WebInputEventTraits::Coalesce(touch0, &touch1); |
123 ASSERT_EQ(1, touch1.touches[0].id); | 123 ASSERT_EQ(1, touch1.touches[0].pointerId); |
124 ASSERT_EQ(0, touch1.touches[1].id); | 124 ASSERT_EQ(0, touch1.touches[1].pointerId); |
125 EXPECT_EQ(WebTouchPoint::StateMoved, touch1.touches[0].state); | 125 EXPECT_EQ(WebTouchPoint::StateMoved, touch1.touches[0].state); |
126 EXPECT_EQ(WebTouchPoint::StateMoved, touch1.touches[1].state); | 126 EXPECT_EQ(WebTouchPoint::StateMoved, touch1.touches[1].state); |
127 } | 127 } |
128 | 128 |
129 TEST_F(WebInputEventTraitsTest, PinchEventCoalescing) { | 129 TEST_F(WebInputEventTraitsTest, PinchEventCoalescing) { |
130 WebGestureEvent pinch0 = | 130 WebGestureEvent pinch0 = |
131 CreateGesture(WebInputEvent::GesturePinchBegin, 1, 1); | 131 CreateGesture(WebInputEvent::GesturePinchBegin, 1, 1); |
132 WebGestureEvent pinch1 = | 132 WebGestureEvent pinch1 = |
133 CreateGesture(WebInputEvent::GesturePinchUpdate, 2, 2); | 133 CreateGesture(WebInputEvent::GesturePinchUpdate, 2, 2); |
134 | 134 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 WebGestureEvent gesture = | 215 WebGestureEvent gesture = |
216 CreateGesture(WebInputEvent::GesturePinchBegin, 1, 1); | 216 CreateGesture(WebInputEvent::GesturePinchBegin, 1, 1); |
217 EXPECT_FALSE(WebInputEventTraits::ToString(gesture).empty()); | 217 EXPECT_FALSE(WebInputEventTraits::ToString(gesture).empty()); |
218 | 218 |
219 WebTouchEvent touch = CreateTouch(WebInputEvent::TouchStart); | 219 WebTouchEvent touch = CreateTouch(WebInputEvent::TouchStart); |
220 EXPECT_FALSE(WebInputEventTraits::ToString(touch).empty()); | 220 EXPECT_FALSE(WebInputEventTraits::ToString(touch).empty()); |
221 } | 221 } |
222 | 222 |
223 } // namespace | 223 } // namespace |
224 } // namespace content | 224 } // namespace content |
OLD | NEW |