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

Commit c1b50324 authored by Adrian Roos's avatar Adrian Roos
Browse files

AOD: Add wakelock for charging text while dozing

Also refactors the WakeLocks in SystemUI.

Bug: 30876804
Bug: 35850304
Test: runtest systemui
Change-Id: Ie17eedfd266deb3aa46dabd701bc784330b2e030
parent 5602189a
Loading
Loading
Loading
Loading
+2 −28
Original line number Diff line number Diff line
@@ -22,12 +22,12 @@ import android.app.PendingIntent;
import android.content.Context;
import android.hardware.SensorManager;
import android.os.Handler;
import android.os.PowerManager;

import com.android.internal.hardware.AmbientDisplayConfiguration;
import com.android.systemui.SystemUIApplication;
import com.android.systemui.plugins.doze.DozeProvider;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.wakelock.WakeLock;

public class DozeFactory {

@@ -41,15 +41,13 @@ public class DozeFactory {
    public DozeMachine assembleMachine(DozeService dozeService) {
        Context context = dozeService;
        SensorManager sensorManager = context.getSystemService(SensorManager.class);
        PowerManager powerManager = context.getSystemService(PowerManager.class);
        AlarmManager alarmManager = context.getSystemService(AlarmManager.class);

        DozeHost host = getHost(dozeService);
        AmbientDisplayConfiguration config = new AmbientDisplayConfiguration(context);
        DozeParameters params = new DozeParameters(context);
        Handler handler = new Handler();
        DozeFactory.WakeLock wakeLock = new DozeFactory.WakeLock(powerManager.newWakeLock(
                PowerManager.PARTIAL_WAKE_LOCK, "Doze"));
        WakeLock wakeLock = WakeLock.createPartial(context, "Doze");

        DozeMachine machine = new DozeMachine(
                DozeScreenStatePreventingAdapter.wrapIfNeeded(dozeService, params),
@@ -157,28 +155,4 @@ public class DozeFactory {
        final SystemUIApplication app = (SystemUIApplication) appCandidate;
        return app.getComponent(DozeHost.class);
    }

    /** A wrapper around {@link PowerManager.WakeLock} for testability. */
    public static class WakeLock implements DozeProvider.WakeLock {
        private final PowerManager.WakeLock mInner;

        public WakeLock(PowerManager.WakeLock inner) {
            mInner = inner;
        }

        /** @see PowerManager.WakeLock#acquire() */
        public void acquire() {
            mInner.acquire();
        }

        /** @see PowerManager.WakeLock#release() */
        public void release() {
            mInner.release();
        }

        /** @see PowerManager.WakeLock#wrap(Runnable) */
        public Runnable wrap(Runnable runnable) {
            return mInner.wrap(runnable);
        }
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.view.Display;
import com.android.internal.hardware.AmbientDisplayConfiguration;
import com.android.internal.util.Preconditions;
import com.android.systemui.util.Assert;
import com.android.systemui.util.wakelock.WakeLock;

import java.io.PrintWriter;
import java.util.ArrayList;
@@ -95,7 +96,7 @@ public class DozeMachine {
    }

    private final Service mDozeService;
    private final DozeFactory.WakeLock mWakeLock;
    private final WakeLock mWakeLock;
    private final AmbientDisplayConfiguration mConfig;
    private Part[] mParts;

@@ -104,7 +105,7 @@ public class DozeMachine {
    private boolean mWakeLockHeldForCurrentState = false;

    public DozeMachine(Service service, AmbientDisplayConfiguration config,
            DozeFactory.WakeLock wakeLock) {
            WakeLock wakeLock) {
        mDozeService = service;
        mConfig = config;
        mWakeLock = wakeLock;
+3 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.internal.hardware.AmbientDisplayConfiguration;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.wakelock.WakeLock;

import java.io.PrintWriter;
import java.util.List;
@@ -53,14 +54,14 @@ public class DozeSensors {
    private final TriggerSensor mPickupSensor;
    private final DozeParameters mDozeParameters;
    private final AmbientDisplayConfiguration mConfig;
    private final DozeFactory.WakeLock mWakeLock;
    private final WakeLock mWakeLock;
    private final Callback mCallback;

    private final Handler mHandler = new Handler();


    public DozeSensors(Context context, SensorManager sensorManager, DozeParameters dozeParameters,
            AmbientDisplayConfiguration config, DozeFactory.WakeLock wakeLock, Callback callback) {
            AmbientDisplayConfiguration config, WakeLock wakeLock, Callback callback) {
        mContext = context;
        mSensorManager = sensorManager;
        mDozeParameters = dozeParameters;
+3 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.internal.hardware.AmbientDisplayConfiguration;
import com.android.internal.util.Preconditions;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.Assert;
import com.android.systemui.util.wakelock.WakeLock;

import java.io.PrintWriter;

@@ -57,7 +58,7 @@ public class DozeTriggers implements DozeMachine.Part {
    private final DozeParameters mDozeParameters;
    private final SensorManager mSensorManager;
    private final Handler mHandler;
    private final DozeFactory.WakeLock mWakeLock;
    private final WakeLock mWakeLock;
    private final boolean mAllowPulseTriggers;
    private final UiModeManager mUiModeManager;
    private final TriggerReceiver mBroadcastReceiver = new TriggerReceiver();
@@ -69,7 +70,7 @@ public class DozeTriggers implements DozeMachine.Part {
    public DozeTriggers(Context context, DozeMachine machine, DozeHost dozeHost,
            AmbientDisplayConfiguration config,
            DozeParameters dozeParameters, SensorManager sensorManager, Handler handler,
            DozeFactory.WakeLock wakeLock, boolean allowPulseTriggers) {
            WakeLock wakeLock, boolean allowPulseTriggers) {
        mContext = context;
        mMachine = machine;
        mDozeHost = dozeHost;
+4 −2
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.content.Context;
import android.os.Handler;
import android.os.SystemClock;

import com.android.systemui.util.wakelock.WakeLock;

import java.util.Calendar;
import java.util.GregorianCalendar;

@@ -33,14 +35,14 @@ public class DozeUi implements DozeMachine.Part {
    private final AlarmManager mAlarmManager;
    private final DozeHost mHost;
    private final Handler mHandler;
    private final DozeFactory.WakeLock mWakeLock;
    private final WakeLock mWakeLock;
    private final DozeMachine mMachine;
    private final AlarmManager.OnAlarmListener mTimeTick;

    private boolean mTimeTickScheduled = false;

    public DozeUi(Context context, AlarmManager alarmManager, DozeMachine machine,
            DozeFactory.WakeLock wakeLock, DozeHost host, Handler handler) {
            WakeLock wakeLock, DozeHost host, Handler handler) {
        mContext = context;
        mAlarmManager = alarmManager;
        mMachine = machine;
Loading