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

Commit 52d801e4 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Stop sharing ProximitySensor in Doze code.

One part of the Doze code would pause the sensor, such that when
another tried to use it, it would never get a result back.

The DozeTriggers tried to use the sensor to determine if it should
wake the screen up when a notification comes in. Because it never
got a result, it never woke the screen up, meaning that the
notification would never be visible.

Fixes: 156874080
Test: atest SystemUITests && manual.
Change-Id: I0c5927f102237c57e9e50bc46ba7ebcb7fb79cec
Merged-In: I0c5927f102237c57e9e50bc46ba7ebcb7fb79cec
parent 66062dbb
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ 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.concurrency.DelayableExecutor;
import com.android.systemui.util.sensors.AsyncSensorManager;
import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.wakelock.DelayedWakeLock;
@@ -56,9 +55,9 @@ public class DozeFactory {
    private final DockManager mDockManager;
    private final IWallpaperManager mWallpaperManager;
    private final ProximitySensor mProximitySensor;
    private final ProximitySensor.ProximityCheck mProximityCheck;
    private final DelayedWakeLock.Builder mDelayedWakeLockBuilder;
    private final Handler mHandler;
    private final DelayableExecutor mDelayableExecutor;
    private final BiometricUnlockController mBiometricUnlockController;
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final DozeHost mDozeHost;
@@ -69,9 +68,8 @@ public class DozeFactory {
            AsyncSensorManager asyncSensorManager, AlarmManager alarmManager,
            WakefulnessLifecycle wakefulnessLifecycle, KeyguardUpdateMonitor keyguardUpdateMonitor,
            DockManager dockManager, @Nullable IWallpaperManager wallpaperManager,
            ProximitySensor proximitySensor,
            ProximitySensor proximitySensor, ProximitySensor.ProximityCheck proximityCheck,
            DelayedWakeLock.Builder delayedWakeLockBuilder, @Main Handler handler,
            @Main DelayableExecutor delayableExecutor,
            BiometricUnlockController biometricUnlockController,
            BroadcastDispatcher broadcastDispatcher, DozeHost dozeHost) {
        mFalsingManager = falsingManager;
@@ -85,9 +83,9 @@ public class DozeFactory {
        mDockManager = dockManager;
        mWallpaperManager = wallpaperManager;
        mProximitySensor = proximitySensor;
        mProximityCheck = proximityCheck;
        mDelayedWakeLockBuilder = delayedWakeLockBuilder;
        mHandler = handler;
        mDelayableExecutor = delayableExecutor;
        mBiometricUnlockController = biometricUnlockController;
        mBroadcastDispatcher = broadcastDispatcher;
        mDozeHost = dozeHost;
@@ -112,8 +110,8 @@ public class DozeFactory {
                new DozePauser(mHandler, machine, mAlarmManager, mDozeParameters.getPolicy()),
                new DozeFalsingManagerAdapter(mFalsingManager),
                createDozeTriggers(dozeService, mAsyncSensorManager, mDozeHost,
                        mAlarmManager, config, mDozeParameters, mDelayableExecutor, wakeLock,
                        machine, mDockManager, mDozeLog),
                        mAlarmManager, config, mDozeParameters, wakeLock,
                        machine, mDockManager, mDozeLog, mProximityCheck),
                createDozeUi(dozeService, mDozeHost, wakeLock, machine, mHandler,
                        mAlarmManager, mDozeParameters, mDozeLog),
                new DozeScreenState(wrappedService, mHandler, mDozeHost, mDozeParameters,
@@ -140,12 +138,13 @@ public class DozeFactory {

    private DozeTriggers createDozeTriggers(Context context, AsyncSensorManager sensorManager,
            DozeHost host, AlarmManager alarmManager, AmbientDisplayConfiguration config,
            DozeParameters params, DelayableExecutor delayableExecutor, WakeLock wakeLock,
            DozeMachine machine, DockManager dockManager, DozeLog dozeLog) {
            DozeParameters params, WakeLock wakeLock,
            DozeMachine machine, DockManager dockManager, DozeLog dozeLog,
            ProximitySensor.ProximityCheck proximityCheck) {
        boolean allowPulseTriggers = true;
        return new DozeTriggers(context, machine, host, alarmManager, config, params,
                sensorManager, delayableExecutor, wakeLock, allowPulseTriggers, dockManager,
                mProximitySensor, dozeLog, mBroadcastDispatcher);
                sensorManager, wakeLock, allowPulseTriggers, dockManager,
                mProximitySensor, proximityCheck, dozeLog, mBroadcastDispatcher);

    }

+3 −4
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.Assert;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.sensors.AsyncSensorManager;
import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.wakelock.WakeLock;
@@ -157,8 +156,8 @@ public class DozeTriggers implements DozeMachine.Part {
    public DozeTriggers(Context context, DozeMachine machine, DozeHost dozeHost,
            AlarmManager alarmManager, AmbientDisplayConfiguration config,
            DozeParameters dozeParameters, AsyncSensorManager sensorManager,
            DelayableExecutor delayableExecutor, WakeLock wakeLock, boolean allowPulseTriggers,
            DockManager dockManager, ProximitySensor proximitySensor,
            WakeLock wakeLock, boolean allowPulseTriggers, DockManager dockManager,
            ProximitySensor proximitySensor, ProximitySensor.ProximityCheck proxCheck,
            DozeLog dozeLog, BroadcastDispatcher broadcastDispatcher) {
        mContext = context;
        mMachine = machine;
@@ -172,7 +171,7 @@ public class DozeTriggers implements DozeMachine.Part {
                config, wakeLock, this::onSensor, this::onProximityFar, dozeLog, proximitySensor);
        mUiModeManager = mContext.getSystemService(UiModeManager.class);
        mDockManager = dockManager;
        mProxCheck = new ProximitySensor.ProximityCheck(proximitySensor, delayableExecutor);
        mProxCheck = proxCheck;
        mDozeLog = dozeLog;
        mBroadcastDispatcher = broadcastDispatcher;
    }
+4 −2
Original line number Diff line number Diff line
@@ -74,6 +74,8 @@ public class DozeTriggersTest extends SysuiTestCase {
    private BroadcastDispatcher mBroadcastDispatcher;
    @Mock
    private DockManager mDockManager;
    @Mock
    private ProximitySensor.ProximityCheck mProximityCheck;

    private DozeTriggers mTriggers;
    private FakeSensorManager mSensors;
@@ -97,8 +99,8 @@ public class DozeTriggersTest extends SysuiTestCase {
        mProximitySensor = new FakeProximitySensor(thresholdSensor,  null, mExecutor);

        mTriggers = new DozeTriggers(mContext, mMachine, mHost, mAlarmManager, config, parameters,
                asyncSensorManager, mExecutor, wakeLock, true,
                mDockManager, mProximitySensor, mock(DozeLog.class), mBroadcastDispatcher);
                asyncSensorManager, wakeLock, true, mDockManager, mProximitySensor,
                mProximityCheck, mock(DozeLog.class), mBroadcastDispatcher);
        waitForSensorManager();
    }