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

Side by Side Diff: ui/events/devices/x11/device_data_manager_x11.cc

Issue 1071193002: Change device IDs from unsigned to signed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more test fixes Created 5 years, 8 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "ui/events/devices/x11/device_data_manager_x11.h" 5 #include "ui/events/devices/x11/device_data_manager_x11.h"
6 6
7 #include <X11/extensions/XInput.h> 7 #include <X11/extensions/XInput.h>
8 #include <X11/extensions/XInput2.h> 8 #include <X11/extensions/XInput2.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 10
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 // types. 104 // types.
105 const int kCMTDataTypeStart = ui::DeviceDataManagerX11::DT_CMT_SCROLL_X; 105 const int kCMTDataTypeStart = ui::DeviceDataManagerX11::DT_CMT_SCROLL_X;
106 const int kCMTDataTypeEnd = ui::DeviceDataManagerX11::DT_CMT_FINGER_COUNT; 106 const int kCMTDataTypeEnd = ui::DeviceDataManagerX11::DT_CMT_FINGER_COUNT;
107 const int kTouchDataTypeStart = ui::DeviceDataManagerX11::DT_TOUCH_MAJOR; 107 const int kTouchDataTypeStart = ui::DeviceDataManagerX11::DT_TOUCH_MAJOR;
108 const int kTouchDataTypeEnd = ui::DeviceDataManagerX11::DT_TOUCH_RAW_TIMESTAMP; 108 const int kTouchDataTypeEnd = ui::DeviceDataManagerX11::DT_TOUCH_RAW_TIMESTAMP;
109 109
110 namespace ui { 110 namespace ui {
111 111
112 namespace { 112 namespace {
113 113
114 bool DeviceHasId(const ui::InputDevice input_device, unsigned int id) { 114 bool DeviceHasId(const ui::InputDevice input_device, int id) {
115 return input_device.id == id; 115 return input_device.id == id;
116 } 116 }
117 117
118 } // namespace 118 } // namespace
119 119
120 bool DeviceDataManagerX11::IsCMTDataType(const int type) { 120 bool DeviceDataManagerX11::IsCMTDataType(const int type) {
121 return (type >= kCMTDataTypeStart) && (type <= kCMTDataTypeEnd); 121 return (type >= kCMTDataTypeStart) && (type <= kCMTDataTypeEnd);
122 } 122 }
123 123
124 bool DeviceDataManagerX11::IsTouchDataType(const int type) { 124 bool DeviceDataManagerX11::IsTouchDataType(const int type) {
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 563
564 EventData data; 564 EventData data;
565 GetEventRawData(*native_event, &data); 565 GetEventRawData(*native_event, &data);
566 566
567 if (data.find(DT_CMT_START_TIME) != data.end()) 567 if (data.find(DT_CMT_START_TIME) != data.end())
568 *start_time = data[DT_CMT_START_TIME]; 568 *start_time = data[DT_CMT_START_TIME];
569 if (data.find(DT_CMT_END_TIME) != data.end()) 569 if (data.find(DT_CMT_END_TIME) != data.end())
570 *end_time = data[DT_CMT_END_TIME]; 570 *end_time = data[DT_CMT_END_TIME];
571 } 571 }
572 572
573 bool DeviceDataManagerX11::NormalizeData(unsigned int deviceid, 573 bool DeviceDataManagerX11::NormalizeData(int deviceid,
574 const DataType type, 574 const DataType type,
575 double* value) { 575 double* value) {
576 double max_value; 576 double max_value;
577 double min_value; 577 double min_value;
578 if (GetDataRange(deviceid, type, &min_value, &max_value)) { 578 if (GetDataRange(deviceid, type, &min_value, &max_value)) {
579 *value = (*value - min_value) / (max_value - min_value); 579 *value = (*value - min_value) / (max_value - min_value);
580 DCHECK(*value >= 0.0 && *value <= 1.0); 580 DCHECK(*value >= 0.0 && *value <= 1.0);
581 return true; 581 return true;
582 } 582 }
583 return false; 583 return false;
584 } 584 }
585 585
586 bool DeviceDataManagerX11::GetDataRange(unsigned int deviceid, 586 bool DeviceDataManagerX11::GetDataRange(int deviceid,
587 const DataType type, 587 const DataType type,
588 double* min, 588 double* min,
589 double* max) { 589 double* max) {
590 if (deviceid >= static_cast<unsigned int>(kMaxDeviceNum)) 590 if (deviceid >= kMaxDeviceNum)
591 return false; 591 return false;
592 if (valuator_lookup_[deviceid][type] >= 0) { 592 if (valuator_lookup_[deviceid][type] >= 0) {
593 *min = valuator_min_[deviceid][type]; 593 *min = valuator_min_[deviceid][type];
594 *max = valuator_max_[deviceid][type]; 594 *max = valuator_max_[deviceid][type];
595 return true; 595 return true;
596 } 596 }
597 return false; 597 return false;
598 } 598 }
599 599
600 void DeviceDataManagerX11::SetDeviceListForTest( 600 void DeviceDataManagerX11::SetDeviceListForTest(
601 const std::vector<unsigned int>& touchscreen, 601 const std::vector<int>& touchscreen,
602 const std::vector<unsigned int>& cmt_devices) { 602 const std::vector<int>& cmt_devices) {
603 for (int i = 0; i < kMaxDeviceNum; ++i) { 603 for (int i = 0; i < kMaxDeviceNum; ++i) {
604 valuator_count_[i] = 0; 604 valuator_count_[i] = 0;
605 valuator_lookup_[i].clear(); 605 valuator_lookup_[i].clear();
606 data_type_lookup_[i].clear(); 606 data_type_lookup_[i].clear();
607 valuator_min_[i].clear(); 607 valuator_min_[i].clear();
608 valuator_max_[i].clear(); 608 valuator_max_[i].clear();
609 for (int j = 0; j < kMaxSlotNum; j++) 609 for (int j = 0; j < kMaxSlotNum; j++)
610 last_seen_valuator_[i][j].clear(); 610 last_seen_valuator_[i][j].clear();
611 } 611 }
612 612
613 for (size_t i = 0; i < touchscreen.size(); i++) { 613 for (size_t i = 0; i < touchscreen.size(); i++) {
614 unsigned int deviceid = touchscreen[i]; 614 int deviceid = touchscreen[i];
615 InitializeValuatorsForTest(deviceid, kTouchDataTypeStart, kTouchDataTypeEnd, 615 InitializeValuatorsForTest(deviceid, kTouchDataTypeStart, kTouchDataTypeEnd,
616 0, 1000); 616 0, 1000);
617 } 617 }
618 618
619 cmt_devices_.reset(); 619 cmt_devices_.reset();
620 for (size_t i = 0; i < cmt_devices.size(); ++i) { 620 for (size_t i = 0; i < cmt_devices.size(); ++i) {
621 unsigned int deviceid = cmt_devices[i]; 621 int deviceid = cmt_devices[i];
622 cmt_devices_[deviceid] = true; 622 cmt_devices_[deviceid] = true;
623 touchpads_[deviceid] = true; 623 touchpads_[deviceid] = true;
624 InitializeValuatorsForTest(deviceid, kCMTDataTypeStart, kCMTDataTypeEnd, 624 InitializeValuatorsForTest(deviceid, kCMTDataTypeStart, kCMTDataTypeEnd,
625 -1000, 1000); 625 -1000, 1000);
626 } 626 }
627 } 627 }
628 628
629 void DeviceDataManagerX11::SetValuatorDataForTest(XIDeviceEvent* xievent, 629 void DeviceDataManagerX11::SetValuatorDataForTest(XIDeviceEvent* xievent,
630 DataType type, 630 DataType type,
631 double value) { 631 double value) {
(...skipping 26 matching lines...) Expand all
658 last_seen_valuator_[deviceid][j].resize(DT_LAST_ENTRY, 0); 658 last_seen_valuator_[deviceid][j].resize(DT_LAST_ENTRY, 0);
659 for (int j = start_valuator; j <= end_valuator; ++j) { 659 for (int j = start_valuator; j <= end_valuator; ++j) {
660 valuator_lookup_[deviceid][j] = valuator_count_[deviceid]; 660 valuator_lookup_[deviceid][j] = valuator_count_[deviceid];
661 data_type_lookup_[deviceid][valuator_count_[deviceid]] = j; 661 data_type_lookup_[deviceid][valuator_count_[deviceid]] = j;
662 valuator_min_[deviceid][j] = min_value; 662 valuator_min_[deviceid][j] = min_value;
663 valuator_max_[deviceid][j] = max_value; 663 valuator_max_[deviceid][j] = max_value;
664 valuator_count_[deviceid]++; 664 valuator_count_[deviceid]++;
665 } 665 }
666 } 666 }
667 667
668 bool DeviceDataManagerX11::TouchEventNeedsCalibrate( 668 bool DeviceDataManagerX11::TouchEventNeedsCalibrate(int touch_device_id) const {
669 unsigned int touch_device_id) const {
670 #if defined(OS_CHROMEOS) 669 #if defined(OS_CHROMEOS)
671 if (!base::SysInfo::IsRunningOnChromeOS()) 670 if (!base::SysInfo::IsRunningOnChromeOS())
672 return false; 671 return false;
673 672
674 const std::vector<TouchscreenDevice>& touch_devices = 673 const std::vector<TouchscreenDevice>& touch_devices =
675 ui::DeviceDataManager::GetInstance()->touchscreen_devices(); 674 ui::DeviceDataManager::GetInstance()->touchscreen_devices();
676 std::vector<TouchscreenDevice>::const_iterator it = 675 std::vector<TouchscreenDevice>::const_iterator it =
677 std::find_if(touch_devices.begin(), touch_devices.end(), 676 std::find_if(touch_devices.begin(), touch_devices.end(),
678 std::bind2nd(std::ptr_fun(&DeviceHasId), touch_device_id)); 677 std::bind2nd(std::ptr_fun(&DeviceHasId), touch_device_id));
679 return it != touch_devices.end() && it->type == INPUT_DEVICE_INTERNAL; 678 return it != touch_devices.end() && it->type == INPUT_DEVICE_INTERNAL;
680 #endif // defined(OS_CHROMEOS) 679 #endif // defined(OS_CHROMEOS)
681 return false; 680 return false;
682 } 681 }
683 682
684 void DeviceDataManagerX11::SetDisabledKeyboardAllowedKeys( 683 void DeviceDataManagerX11::SetDisabledKeyboardAllowedKeys(
685 scoped_ptr<std::set<KeyboardCode> > excepted_keys) { 684 scoped_ptr<std::set<KeyboardCode> > excepted_keys) {
686 DCHECK(!excepted_keys.get() || 685 DCHECK(!excepted_keys.get() ||
687 !blocked_keyboard_allowed_keys_.get()); 686 !blocked_keyboard_allowed_keys_.get());
688 blocked_keyboard_allowed_keys_ = excepted_keys.Pass(); 687 blocked_keyboard_allowed_keys_ = excepted_keys.Pass();
689 } 688 }
690 689
691 void DeviceDataManagerX11::DisableDevice(unsigned int deviceid) { 690 void DeviceDataManagerX11::DisableDevice(int deviceid) {
692 blocked_devices_.set(deviceid, true); 691 blocked_devices_.set(deviceid, true);
693 // TODO(rsadam@): Support blocking touchscreen devices. 692 // TODO(rsadam@): Support blocking touchscreen devices.
694 std::vector<KeyboardDevice> keyboards = keyboard_devices(); 693 std::vector<KeyboardDevice> keyboards = keyboard_devices();
695 std::vector<KeyboardDevice>::iterator it = 694 std::vector<KeyboardDevice>::iterator it =
696 std::find_if(keyboards.begin(), 695 std::find_if(keyboards.begin(),
697 keyboards.end(), 696 keyboards.end(),
698 std::bind2nd(std::ptr_fun(&DeviceHasId), deviceid)); 697 std::bind2nd(std::ptr_fun(&DeviceHasId), deviceid));
699 if (it != std::end(keyboards)) { 698 if (it != std::end(keyboards)) {
700 blocked_keyboards_.insert( 699 blocked_keyboards_.insert(
701 std::pair<unsigned int, KeyboardDevice>(deviceid, *it)); 700 std::pair<int, KeyboardDevice>(deviceid, *it));
702 keyboards.erase(it); 701 keyboards.erase(it);
703 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards); 702 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
704 } 703 }
705 } 704 }
706 705
707 void DeviceDataManagerX11::EnableDevice(unsigned int deviceid) { 706 void DeviceDataManagerX11::EnableDevice(int deviceid) {
708 blocked_devices_.set(deviceid, false); 707 blocked_devices_.set(deviceid, false);
709 std::map<unsigned int, KeyboardDevice>::iterator it = 708 std::map<int, KeyboardDevice>::iterator it =
710 blocked_keyboards_.find(deviceid); 709 blocked_keyboards_.find(deviceid);
711 if (it != blocked_keyboards_.end()) { 710 if (it != blocked_keyboards_.end()) {
712 std::vector<KeyboardDevice> devices = keyboard_devices(); 711 std::vector<KeyboardDevice> devices = keyboard_devices();
713 // Add device to current list of active devices. 712 // Add device to current list of active devices.
714 devices.push_back((*it).second); 713 devices.push_back((*it).second);
715 blocked_keyboards_.erase(it); 714 blocked_keyboards_.erase(it);
716 DeviceDataManager::OnKeyboardDevicesUpdated(devices); 715 DeviceDataManager::OnKeyboardDevicesUpdated(devices);
717 } 716 }
718 } 717 }
719 718
(...skipping 13 matching lines...) Expand all
733 blocked_keyboard_allowed_keys_->end()) { 732 blocked_keyboard_allowed_keys_->end()) {
734 return false; 733 return false;
735 } 734 }
736 735
737 return blocked_devices_.test(xievent->sourceid); 736 return blocked_devices_.test(xievent->sourceid);
738 } 737 }
739 738
740 void DeviceDataManagerX11::OnKeyboardDevicesUpdated( 739 void DeviceDataManagerX11::OnKeyboardDevicesUpdated(
741 const std::vector<KeyboardDevice>& devices) { 740 const std::vector<KeyboardDevice>& devices) {
742 std::vector<KeyboardDevice> keyboards(devices); 741 std::vector<KeyboardDevice> keyboards(devices);
743 for (std::map<unsigned int, KeyboardDevice>::iterator blocked_iter = 742 for (std::map<int, KeyboardDevice>::iterator blocked_iter =
744 blocked_keyboards_.begin(); 743 blocked_keyboards_.begin();
745 blocked_iter != blocked_keyboards_.end();) { 744 blocked_iter != blocked_keyboards_.end();) {
746 // Check if the blocked device still exists in list of devices. 745 // Check if the blocked device still exists in list of devices.
747 std::vector<KeyboardDevice>::iterator it = std::find_if( 746 std::vector<KeyboardDevice>::iterator it = std::find_if(
748 keyboards.begin(), keyboards.end(), 747 keyboards.begin(), keyboards.end(),
749 std::bind2nd(std::ptr_fun(&DeviceHasId), (*blocked_iter).first)); 748 std::bind2nd(std::ptr_fun(&DeviceHasId), (*blocked_iter).first));
750 // If the device no longer exists, unblock it, else filter it out from our 749 // If the device no longer exists, unblock it, else filter it out from our
751 // active list. 750 // active list.
752 if (it == keyboards.end()) { 751 if (it == keyboards.end()) {
753 blocked_devices_.set((*blocked_iter).first, false); 752 blocked_devices_.set((*blocked_iter).first, false);
754 blocked_keyboards_.erase(blocked_iter++); 753 blocked_keyboards_.erase(blocked_iter++);
755 } else { 754 } else {
756 keyboards.erase(it); 755 keyboards.erase(it);
757 ++blocked_iter; 756 ++blocked_iter;
758 } 757 }
759 } 758 }
760 // Notify base class of updated list. 759 // Notify base class of updated list.
761 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards); 760 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
762 } 761 }
763 762
764 } // namespace ui 763 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698