| Index: ui/base/touch/touch_device_android.cc
|
| diff --git a/ui/base/touch/touch_device_android.cc b/ui/base/touch/touch_device_android.cc
|
| index 0924783dffa7549c51ff514274e23593e9dc5803..faddb395790c54b20dc60790cbeeb6ee7ba1fcbf 100644
|
| --- a/ui/base/touch/touch_device_android.cc
|
| +++ b/ui/base/touch/touch_device_android.cc
|
| @@ -5,6 +5,7 @@
|
| #include "ui/base/touch/touch_device.h"
|
|
|
| #include "base/android/context_utils.h"
|
| +#include "base/android/jni_array.h"
|
| #include "base/logging.h"
|
| #include "jni/TouchDevice_jni.h"
|
|
|
| @@ -22,13 +23,24 @@ int MaxTouchPoints() {
|
| GetApplicationContext());
|
| }
|
|
|
| +std::pair<int, int> GetAvailablePointerAndHoverTypes() {
|
| + JNIEnv* env = AttachCurrentThread();
|
| + std::vector<int> pointer_and_hover_types;
|
| + base::android::JavaIntArrayToIntVector(
|
| + env, Java_TouchDevice_availablePointerAndHoverTypes(
|
| + env, GetApplicationContext())
|
| + .obj(),
|
| + &pointer_and_hover_types);
|
| + DCHECK_EQ(pointer_and_hover_types.size(), 2u);
|
| + return std::make_pair(pointer_and_hover_types[0], pointer_and_hover_types[1]);
|
| +}
|
| +
|
| int GetAvailablePointerTypes() {
|
| return Java_TouchDevice_availablePointerTypes(AttachCurrentThread(),
|
| GetApplicationContext());
|
| }
|
|
|
| -PointerType GetPrimaryPointerType() {
|
| - int available_pointer_types = GetAvailablePointerTypes();
|
| +PointerType GetPrimaryPointerType(int available_pointer_types) {
|
| if (available_pointer_types & POINTER_TYPE_COARSE)
|
| return POINTER_TYPE_COARSE;
|
| if (available_pointer_types & POINTER_TYPE_FINE)
|
| @@ -37,13 +49,16 @@ PointerType GetPrimaryPointerType() {
|
| return POINTER_TYPE_NONE;
|
| }
|
|
|
| +PointerType GetPrimaryPointerType() {
|
| + return GetPrimaryPointerType(GetAvailablePointerTypes());
|
| +}
|
| +
|
| int GetAvailableHoverTypes() {
|
| return Java_TouchDevice_availableHoverTypes(AttachCurrentThread(),
|
| GetApplicationContext());
|
| }
|
|
|
| -HoverType GetPrimaryHoverType() {
|
| - int available_hover_types = GetAvailableHoverTypes();
|
| +HoverType GetPrimaryHoverType(int available_hover_types) {
|
| if (available_hover_types & HOVER_TYPE_ON_DEMAND)
|
| return HOVER_TYPE_ON_DEMAND;
|
| if (available_hover_types & HOVER_TYPE_HOVER)
|
| @@ -52,4 +67,8 @@ HoverType GetPrimaryHoverType() {
|
| return HOVER_TYPE_NONE;
|
| }
|
|
|
| +HoverType GetPrimaryHoverType() {
|
| + return GetPrimaryHoverType(GetAvailableHoverTypes());
|
| +}
|
| +
|
| } // namespace ui
|
|
|