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

Commit cb8859bc authored by Lucas Dupin's avatar Lucas Dupin Committed by android-build-team Robot
Browse files

Keep interrupts on when in battery saver mode

Battery saver was completely aborting the doze service, disabling
all interrupts. This is not ideal since it impacts the user journey,
especially when using face auth.

From now on the screen will still be off, but DozeService will be
retained, in order to receive sensor events.

Test: w/ battery saver: lift, tap, and observe aod being off
Test: w/ battery saver: receive notification, no HUN.
Test: w/o battery saver: lift, tap, and observe aod being on
Test: w/o battery saver: receive notification, HUN is received.
Fixes: 134157254
Change-Id: I9b713c78857c4e4c22d8d9bfff165b1b51dfd804
Merged-In: I9b713c78857c4e4c22d8d9bfff165b1b51dfd804
(cherry picked from commit 6edeb187)
parent e0f2a831
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.notification.NotificationFilter;
import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.policy.BatteryController;

import javax.inject.Inject;
import javax.inject.Singleton;
@@ -34,8 +35,9 @@ public class CarNotificationInterruptionStateProvider extends
    @Inject
    public CarNotificationInterruptionStateProvider(Context context,
            NotificationFilter filter,
            StatusBarStateController stateController) {
        super(context, filter, stateController);
            StatusBarStateController stateController,
            BatteryController batteryController) {
        super(context, filter, stateController, batteryController);
    }

    @Override
+5 −0
Original line number Diff line number Diff line
@@ -257,6 +257,11 @@ public class CarBatteryController extends BroadcastReceiver implements BatteryCo
        return false;
    }

    @Override
    public boolean isAodPowerSave() {
        return false;
    }

    private void notifyBatteryLevelChanged() {
        for (int i = 0, size = mChangeCallbacks.size(); i < size; i++) {
            mChangeCallbacks.get(i)
+2 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.util.AsyncSensorManager;
import com.android.systemui.util.wakelock.DelayedWakeLock;
import com.android.systemui.util.wakelock.WakeLock;
@@ -64,7 +65,7 @@ public class DozeFactory {
                params);

        DozeMachine machine = new DozeMachine(wrappedService, config, wakeLock,
                wakefulnessLifecycle);
                wakefulnessLifecycle, Dependency.get(BatteryController.class));
        machine.setParts(new DozeMachine.Part[]{
                new DozePauser(handler, machine, alarmManager, params.getPolicy()),
                new DozeFalsingManagerAdapter(falsingManager),
+8 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.internal.util.Preconditions;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.keyguard.WakefulnessLifecycle.Wakefulness;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.util.Assert;
import com.android.systemui.util.wakelock.WakeLock;

@@ -121,6 +122,7 @@ public class DozeMachine {
    private final WakeLock mWakeLock;
    private final AmbientDisplayConfiguration mConfig;
    private final WakefulnessLifecycle mWakefulnessLifecycle;
    private final BatteryController mBatteryController;
    private Part[] mParts;

    private final ArrayList<State> mQueuedRequests = new ArrayList<>();
@@ -129,11 +131,13 @@ public class DozeMachine {
    private boolean mWakeLockHeldForCurrentState = false;

    public DozeMachine(Service service, AmbientDisplayConfiguration config,
            WakeLock wakeLock, WakefulnessLifecycle wakefulnessLifecycle) {
            WakeLock wakeLock, WakefulnessLifecycle wakefulnessLifecycle,
            BatteryController batteryController) {
        mDozeService = service;
        mConfig = config;
        mWakefulnessLifecycle = wakefulnessLifecycle;
        mWakeLock = wakeLock;
        mBatteryController = batteryController;
    }

    /** Initializes the set of {@link Part}s. Must be called exactly once after construction. */
@@ -316,6 +320,9 @@ public class DozeMachine {
            Log.i(TAG, "Dropping pulse done because current state is already done: " + mState);
            return mState;
        }
        if (requestedState == State.DOZE_AOD && mBatteryController.isAodPowerSave()) {
            return State.DOZE;
        }
        if (requestedState == State.DOZE_REQUEST_PULSE && !mState.canPulse()) {
            Log.i(TAG, "Dropping pulse request because current state can't pulse: " + mState);
            return mState;
+2 −3
Original line number Diff line number Diff line
@@ -345,7 +345,6 @@ public class DozeTriggers implements DozeMachine.Part {

    private void checkTriggersAtInit() {
        if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR
                || mDozeHost.isPowerSaveActive()
                || mDozeHost.isBlockingDoze()
                || !mDozeHost.isProvisioned()) {
            mMachine.requestState(DozeMachine.State.FINISH);
@@ -574,8 +573,8 @@ public class DozeTriggers implements DozeMachine.Part {

        @Override
        public void onPowerSaveChanged(boolean active) {
            if (active) {
                mMachine.requestState(DozeMachine.State.FINISH);
            if (mDozeHost.isPowerSaveActive()) {
                mMachine.requestState(DozeMachine.State.DOZE);
            }
        }
    };
Loading