193812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard/*
293812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * Portions of this code came from frameworks/base/core/java/android/view/ViewConfiguration.java,
393812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * which contains the following license text:
493812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard *
593812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * Copyright (C) 2006 The Android Open Source Project
693812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard *
793812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * Licensed under the Apache License, Version 2.0 (the "License");
893812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * you may not use this file except in compliance with the License.
993812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * You may obtain a copy of the License at
1093812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard *
1193812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard *      http://www.apache.org/licenses/LICENSE-2.0
1293812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard *
1393812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * Unless required by applicable law or agreed to in writing, software
1493812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * distributed under the License is distributed on an "AS IS" BASIS,
1593812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1693812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * See the License for the specific language governing permissions and
1793812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard * limitations under the License.
1893812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard *
1993812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard */
2093812720aada547834dedf94eff95a380c0d431ePhil Plante & Ryan Richard
2149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardpackage com.xtremelabs.robolectric.shadows;
2249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
2349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport android.content.Context;
2449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport android.util.DisplayMetrics;
2549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport android.view.ViewConfiguration;
2649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport com.xtremelabs.robolectric.Robolectric;
2749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport com.xtremelabs.robolectric.internal.Implementation;
2849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport com.xtremelabs.robolectric.internal.Implements;
2949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport com.xtremelabs.robolectric.internal.RealObject;
3049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
3149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardimport static com.xtremelabs.robolectric.Robolectric.shadowOf;
3249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
3349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard@SuppressWarnings({"UnusedDeclaration"})
3449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard@Implements(ViewConfiguration.class)
3549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richardpublic class ShadowViewConfiguration {
3649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
3749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int SCROLL_BAR_SIZE = 10;
3849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int SCROLL_BAR_FADE_DURATION = 250;
3949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int SCROLL_BAR_DEFAULT_DELAY = 300;
4049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int FADING_EDGE_LENGTH = 12;
4149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int PRESSED_STATE_DURATION = 125;
4249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int LONG_PRESS_TIMEOUT = 500;
4349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int GLOBAL_ACTIONS_KEY_TIMEOUT = 500;
4449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int TAP_TIMEOUT = 115;
4549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int JUMP_TAP_TIMEOUT = 500;
4649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int DOUBLE_TAP_TIMEOUT = 300;
4749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int ZOOM_CONTROLS_TIMEOUT = 3000;
4849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int EDGE_SLOP = 12;
4949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int TOUCH_SLOP = 16;
5049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int PAGING_TOUCH_SLOP = TOUCH_SLOP * 2;
5149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int DOUBLE_TAP_SLOP = 100;
5249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int WINDOW_TOUCH_SLOP = 16;
5349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int MINIMUM_FLING_VELOCITY = 50;
5449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int MAXIMUM_FLING_VELOCITY = 4000;
5549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int MAXIMUM_DRAWING_CACHE_SIZE = 320 * 480 * 4;
5649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static float SCROLL_FRICTION = 0.015f;
5749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int OVERSCROLL_DISTANCE = 0;
5849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private static final int OVERFLING_DISTANCE = 4;
5949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
6049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int edgeSlop;
6149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int fadingEdgeLength;
6249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int minimumFlingVelocity;
6349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int maximumFlingVelocity;
6449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int scrollbarSize;
6549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int touchSlop;
6649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int pagingTouchSlop;
6749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int doubleTapSlop;
6849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private int windowTouchSlop;
6949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
7049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @RealObject
7149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private ViewConfiguration realViewConfiguration;
7249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
7349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    private void setup(Context context) {
7449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
7549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        float density = metrics.density;
7649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
7749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        edgeSlop = (int) (density * EDGE_SLOP + 0.5f);
7849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        fadingEdgeLength = (int) (density * FADING_EDGE_LENGTH + 0.5f);
7949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        minimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f);
8049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        maximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f);
8149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        scrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f);
8249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        touchSlop = (int) (density * TOUCH_SLOP + 0.5f);
8349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        pagingTouchSlop = (int) (density * PAGING_TOUCH_SLOP + 0.5f);
8449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        doubleTapSlop = (int) (density * DOUBLE_TAP_SLOP + 0.5f);
8549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        windowTouchSlop = (int) (density * WINDOW_TOUCH_SLOP + 0.5f);
8649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
8749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
8849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
8949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static ViewConfiguration get(Context context) {
9049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        ViewConfiguration viewConfiguration = Robolectric.newInstanceOf(ViewConfiguration.class);
9149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        shadowOf(viewConfiguration).setup(context);
9249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return viewConfiguration;
9349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
9449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
9549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
9649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getScrollBarSize() {
9749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return SCROLL_BAR_SIZE;
9849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
9949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
10049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
10149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledScrollBarSize() {
10249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return scrollbarSize;
10349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
10449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
10549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
10649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getScrollBarFadeDuration() {
10749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return SCROLL_BAR_FADE_DURATION;
10849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
10949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
11049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
11149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getScrollDefaultDelay() {
11249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return SCROLL_BAR_DEFAULT_DELAY;
11349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
11449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
11549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
11649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getFadingEdgeLength() {
11749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return FADING_EDGE_LENGTH;
11849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
11949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
12049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
12149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledFadingEdgeLength() {
12249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return fadingEdgeLength;
12349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
12449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
12549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
12649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getPressedStateDuration() {
12749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return PRESSED_STATE_DURATION;
12849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
12949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
13049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
13149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getLongPressTimeout() {
13249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return LONG_PRESS_TIMEOUT;
13349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
13449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
13549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
13649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getTapTimeout() {
13749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return TAP_TIMEOUT;
13849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
13949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
14049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
14149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getJumpTapTimeout() {
14249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return JUMP_TAP_TIMEOUT;
14349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
14449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
14549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
14649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getDoubleTapTimeout() {
14749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return DOUBLE_TAP_TIMEOUT;
14849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
14949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
15049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
15149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getEdgeSlop() {
15249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return EDGE_SLOP;
15349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
15449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
15549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
15649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledEdgeSlop() {
15749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return edgeSlop;
15849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
15949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
16049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
16149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getTouchSlop() {
16249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return TOUCH_SLOP;
16349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
16449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
16549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
16649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledTouchSlop() {
16749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return touchSlop;
16849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
16949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
17049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
17149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledPagingTouchSlop() {
17249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return pagingTouchSlop;
17349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
17449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
17549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
17649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledDoubleTapSlop() {
17749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return doubleTapSlop;
17849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
17949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
18049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
18149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getWindowTouchSlop() {
18249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return WINDOW_TOUCH_SLOP;
18349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
18449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
18549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
18649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledWindowTouchSlop() {
18749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return windowTouchSlop;
18849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
18949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
19049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
19149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getMinimumFlingVelocity() {
19249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return MINIMUM_FLING_VELOCITY;
19349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
19449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
19549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
19649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledMinimumFlingVelocity() {
19749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return minimumFlingVelocity;
19849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
19949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
20049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
20149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getMaximumFlingVelocity() {
20249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return MAXIMUM_FLING_VELOCITY;
20349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
20449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
20549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
20649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public int getScaledMaximumFlingVelocity() {
20749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return maximumFlingVelocity;
20849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
20949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
21049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
21149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static int getMaximumDrawingCacheSize() {
21249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return MAXIMUM_DRAWING_CACHE_SIZE;
21349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
21449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
21549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
21649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static long getZoomControlsTimeout() {
21749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return ZOOM_CONTROLS_TIMEOUT;
21849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
21949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
22049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
22149a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static long getGlobalActionKeyTimeout() {
22249a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return GLOBAL_ACTIONS_KEY_TIMEOUT;
22349a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
22449a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
22549a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    @Implementation
22649a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    public static float getScrollFriction() {
22749a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard        return SCROLL_FRICTION;
22849a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard    }
22949a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard
23049a4cce94ec0c54e1e90dbe74bf5b028e7b9300bPhil Plante & Ryan Richard}
231