Merge "Add null-safety check for DozeState" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-10-21 16:55:38 +00:00
committed by Android (Google) Code Review
3 changed files with 31 additions and 14 deletions

View File

@@ -224,10 +224,14 @@ class DozeLogger @Inject constructor(
})
}
fun logPulseDropped(from: String, state: DozeMachine.State) {
/**
* Log why a pulse was dropped and the current doze machine state. The state can be null
* if the DozeMachine is the middle of transitioning between states.
*/
fun logPulseDropped(from: String, state: DozeMachine.State?) {
buffer.log(TAG, INFO, {
str1 = from
str2 = state.name
str2 = state?.name
}, {
"Pulse dropped, cannot pulse from=$str1 state=$str2"
})

View File

@@ -536,13 +536,13 @@ public class DozeTriggers implements DozeMachine.Part {
return;
}
if (!mAllowPulseTriggers || mDozeHost.isPulsePending() || !canPulse()) {
if (!mAllowPulseTriggers || mDozeHost.isPulsePending() || !canPulse(dozeState)) {
if (!mAllowPulseTriggers) {
mDozeLog.tracePulseDropped("requestPulse - !mAllowPulseTriggers");
} else if (mDozeHost.isPulsePending()) {
mDozeLog.tracePulseDropped("requestPulse - pulsePending");
} else if (!canPulse()) {
mDozeLog.tracePulseDropped("requestPulse", dozeState);
} else if (!canPulse(dozeState)) {
mDozeLog.tracePulseDropped("requestPulse - dozeState cannot pulse", dozeState);
}
runIfNotNull(onPulseSuppressedListener);
return;
@@ -559,15 +559,16 @@ public class DozeTriggers implements DozeMachine.Part {
// not in pocket, continue pulsing
final boolean isPulsePending = mDozeHost.isPulsePending();
mDozeHost.setPulsePending(false);
if (!isPulsePending || mDozeHost.isPulsingBlocked() || !canPulse()) {
if (!isPulsePending || mDozeHost.isPulsingBlocked() || !canPulse(dozeState)) {
if (!isPulsePending) {
mDozeLog.tracePulseDropped("continuePulseRequest - pulse no longer"
+ " pending, pulse was cancelled before it could start"
+ " transitioning to pulsing state.");
} else if (mDozeHost.isPulsingBlocked()) {
mDozeLog.tracePulseDropped("continuePulseRequest - pulsingBlocked");
} else if (!canPulse()) {
mDozeLog.tracePulseDropped("continuePulseRequest", mMachine.getState());
} else if (!canPulse(dozeState)) {
mDozeLog.tracePulseDropped("continuePulseRequest"
+ " - doze state cannot pulse", dozeState);
}
runIfNotNull(onPulseSuppressedListener);
return;
@@ -582,10 +583,10 @@ public class DozeTriggers implements DozeMachine.Part {
.ifPresent(uiEventEnum -> mUiEventLogger.log(uiEventEnum, getKeyguardSessionId()));
}
private boolean canPulse() {
return mMachine.getState() == DozeMachine.State.DOZE
|| mMachine.getState() == DozeMachine.State.DOZE_AOD
|| mMachine.getState() == DozeMachine.State.DOZE_AOD_DOCKED;
private boolean canPulse(DozeMachine.State dozeState) {
return dozeState == DozeMachine.State.DOZE
|| dozeState == DozeMachine.State.DOZE_AOD
|| dozeState == DozeMachine.State.DOZE_AOD_DOCKED;
}
@Nullable

View File

@@ -23,10 +23,10 @@ import static com.android.systemui.doze.DozeMachine.State.UNINITIALIZED;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -88,6 +88,8 @@ public class DozeTriggersTest extends SysuiTestCase {
@Mock
private ProximityCheck mProximityCheck;
@Mock
private DozeLog mDozeLog;
@Mock
private AuthController mAuthController;
@Mock
private UiEventLogger mUiEventLogger;
@@ -127,7 +129,7 @@ public class DozeTriggersTest extends SysuiTestCase {
mTriggers = new DozeTriggers(mContext, mHost, config, dozeParameters,
asyncSensorManager, wakeLock, mDockManager, mProximitySensor,
mProximityCheck, mock(DozeLog.class), mBroadcastDispatcher, new FakeSettings(),
mProximityCheck, mDozeLog, mBroadcastDispatcher, new FakeSettings(),
mAuthController, mUiEventLogger, mSessionTracker, mKeyguardStateController,
mDevicePostureController);
mTriggers.setDozeMachine(mMachine);
@@ -342,6 +344,16 @@ public class DozeTriggersTest extends SysuiTestCase {
verify(mProximityCheck).destroy();
}
@Test
public void testIsExecutingTransition_dropPulse() {
when(mHost.isPulsePending()).thenReturn(false);
when(mMachine.isExecutingTransition()).thenReturn(true);
mTriggers.onSensor(DozeLog.PULSE_REASON_SENSOR_LONG_PRESS, 100, 100, null);
verify(mDozeLog).tracePulseDropped(anyString(), eq(null));
}
private void waitForSensorManager() {
mExecutor.runAllReady();
}