Ignore power presses from lift and biometric wake

WAKE_REASON_GESTURE previously used to include both WAKE_REASON_LIFT,
WAKE_REASON_TAP and WAKE_REASON_BIOMETRIC. Since ag/20794573, these
gestures are not not all encompassed by WAKE_REASON_GESTURE. This CL
ensures the power suppression logic is still used for wake reason lift
and biometric.

We intetionally include biometric in case biometrics are related
to the power button.

We intentionally leave out tap to wake since it's not
necessary to gate a power button press due to a wake up from a tap
on the screen.

Test: Press the power button while performing lift to wake gesture,
observe that the device does not go back to sleep
Fixes: 264553999

Change-Id: Ia74d30fd808d0a49937f483575b53533b0f1fce7
This commit is contained in:
Beverly
2023-01-05 19:33:29 +00:00
parent f1f50ee221
commit c1e2804be1
2 changed files with 6 additions and 4 deletions

View File

@@ -169,6 +169,9 @@ public interface WindowManagerPolicyConstants {
case PowerManager.WAKE_REASON_POWER_BUTTON:
case PowerManager.WAKE_REASON_PLUGGED_IN:
case PowerManager.WAKE_REASON_GESTURE:
case PowerManager.WAKE_REASON_TAP:
case PowerManager.WAKE_REASON_LIFT:
case PowerManager.WAKE_REASON_BIOMETRIC:
case PowerManager.WAKE_REASON_CAMERA_LAUNCH:
case PowerManager.WAKE_REASON_WAKE_KEY:
case PowerManager.WAKE_REASON_WAKE_MOTION:

View File

@@ -1077,10 +1077,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// a tendency to hit the power button immediately when they pick up their device, and we
// don't want to put the device back to sleep in those cases.
final PowerManager.WakeData lastWakeUp = mPowerManagerInternal.getLastWakeup();
if (lastWakeUp != null && lastWakeUp.wakeReason == PowerManager.WAKE_REASON_GESTURE) {
final int gestureDelayMillis = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE,
POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS);
if (lastWakeUp != null && (lastWakeUp.wakeReason == PowerManager.WAKE_REASON_GESTURE
|| lastWakeUp.wakeReason == PowerManager.WAKE_REASON_LIFT
|| lastWakeUp.wakeReason == PowerManager.WAKE_REASON_BIOMETRIC)) {
final long now = SystemClock.uptimeMillis();
if (mPowerButtonSuppressionDelayMillis > 0
&& (now < lastWakeUp.wakeTime + mPowerButtonSuppressionDelayMillis)) {