Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +25 −3 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.systemui.DejankUtils; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.FaceAuthScreenBrightnessController; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shared.system.QuickStepContract; Loading Loading @@ -80,7 +81,7 @@ import javax.inject.Inject; public class StatusBarKeyguardViewManager implements RemoteInputController.Callback, StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener, PanelExpansionListener, NavigationModeController.ModeChangedListener, KeyguardViewController { KeyguardViewController, WakefulnessLifecycle.Observer { // When hiding the Keyguard with timing supplied from WindowManager, better be early than late. private static final long HIDE_TIMING_CORRECTION_MS = - 16 * 3; Loading @@ -104,6 +105,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private final NotificationShadeWindowController mNotificationShadeWindowController; private final Optional<FaceAuthScreenBrightnessController> mFaceAuthScreenBrightnessController; private final KeyguardBouncer.Factory mKeyguardBouncerFactory; private final WakefulnessLifecycle mWakefulnessLifecycle; private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private final BouncerExpansionCallback mExpansionCallback = new BouncerExpansionCallback() { @Override public void onFullyShown() { Loading Loading @@ -189,6 +192,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private boolean mLastPulsing; private int mLastBiometricMode; private boolean mQsExpanded; private boolean mAnimatedToSleep; private OnDismissAction mAfterKeyguardGoneAction; private Runnable mKeyguardGoneCancelAction; Loading Loading @@ -232,7 +236,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb KeyguardStateController keyguardStateController, Optional<FaceAuthScreenBrightnessController> faceAuthScreenBrightnessController, NotificationMediaManager notificationMediaManager, KeyguardBouncer.Factory keyguardBouncerFactory) { KeyguardBouncer.Factory keyguardBouncerFactory, WakefulnessLifecycle wakefulnessLifecycle, UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { mContext = context; mViewMediatorCallback = callback; mLockPatternUtils = lockPatternUtils; Loading @@ -246,6 +252,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mDockManager = dockManager; mFaceAuthScreenBrightnessController = faceAuthScreenBrightnessController; mKeyguardBouncerFactory = keyguardBouncerFactory; mWakefulnessLifecycle = wakefulnessLifecycle; mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; } @Override Loading Loading @@ -301,6 +309,20 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mDockManager.addListener(mDockEventListener); mIsDocked = mDockManager.isDocked(); } mWakefulnessLifecycle.addObserver(new WakefulnessLifecycle.Observer() { @Override public void onFinishedWakingUp() { mAnimatedToSleep = false; updateStates(); } @Override public void onFinishedGoingToSleep() { mAnimatedToSleep = mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying(); updateStates(); } }); } @Override Loading Loading @@ -982,7 +1004,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb boolean hideWhileDozing = mDozing && biometricMode != MODE_WAKE_AND_UNLOCK_PULSING; boolean keyguardWithGestureNav = (keyguardShowing && !mDozing || mPulsing && !mIsDocked) && mGesturalNav; return (!keyguardShowing && !hideWhileDozing || mBouncer.isShowing() return (!mAnimatedToSleep && !keyguardShowing && !hideWhileDozing || mBouncer.isShowing() || mRemoteInputActive || keyguardWithGestureNav || mGlobalActionsVisible); } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +25 −1 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.systemui.statusbar.phone; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; Loading @@ -41,6 +44,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.keyguard.FaceAuthScreenBrightnessController; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.statusbar.NotificationMediaManager; Loading Loading @@ -90,7 +94,10 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { private KeyguardBouncer.Factory mKeyguardBouncerFactory; @Mock private KeyguardBouncer mBouncer; @Mock private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private WakefulnessLifecycle mWakefulnessLifecycle; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Before Loading @@ -101,6 +108,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { any(KeyguardBouncer.BouncerExpansionCallback.class))) .thenReturn(mBouncer); mWakefulnessLifecycle = new WakefulnessLifecycle(getContext(), null); mStatusBarKeyguardViewManager = new StatusBarKeyguardViewManager( getContext(), mViewMediatorCallback, Loading @@ -114,7 +122,9 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { mKeyguardStateController, Optional.of(mFaceAuthScreenBrightnessController), mock(NotificationMediaManager.class), mKeyguardBouncerFactory); mKeyguardBouncerFactory, mWakefulnessLifecycle, mUnlockedScreenOffAnimationController); mStatusBarKeyguardViewManager.registerStatusBar(mStatusBar, mContainer, mNotificationPanelView, mBiometrucUnlockController, mNotificationContainer, mBypassController); Loading Loading @@ -280,4 +290,18 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { verify(mBouncer).updateKeyguardPosition(1.0f); } @Test public void testNavBarHiddenWhenSleepAnimationStarts() { mStatusBarKeyguardViewManager.hide(0 /* startTime */, 0 /* fadeoutDuration */); assertTrue(mStatusBarKeyguardViewManager.isNavBarVisible()); // Verify that the nav bar is hidden when the screen off animation starts doReturn(true).when(mUnlockedScreenOffAnimationController).isScreenOffAnimationPlaying(); mWakefulnessLifecycle.dispatchFinishedGoingToSleep(); assertFalse(mStatusBarKeyguardViewManager.isNavBarVisible()); mWakefulnessLifecycle.dispatchFinishedWakingUp(); assertTrue(mStatusBarKeyguardViewManager.isNavBarVisible()); } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +25 −3 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.systemui.DejankUtils; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.FaceAuthScreenBrightnessController; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shared.system.QuickStepContract; Loading Loading @@ -80,7 +81,7 @@ import javax.inject.Inject; public class StatusBarKeyguardViewManager implements RemoteInputController.Callback, StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener, PanelExpansionListener, NavigationModeController.ModeChangedListener, KeyguardViewController { KeyguardViewController, WakefulnessLifecycle.Observer { // When hiding the Keyguard with timing supplied from WindowManager, better be early than late. private static final long HIDE_TIMING_CORRECTION_MS = - 16 * 3; Loading @@ -104,6 +105,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private final NotificationShadeWindowController mNotificationShadeWindowController; private final Optional<FaceAuthScreenBrightnessController> mFaceAuthScreenBrightnessController; private final KeyguardBouncer.Factory mKeyguardBouncerFactory; private final WakefulnessLifecycle mWakefulnessLifecycle; private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private final BouncerExpansionCallback mExpansionCallback = new BouncerExpansionCallback() { @Override public void onFullyShown() { Loading Loading @@ -189,6 +192,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private boolean mLastPulsing; private int mLastBiometricMode; private boolean mQsExpanded; private boolean mAnimatedToSleep; private OnDismissAction mAfterKeyguardGoneAction; private Runnable mKeyguardGoneCancelAction; Loading Loading @@ -232,7 +236,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb KeyguardStateController keyguardStateController, Optional<FaceAuthScreenBrightnessController> faceAuthScreenBrightnessController, NotificationMediaManager notificationMediaManager, KeyguardBouncer.Factory keyguardBouncerFactory) { KeyguardBouncer.Factory keyguardBouncerFactory, WakefulnessLifecycle wakefulnessLifecycle, UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { mContext = context; mViewMediatorCallback = callback; mLockPatternUtils = lockPatternUtils; Loading @@ -246,6 +252,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mDockManager = dockManager; mFaceAuthScreenBrightnessController = faceAuthScreenBrightnessController; mKeyguardBouncerFactory = keyguardBouncerFactory; mWakefulnessLifecycle = wakefulnessLifecycle; mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; } @Override Loading Loading @@ -301,6 +309,20 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mDockManager.addListener(mDockEventListener); mIsDocked = mDockManager.isDocked(); } mWakefulnessLifecycle.addObserver(new WakefulnessLifecycle.Observer() { @Override public void onFinishedWakingUp() { mAnimatedToSleep = false; updateStates(); } @Override public void onFinishedGoingToSleep() { mAnimatedToSleep = mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying(); updateStates(); } }); } @Override Loading Loading @@ -982,7 +1004,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb boolean hideWhileDozing = mDozing && biometricMode != MODE_WAKE_AND_UNLOCK_PULSING; boolean keyguardWithGestureNav = (keyguardShowing && !mDozing || mPulsing && !mIsDocked) && mGesturalNav; return (!keyguardShowing && !hideWhileDozing || mBouncer.isShowing() return (!mAnimatedToSleep && !keyguardShowing && !hideWhileDozing || mBouncer.isShowing() || mRemoteInputActive || keyguardWithGestureNav || mGlobalActionsVisible); } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +25 −1 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.systemui.statusbar.phone; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; Loading @@ -41,6 +44,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.keyguard.FaceAuthScreenBrightnessController; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.statusbar.NotificationMediaManager; Loading Loading @@ -90,7 +94,10 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { private KeyguardBouncer.Factory mKeyguardBouncerFactory; @Mock private KeyguardBouncer mBouncer; @Mock private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private WakefulnessLifecycle mWakefulnessLifecycle; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Before Loading @@ -101,6 +108,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { any(KeyguardBouncer.BouncerExpansionCallback.class))) .thenReturn(mBouncer); mWakefulnessLifecycle = new WakefulnessLifecycle(getContext(), null); mStatusBarKeyguardViewManager = new StatusBarKeyguardViewManager( getContext(), mViewMediatorCallback, Loading @@ -114,7 +122,9 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { mKeyguardStateController, Optional.of(mFaceAuthScreenBrightnessController), mock(NotificationMediaManager.class), mKeyguardBouncerFactory); mKeyguardBouncerFactory, mWakefulnessLifecycle, mUnlockedScreenOffAnimationController); mStatusBarKeyguardViewManager.registerStatusBar(mStatusBar, mContainer, mNotificationPanelView, mBiometrucUnlockController, mNotificationContainer, mBypassController); Loading Loading @@ -280,4 +290,18 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { verify(mBouncer).updateKeyguardPosition(1.0f); } @Test public void testNavBarHiddenWhenSleepAnimationStarts() { mStatusBarKeyguardViewManager.hide(0 /* startTime */, 0 /* fadeoutDuration */); assertTrue(mStatusBarKeyguardViewManager.isNavBarVisible()); // Verify that the nav bar is hidden when the screen off animation starts doReturn(true).when(mUnlockedScreenOffAnimationController).isScreenOffAnimationPlaying(); mWakefulnessLifecycle.dispatchFinishedGoingToSleep(); assertFalse(mStatusBarKeyguardViewManager.isNavBarVisible()); mWakefulnessLifecycle.dispatchFinishedWakingUp(); assertTrue(mStatusBarKeyguardViewManager.isNavBarVisible()); } }