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

Unverified Commit 4ccce266 authored by Michael Bestas's avatar Michael Bestas Committed by Michael Bestas
Browse files

fixup! PowerManager: Add proximity check on wake

Change-Id: Id10197dfc9b85e0431f7c063c7a23b429dadfed6
parent 37fd0557
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -5184,7 +5184,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                shouldTurnOnTv = true;
            } else if (down && (isWakeKey || keyCode == KeyEvent.KEYCODE_WAKEUP)
                    && isWakeKeyWhenScreenOff(keyCode)) {
                wakeUpFromWakeKey(event, false);
                wakeUpFromWakeKey(event);
                shouldTurnOnTv = true;
            }
            if (shouldTurnOnTv) {
@@ -6311,11 +6311,25 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        wakeUpFromWakeKey(
                event.getEventTime(),
                event.getKeyCode(),
                event.getAction() == KeyEvent.ACTION_DOWN);
                event.getAction() == KeyEvent.ACTION_DOWN,
                false);
    }

    private void wakeUpFromWakeKey(KeyEvent event, boolean withProximityCheck) {
        wakeUpFromWakeKey(
                event.getEventTime(),
                event.getKeyCode(),
                event.getAction() == KeyEvent.ACTION_DOWN,
                withProximityCheck);
    }

    private void wakeUpFromWakeKey(long eventTime, int keyCode, boolean isDown) {
        if (mWindowWakeUpPolicy.wakeUpFromKey(eventTime, keyCode, isDown)) {
        wakeUpFromWakeKey(eventTime, keyCode, isDown, false);
    }

    private void wakeUpFromWakeKey(long eventTime, int keyCode, boolean isDown,
            boolean withProximityCheck) {
        if (mWindowWakeUpPolicy.wakeUpFromKey(eventTime, keyCode, isDown, withProximityCheck)) {
            final boolean keyCanLaunchHome = keyCode == KEYCODE_HOME || keyCode == KEYCODE_POWER;
            // Start HOME with "reason" extra if sleeping for more than mWakeUpToLastStateTimeout
            if (shouldWakeUpWithHomeIntent() &&  keyCanLaunchHome) {
+26 −2
Original line number Diff line number Diff line
@@ -110,6 +110,20 @@ class WindowWakeUpPolicy {
     *      executed; {@code false} otherwise.
     */
    boolean wakeUpFromKey(long eventTime, int keyCode, boolean isDown) {
        return wakeUpFromKey(eventTime, keyCode, isDown, false);
    }

    /**
     * Wakes up from a key event.
     *
     * @param eventTime the timestamp of the event in {@link SystemClock#uptimeMillis()}.
     * @param keyCode the {@link android.view.KeyEvent} key code of the key event.
     * @param isDown {@code true} if the event's action is {@link KeyEvent#ACTION_DOWN}.
     * @param withProximityCheck {@code true} if we should check proximity sensor before wakeup.
     * @return {@code true} if the policy allows the requested wake up and the request has been
     *      executed; {@code false} otherwise.
     */
    boolean wakeUpFromKey(long eventTime, int keyCode, boolean isDown, boolean withProximityCheck) {
        final boolean wakeAllowedDuringTheaterMode =
                keyCode == KEYCODE_POWER
                        ? mAllowTheaterModeWakeFromPowerKey
@@ -125,7 +139,8 @@ class WindowWakeUpPolicy {
        wakeUp(
                eventTime,
                keyCode == KEYCODE_POWER ? WAKE_REASON_POWER_BUTTON : WAKE_REASON_WAKE_KEY,
                keyCode == KEYCODE_POWER ? "POWER" : "KEY");
                keyCode == KEYCODE_POWER ? "POWER" : "KEY",
                withProximityCheck);
        return true;
    }

@@ -220,6 +235,15 @@ class WindowWakeUpPolicy {

    /** Wakes up {@link PowerManager}. */
    private void wakeUp(long wakeTime, @WakeReason int reason, String details) {
        wakeUp(wakeTime, reason, details, false);
    }

    private void wakeUp(long wakeTime, @WakeReason int reason, String details,
            boolean withProximityCheck) {
        if (withProximityCheck) {
            mPowerManager.wakeUpWithProximityCheck(wakeTime, reason, "android.policy:" + details);
        } else {
            mPowerManager.wakeUp(wakeTime, reason, "android.policy:" + details);
        }
    }
}