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
This commit is contained in:
Dave Mankoff
2020-06-22 15:58:25 -04:00
parent 66062dbb53
commit 52d801e4d7
3 changed files with 17 additions and 17 deletions

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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();
}