| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |