| 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 <X11/XKBlib.h> | 5 #include <X11/XKBlib.h> |
| 6 #include <X11/Xlib.h> | 6 #include <X11/Xlib.h> |
| 7 #include <X11/Xutil.h> | 7 #include <X11/Xutil.h> |
| 8 #include <X11/extensions/XInput2.h> | 8 #include <X11/extensions/XInput2.h> |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 // Init touch begin with tracking id 5, touch id 0. | 237 // Init touch begin with tracking id 5, touch id 0. |
| 238 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 20)); | 238 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 20)); |
| 239 valuators.push_back( | 239 valuators.push_back( |
| 240 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.3f)); | 240 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.3f)); |
| 241 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 100)); | 241 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 100)); |
| 242 ui::ScopedXI2Event scoped_xevent; | 242 ui::ScopedXI2Event scoped_xevent; |
| 243 scoped_xevent.InitTouchEvent( | 243 scoped_xevent.InitTouchEvent( |
| 244 0, XI_TouchBegin, 5, gfx::Point(10, 10), valuators); | 244 0, XI_TouchBegin, 5, gfx::Point(10, 10), valuators); |
| 245 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent)); | 245 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent)); |
| 246 EXPECT_EQ("10,10", ui::EventLocationFromNative(scoped_xevent).ToString()); | 246 EXPECT_EQ("10,10", ui::EventLocationFromNative(scoped_xevent).ToString()); |
| 247 EXPECT_EQ(ui::EventLocationFromNative(scoped_xevent), |
| 248 gfx::ToFlooredPoint(ui::EventLocationFromNativeF(scoped_xevent))); |
| 247 EXPECT_EQ(GetTouchId(scoped_xevent), 0); | 249 EXPECT_EQ(GetTouchId(scoped_xevent), 0); |
| 248 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.15f); | 250 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.15f); |
| 249 PointerDetails pointer_details = | 251 PointerDetails pointer_details = |
| 250 GetTouchPointerDetailsFromNative(scoped_xevent); | 252 GetTouchPointerDetailsFromNative(scoped_xevent); |
| 251 EXPECT_FLOAT_EQ(pointer_details.radius_x, 10.0f); | 253 EXPECT_FLOAT_EQ(pointer_details.radius_x, 10.0f); |
| 252 EXPECT_FLOAT_EQ(pointer_details.force, 0.1f); | 254 EXPECT_FLOAT_EQ(pointer_details.force, 0.1f); |
| 253 | 255 |
| 254 // Touch update, with new orientation info. | 256 // Touch update, with new orientation info. |
| 255 valuators.clear(); | 257 valuators.clear(); |
| 256 valuators.push_back( | 258 valuators.push_back( |
| 257 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.5f)); | 259 Valuator(DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.5f)); |
| 258 scoped_xevent.InitTouchEvent( | 260 scoped_xevent.InitTouchEvent( |
| 259 0, XI_TouchUpdate, 5, gfx::Point(20, 20), valuators); | 261 0, XI_TouchUpdate, 5, gfx::Point(20, 20), valuators); |
| 260 EXPECT_EQ(ui::ET_TOUCH_MOVED, ui::EventTypeFromNative(scoped_xevent)); | 262 EXPECT_EQ(ui::ET_TOUCH_MOVED, ui::EventTypeFromNative(scoped_xevent)); |
| 261 EXPECT_EQ("20,20", ui::EventLocationFromNative(scoped_xevent).ToString()); | 263 EXPECT_EQ("20,20", ui::EventLocationFromNative(scoped_xevent).ToString()); |
| 264 EXPECT_EQ(ui::EventLocationFromNative(scoped_xevent), |
| 265 gfx::ToFlooredPoint(ui::EventLocationFromNativeF(scoped_xevent))); |
| 262 EXPECT_EQ(GetTouchId(scoped_xevent), 0); | 266 EXPECT_EQ(GetTouchId(scoped_xevent), 0); |
| 263 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f); | 267 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f); |
| 264 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); | 268 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); |
| 265 EXPECT_FLOAT_EQ(pointer_details.radius_x, 10.0f); | 269 EXPECT_FLOAT_EQ(pointer_details.radius_x, 10.0f); |
| 266 EXPECT_FLOAT_EQ(pointer_details.force, 0.1f); | 270 EXPECT_FLOAT_EQ(pointer_details.force, 0.1f); |
| 267 | 271 |
| 268 // Another touch with tracking id 6, touch id 1. | 272 // Another touch with tracking id 6, touch id 1. |
| 269 valuators.clear(); | 273 valuators.clear(); |
| 270 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 100)); | 274 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 100)); |
| 271 valuators.push_back(Valuator( | 275 valuators.push_back(Valuator( |
| 272 DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.9f)); | 276 DeviceDataManagerX11::DT_TOUCH_ORIENTATION, 0.9f)); |
| 273 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 500)); | 277 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 500)); |
| 274 scoped_xevent.InitTouchEvent( | 278 scoped_xevent.InitTouchEvent( |
| 275 0, XI_TouchBegin, 6, gfx::Point(200, 200), valuators); | 279 0, XI_TouchBegin, 6, gfx::Point(200, 200), valuators); |
| 276 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent)); | 280 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent)); |
| 277 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString()); | 281 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString()); |
| 282 EXPECT_EQ(ui::EventLocationFromNative(scoped_xevent), |
| 283 gfx::ToFlooredPoint(ui::EventLocationFromNativeF(scoped_xevent))); |
| 278 EXPECT_EQ(GetTouchId(scoped_xevent), 1); | 284 EXPECT_EQ(GetTouchId(scoped_xevent), 1); |
| 279 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f); | 285 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f); |
| 280 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); | 286 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); |
| 281 EXPECT_FLOAT_EQ(pointer_details.radius_x, 50.0f); | 287 EXPECT_FLOAT_EQ(pointer_details.radius_x, 50.0f); |
| 282 EXPECT_FLOAT_EQ(pointer_details.force, 0.5f); | 288 EXPECT_FLOAT_EQ(pointer_details.force, 0.5f); |
| 283 | 289 |
| 284 // Touch with tracking id 5 should have old radius/angle value and new pressue | 290 // Touch with tracking id 5 should have old radius/angle value and new pressue |
| 285 // value. | 291 // value. |
| 286 valuators.clear(); | 292 valuators.clear(); |
| 287 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 50)); | 293 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_PRESSURE, 50)); |
| 288 scoped_xevent.InitTouchEvent( | 294 scoped_xevent.InitTouchEvent( |
| 289 0, XI_TouchEnd, 5, gfx::Point(30, 30), valuators); | 295 0, XI_TouchEnd, 5, gfx::Point(30, 30), valuators); |
| 290 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent)); | 296 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent)); |
| 291 EXPECT_EQ("30,30", ui::EventLocationFromNative(scoped_xevent).ToString()); | 297 EXPECT_EQ("30,30", ui::EventLocationFromNative(scoped_xevent).ToString()); |
| 298 EXPECT_EQ(ui::EventLocationFromNative(scoped_xevent), |
| 299 gfx::ToFlooredPoint(ui::EventLocationFromNativeF(scoped_xevent))); |
| 292 EXPECT_EQ(GetTouchId(scoped_xevent), 0); | 300 EXPECT_EQ(GetTouchId(scoped_xevent), 0); |
| 293 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f); | 301 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f); |
| 294 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); | 302 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); |
| 295 EXPECT_FLOAT_EQ(pointer_details.radius_x, 10.0f); | 303 EXPECT_FLOAT_EQ(pointer_details.radius_x, 10.0f); |
| 296 EXPECT_FLOAT_EQ(pointer_details.force, 0.05f); | 304 EXPECT_FLOAT_EQ(pointer_details.force, 0.05f); |
| 297 | 305 |
| 298 // Touch with tracking id 6 should have old angle/pressure value and new | 306 // Touch with tracking id 6 should have old angle/pressure value and new |
| 299 // radius value. | 307 // radius value. |
| 300 valuators.clear(); | 308 valuators.clear(); |
| 301 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 50)); | 309 valuators.push_back(Valuator(DeviceDataManagerX11::DT_TOUCH_MAJOR, 50)); |
| 302 scoped_xevent.InitTouchEvent( | 310 scoped_xevent.InitTouchEvent( |
| 303 0, XI_TouchEnd, 6, gfx::Point(200, 200), valuators); | 311 0, XI_TouchEnd, 6, gfx::Point(200, 200), valuators); |
| 304 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent)); | 312 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent)); |
| 305 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString()); | 313 EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString()); |
| 314 EXPECT_EQ(ui::EventLocationFromNative(scoped_xevent), |
| 315 gfx::ToFlooredPoint(ui::EventLocationFromNativeF(scoped_xevent))); |
| 306 EXPECT_EQ(GetTouchId(scoped_xevent), 1); | 316 EXPECT_EQ(GetTouchId(scoped_xevent), 1); |
| 307 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f); | 317 EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f); |
| 308 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); | 318 pointer_details = GetTouchPointerDetailsFromNative(scoped_xevent); |
| 309 EXPECT_FLOAT_EQ(pointer_details.radius_x, 25.0f); | 319 EXPECT_FLOAT_EQ(pointer_details.radius_x, 25.0f); |
| 310 EXPECT_FLOAT_EQ(pointer_details.force, 0.5f); | 320 EXPECT_FLOAT_EQ(pointer_details.force, 0.5f); |
| 311 } | 321 } |
| 312 | 322 |
| 313 int GetTouchIdForTrackingId(uint32_t tracking_id) { | 323 int GetTouchIdForTrackingId(uint32_t tracking_id) { |
| 314 int slot = 0; | 324 int slot = 0; |
| 315 bool success = | 325 bool success = |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 571 | 581 |
| 572 ResetTimestampRolloverCountersForTesting( | 582 ResetTimestampRolloverCountersForTesting( |
| 573 base::MakeUnique<MockTickClock>(0x100000005)); | 583 base::MakeUnique<MockTickClock>(0x100000005)); |
| 574 | 584 |
| 575 event.xbutton.time = 0xFFFFFFFF; | 585 event.xbutton.time = 0xFFFFFFFF; |
| 576 EXPECT_EQ(base::TimeDelta::FromMilliseconds(0xFFFFFFFF).ToInternalValue(), | 586 EXPECT_EQ(base::TimeDelta::FromMilliseconds(0xFFFFFFFF).ToInternalValue(), |
| 577 ui::EventTimeFromNative(&event).ToInternalValue()); | 587 ui::EventTimeFromNative(&event).ToInternalValue()); |
| 578 } | 588 } |
| 579 | 589 |
| 580 } // namespace ui | 590 } // namespace ui |
| OLD | NEW |