diff options
| author | 2022-12-21 19:47:26 +0000 | |
|---|---|---|
| committer | 2023-01-11 14:56:50 +0000 | |
| commit | f3b7a9aff4b6c7b7fcb740c75b33045d17d655c2 (patch) | |
| tree | 917ed6f3b65a43cbaad499078d6757a3aad0a424 | |
| parent | 2f3a6b6a2b9ba61f103a8b3aaa5ba49246fd85d1 (diff) | |
Don't register for UDFPS long press in STATE_DOZE
We only want to register for the udfps longpress when the
device is in AoD. This includes the AOD_PAUSED state in
case the user immediately attempts to authenticate with UDFPS
right after taking out of their pocket. We allow UDFPS longpress
to trigger in that state even though UI hasn't shown yet.
Test: atest DozeSensorsTest DozeTriggerstest
Fixes: 245657872
Change-Id: Iaecb0e37deed6ad2ba10eb8cbda098bf6443c01f
4 files changed, 163 insertions, 61 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index 37183e89df29..2ef1262fe55e 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -116,6 +116,7 @@ public class DozeSensors { private boolean mListening; private boolean mListeningTouchScreenSensors; private boolean mListeningProxSensors; + private boolean mListeningAodOnlySensors; private boolean mUdfpsEnrolled; @DevicePostureController.DevicePostureInt @@ -184,7 +185,8 @@ public class DozeSensors { dozeParameters.getPulseOnSigMotion(), DozeLog.PULSE_REASON_SENSOR_SIGMOTION, false /* touchCoords */, - false /* touchscreen */), + false /* touchscreen */ + ), new TriggerSensor( mSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE), Settings.Secure.DOZE_PICK_UP_GESTURE, @@ -195,14 +197,17 @@ public class DozeSensors { false /* touchscreen */, false /* ignoresSetting */, false /* requires prox */, - true /* immediatelyReRegister */), + true /* immediatelyReRegister */, + false /* requiresAod */ + ), new TriggerSensor( findSensor(config.doubleTapSensorType()), Settings.Secure.DOZE_DOUBLE_TAP_GESTURE, true /* configured */, DozeLog.REASON_SENSOR_DOUBLE_TAP, dozeParameters.doubleTapReportsTouchCoordinates(), - true /* touchscreen */), + true /* touchscreen */ + ), new TriggerSensor( findSensors(config.tapSensorTypeMapping()), Settings.Secure.DOZE_TAP_SCREEN_GESTURE, @@ -214,7 +219,9 @@ public class DozeSensors { false /* ignoresSetting */, dozeParameters.singleTapUsesProx(mDevicePosture) /* requiresProx */, true /* immediatelyReRegister */, - mDevicePosture), + mDevicePosture, + false + ), new TriggerSensor( findSensor(config.longPressSensorType()), Settings.Secure.DOZE_PULSE_ON_LONG_PRESS, @@ -225,7 +232,9 @@ public class DozeSensors { true /* touchscreen */, false /* ignoresSetting */, dozeParameters.longPressUsesProx() /* requiresProx */, - true /* immediatelyReRegister */), + true /* immediatelyReRegister */, + false /* requiresAod */ + ), new TriggerSensor( findSensor(config.udfpsLongPressSensorType()), "doze_pulse_on_auth", @@ -236,7 +245,9 @@ public class DozeSensors { true /* touchscreen */, false /* ignoresSetting */, dozeParameters.longPressUsesProx(), - false /* immediatelyReRegister */), + false /* immediatelyReRegister */, + true /* requiresAod */ + ), new PluginSensor( new SensorManagerPlugin.Sensor(TYPE_WAKE_DISPLAY), Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE, @@ -244,7 +255,8 @@ public class DozeSensors { && mConfig.alwaysOnEnabled(UserHandle.USER_CURRENT), DozeLog.REASON_SENSOR_WAKE_UP_PRESENCE, false /* reports touch coordinates */, - false /* touchscreen */), + false /* touchscreen */ + ), new PluginSensor( new SensorManagerPlugin.Sensor(TYPE_WAKE_LOCK_SCREEN), Settings.Secure.DOZE_WAKE_LOCK_SCREEN_GESTURE, @@ -252,7 +264,8 @@ public class DozeSensors { DozeLog.PULSE_REASON_SENSOR_WAKE_REACH, false /* reports touch coordinates */, false /* touchscreen */, - mConfig.getWakeLockScreenDebounce()), + mConfig.getWakeLockScreenDebounce() + ), new TriggerSensor( findSensor(config.quickPickupSensorType()), Settings.Secure.DOZE_QUICK_PICKUP_GESTURE, @@ -263,7 +276,9 @@ public class DozeSensors { false /* requiresTouchscreen */, false /* ignoresSetting */, false /* requiresProx */, - true /* immediatelyReRegister */), + true /* immediatelyReRegister */, + false /* requiresAod */ + ), }; setProxListening(false); // Don't immediately start listening when we register. mProximitySensor.register( @@ -357,29 +372,36 @@ public class DozeSensors { /** * If sensors should be registered and sending signals. */ - public void setListening(boolean listen, boolean includeTouchScreenSensors) { - if (mListening == listen && mListeningTouchScreenSensors == includeTouchScreenSensors) { + public void setListening(boolean listen, boolean includeTouchScreenSensors, + boolean includeAodOnlySensors) { + if (mListening == listen && mListeningTouchScreenSensors == includeTouchScreenSensors + && mListeningAodOnlySensors == includeAodOnlySensors) { return; } mListening = listen; mListeningTouchScreenSensors = includeTouchScreenSensors; + mListeningAodOnlySensors = includeAodOnlySensors; updateListening(); } /** * If sensors should be registered and sending signals. */ - public void setListening(boolean listen, boolean includeTouchScreenSensors, - boolean lowPowerStateOrOff) { + public void setListeningWithPowerState(boolean listen, boolean includeTouchScreenSensors, + boolean includeAodRequiringSensors, boolean lowPowerStateOrOff) { final boolean shouldRegisterProxSensors = !mSelectivelyRegisterProxSensors || lowPowerStateOrOff; - if (mListening == listen && mListeningTouchScreenSensors == includeTouchScreenSensors - && mListeningProxSensors == shouldRegisterProxSensors) { + if (mListening == listen + && mListeningTouchScreenSensors == includeTouchScreenSensors + && mListeningProxSensors == shouldRegisterProxSensors + && mListeningAodOnlySensors == includeAodRequiringSensors + ) { return; } mListening = listen; mListeningTouchScreenSensors = includeTouchScreenSensors; mListeningProxSensors = shouldRegisterProxSensors; + mListeningAodOnlySensors = includeAodRequiringSensors; updateListening(); } @@ -391,7 +413,8 @@ public class DozeSensors { for (TriggerSensor s : mTriggerSensors) { boolean listen = mListening && (!s.mRequiresTouchscreen || mListeningTouchScreenSensors) - && (!s.mRequiresProx || mListeningProxSensors); + && (!s.mRequiresProx || mListeningProxSensors) + && (!s.mRequiresAod || mListeningAodOnlySensors); s.setListening(listen); if (listen) { anyListening = true; @@ -499,6 +522,9 @@ public class DozeSensors { private final boolean mRequiresTouchscreen; private final boolean mRequiresProx; + // Whether the sensor should only register if the device is in AOD + private final boolean mRequiresAod; + // Whether to immediately re-register this sensor after the sensor is triggered. // If false, the sensor registration will be updated on the next AOD state transition. private final boolean mImmediatelyReRegister; @@ -527,7 +553,8 @@ public class DozeSensors { requiresTouchscreen, false /* ignoresSetting */, false /* requiresProx */, - true /* immediatelyReRegister */ + true /* immediatelyReRegister */, + false ); } @@ -541,7 +568,8 @@ public class DozeSensors { boolean requiresTouchscreen, boolean ignoresSetting, boolean requiresProx, - boolean immediatelyReRegister + boolean immediatelyReRegister, + boolean requiresAod ) { this( new Sensor[]{ sensor }, @@ -554,7 +582,8 @@ public class DozeSensors { ignoresSetting, requiresProx, immediatelyReRegister, - DevicePostureController.DEVICE_POSTURE_UNKNOWN + DevicePostureController.DEVICE_POSTURE_UNKNOWN, + requiresAod ); } @@ -569,7 +598,8 @@ public class DozeSensors { boolean ignoresSetting, boolean requiresProx, boolean immediatelyReRegister, - @DevicePostureController.DevicePostureInt int posture + @DevicePostureController.DevicePostureInt int posture, + boolean requiresAod ) { mSensors = sensors; mSetting = setting; @@ -580,6 +610,7 @@ public class DozeSensors { mRequiresTouchscreen = requiresTouchscreen; mIgnoresSetting = ignoresSetting; mRequiresProx = requiresProx; + mRequiresAod = requiresAod; mPosture = posture; mImmediatelyReRegister = immediatelyReRegister; } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index b95c3f3c0ee7..b70960832d32 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -111,6 +111,7 @@ public class DozeTriggers implements DozeMachine.Part { private boolean mWantProxSensor; private boolean mWantTouchScreenSensors; private boolean mWantSensors; + private boolean mInAod; private final UserTracker.Callback mUserChangedCallback = new UserTracker.Callback() { @@ -460,12 +461,19 @@ public class DozeTriggers implements DozeMachine.Part { mDozeSensors.requestTemporaryDisable(); break; case DOZE: + mAodInterruptRunnable = null; + mWantProxSensor = false; + mWantSensors = true; + mWantTouchScreenSensors = true; + mInAod = false; + break; case DOZE_AOD: mAodInterruptRunnable = null; - mWantProxSensor = newState != DozeMachine.State.DOZE; + mWantProxSensor = true; mWantSensors = true; mWantTouchScreenSensors = true; - if (newState == DozeMachine.State.DOZE_AOD && !sWakeDisplaySensorState) { + mInAod = true; + if (!sWakeDisplaySensorState) { onWakeScreen(false, newState, DozeLog.REASON_SENSOR_WAKE_UP_PRESENCE); } break; @@ -491,7 +499,7 @@ public class DozeTriggers implements DozeMachine.Part { break; default: } - mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors); + mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors, mInAod); } private void registerCallbacks() { @@ -510,11 +518,12 @@ public class DozeTriggers implements DozeMachine.Part { private void stopListeningToAllTriggers() { unregisterCallbacks(); - mDozeSensors.setListening(false, false); + mDozeSensors.setListening(false, false, false); mDozeSensors.setProxListening(false); mWantSensors = false; mWantProxSensor = false; mWantTouchScreenSensors = false; + mInAod = false; } @Override @@ -523,7 +532,8 @@ public class DozeTriggers implements DozeMachine.Part { final boolean lowPowerStateOrOff = state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND || state == Display.STATE_OFF; mDozeSensors.setProxListening(mWantProxSensor && lowPowerStateOrOff); - mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors, lowPowerStateOrOff); + mDozeSensors.setListeningWithPowerState(mWantSensors, mWantTouchScreenSensors, + mInAod, lowPowerStateOrOff); if (mAodInterruptRunnable != null && state == Display.STATE_ON) { mAodInterruptRunnable.run(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java index d910a275967b..e87f1042927f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java @@ -144,7 +144,7 @@ public class DozeSensorsTest extends SysuiTestCase { @Test public void testSensorDebounce() { - mDozeSensors.setListening(true, true); + mDozeSensors.setListening(true, true, true); mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class)); mTestableLooper.processAllMessages(); @@ -162,7 +162,7 @@ public class DozeSensorsTest extends SysuiTestCase { @Test public void testSetListening_firstTrue_registerSettingsObserver() { verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt()); - mDozeSensors.setListening(true, true); + mDozeSensors.setListening(true, true, true); verify(mTriggerSensor).registerSettingsObserver(any(ContentObserver.class)); } @@ -170,8 +170,8 @@ public class DozeSensorsTest extends SysuiTestCase { @Test public void testSetListening_twiceTrue_onlyRegisterSettingsObserverOnce() { verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt()); - mDozeSensors.setListening(true, true); - mDozeSensors.setListening(true, true); + mDozeSensors.setListening(true, true, true); + mDozeSensors.setListening(true, true, true); verify(mTriggerSensor, times(1)).registerSettingsObserver(any(ContentObserver.class)); } @@ -196,7 +196,7 @@ public class DozeSensorsTest extends SysuiTestCase { assertFalse(mSensorTap.mRequested); // WHEN we're now in a low powered state - dozeSensors.setListening(true, true, true); + dozeSensors.setListeningWithPowerState(true, true, true, true); // THEN the tap sensor is registered assertTrue(mSensorTap.mRequested); @@ -207,12 +207,12 @@ public class DozeSensorsTest extends SysuiTestCase { // GIVEN doze sensors enabled when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true); - // GIVEN a trigger sensor + // GIVEN a trigger sensor that's enabled by settings Sensor mockSensor = mock(Sensor.class); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorWithSettingEnabled( mockSensor, - /* settingEnabled */ true, - /* requiresTouchScreen */ true); + /* settingEnabled */ true + ); when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor))) .thenReturn(true); @@ -228,12 +228,12 @@ public class DozeSensorsTest extends SysuiTestCase { // GIVEN doze sensors enabled when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true); - // GIVEN a trigger sensor + // GIVEN a trigger sensor that's not enabled by settings Sensor mockSensor = mock(Sensor.class); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorWithSettingEnabled( mockSensor, - /* settingEnabled*/ false, - /* requiresTouchScreen */ true); + /* settingEnabled*/ false + ); when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor))) .thenReturn(true); @@ -249,12 +249,12 @@ public class DozeSensorsTest extends SysuiTestCase { // GIVEN doze sensors enabled when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true); - // GIVEN a trigger sensor that's + // GIVEN a trigger sensor that's not enabled by settings Sensor mockSensor = mock(Sensor.class); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorWithSettingEnabled( mockSensor, - /* settingEnabled*/ false, - /* requiresTouchScreen */ true); + /* settingEnabled*/ false + ); when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor))) .thenReturn(true); @@ -264,7 +264,7 @@ public class DozeSensorsTest extends SysuiTestCase { // WHEN ignoreSetting is called triggerSensor.ignoreSetting(true); - // THEN the sensor is registered + // THEN the sensor is still registered since the setting is ignore assertTrue(triggerSensor.mRegistered); } @@ -275,10 +275,10 @@ public class DozeSensorsTest extends SysuiTestCase { // GIVEN a trigger sensor Sensor mockSensor = mock(Sensor.class); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorWithSettingEnabled( mockSensor, - /* settingEnabled*/ true, - /* requiresTouchScreen */ true); + /* settingEnabled*/ true + ); when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor))) .thenReturn(true); @@ -295,7 +295,7 @@ public class DozeSensorsTest extends SysuiTestCase { // GIVEN doze sensor that supports postures Sensor closedSensor = createSensor(Sensor.TYPE_LIGHT, Sensor.STRING_TYPE_LIGHT); Sensor openedSensor = createSensor(Sensor.TYPE_PROXIMITY, Sensor.STRING_TYPE_LIGHT); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorForPosture( new Sensor[] { null /* unknown */, closedSensor, @@ -316,7 +316,7 @@ public class DozeSensorsTest extends SysuiTestCase { // GIVEN doze sensor that supports postures Sensor closedSensor = createSensor(Sensor.TYPE_LIGHT, Sensor.STRING_TYPE_LIGHT); Sensor openedSensor = createSensor(Sensor.TYPE_PROXIMITY, Sensor.STRING_TYPE_LIGHT); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorForPosture( new Sensor[] { null /* unknown */, closedSensor, @@ -345,7 +345,7 @@ public class DozeSensorsTest extends SysuiTestCase { // GIVEN doze sensor that supports postures Sensor closedSensor = createSensor(Sensor.TYPE_LIGHT, Sensor.STRING_TYPE_LIGHT); Sensor openedSensor = createSensor(Sensor.TYPE_PROXIMITY, Sensor.STRING_TYPE_LIGHT); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorForPosture( new Sensor[] { null /* unknown */, closedSensor, @@ -400,7 +400,7 @@ public class DozeSensorsTest extends SysuiTestCase { public void testUdfpsEnrollmentChanged() throws Exception { // GIVEN a UDFPS_LONG_PRESS trigger sensor that's not configured Sensor mockSensor = mock(Sensor.class); - TriggerSensor triggerSensor = mDozeSensors.createDozeSensor( + TriggerSensor triggerSensor = mDozeSensors.createDozeSensorForPosture( mockSensor, REASON_SENSOR_UDFPS_LONG_PRESS, /* configured */ false); @@ -409,7 +409,7 @@ public class DozeSensorsTest extends SysuiTestCase { .thenReturn(true); // WHEN listening state is set to TRUE - mDozeSensors.setListening(true, true); + mDozeSensors.setListening(true, true, true); // THEN mRegistered is still false b/c !mConfigured assertFalse(triggerSensor.mConfigured); @@ -439,6 +439,35 @@ public class DozeSensorsTest extends SysuiTestCase { } @Test + public void aodOnlySensor_onlyRegisteredWhenAodSensorsIncluded() { + // GIVEN doze sensors enabled + when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true); + + // GIVEN a trigger sensor that requires aod + Sensor mockSensor = mock(Sensor.class); + TriggerSensor aodOnlyTriggerSensor = mDozeSensors.createDozeSensorRequiringAod(mockSensor); + when(mSensorManager.requestTriggerSensor(eq(aodOnlyTriggerSensor), eq(mockSensor))) + .thenReturn(true); + mDozeSensors.addSensor(aodOnlyTriggerSensor); + + // WHEN aod only sensors aren't included + mDozeSensors.setListening(/* listen */ true, /* includeTouchScreenSensors */true, + /* includeAodOnlySensors */false); + + // THEN the sensor is not registered or requested + assertFalse(aodOnlyTriggerSensor.mRequested); + assertFalse(aodOnlyTriggerSensor.mRegistered); + + // WHEN aod only sensors ARE included + mDozeSensors.setListening(/* listen */ true, /* includeTouchScreenSensors */true, + /* includeAodOnlySensors */true); + + // THEN the sensor is registered and requested + assertTrue(aodOnlyTriggerSensor.mRequested); + assertTrue(aodOnlyTriggerSensor.mRegistered); + } + + @Test public void liftToWake_defaultSetting_configDefaultFalse() { // WHEN the default lift to wake gesture setting is false when(mResources.getBoolean( @@ -494,8 +523,8 @@ public class DozeSensorsTest extends SysuiTestCase { mTriggerSensors = new TriggerSensor[] {mTriggerSensor, mSensorTap}; } - public TriggerSensor createDozeSensor(Sensor sensor, boolean settingEnabled, - boolean requiresTouchScreen) { + public TriggerSensor createDozeSensorWithSettingEnabled(Sensor sensor, + boolean settingEnabled) { return new TriggerSensor(/* sensor */ sensor, /* setting name */ "test_setting", /* settingDefault */ settingEnabled, @@ -504,11 +533,13 @@ public class DozeSensorsTest extends SysuiTestCase { /* reportsTouchCoordinate*/ false, /* requiresTouchscreen */ false, /* ignoresSetting */ false, - requiresTouchScreen, - /* immediatelyReRegister */ true); + /* requiresProx */ false, + /* immediatelyReRegister */ true, + /* requiresAod */false + ); } - public TriggerSensor createDozeSensor( + public TriggerSensor createDozeSensorForPosture( Sensor sensor, int pulseReason, boolean configured @@ -522,15 +553,35 @@ public class DozeSensorsTest extends SysuiTestCase { /* requiresTouchscreen */ false, /* ignoresSetting */ false, /* requiresTouchScreen */ false, - /* immediatelyReRegister*/ true); + /* immediatelyReRegister*/ true, + false + ); } /** - * create a doze sensor that supports postures and is enabled + * Create a doze sensor that requires Aod */ - public TriggerSensor createDozeSensor(Sensor[] sensors, int posture) { + public TriggerSensor createDozeSensorRequiringAod(Sensor sensor) { + return new TriggerSensor(/* sensor */ sensor, + /* setting name */ "aod_requiring_sensor", + /* settingDefault */ true, + /* configured */ true, + /* pulseReason*/ 0, + /* reportsTouchCoordinate*/ false, + /* requiresTouchscreen */ false, + /* ignoresSetting */ false, + /* requiresProx */ false, + /* immediatelyReRegister */ true, + /* requiresAoD */ true + ); + } + + /** + * Create a doze sensor that supports postures and is enabled + */ + public TriggerSensor createDozeSensorForPosture(Sensor[] sensors, int posture) { return new TriggerSensor(/* sensor */ sensors, - /* setting name */ "test_setting", + /* setting name */ "posture_test_setting", /* settingDefault */ true, /* configured */ true, /* pulseReason*/ 0, @@ -539,7 +590,9 @@ public class DozeSensorsTest extends SysuiTestCase { /* ignoresSetting */ true, /* requiresProx */ false, /* immediatelyReRegister */ true, - posture); + posture, + /* requiresUi */ false + ); } public void addSensor(TriggerSensor sensor) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java index b66a454638ac..3552399586a3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java @@ -395,6 +395,14 @@ public class DozeTriggersTest extends SysuiTestCase { verify(mAuthController).onAodInterrupt(anyInt(), anyInt(), anyFloat(), anyFloat()); } + + @Test + public void udfpsLongPress_dozeState_notRegistered() { + // GIVEN device is DOZE_AOD_PAUSED + when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE); + // beverlyt + } + private void waitForSensorManager() { mExecutor.runAllReady(); } |