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 Original line 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.BiometricUnlockController;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.policy.BatteryController;
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.AsyncSensorManager;
import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.wakelock.DelayedWakeLock;
import com.android.systemui.util.wakelock.DelayedWakeLock;
@@ -56,9 +55,9 @@ public class DozeFactory {
    private final DockManager mDockManager;
    private final DockManager mDockManager;
    private final IWallpaperManager mWallpaperManager;
    private final IWallpaperManager mWallpaperManager;
    private final ProximitySensor mProximitySensor;
    private final ProximitySensor mProximitySensor;
    private final ProximitySensor.ProximityCheck mProximityCheck;
    private final DelayedWakeLock.Builder mDelayedWakeLockBuilder;
    private final DelayedWakeLock.Builder mDelayedWakeLockBuilder;
    private final Handler mHandler;
    private final Handler mHandler;
    private final DelayableExecutor mDelayableExecutor;
    private final BiometricUnlockController mBiometricUnlockController;
    private final BiometricUnlockController mBiometricUnlockController;
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final DozeHost mDozeHost;
    private final DozeHost mDozeHost;
@@ -69,9 +68,8 @@ public class DozeFactory {
            AsyncSensorManager asyncSensorManager, AlarmManager alarmManager,
            AsyncSensorManager asyncSensorManager, AlarmManager alarmManager,
            WakefulnessLifecycle wakefulnessLifecycle, KeyguardUpdateMonitor keyguardUpdateMonitor,
            WakefulnessLifecycle wakefulnessLifecycle, KeyguardUpdateMonitor keyguardUpdateMonitor,
            DockManager dockManager, @Nullable IWallpaperManager wallpaperManager,
            DockManager dockManager, @Nullable IWallpaperManager wallpaperManager,
            ProximitySensor proximitySensor,
            ProximitySensor proximitySensor, ProximitySensor.ProximityCheck proximityCheck,
            DelayedWakeLock.Builder delayedWakeLockBuilder, @Main Handler handler,
            DelayedWakeLock.Builder delayedWakeLockBuilder, @Main Handler handler,
            @Main DelayableExecutor delayableExecutor,
            BiometricUnlockController biometricUnlockController,
            BiometricUnlockController biometricUnlockController,
            BroadcastDispatcher broadcastDispatcher, DozeHost dozeHost) {
            BroadcastDispatcher broadcastDispatcher, DozeHost dozeHost) {
        mFalsingManager = falsingManager;
        mFalsingManager = falsingManager;
@@ -85,9 +83,9 @@ public class DozeFactory {
        mDockManager = dockManager;
        mDockManager = dockManager;
        mWallpaperManager = wallpaperManager;
        mWallpaperManager = wallpaperManager;
        mProximitySensor = proximitySensor;
        mProximitySensor = proximitySensor;
        mProximityCheck = proximityCheck;
        mDelayedWakeLockBuilder = delayedWakeLockBuilder;
        mDelayedWakeLockBuilder = delayedWakeLockBuilder;
        mHandler = handler;
        mHandler = handler;
        mDelayableExecutor = delayableExecutor;
        mBiometricUnlockController = biometricUnlockController;
        mBiometricUnlockController = biometricUnlockController;
        mBroadcastDispatcher = broadcastDispatcher;
        mBroadcastDispatcher = broadcastDispatcher;
        mDozeHost = dozeHost;
        mDozeHost = dozeHost;
@@ -112,8 +110,8 @@ public class DozeFactory {
                new DozePauser(mHandler, machine, mAlarmManager, mDozeParameters.getPolicy()),
                new DozePauser(mHandler, machine, mAlarmManager, mDozeParameters.getPolicy()),
                new DozeFalsingManagerAdapter(mFalsingManager),
                new DozeFalsingManagerAdapter(mFalsingManager),
                createDozeTriggers(dozeService, mAsyncSensorManager, mDozeHost,
                createDozeTriggers(dozeService, mAsyncSensorManager, mDozeHost,
                        mAlarmManager, config, mDozeParameters, mDelayableExecutor, wakeLock,
                        mAlarmManager, config, mDozeParameters, wakeLock,
                        machine, mDockManager, mDozeLog),
                        machine, mDockManager, mDozeLog, mProximityCheck),
                createDozeUi(dozeService, mDozeHost, wakeLock, machine, mHandler,
                createDozeUi(dozeService, mDozeHost, wakeLock, machine, mHandler,
                        mAlarmManager, mDozeParameters, mDozeLog),
                        mAlarmManager, mDozeParameters, mDozeLog),
                new DozeScreenState(wrappedService, mHandler, mDozeHost, mDozeParameters,
                new DozeScreenState(wrappedService, mHandler, mDozeHost, mDozeParameters,
@@ -140,12 +138,13 @@ public class DozeFactory {


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


    }
    }


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


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


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