diff options
3 files changed, 27 insertions, 23 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index c0abbf62e2a7..4b61970ce89f 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -2242,7 +2242,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { */ private final class PowerKeyRule extends SingleKeyGestureDetector.SingleKeyRule { PowerKeyRule(int gestures) { - super(mContext, KEYCODE_POWER, gestures); + super(KEYCODE_POWER, gestures); } @Override @@ -2293,7 +2293,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { */ private final class BackKeyRule extends SingleKeyGestureDetector.SingleKeyRule { BackKeyRule(int gestures) { - super(mContext, KEYCODE_BACK, gestures); + super(KEYCODE_BACK, gestures); } @Override @@ -2317,7 +2317,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { */ private final class StemPrimaryKeyRule extends SingleKeyGestureDetector.SingleKeyRule { StemPrimaryKeyRule(int gestures) { - super(mContext, KeyEvent.KEYCODE_STEM_PRIMARY, gestures); + super(KeyEvent.KEYCODE_STEM_PRIMARY, gestures); } @Override @@ -2342,7 +2342,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void initSingleKeyGestureRules() { - mSingleKeyGestureDetector = new SingleKeyGestureDetector(); + mSingleKeyGestureDetector = SingleKeyGestureDetector.get(mContext); int powerKeyGestures = 0; if (hasVeryLongPressOnPowerBehavior()) { diff --git a/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java b/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java index 0276b3744827..7efa8978c185 100644 --- a/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java +++ b/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java @@ -55,12 +55,15 @@ public final class SingleKeyGestureDetector { private volatile boolean mHandledByLongPress = false; private final Handler mHandler; private long mLastDownTime = 0; - private static final long MULTI_PRESS_TIMEOUT = ViewConfiguration.getMultiPressTimeout(); /** Supported gesture flags */ public static final int KEY_LONGPRESS = 1 << 1; public static final int KEY_VERYLONGPRESS = 1 << 2; + static final long MULTI_PRESS_TIMEOUT = ViewConfiguration.getMultiPressTimeout(); + static long sDefaultLongPressTimeout; + static long sDefaultVeryLongPressTimeout; + /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = { "KEY_" }, value = { @@ -86,16 +89,10 @@ public final class SingleKeyGestureDetector { abstract static class SingleKeyRule { private final int mKeyCode; private final int mSupportedGestures; - private final long mDefaultLongPressTimeout; - private final long mDefaultVeryLongPressTimeout; - SingleKeyRule(Context context, int keyCode, @KeyGestureFlag int supportedGestures) { + SingleKeyRule(int keyCode, @KeyGestureFlag int supportedGestures) { mKeyCode = keyCode; mSupportedGestures = supportedGestures; - mDefaultLongPressTimeout = - ViewConfiguration.get(context).getDeviceGlobalActionKeyTimeout(); - mDefaultVeryLongPressTimeout = context.getResources().getInteger( - com.android.internal.R.integer.config_veryLongPressTimeout); } /** @@ -145,7 +142,7 @@ public final class SingleKeyGestureDetector { * press timeout. */ long getLongPressTimeoutMs() { - return mDefaultLongPressTimeout; + return sDefaultLongPressTimeout; } /** * Callback when long press has been detected. @@ -157,7 +154,7 @@ public final class SingleKeyGestureDetector { * If long press is supported, this should always be longer than the long press timeout. */ long getVeryLongPressTimeoutMs() { - return mDefaultVeryLongPressTimeout; + return sDefaultVeryLongPressTimeout; } /** * Callback when very long press has been detected. @@ -173,7 +170,16 @@ public final class SingleKeyGestureDetector { } } - public SingleKeyGestureDetector() { + static SingleKeyGestureDetector get(Context context) { + SingleKeyGestureDetector detector = new SingleKeyGestureDetector(); + sDefaultLongPressTimeout = context.getResources().getInteger( + com.android.internal.R.integer.config_globalActionsKeyTimeout); + sDefaultVeryLongPressTimeout = context.getResources().getInteger( + com.android.internal.R.integer.config_veryLongPressTimeout); + return detector; + } + + private SingleKeyGestureDetector() { mHandler = new KeyHandler(); } diff --git a/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java b/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java index 00bc546752cf..063f625692e5 100644 --- a/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java +++ b/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java @@ -37,7 +37,6 @@ import android.os.HandlerThread; import android.os.Process; import android.os.SystemClock; import android.view.KeyEvent; -import android.view.ViewConfiguration; import org.junit.Before; import org.junit.Test; @@ -75,18 +74,17 @@ public class SingleKeyGestureTests { @Before public void setUp() { mInstrumentation.runOnMainSync(() -> { - mDetector = new SingleKeyGestureDetector(); + mDetector = SingleKeyGestureDetector.get(mContext); initSingleKeyGestureRules(); }); - mWaitTimeout = ViewConfiguration.getMultiPressTimeout() + 50; - mLongPressTime = ViewConfiguration.get(mContext).getDeviceGlobalActionKeyTimeout() + 50; - mVeryLongPressTime = mContext.getResources().getInteger( - com.android.internal.R.integer.config_veryLongPressTimeout) + 50; + mWaitTimeout = SingleKeyGestureDetector.MULTI_PRESS_TIMEOUT + 50; + mLongPressTime = SingleKeyGestureDetector.sDefaultLongPressTimeout + 50; + mVeryLongPressTime = SingleKeyGestureDetector.sDefaultVeryLongPressTimeout + 50; } private void initSingleKeyGestureRules() { - mDetector.addRule(new SingleKeyGestureDetector.SingleKeyRule(mContext, KEYCODE_POWER, + mDetector.addRule(new SingleKeyGestureDetector.SingleKeyRule(KEYCODE_POWER, KEY_LONGPRESS | KEY_VERYLONGPRESS) { @Override int getMaxMultiPressCount() { @@ -124,7 +122,7 @@ public class SingleKeyGestureTests { } }); - mDetector.addRule(new SingleKeyGestureDetector.SingleKeyRule(mContext, KEYCODE_BACK, 0) { + mDetector.addRule(new SingleKeyGestureDetector.SingleKeyRule(KEYCODE_BACK, 0) { @Override int getMaxMultiPressCount() { return mMaxMultiPressCount; |