Merge "Fix issue where onKeyguardOccludedChanged isn't called when occluded changes" into sc-v2-dev

This commit is contained in:
Tom Natan
2021-11-15 15:45:07 +00:00
committed by Android (Google) Code Review
2 changed files with 52 additions and 8 deletions

View File

@@ -627,7 +627,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
SysUiStatsLog.write(SysUiStatsLog.KEYGUARD_STATE_CHANGED, SysUiStatsLog.write(SysUiStatsLog.KEYGUARD_STATE_CHANGED,
SysUiStatsLog.KEYGUARD_STATE_CHANGED__STATE__OCCLUDED); SysUiStatsLog.KEYGUARD_STATE_CHANGED__STATE__OCCLUDED);
if (mStatusBar.isInLaunchTransition()) { if (mStatusBar.isInLaunchTransition()) {
mOccluded = true; setOccludedAndUpdateStates(true);
mStatusBar.fadeKeyguardAfterLaunchTransition(null /* beforeFading */, mStatusBar.fadeKeyguardAfterLaunchTransition(null /* beforeFading */,
new Runnable() { new Runnable() {
@Override @Override
@@ -640,7 +640,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
} }
if (mStatusBar.isLaunchingActivityOverLockscreen()) { if (mStatusBar.isLaunchingActivityOverLockscreen()) {
mOccluded = true; setOccludedAndUpdateStates(true);
// When isLaunchingActivityOverLockscreen() is true, we know for sure that the post // When isLaunchingActivityOverLockscreen() is true, we know for sure that the post
// collapse runnables will be run. // collapse runnables will be run.
@@ -655,7 +655,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
SysUiStatsLog.KEYGUARD_STATE_CHANGED__STATE__SHOWN); SysUiStatsLog.KEYGUARD_STATE_CHANGED__STATE__SHOWN);
} }
boolean isOccluding = !mOccluded && occluded; boolean isOccluding = !mOccluded && occluded;
mOccluded = occluded; setOccludedAndUpdateStates(occluded);
if (mShowing) { if (mShowing) {
mMediaManager.updateMediaMetaData(false, animate && !occluded); mMediaManager.updateMediaMetaData(false, animate && !occluded);
} }
@@ -672,6 +672,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
} }
} }
private void setOccludedAndUpdateStates(boolean occluded) {
mOccluded = occluded;
updateStates();
}
public boolean isOccluded() { public boolean isOccluded() {
return mOccluded; return mOccluded;
} }

View File

@@ -61,8 +61,6 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import dagger.Lazy;
@SmallTest @SmallTest
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper @TestableLooper.RunWithLooper
@@ -87,6 +85,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
@Mock @Mock
private SysuiStatusBarStateController mStatusBarStateController; private SysuiStatusBarStateController mStatusBarStateController;
@Mock @Mock
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@Mock
private View mNotificationContainer; private View mNotificationContainer;
@Mock @Mock
private KeyguardBypassController mBypassController; private KeyguardBypassController mBypassController;
@@ -103,7 +103,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
@Mock @Mock
private KeyguardMessageArea mKeyguardMessageArea; private KeyguardMessageArea mKeyguardMessageArea;
@Mock @Mock
private Lazy<ShadeController> mShadeController; private ShadeController mShadeController;
private WakefulnessLifecycle mWakefulnessLifecycle; private WakefulnessLifecycle mWakefulnessLifecycle;
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
@@ -127,7 +127,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
mLockPatternUtils, mLockPatternUtils,
mStatusBarStateController, mStatusBarStateController,
mock(ConfigurationController.class), mock(ConfigurationController.class),
mock(KeyguardUpdateMonitor.class), mKeyguardUpdateMonitor,
mock(NavigationModeController.class), mock(NavigationModeController.class),
mock(DockManager.class), mock(DockManager.class),
mock(NotificationShadeWindowController.class), mock(NotificationShadeWindowController.class),
@@ -137,7 +137,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
mWakefulnessLifecycle, mWakefulnessLifecycle,
mUnlockedScreenOffAnimationController, mUnlockedScreenOffAnimationController,
mKeyguardMessageAreaFactory, mKeyguardMessageAreaFactory,
mShadeController); () -> mShadeController);
mStatusBarKeyguardViewManager.registerStatusBar( mStatusBarKeyguardViewManager.registerStatusBar(
mStatusBar, mStatusBar,
mNotificationPanelView, mNotificationPanelView,
@@ -291,6 +291,45 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
verify(mStatusBar, never()).animateKeyguardUnoccluding(); verify(mStatusBar, never()).animateKeyguardUnoccluding();
} }
@Test
public void setOccluded_onKeyguardOccludedChangedCalledCorrectly() {
mStatusBarKeyguardViewManager.setOccluded(false /* occluded */, false /* animated */);
verify(mKeyguardUpdateMonitor).onKeyguardOccludedChanged(false);
clearInvocations(mKeyguardUpdateMonitor);
mStatusBarKeyguardViewManager.setOccluded(false /* occluded */, false /* animated */);
verify(mKeyguardUpdateMonitor, never()).onKeyguardOccludedChanged(anyBoolean());
clearInvocations(mKeyguardUpdateMonitor);
mStatusBarKeyguardViewManager.setOccluded(true /* occluded */, false /* animated */);
verify(mKeyguardUpdateMonitor).onKeyguardOccludedChanged(true);
clearInvocations(mKeyguardUpdateMonitor);
mStatusBarKeyguardViewManager.setOccluded(true /* occluded */, false /* animated */);
verify(mKeyguardUpdateMonitor, never()).onKeyguardOccludedChanged(anyBoolean());
}
@Test
public void setOccluded_isInLaunchTransition_onKeyguardOccludedChangedCalled() {
when(mStatusBar.isInLaunchTransition()).thenReturn(true);
mStatusBarKeyguardViewManager.show(null);
mStatusBarKeyguardViewManager.setOccluded(true /* occluded */, false /* animated */);
verify(mKeyguardUpdateMonitor).onKeyguardOccludedChanged(true);
}
@Test
public void setOccluded_isLaunchingActivityOverLockscreen_onKeyguardOccludedChangedCalled() {
when(mStatusBar.isLaunchingActivityOverLockscreen()).thenReturn(true);
mStatusBarKeyguardViewManager.show(null);
mStatusBarKeyguardViewManager.setOccluded(true /* occluded */, false /* animated */);
verify(mKeyguardUpdateMonitor).onKeyguardOccludedChanged(true);
}
@Test @Test
public void testHiding_cancelsGoneRunnable() { public void testHiding_cancelsGoneRunnable() {
OnDismissAction action = mock(OnDismissAction.class); OnDismissAction action = mock(OnDismissAction.class);