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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebInputEventConversionTest.cpp

Issue 2507503002: Use touch events to report stylus events (Closed)
Patch Set: I should pay attention... Created 4 years 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 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 document, p1.id, p1.screenPosition, p1.position, 142 document, p1.id, p1.screenPosition, p1.position,
143 FloatSize(p1.radiusX, p1.radiusY), 143 FloatSize(p1.radiusX, p1.radiusY),
144 p1.rotationAngle, p1.force, String()); 144 p1.rotationAngle, p1.force, String());
145 145
146 // Test touchstart. 146 // Test touchstart.
147 { 147 {
148 TouchList* touchList = TouchList::create(); 148 TouchList* touchList = TouchList::create();
149 touchList->append(touch0); 149 touchList->append(touch0);
150 TouchEvent* touchEvent = TouchEvent::create( 150 TouchEvent* touchEvent = TouchEvent::create(
151 touchList, touchList, touchList, EventTypeNames::touchstart, domWindow, 151 touchList, touchList, touchList, EventTypeNames::touchstart, domWindow,
152 PlatformEvent::NoModifiers, false, false, true, 0, TouchActionAuto); 152 PlatformEvent::NoModifiers, false, false, true, 0, TouchActionAuto,
153 WebPointerProperties::PointerType::Touch);
153 154
154 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 155 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
155 ASSERT_EQ(1u, webTouchBuilder.touchesLength); 156 ASSERT_EQ(1u, webTouchBuilder.touchesLength);
156 EXPECT_EQ(WebInputEvent::TouchStart, webTouchBuilder.type); 157 EXPECT_EQ(WebInputEvent::TouchStart, webTouchBuilder.type);
157 EXPECT_EQ(WebTouchPoint::StatePressed, webTouchBuilder.touches[0].state); 158 EXPECT_EQ(WebTouchPoint::StatePressed, webTouchBuilder.touches[0].state);
158 EXPECT_FLOAT_EQ(p0.screenPosition.x, 159 EXPECT_FLOAT_EQ(p0.screenPosition.x,
159 webTouchBuilder.touches[0].screenPosition.x); 160 webTouchBuilder.touches[0].screenPosition.x);
160 EXPECT_FLOAT_EQ(p0.screenPosition.y, 161 EXPECT_FLOAT_EQ(p0.screenPosition.y,
161 webTouchBuilder.touches[0].screenPosition.y); 162 webTouchBuilder.touches[0].screenPosition.y);
162 EXPECT_FLOAT_EQ(p0.position.x, webTouchBuilder.touches[0].position.x); 163 EXPECT_FLOAT_EQ(p0.position.x, webTouchBuilder.touches[0].position.x);
163 EXPECT_FLOAT_EQ(p0.position.y, webTouchBuilder.touches[0].position.y); 164 EXPECT_FLOAT_EQ(p0.position.y, webTouchBuilder.touches[0].position.y);
164 EXPECT_FLOAT_EQ(p0.radiusX, webTouchBuilder.touches[0].radiusX); 165 EXPECT_FLOAT_EQ(p0.radiusX, webTouchBuilder.touches[0].radiusX);
165 EXPECT_FLOAT_EQ(p0.radiusY, webTouchBuilder.touches[0].radiusY); 166 EXPECT_FLOAT_EQ(p0.radiusY, webTouchBuilder.touches[0].radiusY);
166 EXPECT_FLOAT_EQ(p0.rotationAngle, webTouchBuilder.touches[0].rotationAngle); 167 EXPECT_FLOAT_EQ(p0.rotationAngle, webTouchBuilder.touches[0].rotationAngle);
167 EXPECT_FLOAT_EQ(p0.force, webTouchBuilder.touches[0].force); 168 EXPECT_FLOAT_EQ(p0.force, webTouchBuilder.touches[0].force);
169 EXPECT_EQ(WebPointerProperties::PointerType::Touch,
170 webTouchBuilder.touches[0].pointerType);
168 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType); 171 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
169 } 172 }
170 173
171 // Test cancelable touchstart. 174 // Test cancelable touchstart.
172 { 175 {
173 TouchList* touchList = TouchList::create(); 176 TouchList* touchList = TouchList::create();
174 touchList->append(touch0); 177 touchList->append(touch0);
175 TouchEvent* touchEvent = TouchEvent::create( 178 TouchEvent* touchEvent = TouchEvent::create(
176 touchList, touchList, touchList, EventTypeNames::touchstart, domWindow, 179 touchList, touchList, touchList, EventTypeNames::touchstart, domWindow,
177 PlatformEvent::NoModifiers, true, false, true, 0, TouchActionAuto); 180 PlatformEvent::NoModifiers, true, false, true, 0, TouchActionAuto,
181 WebPointerProperties::PointerType::Touch);
178 182
179 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 183 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
180 EXPECT_EQ(WebInputEvent::Blocking, webTouchBuilder.dispatchType); 184 EXPECT_EQ(WebInputEvent::Blocking, webTouchBuilder.dispatchType);
181 } 185 }
182 186
183 // Test touchmove. 187 // Test touchmove.
184 { 188 {
185 TouchList* activeTouchList = TouchList::create(); 189 TouchList* activeTouchList = TouchList::create();
186 TouchList* movedTouchList = TouchList::create(); 190 TouchList* movedTouchList = TouchList::create();
187 activeTouchList->append(touch0); 191 activeTouchList->append(touch0);
188 activeTouchList->append(touch1); 192 activeTouchList->append(touch1);
189 movedTouchList->append(touch0); 193 movedTouchList->append(touch0);
190 TouchEvent* touchEvent = TouchEvent::create( 194 TouchEvent* touchEvent = TouchEvent::create(
191 activeTouchList, activeTouchList, movedTouchList, 195 activeTouchList, activeTouchList, movedTouchList,
192 EventTypeNames::touchmove, domWindow, PlatformEvent::NoModifiers, false, 196 EventTypeNames::touchmove, domWindow, PlatformEvent::NoModifiers, false,
193 false, true, 0, TouchActionAuto); 197 false, true, 0, TouchActionAuto,
198 WebPointerProperties::PointerType::Touch);
194 199
195 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 200 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
196 ASSERT_EQ(2u, webTouchBuilder.touchesLength); 201 ASSERT_EQ(2u, webTouchBuilder.touchesLength);
197 EXPECT_EQ(WebInputEvent::TouchMove, webTouchBuilder.type); 202 EXPECT_EQ(WebInputEvent::TouchMove, webTouchBuilder.type);
198 EXPECT_EQ(WebTouchPoint::StateMoved, webTouchBuilder.touches[0].state); 203 EXPECT_EQ(WebTouchPoint::StateMoved, webTouchBuilder.touches[0].state);
199 EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[1].state); 204 EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[1].state);
200 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id); 205 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
201 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id); 206 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
202 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType); 207 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
203 } 208 }
204 209
205 // Test touchmove, different point yields same ordering. 210 // Test touchmove, different point yields same ordering.
206 { 211 {
207 TouchList* activeTouchList = TouchList::create(); 212 TouchList* activeTouchList = TouchList::create();
208 TouchList* movedTouchList = TouchList::create(); 213 TouchList* movedTouchList = TouchList::create();
209 activeTouchList->append(touch0); 214 activeTouchList->append(touch0);
210 activeTouchList->append(touch1); 215 activeTouchList->append(touch1);
211 movedTouchList->append(touch1); 216 movedTouchList->append(touch1);
212 TouchEvent* touchEvent = TouchEvent::create( 217 TouchEvent* touchEvent = TouchEvent::create(
213 activeTouchList, activeTouchList, movedTouchList, 218 activeTouchList, activeTouchList, movedTouchList,
214 EventTypeNames::touchmove, domWindow, PlatformEvent::NoModifiers, false, 219 EventTypeNames::touchmove, domWindow, PlatformEvent::NoModifiers, false,
215 false, true, 0, TouchActionAuto); 220 false, true, 0, TouchActionAuto,
221 WebPointerProperties::PointerType::Touch);
216 222
217 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 223 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
218 ASSERT_EQ(2u, webTouchBuilder.touchesLength); 224 ASSERT_EQ(2u, webTouchBuilder.touchesLength);
219 EXPECT_EQ(WebInputEvent::TouchMove, webTouchBuilder.type); 225 EXPECT_EQ(WebInputEvent::TouchMove, webTouchBuilder.type);
220 EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[0].state); 226 EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[0].state);
221 EXPECT_EQ(WebTouchPoint::StateMoved, webTouchBuilder.touches[1].state); 227 EXPECT_EQ(WebTouchPoint::StateMoved, webTouchBuilder.touches[1].state);
222 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id); 228 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
223 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id); 229 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
224 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType); 230 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
225 } 231 }
226 232
227 // Test touchend. 233 // Test touchend.
228 { 234 {
229 TouchList* activeTouchList = TouchList::create(); 235 TouchList* activeTouchList = TouchList::create();
230 TouchList* releasedTouchList = TouchList::create(); 236 TouchList* releasedTouchList = TouchList::create();
231 activeTouchList->append(touch0); 237 activeTouchList->append(touch0);
232 releasedTouchList->append(touch1); 238 releasedTouchList->append(touch1);
233 TouchEvent* touchEvent = TouchEvent::create( 239 TouchEvent* touchEvent = TouchEvent::create(
234 activeTouchList, activeTouchList, releasedTouchList, 240 activeTouchList, activeTouchList, releasedTouchList,
235 EventTypeNames::touchend, domWindow, PlatformEvent::NoModifiers, false, 241 EventTypeNames::touchend, domWindow, PlatformEvent::NoModifiers, false,
236 false, false, 0, TouchActionAuto); 242 false, false, 0, TouchActionAuto,
243 WebPointerProperties::PointerType::Touch);
237 244
238 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 245 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
239 ASSERT_EQ(2u, webTouchBuilder.touchesLength); 246 ASSERT_EQ(2u, webTouchBuilder.touchesLength);
240 EXPECT_EQ(WebInputEvent::TouchEnd, webTouchBuilder.type); 247 EXPECT_EQ(WebInputEvent::TouchEnd, webTouchBuilder.type);
241 EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[0].state); 248 EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[0].state);
242 EXPECT_EQ(WebTouchPoint::StateReleased, webTouchBuilder.touches[1].state); 249 EXPECT_EQ(WebTouchPoint::StateReleased, webTouchBuilder.touches[1].state);
243 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id); 250 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
244 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id); 251 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
245 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType); 252 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
246 } 253 }
247 254
248 // Test touchcancel. 255 // Test touchcancel.
249 { 256 {
250 TouchList* activeTouchList = TouchList::create(); 257 TouchList* activeTouchList = TouchList::create();
251 TouchList* cancelledTouchList = TouchList::create(); 258 TouchList* cancelledTouchList = TouchList::create();
252 cancelledTouchList->append(touch0); 259 cancelledTouchList->append(touch0);
253 cancelledTouchList->append(touch1); 260 cancelledTouchList->append(touch1);
254 TouchEvent* touchEvent = TouchEvent::create( 261 TouchEvent* touchEvent = TouchEvent::create(
255 activeTouchList, activeTouchList, cancelledTouchList, 262 activeTouchList, activeTouchList, cancelledTouchList,
256 EventTypeNames::touchcancel, domWindow, PlatformEvent::NoModifiers, 263 EventTypeNames::touchcancel, domWindow, PlatformEvent::NoModifiers,
257 false, false, false, 0, TouchActionAuto); 264 false, false, false, 0, TouchActionAuto,
265 WebPointerProperties::PointerType::Touch);
258 266
259 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 267 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
260 ASSERT_EQ(2u, webTouchBuilder.touchesLength); 268 ASSERT_EQ(2u, webTouchBuilder.touchesLength);
261 EXPECT_EQ(WebInputEvent::TouchCancel, webTouchBuilder.type); 269 EXPECT_EQ(WebInputEvent::TouchCancel, webTouchBuilder.type);
262 EXPECT_EQ(WebTouchPoint::StateCancelled, webTouchBuilder.touches[0].state); 270 EXPECT_EQ(WebTouchPoint::StateCancelled, webTouchBuilder.touches[0].state);
263 EXPECT_EQ(WebTouchPoint::StateCancelled, webTouchBuilder.touches[1].state); 271 EXPECT_EQ(WebTouchPoint::StateCancelled, webTouchBuilder.touches[1].state);
264 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id); 272 EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
265 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id); 273 EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
266 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType); 274 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
267 } 275 }
268 276
269 // Test max point limit. 277 // Test max point limit.
270 { 278 {
271 TouchList* touchList = TouchList::create(); 279 TouchList* touchList = TouchList::create();
272 TouchList* changedTouchList = TouchList::create(); 280 TouchList* changedTouchList = TouchList::create();
273 for (int i = 0; i <= static_cast<int>(WebTouchEvent::kTouchesLengthCap) * 2; 281 for (int i = 0; i <= static_cast<int>(WebTouchEvent::kTouchesLengthCap) * 2;
274 ++i) { 282 ++i) {
275 Touch* touch = Touch::create( 283 Touch* touch = Touch::create(
276 toLocalFrame(webViewImpl->page()->mainFrame()), document, i, 284 toLocalFrame(webViewImpl->page()->mainFrame()), document, i,
277 p0.screenPosition, p0.position, FloatSize(p0.radiusX, p0.radiusY), 285 p0.screenPosition, p0.position, FloatSize(p0.radiusX, p0.radiusY),
278 p0.rotationAngle, p0.force, String()); 286 p0.rotationAngle, p0.force, String());
279 touchList->append(touch); 287 touchList->append(touch);
280 changedTouchList->append(touch); 288 changedTouchList->append(touch);
281 } 289 }
282 TouchEvent* touchEvent = TouchEvent::create( 290 TouchEvent* touchEvent = TouchEvent::create(
283 touchList, touchList, touchList, EventTypeNames::touchstart, domWindow, 291 touchList, touchList, touchList, EventTypeNames::touchstart, domWindow,
284 PlatformEvent::NoModifiers, false, false, true, 0, TouchActionAuto); 292 PlatformEvent::NoModifiers, false, false, true, 0, TouchActionAuto,
293 WebPointerProperties::PointerType::Touch);
285 294
286 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 295 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
287 ASSERT_EQ(static_cast<unsigned>(WebTouchEvent::kTouchesLengthCap), 296 ASSERT_EQ(static_cast<unsigned>(WebTouchEvent::kTouchesLengthCap),
288 webTouchBuilder.touchesLength); 297 webTouchBuilder.touchesLength);
289 } 298 }
290 } 299 }
291 300
292 TEST(WebInputEventConversionTest, InputEventsScaling) { 301 TEST(WebInputEventConversionTest, InputEventsScaling) {
293 const std::string baseURL("http://www.test1.com/"); 302 const std::string baseURL("http://www.test1.com/");
294 const std::string fileName("fixed_layout.html"); 303 const std::string fileName("fixed_layout.html");
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 561
553 { 562 {
554 Touch* touch = 563 Touch* touch =
555 Touch::create(toLocalFrame(webViewImpl->page()->mainFrame()), document, 564 Touch::create(toLocalFrame(webViewImpl->page()->mainFrame()), document,
556 0, FloatPoint(10, 9.5), FloatPoint(3.5, 2), 565 0, FloatPoint(10, 9.5), FloatPoint(3.5, 2),
557 FloatSize(4, 4.5), 0, 0, String()); 566 FloatSize(4, 4.5), 0, 0, String());
558 TouchList* touchList = TouchList::create(); 567 TouchList* touchList = TouchList::create();
559 touchList->append(touch); 568 touchList->append(touch);
560 TouchEvent* touchEvent = TouchEvent::create( 569 TouchEvent* touchEvent = TouchEvent::create(
561 touchList, touchList, touchList, EventTypeNames::touchmove, domWindow, 570 touchList, touchList, touchList, EventTypeNames::touchmove, domWindow,
562 PlatformEvent::NoModifiers, false, false, true, 0, TouchActionAuto); 571 PlatformEvent::NoModifiers, false, false, true, 0, TouchActionAuto,
572 WebPointerProperties::PointerType::Touch);
563 573
564 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent); 574 WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
565 ASSERT_EQ(1u, webTouchBuilder.touchesLength); 575 ASSERT_EQ(1u, webTouchBuilder.touchesLength);
566 EXPECT_EQ(10, webTouchBuilder.touches[0].screenPosition.x); 576 EXPECT_EQ(10, webTouchBuilder.touches[0].screenPosition.x);
567 EXPECT_FLOAT_EQ(9.5, webTouchBuilder.touches[0].screenPosition.y); 577 EXPECT_FLOAT_EQ(9.5, webTouchBuilder.touches[0].screenPosition.y);
568 EXPECT_FLOAT_EQ(3.5, webTouchBuilder.touches[0].position.x); 578 EXPECT_FLOAT_EQ(3.5, webTouchBuilder.touches[0].position.x);
569 EXPECT_FLOAT_EQ(2, webTouchBuilder.touches[0].position.y); 579 EXPECT_FLOAT_EQ(2, webTouchBuilder.touches[0].position.y);
570 EXPECT_FLOAT_EQ(4, webTouchBuilder.touches[0].radiusX); 580 EXPECT_FLOAT_EQ(4, webTouchBuilder.touches[0].radiusX);
571 EXPECT_FLOAT_EQ(4.5, webTouchBuilder.touches[0].radiusY); 581 EXPECT_FLOAT_EQ(4.5, webTouchBuilder.touches[0].radiusY);
572 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType); 582 EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 EXPECT_EQ(ScrollInertialPhaseNonMomentum, 1338 EXPECT_EQ(ScrollInertialPhaseNonMomentum,
1329 platformGestureBuilder.inertialPhase()); 1339 platformGestureBuilder.inertialPhase());
1330 EXPECT_TRUE(platformGestureBuilder.synthetic()); 1340 EXPECT_TRUE(platformGestureBuilder.synthetic());
1331 EXPECT_EQ(ScrollGranularity::ScrollByPage, 1341 EXPECT_EQ(ScrollGranularity::ScrollByPage,
1332 platformGestureBuilder.deltaUnits()); 1342 platformGestureBuilder.deltaUnits());
1333 EXPECT_EQ(12345U, platformGestureBuilder.uniqueTouchEventId()); 1343 EXPECT_EQ(12345U, platformGestureBuilder.uniqueTouchEventId());
1334 } 1344 }
1335 } 1345 }
1336 1346
1337 } // namespace blink 1347 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebInputEventConversion.cpp ('k') | ui/events/ozone/evdev/touch_evdev_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698