Merge "Don't re-lock if we're wake and unlocking." into tm-qpr-dev

This commit is contained in:
Selim Cinek
2022-12-13 20:03:00 +00:00
committed by Android (Google) Code Review
2 changed files with 40 additions and 1 deletions

View File

@@ -1613,7 +1613,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
// TODO: Rename all screen off/on references to interactive/sleeping // TODO: Rename all screen off/on references to interactive/sleeping
synchronized (this) { synchronized (this) {
mDeviceInteractive = true; mDeviceInteractive = true;
if (mPendingLock && !cameraGestureTriggered) { if (mPendingLock && !cameraGestureTriggered && !mWakeAndUnlocking) {
doKeyguardLocked(null); doKeyguardLocked(null);
} }
mAnimatingScreenOff = false; mAnimatingScreenOff = false;

View File

@@ -167,6 +167,45 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
verify(mStatusBarKeyguardViewManager, never()).setKeyguardGoingAwayState(anyBoolean()); verify(mStatusBarKeyguardViewManager, never()).setKeyguardGoingAwayState(anyBoolean());
} }
@Test
@TestableLooper.RunWithLooper(setAsMainLooper = true)
public void testOnStartedWakingUp_whileSleeping_ifWakeAndUnlocking_doesNotShowKeyguard() {
when(mLockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(false);
when(mLockPatternUtils.getPowerButtonInstantlyLocks(anyInt())).thenReturn(true);
mViewMediator.onSystemReady();
TestableLooper.get(this).processAllMessages();
mViewMediator.setShowingLocked(false);
TestableLooper.get(this).processAllMessages();
mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER);
mViewMediator.onWakeAndUnlocking();
mViewMediator.onStartedWakingUp(OFF_BECAUSE_OF_USER, false);
TestableLooper.get(this).processAllMessages();
assertFalse(mViewMediator.isShowingAndNotOccluded());
verify(mKeyguardStateController, never()).notifyKeyguardState(eq(true), anyBoolean());
}
@Test
@TestableLooper.RunWithLooper(setAsMainLooper = true)
public void testOnStartedWakingUp_whileSleeping_ifNotWakeAndUnlocking_showsKeyguard() {
when(mLockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(false);
when(mLockPatternUtils.getPowerButtonInstantlyLocks(anyInt())).thenReturn(true);
mViewMediator.onSystemReady();
TestableLooper.get(this).processAllMessages();
mViewMediator.setShowingLocked(false);
TestableLooper.get(this).processAllMessages();
mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER);
mViewMediator.onStartedWakingUp(OFF_BECAUSE_OF_USER, false);
TestableLooper.get(this).processAllMessages();
assertTrue(mViewMediator.isShowingAndNotOccluded());
}
@Test @Test
public void testRegisterDumpable() { public void testRegisterDumpable() {
verify(mDumpManager).registerDumpable(KeyguardViewMediator.class.getName(), mViewMediator); verify(mDumpManager).registerDumpable(KeyguardViewMediator.class.getName(), mViewMediator);