Merge "Quick pickup triggers AOD2 instead of AOD1" into sc-dev
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user