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

Side by Side Diff: ui/events/x/events_x_unittest.cc

Issue 1586653002: ui: Fix TouchEvent PointerDetails creation from NativeEvent (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase following X event refactor Created 4 years, 11 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
« no previous file with comments | « ui/events/x/events_x.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <X11/XKBlib.h> 7 #include <X11/XKBlib.h>
8 #include <X11/Xlib.h> 8 #include <X11/Xlib.h>
9 #include <X11/Xutil.h> 9 #include <X11/Xutil.h>
10 #include <X11/extensions/XInput2.h> 10 #include <X11/extensions/XInput2.h>
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 20)); 232 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 20));
233 valuators.push_back( 233 valuators.push_back(
234 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.3f)); 234 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.3f));
235 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 100)); 235 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 100));
236 ui::ScopedXI2Event scoped_xevent; 236 ui::ScopedXI2Event scoped_xevent;
237 scoped_xevent.InitTouchEvent( 237 scoped_xevent.InitTouchEvent(
238 0, XI_TouchBegin, 5, gfx::Point(10, 10), valuators); 238 0, XI_TouchBegin, 5, gfx::Point(10, 10), valuators);
239 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent)); 239 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent));
240 EXPECT_EQ("10,10", ui::EventLocationFromNative(scoped_xevent).ToString()); 240 EXPECT_EQ("10,10", ui::EventLocationFromNative(scoped_xevent).ToString());
241 EXPECT_EQ(GetTouchId(scoped_xevent), 0); 241 EXPECT_EQ(GetTouchId(scoped_xevent), 0);
242 EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 10);
243 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.15f); 242 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.15f);
244 EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.1f); 243 PointerDetails pointer_details =
244 GetTouchPointerDetailsFromNative(scoped_xevent);
245 EXPECT_FLOAT_EQ(pointer_details.radius_x(), 10.0f);
246 EXPECT_FLOAT_EQ(pointer_details.force(), 0.1f);
245 247
246 // Touch update, with new orientation info. 248 // Touch update, with new orientation info.
247 valuators.clear(); 249 valuators.clear();
248 valuators.push_back( 250 valuators.push_back(
249 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.5f)); 251 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.5f));
250 scoped_xevent.InitTouchEvent( 252 scoped_xevent.InitTouchEvent(
251 0, XI_TouchUpdate, 5, gfx::Point(20, 20), valuators); 253 0, XI_TouchUpdate, 5, gfx::Point(20, 20), valuators);
252 EXPECT_EQ(ui::ET_TOUCH_MOVED, ui::EventTypeFromNative(scoped_xevent)); 254 EXPECT_EQ(ui::ET_TOUCH_MOVED, ui::EventTypeFromNative(scoped_xevent));
253 EXPECT_EQ("20,20", ui::EventLocationFromNative(scoped_xevent).ToString()); 255 EXPECT_EQ("20,20", ui::EventLocationFromNative(scoped_xevent).ToString());
254 EXPECT_EQ(GetTouchId(scoped_xevent), 0); 256 EXPECT_EQ(GetTouchId(scoped_xevent), 0);
255 EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 10);
256 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f); 257 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f);
257 EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.1f); 258 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent);
259 EXPECT_FLOAT_EQ(pointer_details.radius_x(), 10.0f);
260 EXPECT_FLOAT_EQ(pointer_details.force(), 0.1f);
258 261
259 // Another touch with tracking id 6, touch id 1. 262 // Another touch with tracking id 6, touch id 1.
260 valuators.clear(); 263 valuators.clear();
261 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 100)); 264 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 100));
262 valuators.push_back(Valuator( 265 valuators.push_back(Valuator(
263 DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.9f)); 266 DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.9f));
264 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 500)); 267 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 500));
265 scoped_xevent.InitTouchEvent( 268 scoped_xevent.InitTouchEvent(
266 0, XI_TouchBegin, 6, gfx::Point(200, 200), valuators); 269 0, XI_TouchBegin, 6, gfx::Point(200, 200), valuators);
267 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent)); 270 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent));
268 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString()); 271 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString());
269 EXPECT_EQ(GetTouchId(scoped_xevent), 1); 272 EXPECT_EQ(GetTouchId(scoped_xevent), 1);
270 EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 50);
271 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f); 273 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f);
272 EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.5f); 274 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent);
275 EXPECT_FLOAT_EQ(pointer_details.radius_x(), 50.0f);
276 EXPECT_FLOAT_EQ(pointer_details.force(), 0.5f);
273 277
274 // Touch with tracking id 5 should have old radius/angle value and new pressue 278 // Touch with tracking id 5 should have old radius/angle value and new pressue
275 // value. 279 // value.
276 valuators.clear(); 280 valuators.clear();
277 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 50)); 281 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 50));
278 scoped_xevent.InitTouchEvent( 282 scoped_xevent.InitTouchEvent(
279 0, XI_TouchEnd, 5, gfx::Point(30, 30), valuators); 283 0, XI_TouchEnd, 5, gfx::Point(30, 30), valuators);
280 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent)); 284 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent));
281 EXPECT_EQ("30,30", ui::EventLocationFromNative(scoped_xevent).ToString()); 285 EXPECT_EQ("30,30", ui::EventLocationFromNative(scoped_xevent).ToString());
282 EXPECT_EQ(GetTouchId(scoped_xevent), 0); 286 EXPECT_EQ(GetTouchId(scoped_xevent), 0);
283 EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 10);
284 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f); 287 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f);
285 EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.05f); 288 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent);
289 EXPECT_FLOAT_EQ(pointer_details.radius_x(), 10.0f);
290 EXPECT_FLOAT_EQ(pointer_details.force(), 0.05f);
286 291
287 // Touch with tracking id 6 should have old angle/pressure value and new 292 // Touch with tracking id 6 should have old angle/pressure value and new
288 // radius value. 293 // radius value.
289 valuators.clear(); 294 valuators.clear();
290 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 50)); 295 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 50));
291 scoped_xevent.InitTouchEvent( 296 scoped_xevent.InitTouchEvent(
292 0, XI_TouchEnd, 6, gfx::Point(200, 200), valuators); 297 0, XI_TouchEnd, 6, gfx::Point(200, 200), valuators);
293 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent)); 298 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent));
294 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString()); 299 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString());
295 EXPECT_EQ(GetTouchId(scoped_xevent), 1); 300 EXPECT_EQ(GetTouchId(scoped_xevent), 1);
296 EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 25);
297 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f); 301 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f);
298 EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.5f); 302 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent);
303 EXPECT_FLOAT_EQ(pointer_details.radius_x(), 25.0f);
304 EXPECT_FLOAT_EQ(pointer_details.force(), 0.5f);
299 } 305 }
300 306
301 int GetTouchIdForTrackingId(uint32_t tracking_id) { 307 int GetTouchIdForTrackingId(uint32_t tracking_id) {
302 int slot = 0; 308 int slot = 0;
303 bool success = 309 bool success =
304 TouchFactory::GetInstance()->QuerySlotForTrackingID(tracking_id, &slot); 310 TouchFactory::GetInstance()->QuerySlotForTrackingID(tracking_id, &slot);
305 if (success) 311 if (success)
306 return slot; 312 return slot;
307 return -1; 313 return -1;
308 } 314 }
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 ui::SetUpPointerDevicesForTest(devices); 511 ui::SetUpPointerDevicesForTest(devices);
506 512
507 ScopedXI2Event xev; 513 ScopedXI2Event xev;
508 xev.InitScrollEvent(device_id, 1, 2, 3, 4, 1); 514 xev.InitScrollEvent(device_id, 1, 2, 3, 4, 1);
509 // We shouldn't produce a mouse move event on a mouse wheel 515 // We shouldn't produce a mouse move event on a mouse wheel
510 // scroll. These events are only produced for some mice. 516 // scroll. These events are only produced for some mice.
511 EXPECT_EQ(ui::ET_UNKNOWN, ui::EventTypeFromNative(xev)); 517 EXPECT_EQ(ui::ET_UNKNOWN, ui::EventTypeFromNative(xev));
512 } 518 }
513 519
514 } // namespace ui 520 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/x/events_x.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698