Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +4 −4 Original line number Diff line number Diff line Loading @@ -1458,16 +1458,16 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, public void maybeHandlePendingLock() { if (mPendingLock) { // The screen off animation is playing, so if we lock now, the foreground app will // vanish and the keyguard will jump-cut in. Delay it, until either: // The screen off animation is playing or is about to be, so if we lock now, the // foreground app will vanish and the keyguard will jump-cut in. Delay it, until either: // - The screen off animation ends. We will call maybeHandlePendingLock from // the end action in UnlockedScreenOffAnimationController#animateInKeyguard. // - The screen off animation is cancelled by the device waking back up. We will call // maybeHandlePendingLock from KeyguardViewMediator#onStartedWakingUp. if (mScreenOffAnimationController.isKeyguardShowDelayed()) { if (mScreenOffAnimationController.shouldDelayKeyguardShow()) { if (DEBUG) { Log.d(TAG, "#maybeHandlePendingLock: not handling because the screen off " + "animation's isKeyguardShowDelayed() returned true. This should be " + "animation's shouldDelayKeyguardShow() returned true. This should be " + "handled soon by #onStartedWakingUp, or by the end actions of the " + "screen off animation."); } Loading packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +39 −0 Original line number Diff line number Diff line Loading @@ -444,6 +444,45 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { TestableLooper.get(this).processAllMessages(); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testKeyguardDelayedOnGoingToSleep_ifScreenOffAnimationWillPlayButIsntPlayingYet() { mViewMediator.onSystemReady(); TestableLooper.get(this).processAllMessages(); mViewMediator.setShowingLocked(false); TestableLooper.get(this).processAllMessages(); mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER); TestableLooper.get(this).processAllMessages(); when(mScreenOffAnimationController.shouldDelayKeyguardShow()).thenReturn(true); when(mScreenOffAnimationController.isKeyguardShowDelayed()).thenReturn(false); mViewMediator.onFinishedGoingToSleep(OFF_BECAUSE_OF_USER, false); TestableLooper.get(this).processAllMessages(); assertFalse(mViewMediator.isShowingAndNotOccluded()); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testKeyguardNotDelayedOnGoingToSleep_ifScreenOffAnimationWillNotPlay() { mViewMediator.onSystemReady(); TestableLooper.get(this).processAllMessages(); mViewMediator.setShowingLocked(false); TestableLooper.get(this).processAllMessages(); mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER); TestableLooper.get(this).processAllMessages(); when(mScreenOffAnimationController.shouldDelayKeyguardShow()).thenReturn(false); mViewMediator.onFinishedGoingToSleep(OFF_BECAUSE_OF_USER, false); TestableLooper.get(this).processAllMessages(); assertTrue(mViewMediator.isShowingAndNotOccluded()); } private void createAndStartViewMediator() { mViewMediator = new KeyguardViewMediator( mContext, Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +4 −4 Original line number Diff line number Diff line Loading @@ -1458,16 +1458,16 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, public void maybeHandlePendingLock() { if (mPendingLock) { // The screen off animation is playing, so if we lock now, the foreground app will // vanish and the keyguard will jump-cut in. Delay it, until either: // The screen off animation is playing or is about to be, so if we lock now, the // foreground app will vanish and the keyguard will jump-cut in. Delay it, until either: // - The screen off animation ends. We will call maybeHandlePendingLock from // the end action in UnlockedScreenOffAnimationController#animateInKeyguard. // - The screen off animation is cancelled by the device waking back up. We will call // maybeHandlePendingLock from KeyguardViewMediator#onStartedWakingUp. if (mScreenOffAnimationController.isKeyguardShowDelayed()) { if (mScreenOffAnimationController.shouldDelayKeyguardShow()) { if (DEBUG) { Log.d(TAG, "#maybeHandlePendingLock: not handling because the screen off " + "animation's isKeyguardShowDelayed() returned true. This should be " + "animation's shouldDelayKeyguardShow() returned true. This should be " + "handled soon by #onStartedWakingUp, or by the end actions of the " + "screen off animation."); } Loading
packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +39 −0 Original line number Diff line number Diff line Loading @@ -444,6 +444,45 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { TestableLooper.get(this).processAllMessages(); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testKeyguardDelayedOnGoingToSleep_ifScreenOffAnimationWillPlayButIsntPlayingYet() { mViewMediator.onSystemReady(); TestableLooper.get(this).processAllMessages(); mViewMediator.setShowingLocked(false); TestableLooper.get(this).processAllMessages(); mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER); TestableLooper.get(this).processAllMessages(); when(mScreenOffAnimationController.shouldDelayKeyguardShow()).thenReturn(true); when(mScreenOffAnimationController.isKeyguardShowDelayed()).thenReturn(false); mViewMediator.onFinishedGoingToSleep(OFF_BECAUSE_OF_USER, false); TestableLooper.get(this).processAllMessages(); assertFalse(mViewMediator.isShowingAndNotOccluded()); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testKeyguardNotDelayedOnGoingToSleep_ifScreenOffAnimationWillNotPlay() { mViewMediator.onSystemReady(); TestableLooper.get(this).processAllMessages(); mViewMediator.setShowingLocked(false); TestableLooper.get(this).processAllMessages(); mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER); TestableLooper.get(this).processAllMessages(); when(mScreenOffAnimationController.shouldDelayKeyguardShow()).thenReturn(false); mViewMediator.onFinishedGoingToSleep(OFF_BECAUSE_OF_USER, false); TestableLooper.get(this).processAllMessages(); assertTrue(mViewMediator.isShowingAndNotOccluded()); } private void createAndStartViewMediator() { mViewMediator = new KeyguardViewMediator( mContext, Loading