Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: content/browser/renderer_host/input/motion_event_android_unittest.cc

Issue 502993004: Remove abstract Clone and Cancel methods from MotionEvent (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <android/input.h> 5 #include <android/input.h>
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/float_util.h" 8 #include "base/float_util.h"
9 #include "content/browser/renderer_host/input/motion_event_android.h" 9 #include "content/browser/renderer_host/input/motion_event_android.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 13 matching lines...) Expand all
24 // developer.android.com/reference/android/view/MotionEvent.html 24 // developer.android.com/reference/android/view/MotionEvent.html
25 // #TOOL_TYPE_FINGER. 25 // #TOOL_TYPE_FINGER.
26 int kAndroidToolTypeFinger = 1; 26 int kAndroidToolTypeFinger = 1;
27 27
28 // Corresponds to BUTTON_PRIMARY, see 28 // Corresponds to BUTTON_PRIMARY, see
29 // developer.android.com/reference/android/view/MotionEvent.html#BUTTON_PRIMARY. 29 // developer.android.com/reference/android/view/MotionEvent.html#BUTTON_PRIMARY.
30 int kAndroidButtonPrimary = 1; 30 int kAndroidButtonPrimary = 1;
31 31
32 } // namespace 32 } // namespace
33 33
34 // Note that these tests avoid creating a Java instance of the MotionEvent, as
35 // we're primarily testing caching behavior, and the code necessary to
36 // construct a Java-backed MotionEvent itself adds unnecessary complexity.
34 TEST(MotionEventAndroidTest, Constructor) { 37 TEST(MotionEventAndroidTest, Constructor) {
35 int event_time_ms = 5; 38 int event_time_ms = 5;
36 base::TimeTicks event_time = 39 base::TimeTicks event_time =
37 base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms); 40 base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms);
38 float x0 = 13.7f; 41 MotionEventAndroid::Pointer p0(
39 float y0 = -7.13f; 42 1, 13.7f, -7.13f, 5.3f, 1.2f, 0.1f, kAndroidToolTypeFinger);
40 float x1 = -13.7f; 43 MotionEventAndroid::Pointer p1(
41 float y1 = 7.13f; 44 2, -13.7f, 7.13f, 3.5f, 12.1f, -0.1f, kAndroidToolTypeFinger);
42 float raw_offset = 10.1f; 45 float raw_offset = -3.f;
43 float touch_major0 = 5.3f;
44 float touch_major1 = 3.5f;
45 float touch_minor0 = 1.2f;
46 float touch_minor1 = 2.1f;
47 float orientation0 = 0.1f;
48 float orientation1 = -0.1f;
49 int p0 = 1;
50 int p1 = 2;
51 int pointer_count = 2; 46 int pointer_count = 2;
52 int history_size = 0; 47 int history_size = 0;
53 int action_index = -1; 48 int action_index = -1;
54 base::android::ScopedJavaLocalRef<jobject> base_event_obj =
55 MotionEventAndroid::Obtain(
56 event_time, event_time, MotionEvent::ACTION_DOWN, x0, y0);
57 ASSERT_TRUE(base_event_obj.obj());
58
59 MotionEventAndroid event(kPixToDip, 49 MotionEventAndroid event(kPixToDip,
60 base::android::AttachCurrentThread(), 50 base::android::AttachCurrentThread(),
61 base_event_obj.obj(), 51 NULL,
62 event_time_ms, 52 event_time_ms,
63 kAndroidActionDown, 53 kAndroidActionDown,
64 pointer_count, 54 pointer_count,
65 history_size, 55 history_size,
66 action_index, 56 action_index,
67 x0, 57 kAndroidButtonPrimary,
68 y0, 58 kAndroidAltKeyDown,
69 x1, 59 raw_offset,
70 y1, 60 -raw_offset,
71 p0, 61 p0,
72 p1, 62 p1);
73 touch_major0,
74 touch_major1,
75 touch_minor0,
76 touch_minor1,
77 orientation0,
78 orientation1,
79 x0 + raw_offset,
80 y0 - raw_offset,
81 kAndroidToolTypeFinger,
82 kAndroidToolTypeFinger,
83 kAndroidButtonPrimary,
84 kAndroidAltKeyDown);
85 63
86 EXPECT_EQ(MotionEvent::ACTION_DOWN, event.GetAction()); 64 EXPECT_EQ(MotionEvent::ACTION_DOWN, event.GetAction());
87 EXPECT_EQ(event_time, event.GetEventTime()); 65 EXPECT_EQ(event_time, event.GetEventTime());
88 EXPECT_EQ(x0 * kPixToDip, event.GetX(0)); 66 EXPECT_EQ(p0.pos_x_pixels * kPixToDip, event.GetX(0));
89 EXPECT_EQ(y0 * kPixToDip, event.GetY(0)); 67 EXPECT_EQ(p0.pos_y_pixels * kPixToDip, event.GetY(0));
90 EXPECT_EQ(x1 * kPixToDip, event.GetX(1)); 68 EXPECT_EQ(p1.pos_x_pixels * kPixToDip, event.GetX(1));
91 EXPECT_EQ(y1 * kPixToDip, event.GetY(1)); 69 EXPECT_EQ(p1.pos_y_pixels * kPixToDip, event.GetY(1));
92 EXPECT_FLOAT_EQ((x0 + raw_offset) * kPixToDip, event.GetRawX(0)); 70 EXPECT_FLOAT_EQ((p0.pos_x_pixels + raw_offset) * kPixToDip, event.GetRawX(0));
93 EXPECT_FLOAT_EQ((y0 - raw_offset) * kPixToDip, event.GetRawY(0)); 71 EXPECT_FLOAT_EQ((p0.pos_y_pixels - raw_offset) * kPixToDip, event.GetRawY(0));
94 EXPECT_FLOAT_EQ((x1 + raw_offset) * kPixToDip, event.GetRawX(1)); 72 EXPECT_FLOAT_EQ((p1.pos_x_pixels + raw_offset) * kPixToDip, event.GetRawX(1));
95 EXPECT_FLOAT_EQ((y1 - raw_offset) * kPixToDip, event.GetRawY(1)); 73 EXPECT_FLOAT_EQ((p1.pos_y_pixels - raw_offset) * kPixToDip, event.GetRawY(1));
96 EXPECT_EQ(touch_major0 * kPixToDip, event.GetTouchMajor(0)); 74 EXPECT_EQ(p0.touch_major_pixels * kPixToDip, event.GetTouchMajor(0));
97 EXPECT_EQ(touch_major1 * kPixToDip, event.GetTouchMajor(1)); 75 EXPECT_EQ(p1.touch_major_pixels * kPixToDip, event.GetTouchMajor(1));
98 EXPECT_EQ(touch_minor0 * kPixToDip, event.GetTouchMinor(0)); 76 EXPECT_EQ(p0.touch_minor_pixels * kPixToDip, event.GetTouchMinor(0));
99 EXPECT_EQ(touch_minor1 * kPixToDip, event.GetTouchMinor(1)); 77 EXPECT_EQ(p1.touch_minor_pixels * kPixToDip, event.GetTouchMinor(1));
100 EXPECT_EQ(orientation0, event.GetOrientation(0)); 78 EXPECT_EQ(p0.orientation_rad, event.GetOrientation(0));
101 EXPECT_EQ(orientation1, event.GetOrientation(1)); 79 EXPECT_EQ(p1.orientation_rad, event.GetOrientation(1));
102 EXPECT_EQ(p0, event.GetPointerId(0)); 80 EXPECT_EQ(p0.id, event.GetPointerId(0));
103 EXPECT_EQ(p1, event.GetPointerId(1)); 81 EXPECT_EQ(p1.id, event.GetPointerId(1));
104 EXPECT_EQ(MotionEvent::TOOL_TYPE_FINGER, event.GetToolType(0)); 82 EXPECT_EQ(MotionEvent::TOOL_TYPE_FINGER, event.GetToolType(0));
105 EXPECT_EQ(MotionEvent::TOOL_TYPE_FINGER, event.GetToolType(1)); 83 EXPECT_EQ(MotionEvent::TOOL_TYPE_FINGER, event.GetToolType(1));
106 EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState()); 84 EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState());
107 EXPECT_EQ(ui::EF_ALT_DOWN, event.GetFlags()); 85 EXPECT_EQ(ui::EF_ALT_DOWN, event.GetFlags());
108 EXPECT_EQ(static_cast<size_t>(pointer_count), event.GetPointerCount()); 86 EXPECT_EQ(static_cast<size_t>(pointer_count), event.GetPointerCount());
109 EXPECT_EQ(static_cast<size_t>(history_size), event.GetHistorySize()); 87 EXPECT_EQ(static_cast<size_t>(history_size), event.GetHistorySize());
110 EXPECT_EQ(action_index, event.GetActionIndex()); 88 EXPECT_EQ(action_index, event.GetActionIndex());
111 } 89 }
112 90
113 TEST(MotionEventAndroidTest, Clone) { 91 TEST(MotionEventAndroidTest, Clone) {
114 int event_time_ms = 5; 92 const int pointer_count = 1;
115 base::TimeTicks event_time = 93 MotionEventAndroid::Pointer p0(
116 base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms); 94 1, 13.7f, -7.13f, 5.3f, 1.2f, 0.1f, kAndroidToolTypeFinger);
117 float x = 13.7f; 95 MotionEventAndroid::Pointer p1(0, 0, 0, 0, 0, 0, 0);
118 float y = -7.13f;
119 float touch_major = 5.3f;
120 float touch_minor = 3.5f;
121 float orientation = 0.2f;
122 int pointer_count = 1;
123 int pointer_id = 1;
124 base::android::ScopedJavaLocalRef<jobject> event_obj =
125 MotionEventAndroid::Obtain(
126 event_time, event_time, MotionEvent::ACTION_DOWN, x, y);
127 ASSERT_TRUE(event_obj.obj());
128
129 MotionEventAndroid event(kPixToDip, 96 MotionEventAndroid event(kPixToDip,
130 base::android::AttachCurrentThread(), 97 base::android::AttachCurrentThread(),
131 event_obj.obj(), 98 NULL,
99 0,
100 kAndroidActionDown,
101 pointer_count,
102 0,
103 0,
104 0,
105 0,
106 0,
107 0,
108 p0,
109 p1);
110
111 scoped_ptr<MotionEvent> clone = event.Clone();
112 EXPECT_EQ(event.ToString(), clone->ToString());
113 }
114
115 TEST(MotionEventAndroidTest, Cancel) {
116 const int event_time_ms = 5;
117 const int pointer_count = 1;
118 MotionEventAndroid::Pointer p0(
119 1, 13.7f, -7.13f, 5.3f, 1.2f, 0.1f, kAndroidToolTypeFinger);
120 MotionEventAndroid::Pointer p1(0, 0, 0, 0, 0, 0, 0);
121 MotionEventAndroid event(kPixToDip,
122 base::android::AttachCurrentThread(),
123 NULL,
132 event_time_ms, 124 event_time_ms,
133 kAndroidActionDown, 125 kAndroidActionDown,
134 pointer_count, 126 pointer_count,
135 0, 127 0,
136 0, 128 0,
137 x,
138 y,
139 0,
140 0,
141 pointer_id,
142 0,
143 touch_major,
144 0.f,
145 touch_minor,
146 0.f,
147 orientation,
148 0.f,
149 x,
150 y,
151 0,
152 0,
153 0,
154 0);
155
156 scoped_ptr<MotionEvent> clone = event.Clone();
157 EXPECT_EQ(event, *clone);
158 }
159
160 TEST(MotionEventAndroidTest, Cancel) {
161 int event_time_ms = 5;
162 base::TimeTicks event_time =
163 base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms);
164 int pointer_count = 1;
165 float x = 13.7f;
166 float y = -7.13f;
167 base::android::ScopedJavaLocalRef<jobject> event_obj =
168 MotionEventAndroid::Obtain(
169 event_time, event_time, MotionEvent::ACTION_DOWN, x, y);
170 ASSERT_TRUE(event_obj.obj());
171
172 MotionEventAndroid event(kPixToDip,
173 base::android::AttachCurrentThread(),
174 event_obj.obj(),
175 event_time_ms,
176 kAndroidActionDown,
177 pointer_count,
178 0,
179 0,
180 x,
181 y,
182 0, 129 0,
183 0, 130 0,
184 0, 131 0,
185 0, 132 0,
186 0.f, 133 p0,
187 0.f, 134 p1);
188 0.f,
189 0.f,
190 0.f,
191 0.f,
192 x,
193 y,
194 0,
195 0,
196 0,
197 0);
198 135
199 scoped_ptr<MotionEvent> cancel_event = event.Cancel(); 136 scoped_ptr<MotionEvent> cancel_event = event.Cancel();
200 EXPECT_EQ(MotionEvent::ACTION_CANCEL, cancel_event->GetAction()); 137 EXPECT_EQ(MotionEvent::ACTION_CANCEL, cancel_event->GetAction());
201 EXPECT_EQ(event_time, cancel_event->GetEventTime()); 138 EXPECT_EQ(
202 EXPECT_EQ(x * kPixToDip, cancel_event->GetX(0)); 139 base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms),
203 EXPECT_EQ(y * kPixToDip, cancel_event->GetY(0)); 140 cancel_event->GetEventTime());
141 EXPECT_EQ(p0.pos_x_pixels * kPixToDip, cancel_event->GetX(0));
142 EXPECT_EQ(p0.pos_y_pixels * kPixToDip, cancel_event->GetY(0));
204 EXPECT_EQ(static_cast<size_t>(pointer_count), 143 EXPECT_EQ(static_cast<size_t>(pointer_count),
205 cancel_event->GetPointerCount()); 144 cancel_event->GetPointerCount());
206 EXPECT_EQ(0U, cancel_event->GetHistorySize()); 145 EXPECT_EQ(0U, cancel_event->GetHistorySize());
207 } 146 }
208 147
209 TEST(MotionEventAndroidTest, InvalidOrientationsSanitized) { 148 TEST(MotionEventAndroidTest, InvalidOrientationsSanitized) {
210 base::TimeTicks event_time;
211 int pointer_count = 2; 149 int pointer_count = 2;
212 float orientation0 = 1e10f; 150 float orientation0 = 1e10f;
213 float orientation1 = std::numeric_limits<float>::quiet_NaN(); 151 float orientation1 = std::numeric_limits<float>::quiet_NaN();
214 base::android::ScopedJavaLocalRef<jobject> base_event_obj = 152 MotionEventAndroid::Pointer p0(0, 0, 0, 0, 0, orientation0, 0);
215 MotionEventAndroid::Obtain( 153 MotionEventAndroid::Pointer p1(1, 0, 0, 0, 0, orientation1, 0);
216 event_time, event_time, MotionEvent::ACTION_DOWN, 0, 0);
217 ASSERT_TRUE(base_event_obj.obj());
218
219 MotionEventAndroid event(kPixToDip, 154 MotionEventAndroid event(kPixToDip,
220 base::android::AttachCurrentThread(), 155 base::android::AttachCurrentThread(),
221 base_event_obj.obj(), 156 NULL,
tdresser 2014/10/20 15:19:15 These (and other occurrences of NULL) should be nu
jdduke (slow) 2014/10/21 22:19:58 Done.
222 0, 157 0,
223 kAndroidActionDown, 158 kAndroidActionDown,
224 pointer_count, 159 pointer_count,
225 0, 160 0,
226 0, 161 0,
227 0, 162 0,
228 0, 163 0,
229 0, 164 0,
230 0, 165 0,
231 0, 166 p0,
232 0, 167 p1);
233 0,
234 0,
235 0,
236 0,
237 orientation0,
238 orientation1,
239 0,
240 0,
241 0,
242 0,
243 0,
244 0);
245 168
246 EXPECT_EQ(0.f, event.GetOrientation(0)); 169 EXPECT_EQ(0.f, event.GetOrientation(0));
247 EXPECT_EQ(0.f, event.GetOrientation(1)); 170 EXPECT_EQ(0.f, event.GetOrientation(1));
248 } 171 }
249 172
250 } // namespace content 173 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698