Chromium Code Reviews| Index: ui/events/devices/x11/device_data_manager_x11.cc |
| diff --git a/ui/events/devices/x11/device_data_manager_x11.cc b/ui/events/devices/x11/device_data_manager_x11.cc |
| index 85704437dfd2a84923762d0c9d770d7f18649661..53f926c783ab52b19fdbfdb17dff5460c9ac0364 100644 |
| --- a/ui/events/devices/x11/device_data_manager_x11.cc |
| +++ b/ui/events/devices/x11/device_data_manager_x11.cc |
| @@ -418,6 +418,10 @@ bool DeviceDataManagerX11::IsCMTGestureEvent( |
| bool DeviceDataManagerX11::HasEventData( |
| const XIDeviceEvent* xiev, const DataType type) const { |
| + CHECK(0 < xiev->sourceid); |
| + CHECK(xiev->sourceid < kMaxDeviceNum); |
|
sadrul
2015/05/26 17:52:50
We don't really have control over the source id, s
tdresser
2015/05/27 12:49:39
Done.
|
| + if (type >= valuator_lookup_[xiev->sourceid].size()) |
| + return false; |
| const int idx = valuator_lookup_[xiev->sourceid][type]; |
| return (idx >= 0) && XIMaskIsSet(xiev->valuators.mask, idx); |
| } |
| @@ -606,7 +610,8 @@ bool DeviceDataManagerX11::GetDataRange(int deviceid, |
| void DeviceDataManagerX11::SetDeviceListForTest( |
| const std::vector<int>& touchscreen, |
| - const std::vector<int>& cmt_devices) { |
| + const std::vector<int>& cmt_devices, |
| + const std::vector<int>& other_devices) { |
| for (int i = 0; i < kMaxDeviceNum; ++i) { |
| valuator_count_[i] = 0; |
| valuator_lookup_[i].clear(); |
| @@ -617,20 +622,23 @@ void DeviceDataManagerX11::SetDeviceListForTest( |
| last_seen_valuator_[i][j].clear(); |
| } |
| - for (size_t i = 0; i < touchscreen.size(); i++) { |
| - int deviceid = touchscreen[i]; |
| + for (int deviceid : touchscreen) { |
| InitializeValuatorsForTest(deviceid, kTouchDataTypeStart, kTouchDataTypeEnd, |
| 0, 1000); |
| } |
| cmt_devices_.reset(); |
| - for (size_t i = 0; i < cmt_devices.size(); ++i) { |
| - int deviceid = cmt_devices[i]; |
| + for (int deviceid : cmt_devices) { |
| cmt_devices_[deviceid] = true; |
| touchpads_[deviceid] = true; |
| InitializeValuatorsForTest(deviceid, kCMTDataTypeStart, kCMTDataTypeEnd, |
| -1000, 1000); |
| } |
| + |
| + for (int deviceid : other_devices) { |
| + InitializeValuatorsForTest(deviceid, kCMTDataTypeStart, kCMTDataTypeEnd, |
| + -1000, 1000); |
| + } |
| } |
| void DeviceDataManagerX11::SetValuatorDataForTest(XIDeviceEvent* xievent, |