Merge "Quick pickup triggers AOD2 instead of AOD1" into sc-dev

This commit is contained in:
Beverly Tai
2021-06-22 14:31:52 +00:00
committed by Android (Google) Code Review
2 changed files with 8 additions and 66 deletions

View File

@@ -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;
@@ -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 */);
@@ -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;
}
sWakeDisplaySensorState = wake;
if (wake) {
proximityCheckThenCall((result) -> {
@@ -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);
@@ -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) {
@@ -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);
@@ -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

View File

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