Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 800009e9 authored by Santos Cordon's avatar Santos Cordon Committed by android-build-merger
Browse files

Merge "Merge "Add delay to power-button power-off after gesture wakeup." into...

Merge "Merge "Add delay to power-button power-off after gesture wakeup." into qt-dev am: 65cf57bf" into qt-dev-plus-aosp
am: d2877e32

Change-Id: I498597d62688429c5dc7c1471c3dcdabd5a2fc19
parents 6d9f0cfd d2877e32
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -554,6 +554,18 @@ public final class PowerManager {
        }
        }
    }
    }


    /**
     * @hide
     */
    public static class WakeData {
        public WakeData(long wakeTime, @WakeReason int wakeReason) {
            this.wakeTime = wakeTime;
            this.wakeReason = wakeReason;
        }
        public long wakeTime;
        public @WakeReason int wakeReason;
    }

    /**
    /**
     * The value to pass as the 'reason' argument to reboot() to reboot into
     * The value to pass as the 'reason' argument to reboot() to reboot into
     * recovery mode for tasks other than applying system updates, such as
     * recovery mode for tasks other than applying system updates, such as
+3 −0
Original line number Original line Diff line number Diff line
@@ -203,4 +203,7 @@ public abstract class PowerManagerInternal {


    /** Returns whether there hasn't been a user activity event for the given number of ms. */
    /** Returns whether there hasn't been a user activity event for the given number of ms. */
    public abstract boolean wasDeviceIdleFor(long ms);
    public abstract boolean wasDeviceIdleFor(long ms);

    /** Returns information about the last wakeup event. */
    public abstract PowerManager.WakeData getLastWakeup();
}
}
+12 −0
Original line number Original line Diff line number Diff line
@@ -14707,6 +14707,18 @@ public final class Settings {
        public static final String TEXT_CLASSIFIER_ACTION_MODEL_PARAMS =
        public static final String TEXT_CLASSIFIER_ACTION_MODEL_PARAMS =
                "text_classifier_action_model_params";
                "text_classifier_action_model_params";
        /**
         * The amount of time to suppress "power-off" from the power button after the device has
         * woken due to a gesture (lifting the phone).  Since users have learned to hit the power
         * button immediately when lifting their device, it can cause the device to turn off if a
         * gesture has just woken the device. This value tells us the milliseconds to wait after
         * a gesture before "power-off" via power-button is functional again. A value of 0 is no
         * delay, and reverts to the old behavior.
         *
         * @hide
         */
        public static final String POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE =
                "power_button_suppression_delay_after_gesture_wake";
    }
    }
    /**
    /**
+1 −0
Original line number Original line Diff line number Diff line
@@ -392,6 +392,7 @@ public class SettingsBackupTest {
                    Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS,
                    Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS,
                    Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT,
                    Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT,
                    Settings.Global.POLICY_CONTROL,
                    Settings.Global.POLICY_CONTROL,
                    Settings.Global.POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE,
                    Settings.Global.POWER_MANAGER_CONSTANTS,
                    Settings.Global.POWER_MANAGER_CONSTANTS,
                    Settings.Global.PREFERRED_NETWORK_MODE,
                    Settings.Global.PREFERRED_NETWORK_MODE,
                    Settings.Global.PRIVATE_DNS_DEFAULT_MODE,
                    Settings.Global.PRIVATE_DNS_DEFAULT_MODE,
+44 −6
Original line number Original line Diff line number Diff line
@@ -310,6 +310,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    static public final String SYSTEM_DIALOG_REASON_ASSIST = "assist";
    static public final String SYSTEM_DIALOG_REASON_ASSIST = "assist";
    static public final String SYSTEM_DIALOG_REASON_SCREENSHOT = "screenshot";
    static public final String SYSTEM_DIALOG_REASON_SCREENSHOT = "screenshot";


    private static final int POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS = 800;
    private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
    private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
            .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
            .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
@@ -615,6 +616,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    private boolean mPerDisplayFocusEnabled = false;
    private boolean mPerDisplayFocusEnabled = false;
    private volatile int mTopFocusedDisplayId = INVALID_DISPLAY;
    private volatile int mTopFocusedDisplayId = INVALID_DISPLAY;


    private int mPowerButtonSuppressionDelayMillis = POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS;

    private static final int MSG_DISPATCH_MEDIA_KEY_WITH_WAKE_LOCK = 3;
    private static final int MSG_DISPATCH_MEDIA_KEY_WITH_WAKE_LOCK = 3;
    private static final int MSG_DISPATCH_MEDIA_KEY_REPEAT_WITH_WAKE_LOCK = 4;
    private static final int MSG_DISPATCH_MEDIA_KEY_REPEAT_WITH_WAKE_LOCK = 4;
    private static final int MSG_KEYGUARD_DRAWN_COMPLETE = 5;
    private static final int MSG_KEYGUARD_DRAWN_COMPLETE = 5;
@@ -782,6 +785,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            resolver.registerContentObserver(Settings.Global.getUriFor(
            resolver.registerContentObserver(Settings.Global.getUriFor(
                    Settings.Global.POWER_BUTTON_VERY_LONG_PRESS), false, this,
                    Settings.Global.POWER_BUTTON_VERY_LONG_PRESS), false, this,
                    UserHandle.USER_ALL);
                    UserHandle.USER_ALL);
            resolver.registerContentObserver(Settings.Global.getUriFor(
                    Settings.Global.POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE), false, this,
                    UserHandle.USER_ALL);
            updateSettings();
            updateSettings();
        }
        }


@@ -1105,16 +1111,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                case SHORT_PRESS_POWER_NOTHING:
                case SHORT_PRESS_POWER_NOTHING:
                    break;
                    break;
                case SHORT_PRESS_POWER_GO_TO_SLEEP:
                case SHORT_PRESS_POWER_GO_TO_SLEEP:
                    goToSleep(eventTime, PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON, 0);
                    goToSleepFromPowerButton(eventTime, 0);
                    break;
                    break;
                case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP:
                case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP:
                    goToSleep(eventTime, PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON,
                    goToSleepFromPowerButton(eventTime, PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE);
                            PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE);
                    break;
                    break;
                case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME:
                case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME:
                    goToSleep(eventTime, PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON,
                    if (goToSleepFromPowerButton(eventTime,
                            PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE);
                            PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE)) {
                        launchHomeFromHotKey(DEFAULT_DISPLAY);
                        launchHomeFromHotKey(DEFAULT_DISPLAY);
                    }
                    break;
                    break;
                case SHORT_PRESS_POWER_GO_HOME:
                case SHORT_PRESS_POWER_GO_HOME:
                    shortPressPowerGoHome();
                    shortPressPowerGoHome();
@@ -1137,6 +1143,35 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
        }
    }
    }


    /**
     * Sends the device to sleep as a result of a power button press.
     *
     * @return True if the was device was sent to sleep, false if sleep was suppressed.
     */
    private boolean goToSleepFromPowerButton(long eventTime, int flags) {
        // Before we actually go to sleep, we check the last wakeup reason.
        // If the device very recently woke up from a gesture (like user lifting their device)
        // then ignore the sleep instruction. This is because users have developed
        // 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);
            final long now = SystemClock.uptimeMillis();
            if (mPowerButtonSuppressionDelayMillis > 0
                    && (now < lastWakeUp.wakeTime + mPowerButtonSuppressionDelayMillis)) {
                Slog.i(TAG, "Sleep from power button suppressed. Time since gesture: "
                        + (now - lastWakeUp.wakeTime) + "ms");
                return false;
            }
        }

        goToSleep(eventTime, PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON, flags);
        return true;
    }

    private void goToSleep(long eventTime, int reason, int flags) {
    private void goToSleep(long eventTime, int reason, int flags) {
        mRequestedOrGoingToSleep = true;
        mRequestedOrGoingToSleep = true;
        mPowerManager.goToSleep(eventTime, reason, flags);
        mPowerManager.goToSleep(eventTime, reason, flags);
@@ -1981,6 +2016,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            mRingerToggleChord = Settings.Secure.getIntForUser(resolver,
            mRingerToggleChord = Settings.Secure.getIntForUser(resolver,
                    Settings.Secure.VOLUME_HUSH_GESTURE, VOLUME_HUSH_OFF,
                    Settings.Secure.VOLUME_HUSH_GESTURE, VOLUME_HUSH_OFF,
                    UserHandle.USER_CURRENT);
                    UserHandle.USER_CURRENT);
            mPowerButtonSuppressionDelayMillis = Settings.Global.getInt(resolver,
                    Settings.Global.POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE,
                    POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS);
            if (!mContext.getResources()
            if (!mContext.getResources()
                    .getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled)) {
                    .getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled)) {
                mRingerToggleChord = Settings.Secure.VOLUME_HUSH_OFF;
                mRingerToggleChord = Settings.Secure.VOLUME_HUSH_OFF;
Loading