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:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user