diff options
2 files changed, 30 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java index 11ceedf79227..77ae059a0cb9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java @@ -502,7 +502,7 @@ public class LockscreenLockIconController { * @return true if the visibility changed */ private boolean updateIconVisibility() { - boolean onAodOrDocked = mStatusBarStateController.isDozing() && mDocked; + boolean onAodOrDocked = mStatusBarStateController.isDozing() || mDocked; boolean invisible = onAodOrDocked || mWakeAndUnlockRunning || mShowingLaunchAffordance; boolean fingerprintOrBypass = mFingerprintUnlock || mKeyguardBypassController.getBypassEnabled(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LockscreenIconControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LockscreenIconControllerTest.java index 85b5d70c883c..06d0331543da 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LockscreenIconControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LockscreenIconControllerTest.java @@ -18,11 +18,13 @@ package com.android.systemui.statusbar.phone; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.res.Resources; import android.view.View; +import android.view.View.OnAttachStateChangeListener; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -48,7 +50,6 @@ import org.mockito.MockitoAnnotations; @SmallTest @RunWith(AndroidJUnit4.class) public class LockscreenIconControllerTest extends SysuiTestCase { - private LockscreenLockIconController mLockIconController; @Mock private LockscreenGestureLogger mLockscreenGestureLogger; @Mock @@ -80,11 +81,15 @@ public class LockscreenIconControllerTest extends SysuiTestCase { @Mock private HeadsUpManagerPhone mHeadsUpManagerPhone; + private LockscreenLockIconController mLockIconController; + private OnAttachStateChangeListener mOnAttachStateChangeListener; + @Before public void setUp() { MockitoAnnotations.initMocks(this); + when(mLockIcon.getContext()).thenReturn(mContext); mLockIconController = new LockscreenLockIconController( mLockscreenGestureLogger, mKeyguardUpdateMonitor, mLockPatternUtils, mShadeController, mAccessibilityController, mKeyguardIndicationController, @@ -92,7 +97,15 @@ public class LockscreenIconControllerTest extends SysuiTestCase { mKeyguardBypassController, mDockManager, mKeyguardStateController, mResources, mHeadsUpManagerPhone); + ArgumentCaptor<OnAttachStateChangeListener> onAttachStateChangeListenerArgumentCaptor = + ArgumentCaptor.forClass(OnAttachStateChangeListener.class); + + doNothing().when(mLockIcon) + .addOnAttachStateChangeListener( + onAttachStateChangeListenerArgumentCaptor.capture()); mLockIconController.attach(mLockIcon); + + mOnAttachStateChangeListener = onAttachStateChangeListenerArgumentCaptor.getValue(); } @Test @@ -114,4 +127,19 @@ public class LockscreenIconControllerTest extends SysuiTestCase { verify(mLockPatternUtils).requireCredentialEntry(anyInt()); verify(mKeyguardUpdateMonitor).onLockIconPressed(); } + + @Test + public void testVisibility_Dozing() { + ArgumentCaptor<StatusBarStateController.StateListener> sBStateListenerCaptor = + ArgumentCaptor.forClass(StatusBarStateController.StateListener.class); + + mOnAttachStateChangeListener.onViewAttachedToWindow(mLockIcon); + verify(mStatusBarStateController).addCallback(sBStateListenerCaptor.capture()); + + when(mStatusBarStateController.isDozing()).thenReturn(true); + sBStateListenerCaptor.getValue().onDozingChanged(true); + + verify(mLockIcon).updateIconVisibility(false); + + } } |