| 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;
|
| }
|
|
|
|
|