Loading packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +6 −45 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ public class DozeTriggers implements DozeMachine.Part { * Assuming that the screen should start on. */ private static boolean sWakeDisplaySensorState = true; private Runnable mQuickPickupDozeCancellable; private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500; Loading Loading @@ -279,14 +278,14 @@ public class DozeTriggers implements DozeMachine.Part { boolean isWakeDisplayEvent = isQuickPickup || ((isWakeOnPresence || isWakeOnReach) && rawValues != null && rawValues.length > 0 && rawValues[0] != 0); if (isWakeOnPresence || isQuickPickup) { onWakeScreen(isQuickPickup || isWakeDisplayEvent, if (isWakeOnPresence) { onWakeScreen(isWakeDisplayEvent, mMachine.isExecutingTransition() ? null : mMachine.getState(), pulseReason); } else if (isLongPress) { requestPulse(pulseReason, true /* alreadyPerformedProxCheck */, null /* onPulseSuppressedListener */); } else if (isWakeOnReach) { } else if (isWakeOnReach || isQuickPickup) { if (isWakeDisplayEvent) { requestPulse(pulseReason, true /* alreadyPerformedProxCheck */, null /* onPulseSuppressedListener */); Loading Loading @@ -388,11 +387,7 @@ public class DozeTriggers implements DozeMachine.Part { */ private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state, int reason) { mDozeLog.traceWakeDisplay(wake, reason); final boolean isWakeOnPresence = reason == DozeLog.REASON_SENSOR_WAKE_UP; final boolean isQuickPickup = reason == DozeLog.REASON_SENSOR_QUICK_PICKUP; if (isWakeOnPresence) { sWakeDisplaySensorState = wake; } if (wake) { proximityCheckThenCall((result) -> { Loading @@ -405,27 +400,13 @@ public class DozeTriggers implements DozeMachine.Part { // Log sensor triggered Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason)) .ifPresent(mUiEventLogger::log); if (isQuickPickup) { // schedule runnable to go back to DOZE onQuickPickup(); } } else if (state == DozeMachine.State.DOZE_AOD && isQuickPickup) { // elongate time in DOZE_AOD, schedule new runnable to go back to DOZE onQuickPickup(); } }, isQuickPickup /* alreadyPerformedProxCheck */, reason); }, false /* alreadyPerformedProxCheck */, reason); } else { boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED); boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING); boolean pulse = (state == DozeMachine.State.DOZE_REQUEST_PULSE) || (state == DozeMachine.State.DOZE_PULSING) || (state == DozeMachine.State.DOZE_PULSING_BRIGHT); boolean docked = (state == DozeMachine.State.DOZE_AOD_DOCKED); if (!pausing && !paused) { if (isQuickPickup && (pulse || docked)) { return; } mMachine.requestState(DozeMachine.State.DOZE); // log wake timeout mUiEventLogger.log(DozingUpdateUiEvent.DOZING_UPDATE_WAKE_TIMEOUT); Loading @@ -433,15 +414,6 @@ public class DozeTriggers implements DozeMachine.Part { } } private void onQuickPickup() { cancelQuickPickupDelayableDoze(); mQuickPickupDozeCancellable = mMainExecutor.executeDelayed(() -> { onWakeScreen(false, mMachine.isExecutingTransition() ? null : mMachine.getState(), DozeLog.REASON_SENSOR_QUICK_PICKUP); }, mDozeParameters.getQuickPickupAodDuration()); } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { switch (newState) { Loading Loading @@ -481,7 +453,6 @@ public class DozeTriggers implements DozeMachine.Part { mDozeSensors.requestTemporaryDisable(); break; case FINISH: cancelQuickPickupDelayableDoze(); mBroadcastReceiver.unregister(mBroadcastDispatcher); mDozeHost.removeCallback(mHostCallback); mDockManager.removeListener(mDockEventListener); Loading Loading @@ -510,16 +481,6 @@ public class DozeTriggers implements DozeMachine.Part { } } /** * Cancels last scheduled Runnable that transitions to STATE_DOZE (blank screen) after * going into STATE_AOD (AOD screen) from the quick pickup gesture. */ private void cancelQuickPickupDelayableDoze() { if (mQuickPickupDozeCancellable != null) { mQuickPickupDozeCancellable.run(); mQuickPickupDozeCancellable = null; } } private void checkTriggersAtInit() { if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR Loading packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +2 −21 Original line number Diff line number Diff line Loading @@ -209,32 +209,13 @@ public class DozeTriggersTest extends SysuiTestCase { // WHEN quick pick up is triggered mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null); // THEN device goes into aod (shows clock with black background) verify(mMachine).requestState(DOZE_AOD); // THEN request pulse verify(mMachine).requestPulse(anyInt()); // THEN a log is taken that quick pick up was triggered verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_QUICK_PICKUP); } @Test public void testQuickPickupTimeOutAfterExecutables() { // GIVEN quick pickup is triggered when device is in DOZE when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE); mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null); verify(mMachine).requestState(DOZE_AOD); verify(mMachine, never()).requestState(DozeMachine.State.DOZE); // WHEN next executable is run mExecutor.advanceClockToLast(); mExecutor.runAllReady(); // THEN device goes back into DOZE verify(mMachine).requestState(DozeMachine.State.DOZE); // THEN a log is taken that wake up timeout expired verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_WAKE_TIMEOUT); } @Test public void testOnSensor_Fingerprint() { // GIVEN dozing state Loading Loading
packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +6 −45 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ public class DozeTriggers implements DozeMachine.Part { * Assuming that the screen should start on. */ private static boolean sWakeDisplaySensorState = true; private Runnable mQuickPickupDozeCancellable; private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500; Loading Loading @@ -279,14 +278,14 @@ public class DozeTriggers implements DozeMachine.Part { boolean isWakeDisplayEvent = isQuickPickup || ((isWakeOnPresence || isWakeOnReach) && rawValues != null && rawValues.length > 0 && rawValues[0] != 0); if (isWakeOnPresence || isQuickPickup) { onWakeScreen(isQuickPickup || isWakeDisplayEvent, if (isWakeOnPresence) { onWakeScreen(isWakeDisplayEvent, mMachine.isExecutingTransition() ? null : mMachine.getState(), pulseReason); } else if (isLongPress) { requestPulse(pulseReason, true /* alreadyPerformedProxCheck */, null /* onPulseSuppressedListener */); } else if (isWakeOnReach) { } else if (isWakeOnReach || isQuickPickup) { if (isWakeDisplayEvent) { requestPulse(pulseReason, true /* alreadyPerformedProxCheck */, null /* onPulseSuppressedListener */); Loading Loading @@ -388,11 +387,7 @@ public class DozeTriggers implements DozeMachine.Part { */ private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state, int reason) { mDozeLog.traceWakeDisplay(wake, reason); final boolean isWakeOnPresence = reason == DozeLog.REASON_SENSOR_WAKE_UP; final boolean isQuickPickup = reason == DozeLog.REASON_SENSOR_QUICK_PICKUP; if (isWakeOnPresence) { sWakeDisplaySensorState = wake; } if (wake) { proximityCheckThenCall((result) -> { Loading @@ -405,27 +400,13 @@ public class DozeTriggers implements DozeMachine.Part { // Log sensor triggered Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason)) .ifPresent(mUiEventLogger::log); if (isQuickPickup) { // schedule runnable to go back to DOZE onQuickPickup(); } } else if (state == DozeMachine.State.DOZE_AOD && isQuickPickup) { // elongate time in DOZE_AOD, schedule new runnable to go back to DOZE onQuickPickup(); } }, isQuickPickup /* alreadyPerformedProxCheck */, reason); }, false /* alreadyPerformedProxCheck */, reason); } else { boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED); boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING); boolean pulse = (state == DozeMachine.State.DOZE_REQUEST_PULSE) || (state == DozeMachine.State.DOZE_PULSING) || (state == DozeMachine.State.DOZE_PULSING_BRIGHT); boolean docked = (state == DozeMachine.State.DOZE_AOD_DOCKED); if (!pausing && !paused) { if (isQuickPickup && (pulse || docked)) { return; } mMachine.requestState(DozeMachine.State.DOZE); // log wake timeout mUiEventLogger.log(DozingUpdateUiEvent.DOZING_UPDATE_WAKE_TIMEOUT); Loading @@ -433,15 +414,6 @@ public class DozeTriggers implements DozeMachine.Part { } } private void onQuickPickup() { cancelQuickPickupDelayableDoze(); mQuickPickupDozeCancellable = mMainExecutor.executeDelayed(() -> { onWakeScreen(false, mMachine.isExecutingTransition() ? null : mMachine.getState(), DozeLog.REASON_SENSOR_QUICK_PICKUP); }, mDozeParameters.getQuickPickupAodDuration()); } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { switch (newState) { Loading Loading @@ -481,7 +453,6 @@ public class DozeTriggers implements DozeMachine.Part { mDozeSensors.requestTemporaryDisable(); break; case FINISH: cancelQuickPickupDelayableDoze(); mBroadcastReceiver.unregister(mBroadcastDispatcher); mDozeHost.removeCallback(mHostCallback); mDockManager.removeListener(mDockEventListener); Loading Loading @@ -510,16 +481,6 @@ public class DozeTriggers implements DozeMachine.Part { } } /** * Cancels last scheduled Runnable that transitions to STATE_DOZE (blank screen) after * going into STATE_AOD (AOD screen) from the quick pickup gesture. */ private void cancelQuickPickupDelayableDoze() { if (mQuickPickupDozeCancellable != null) { mQuickPickupDozeCancellable.run(); mQuickPickupDozeCancellable = null; } } private void checkTriggersAtInit() { if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR Loading
packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +2 −21 Original line number Diff line number Diff line Loading @@ -209,32 +209,13 @@ public class DozeTriggersTest extends SysuiTestCase { // WHEN quick pick up is triggered mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null); // THEN device goes into aod (shows clock with black background) verify(mMachine).requestState(DOZE_AOD); // THEN request pulse verify(mMachine).requestPulse(anyInt()); // THEN a log is taken that quick pick up was triggered verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_QUICK_PICKUP); } @Test public void testQuickPickupTimeOutAfterExecutables() { // GIVEN quick pickup is triggered when device is in DOZE when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE); mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null); verify(mMachine).requestState(DOZE_AOD); verify(mMachine, never()).requestState(DozeMachine.State.DOZE); // WHEN next executable is run mExecutor.advanceClockToLast(); mExecutor.runAllReady(); // THEN device goes back into DOZE verify(mMachine).requestState(DozeMachine.State.DOZE); // THEN a log is taken that wake up timeout expired verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_WAKE_TIMEOUT); } @Test public void testOnSensor_Fingerprint() { // GIVEN dozing state Loading