| Index: ui/gfx/android/view_configuration.cc
|
| diff --git a/ui/gfx/android/view_configuration.cc b/ui/gfx/android/view_configuration.cc
|
| index 63657178b1551e41b303c5887d2fa0669f7f72a5..2feec1ad34b12597e39be225de1e9479b07e3a6e 100644
|
| --- a/ui/gfx/android/view_configuration.cc
|
| +++ b/ui/gfx/android/view_configuration.cc
|
| @@ -5,52 +5,108 @@
|
| #include "ui/gfx/android/view_configuration.h"
|
|
|
| #include "base/android/jni_android.h"
|
| +#include "base/android/jni_string.h"
|
| +#include "base/lazy_instance.h"
|
| +#include "jni/ResourcesHelper_jni.h"
|
| #include "jni/ViewConfiguration_jni.h"
|
|
|
| -using namespace JNI_ViewConfiguration;
|
| using base::android::AttachCurrentThread;
|
| using base::android::GetApplicationContext;
|
|
|
| namespace gfx {
|
| +namespace {
|
| +struct ViewConfigurationData {
|
| + ViewConfigurationData() {
|
| + using namespace JNI_ViewConfiguration;
|
| +
|
| + JNIEnv* env = AttachCurrentThread();
|
| +
|
| + double_tap_timeout_in_ms = Java_ViewConfiguration_getDoubleTapTimeout(env);
|
| + long_press_timeout_in_ms = Java_ViewConfiguration_getLongPressTimeout(env);
|
| + tap_timeout_in_ms = Java_ViewConfiguration_getTapTimeout(env);
|
| +
|
| + ScopedJavaLocalRef<jobject> view =
|
| + Java_ViewConfiguration_get(env, GetApplicationContext());
|
| +
|
| + max_fling_velocity_in_pixels_s =
|
| + Java_ViewConfiguration_getScaledMaximumFlingVelocity(env, view.obj());
|
| + min_fling_velocity_in_pixels_s =
|
| + Java_ViewConfiguration_getScaledMinimumFlingVelocity(env, view.obj());
|
| +
|
| + touch_slop_in_pixels =
|
| + Java_ViewConfiguration_getScaledTouchSlop(env, view.obj());
|
| + double_tap_slop_in_pixels =
|
| + Java_ViewConfiguration_getScaledDoubleTapSlop(env, view.obj());
|
| +
|
| + ScopedJavaLocalRef<jstring> jidentifier =
|
| + base::android::ConvertUTF8ToJavaString(env, "config_minScalingSpan");
|
| + min_scaling_span_in_pixels =
|
| + Java_ResourcesHelper_getDimensionPixelSize(env, jidentifier.obj());
|
| +
|
| + jidentifier = base::android::ConvertUTF8ToJavaString(
|
| + env, "config_minScalingTouchMajor");
|
| + min_scaling_touch_major_in_pixels =
|
| + Java_ResourcesHelper_getDimensionPixelSize(env, jidentifier.obj());
|
| + }
|
| +
|
| + int double_tap_timeout_in_ms;
|
| + int long_press_timeout_in_ms;
|
| + int tap_timeout_in_ms;
|
| + int max_fling_velocity_in_pixels_s;
|
| + int min_fling_velocity_in_pixels_s;
|
| + int touch_slop_in_pixels;
|
| + int double_tap_slop_in_pixels;
|
| + int min_scaling_span_in_pixels;
|
| + int min_scaling_touch_major_in_pixels;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(ViewConfigurationData);
|
| +};
|
| +
|
| +base::LazyInstance<ViewConfigurationData> g_view_configuration =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +} // namespace
|
|
|
| int ViewConfiguration::GetDoubleTapTimeoutInMs() {
|
| - JNIEnv* env = AttachCurrentThread();
|
| - return Java_ViewConfiguration_getDoubleTapTimeout(env);
|
| + return g_view_configuration.Get().double_tap_timeout_in_ms;
|
| }
|
|
|
| int ViewConfiguration::GetLongPressTimeoutInMs() {
|
| - JNIEnv* env = AttachCurrentThread();
|
| - return Java_ViewConfiguration_getLongPressTimeout(env);
|
| + return g_view_configuration.Get().long_press_timeout_in_ms;
|
| }
|
|
|
| int ViewConfiguration::GetTapTimeoutInMs() {
|
| - JNIEnv* env = AttachCurrentThread();
|
| - return Java_ViewConfiguration_getTapTimeout(env);
|
| + return g_view_configuration.Get().tap_timeout_in_ms;
|
| }
|
|
|
| int ViewConfiguration::GetMaximumFlingVelocityInPixelsPerSecond() {
|
| - JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> view =
|
| - Java_ViewConfiguration_get(env, GetApplicationContext());
|
| - return Java_ViewConfiguration_getScaledMaximumFlingVelocity(env, view.obj());
|
| + return g_view_configuration.Get().max_fling_velocity_in_pixels_s;
|
| }
|
|
|
| int ViewConfiguration::GetMinimumFlingVelocityInPixelsPerSecond() {
|
| - JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> view =
|
| - Java_ViewConfiguration_get(env, GetApplicationContext());
|
| - return Java_ViewConfiguration_getScaledMinimumFlingVelocity(env, view.obj());
|
| + return g_view_configuration.Get().min_fling_velocity_in_pixels_s;
|
| }
|
|
|
| int ViewConfiguration::GetTouchSlopInPixels() {
|
| - JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> view =
|
| - Java_ViewConfiguration_get(env, GetApplicationContext());
|
| - return Java_ViewConfiguration_getScaledTouchSlop(env, view.obj());
|
| + return g_view_configuration.Get().touch_slop_in_pixels;
|
| +}
|
| +
|
| +int ViewConfiguration::GetDoubleTapSlopInPixels() {
|
| + return g_view_configuration.Get().double_tap_slop_in_pixels;
|
| +}
|
| +
|
| +int ViewConfiguration::GetMinScalingSpanInPixels() {
|
| + return g_view_configuration.Get().min_scaling_span_in_pixels;
|
| +}
|
| +
|
| +int ViewConfiguration::GetMinScalingTouchMajorInPixels() {
|
| + return g_view_configuration.Get().min_scaling_touch_major_in_pixels;
|
| }
|
|
|
| bool ViewConfiguration::RegisterViewConfiguration(JNIEnv* env) {
|
| - return RegisterNativesImpl(env);
|
| + return JNI_ViewConfiguration::RegisterNativesImpl(env) &&
|
| + RegisterNativesImpl(env);
|
| }
|
|
|
| } // namespace gfx
|
|
|