Index: ui/base/touch/touch_device_aurax11.cc |
diff --git a/ui/base/touch/touch_device_aurax11.cc b/ui/base/touch/touch_device_aurax11.cc |
index 52ecc75787e04ba02f3b3a9097deb4ec361cf395..8d76a1f0f0774fc77de4a1a55b7a789a01f01da7 100644 |
--- a/ui/base/touch/touch_device_aurax11.cc |
+++ b/ui/base/touch/touch_device_aurax11.cc |
@@ -3,6 +3,8 @@ |
// found in the LICENSE file. |
#include "ui/base/touch/touch_device.h" |
+#include "base/logging.h" |
+#include "ui/events/devices/device_data_manager.h" |
#include "ui/events/devices/x11/touch_factory_x11.h" |
namespace ui { |
@@ -15,23 +17,57 @@ int MaxTouchPoints() { |
return ui::TouchFactory::GetInstance()->GetMaxTouchPoints(); |
} |
+// FIXME: Use mouse detection logic. crbug.com/440503 |
int GetAvailablePointerTypes() { |
- // TODO(mustaq): Replace the stub below |
- return POINTER_TYPE_NONE; |
+ int available_pointer_types = 0; |
+ |
+ if (ui::DeviceDataManager::GetInstance()->keyboard_devices().size() > 0) |
+ available_pointer_types |= POINTER_TYPE_NONE; |
+ |
+ // Assume either a touch-device or a mouse is there |
+ if (IsTouchDevicePresent()) |
+ available_pointer_types |= POINTER_TYPE_COARSE; |
+ else |
+ available_pointer_types |= POINTER_TYPE_FINE; |
+ |
+ DCHECK(available_pointer_types); |
+ return available_pointer_types; |
} |
PointerType GetPrimaryPointerType() { |
- // TODO(mustaq): Replace the stub below |
+ int available_pointer_types = GetAvailablePointerTypes(); |
+ if (available_pointer_types & POINTER_TYPE_COARSE) |
+ return POINTER_TYPE_COARSE; |
+ if (available_pointer_types & POINTER_TYPE_FINE) |
+ return POINTER_TYPE_FINE; |
+ DCHECK(available_pointer_types & POINTER_TYPE_NONE); |
return POINTER_TYPE_NONE; |
} |
+// FIXME: Use mouse detection logic. crbug.com/440503 |
int GetAvailableHoverTypes() { |
- // TODO(mustaq): Replace the stub below |
- return HOVER_TYPE_NONE; |
+ int available_hover_types = 0; |
+ |
+ if (ui::DeviceDataManager::GetInstance()->keyboard_devices().size() > 0) |
+ available_hover_types |= HOVER_TYPE_NONE; |
+ |
+ // Assume either a touch-device or a mouse is there |
+ if (IsTouchDevicePresent()) |
+ available_hover_types |= HOVER_TYPE_ON_DEMAND; |
+ else |
+ available_hover_types |= HOVER_TYPE_HOVER; |
+ |
+ DCHECK(available_hover_types); |
+ return available_hover_types; |
} |
HoverType GetPrimaryHoverType() { |
- // TODO(mustaq): Replace the stub below |
+ int available_hover_types = GetAvailableHoverTypes(); |
+ if (available_hover_types & HOVER_TYPE_ON_DEMAND) |
+ return HOVER_TYPE_ON_DEMAND; |
+ if (available_hover_types & HOVER_TYPE_HOVER) |
+ return HOVER_TYPE_HOVER; |
+ DCHECK(available_hover_types & HOVER_TYPE_NONE); |
return HOVER_TYPE_NONE; |
} |