Merge "Quick pickup triggers AOD2 instead of AOD1" into sc-dev am: 196f74572e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15029247 Change-Id: Id68c5781e784a2a4d0250fd8d11575797527f694
This commit is contained in:
@@ -71,7 +71,6 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
* Assuming that the screen should start on.
|
* Assuming that the screen should start on.
|
||||||
*/
|
*/
|
||||||
private static boolean sWakeDisplaySensorState = true;
|
private static boolean sWakeDisplaySensorState = true;
|
||||||
private Runnable mQuickPickupDozeCancellable;
|
|
||||||
|
|
||||||
private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500;
|
private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500;
|
||||||
|
|
||||||
@@ -279,14 +278,14 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
boolean isWakeDisplayEvent = isQuickPickup || ((isWakeOnPresence || isWakeOnReach)
|
boolean isWakeDisplayEvent = isQuickPickup || ((isWakeOnPresence || isWakeOnReach)
|
||||||
&& rawValues != null && rawValues.length > 0 && rawValues[0] != 0);
|
&& rawValues != null && rawValues.length > 0 && rawValues[0] != 0);
|
||||||
|
|
||||||
if (isWakeOnPresence || isQuickPickup) {
|
if (isWakeOnPresence) {
|
||||||
onWakeScreen(isQuickPickup || isWakeDisplayEvent,
|
onWakeScreen(isWakeDisplayEvent,
|
||||||
mMachine.isExecutingTransition() ? null : mMachine.getState(),
|
mMachine.isExecutingTransition() ? null : mMachine.getState(),
|
||||||
pulseReason);
|
pulseReason);
|
||||||
} else if (isLongPress) {
|
} else if (isLongPress) {
|
||||||
requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
|
requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
|
||||||
null /* onPulseSuppressedListener */);
|
null /* onPulseSuppressedListener */);
|
||||||
} else if (isWakeOnReach) {
|
} else if (isWakeOnReach || isQuickPickup) {
|
||||||
if (isWakeDisplayEvent) {
|
if (isWakeDisplayEvent) {
|
||||||
requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
|
requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
|
||||||
null /* onPulseSuppressedListener */);
|
null /* onPulseSuppressedListener */);
|
||||||
@@ -388,11 +387,7 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
*/
|
*/
|
||||||
private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state, int reason) {
|
private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state, int reason) {
|
||||||
mDozeLog.traceWakeDisplay(wake, reason);
|
mDozeLog.traceWakeDisplay(wake, reason);
|
||||||
final boolean isWakeOnPresence = reason == DozeLog.REASON_SENSOR_WAKE_UP;
|
sWakeDisplaySensorState = wake;
|
||||||
final boolean isQuickPickup = reason == DozeLog.REASON_SENSOR_QUICK_PICKUP;
|
|
||||||
if (isWakeOnPresence) {
|
|
||||||
sWakeDisplaySensorState = wake;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wake) {
|
if (wake) {
|
||||||
proximityCheckThenCall((result) -> {
|
proximityCheckThenCall((result) -> {
|
||||||
@@ -405,27 +400,13 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
// Log sensor triggered
|
// Log sensor triggered
|
||||||
Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason))
|
Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason))
|
||||||
.ifPresent(mUiEventLogger::log);
|
.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 {
|
} else {
|
||||||
boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);
|
boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);
|
||||||
boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING);
|
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 (!pausing && !paused) {
|
||||||
if (isQuickPickup && (pulse || docked)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mMachine.requestState(DozeMachine.State.DOZE);
|
mMachine.requestState(DozeMachine.State.DOZE);
|
||||||
// log wake timeout
|
// log wake timeout
|
||||||
mUiEventLogger.log(DozingUpdateUiEvent.DOZING_UPDATE_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
|
@Override
|
||||||
public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
|
public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
|
||||||
switch (newState) {
|
switch (newState) {
|
||||||
@@ -481,7 +453,6 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
mDozeSensors.requestTemporaryDisable();
|
mDozeSensors.requestTemporaryDisable();
|
||||||
break;
|
break;
|
||||||
case FINISH:
|
case FINISH:
|
||||||
cancelQuickPickupDelayableDoze();
|
|
||||||
mBroadcastReceiver.unregister(mBroadcastDispatcher);
|
mBroadcastReceiver.unregister(mBroadcastDispatcher);
|
||||||
mDozeHost.removeCallback(mHostCallback);
|
mDozeHost.removeCallback(mHostCallback);
|
||||||
mDockManager.removeListener(mDockEventListener);
|
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() {
|
private void checkTriggersAtInit() {
|
||||||
if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR
|
if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR
|
||||||
|
|||||||
@@ -209,32 +209,13 @@ public class DozeTriggersTest extends SysuiTestCase {
|
|||||||
// WHEN quick pick up is triggered
|
// WHEN quick pick up is triggered
|
||||||
mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null);
|
mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null);
|
||||||
|
|
||||||
// THEN device goes into aod (shows clock with black background)
|
// THEN request pulse
|
||||||
verify(mMachine).requestState(DOZE_AOD);
|
verify(mMachine).requestPulse(anyInt());
|
||||||
|
|
||||||
// THEN a log is taken that quick pick up was triggered
|
// THEN a log is taken that quick pick up was triggered
|
||||||
verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_QUICK_PICKUP);
|
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
|
@Test
|
||||||
public void testOnSensor_Fingerprint() {
|
public void testOnSensor_Fingerprint() {
|
||||||
// GIVEN dozing state
|
// GIVEN dozing state
|
||||||
|
|||||||
Reference in New Issue
Block a user