From 5fceebd59759d3dfe7b19f479f91167621bf7c4e Mon Sep 17 00:00:00 2001 From: Arthur Hung Date: Mon, 26 Jul 2021 15:48:42 +0800 Subject: [PATCH] Keeps power key intercepted during a panic gesture The GestureLauncherService is used to detect camera and sos emergency gesture by multi-pressing power, if it intercept power key, we should return the intercept state that could prevent the following detector processing the power key cause unexpected single tap. Bug: 194522413 Test: keep pressing power to see if screen would turn off. Test: atest GestureLauncherServiceTest Change-Id: I3db7390df720f24f9b312946b1d8e01d672e6ef3 --- .../com/android/server/policy/PhoneWindowManager.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index fb4d96e305fca..e40882268e67d 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3844,9 +3844,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { } mCameraGestureTriggered = false; final MutableBoolean outLaunched = new MutableBoolean(false); - mGestureLauncherService.interceptPowerKeyDown(event, interactive, outLaunched); + final boolean intercept = + mGestureLauncherService.interceptPowerKeyDown(event, interactive, outLaunched); if (!outLaunched.value) { - return false; + // If GestureLauncherService intercepted the power key, but didn't launch camera app, + // we should still return the intercept result. This prevents the single key gesture + // detector from processing the power key later on. + return intercept; } mCameraGestureTriggered = true; if (mRequestedOrSleepingDefaultDisplay) {