DO NOT MERGE [1.5/N] side fps bouncer - Update UdfpsKeyguardViewControllerBaseTest

It shouldn't run tests on its own. Only its
extending classes should run.

Test: atest AAAPlusPlusVerifySysuiRequiredTestPropertiesTest
Bug: 237362467
Change-Id: Ib03445206098949c6e0b09a948e4caf92c4b9be3
This commit is contained in:
Beverly
2022-11-02 13:20:01 +00:00
committed by Beverly Tai
parent 71f0123c9d
commit 14a53f10b0
2 changed files with 356 additions and 355 deletions

View File

@@ -16,15 +16,7 @@
package com.android.systemui.biometrics;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -44,7 +36,6 @@ import com.android.systemui.shade.ShadeExpansionChangeEvent;
import com.android.systemui.shade.ShadeExpansionListener;
import com.android.systemui.shade.ShadeExpansionStateManager;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.KeyguardBouncer;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.SystemUIDialogManager;
@@ -55,7 +46,6 @@ import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.time.FakeSystemClock;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
@@ -114,351 +104,6 @@ public class UdfpsKeyguardViewControllerBaseTest extends SysuiTestCase {
mController = createUdfpsKeyguardViewController();
}
@Test
public void testRegistersExpansionChangedListenerOnAttached() {
mController.onViewAttached();
captureStatusBarExpansionListeners();
}
@Test
public void testRegistersStatusBarStateListenersOnAttached() {
mController.onViewAttached();
captureStatusBarStateListeners();
}
@Test
public void testViewControllerQueriesSBStateOnAttached() {
mController.onViewAttached();
verify(mStatusBarStateController).getState();
verify(mStatusBarStateController).getDozeAmount();
final float dozeAmount = .88f;
when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE_LOCKED);
when(mStatusBarStateController.getDozeAmount()).thenReturn(dozeAmount);
captureStatusBarStateListeners();
mController.onViewAttached();
verify(mView, atLeast(1)).setPauseAuth(true);
verify(mView).onDozeAmountChanged(dozeAmount, dozeAmount,
UdfpsKeyguardView.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN);
}
@Test
public void testListenersUnregisteredOnDetached() {
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
mController.onViewDetached();
verify(mStatusBarStateController).removeCallback(mStatusBarStateListener);
for (ShadeExpansionListener listener : mExpansionListeners) {
verify(mShadeExpansionStateManager).removeExpansionListener(listener);
}
verify(mKeyguardStateController).removeCallback(mKeyguardStateControllerCallback);
}
@Test
public void testDozeEventsSentToView() {
mController.onViewAttached();
captureStatusBarStateListeners();
final float linear = .55f;
final float eased = .65f;
mStatusBarStateListener.onDozeAmountChanged(linear, eased);
verify(mView).onDozeAmountChanged(linear, eased,
UdfpsKeyguardView.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN);
}
@Test
public void testShouldPauseAuthUnpausedAlpha0() {
mController.onViewAttached();
captureStatusBarStateListeners();
when(mView.getUnpausedAlpha()).thenReturn(0);
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testFadeFromDialogSuggestedAlpha() {
// GIVEN view is attached and status bar expansion is 1f
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
updateStatusBarExpansion(1f, true);
reset(mView);
// WHEN dialog suggested alpha is .6f
when(mView.getDialogSuggestedAlpha()).thenReturn(.6f);
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
// THEN alpha is updated based on dialog suggested alpha
verify(mView).setUnpausedAlpha((int) (.6f * 255));
}
@Test
public void testShouldNotPauseAuthOnKeyguard() {
mController.onViewAttached();
captureStatusBarStateListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
assertFalse(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthIsLaunchTransitionFadingAway() {
// GIVEN view is attached and we're on the keyguard (see testShouldNotPauseAuthOnKeyguard)
mController.onViewAttached();
captureStatusBarStateListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
// WHEN isLaunchTransitionFadingAway=true
captureKeyguardStateControllerCallback();
when(mKeyguardStateController.isLaunchTransitionFadingAway()).thenReturn(true);
mKeyguardStateControllerCallback.onLaunchTransitionFadingAwayChanged();
// THEN pause auth
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthOnShadeLocked() {
mController.onViewAttached();
captureStatusBarStateListeners();
sendStatusBarStateChanged(StatusBarState.SHADE_LOCKED);
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthOnShade() {
mController.onViewAttached();
captureStatusBarStateListeners();
// WHEN not on keyguard yet (shade = home)
sendStatusBarStateChanged(StatusBarState.SHADE);
// THEN pause auth
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthAnimatingScreenOffFromShade() {
mController.onViewAttached();
captureStatusBarStateListeners();
// WHEN transitioning from home/shade => keyguard + animating screen off
mStatusBarStateListener.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD);
when(mKeyguardViewMediator.isAnimatingScreenOff()).thenReturn(true);
// THEN pause auth
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testDoNotPauseAuthAnimatingScreenOffFromLS() {
mController.onViewAttached();
captureStatusBarStateListeners();
// WHEN animating screen off transition from LS => AOD
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
when(mKeyguardViewMediator.isAnimatingScreenOff()).thenReturn(true);
// THEN don't pause auth
assertFalse(mController.shouldPauseAuth());
}
@Test
public void testOverrideShouldPauseAuthOnShadeLocked() {
mController.onViewAttached();
captureStatusBarStateListeners();
captureAltAuthInterceptor();
sendStatusBarStateChanged(StatusBarState.SHADE_LOCKED);
assertTrue(mController.shouldPauseAuth());
mAltAuthInterceptor.showAlternateAuthBouncer(); // force show
assertFalse(mController.shouldPauseAuth());
assertTrue(mAltAuthInterceptor.isShowingAlternateAuthBouncer());
mAltAuthInterceptor.hideAlternateAuthBouncer(); // stop force show
assertTrue(mController.shouldPauseAuth());
assertFalse(mAltAuthInterceptor.isShowingAlternateAuthBouncer());
}
@Test
public void testOnDetachedStateReset() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// WHEN view is detached
mController.onViewDetached();
// THEN remove alternate auth interceptor
verify(mStatusBarKeyguardViewManager).removeAlternateAuthInterceptor(mAltAuthInterceptor);
}
@Test
public void testHiddenUdfpsBouncerOnTouchOutside_nothingHappens() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// GIVEN udfps bouncer isn't showing
mAltAuthInterceptor.hideAlternateAuthBouncer();
// WHEN touch is observed outside the view
mController.onTouchOutsideView();
// THEN bouncer / alt auth methods are never called
verify(mStatusBarKeyguardViewManager, never()).showBouncer(anyBoolean());
verify(mStatusBarKeyguardViewManager, never()).resetAlternateAuth(anyBoolean());
}
@Test
public void testShowingUdfpsBouncerOnTouchOutsideWithinThreshold_nothingHappens() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// GIVEN udfps bouncer is showing
mAltAuthInterceptor.showAlternateAuthBouncer();
// WHEN touch is observed outside the view 200ms later (just within threshold)
mSystemClock.advanceTime(200);
mController.onTouchOutsideView();
// THEN bouncer / alt auth methods are never called because not enough time has passed
verify(mStatusBarKeyguardViewManager, never()).showBouncer(anyBoolean());
verify(mStatusBarKeyguardViewManager, never()).resetAlternateAuth(anyBoolean());
}
@Test
public void testShowingUdfpsBouncerOnTouchOutsideAboveThreshold_showInputBouncer() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// GIVEN udfps bouncer is showing
mAltAuthInterceptor.showAlternateAuthBouncer();
// WHEN touch is observed outside the view 205ms later
mSystemClock.advanceTime(205);
mController.onTouchOutsideView();
// THEN show the bouncer
verify(mStatusBarKeyguardViewManager).showBouncer(eq(true));
}
@Test
public void testFadeInWithStatusBarExpansion() {
// GIVEN view is attached
mController.onViewAttached();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
reset(mView);
// WHEN status bar expansion is 0
updateStatusBarExpansion(0, true);
// THEN alpha is 0
verify(mView).setUnpausedAlpha(0);
}
@Test
public void testShowUdfpsBouncer() {
// GIVEN view is attached and status bar expansion is 0
mController.onViewAttached();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
captureAltAuthInterceptor();
updateStatusBarExpansion(0, true);
reset(mView);
when(mView.getContext()).thenReturn(mResourceContext);
when(mResourceContext.getString(anyInt())).thenReturn("test string");
// WHEN status bar expansion is 0 but udfps bouncer is requested
mAltAuthInterceptor.showAlternateAuthBouncer();
// THEN alpha is 255
verify(mView).setUnpausedAlpha(255);
}
@Test
public void testTransitionToFullShadeProgress() {
// GIVEN view is attached and status bar expansion is 1f
mController.onViewAttached();
captureStatusBarExpansionListeners();
updateStatusBarExpansion(1f, true);
reset(mView);
when(mView.getDialogSuggestedAlpha()).thenReturn(1f);
// WHEN we're transitioning to the full shade
float transitionProgress = .6f;
mController.setTransitionToFullShadeProgress(transitionProgress);
// THEN alpha is between 0 and 255
verify(mView).setUnpausedAlpha((int) ((1f - transitionProgress) * 255));
}
@Test
public void testShowUdfpsBouncer_transitionToFullShadeProgress() {
// GIVEN view is attached and status bar expansion is 1f
mController.onViewAttached();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
captureAltAuthInterceptor();
updateStatusBarExpansion(1f, true);
mAltAuthInterceptor.showAlternateAuthBouncer();
reset(mView);
// WHEN we're transitioning to the full shade
mController.setTransitionToFullShadeProgress(1.0f);
// THEN alpha is 255 (b/c udfps bouncer is requested)
verify(mView).setUnpausedAlpha(255);
}
@Test
public void testUpdatePanelExpansion_pauseAuth() {
// GIVEN view is attached + on the keyguard
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
reset(mView);
// WHEN panelViewExpansion changes to hide
when(mView.getUnpausedAlpha()).thenReturn(0);
updateStatusBarExpansion(0f, false);
// THEN pause auth is updated to PAUSE
verify(mView, atLeastOnce()).setPauseAuth(true);
}
@Test
public void testUpdatePanelExpansion_unpauseAuth() {
// GIVEN view is attached + on the keyguard + panel expansion is 0f
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
reset(mView);
// WHEN panelViewExpansion changes to expanded
when(mView.getUnpausedAlpha()).thenReturn(255);
updateStatusBarExpansion(1f, true);
// THEN pause auth is updated to NOT pause
verify(mView, atLeastOnce()).setPauseAuth(false);
}
protected void sendStatusBarStateChanged(int statusBarState) {
mStatusBarStateListener.onStateChanged(statusBarState);
}

View File

@@ -16,7 +16,15 @@
package com.android.systemui.biometrics;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -25,6 +33,7 @@ import android.testing.TestableLooper.RunWithLooper;
import androidx.test.filters.SmallTest;
import com.android.systemui.shade.ShadeExpansionListener;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.KeyguardBouncer;
@@ -60,6 +69,353 @@ public class UdfpsKeyguardViewControllerTest extends UdfpsKeyguardViewController
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testRegistersExpansionChangedListenerOnAttached() {
mController.onViewAttached();
captureStatusBarExpansionListeners();
}
@Test
public void testRegistersStatusBarStateListenersOnAttached() {
mController.onViewAttached();
captureStatusBarStateListeners();
}
@Test
public void testViewControllerQueriesSBStateOnAttached() {
mController.onViewAttached();
verify(mStatusBarStateController).getState();
verify(mStatusBarStateController).getDozeAmount();
final float dozeAmount = .88f;
when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE_LOCKED);
when(mStatusBarStateController.getDozeAmount()).thenReturn(dozeAmount);
captureStatusBarStateListeners();
mController.onViewAttached();
verify(mView, atLeast(1)).setPauseAuth(true);
verify(mView).onDozeAmountChanged(dozeAmount, dozeAmount,
UdfpsKeyguardView.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN);
}
@Test
public void testListenersUnregisteredOnDetached() {
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
mController.onViewDetached();
verify(mStatusBarStateController).removeCallback(mStatusBarStateListener);
for (ShadeExpansionListener listener : mExpansionListeners) {
verify(mShadeExpansionStateManager).removeExpansionListener(listener);
}
verify(mKeyguardStateController).removeCallback(mKeyguardStateControllerCallback);
}
@Test
public void testDozeEventsSentToView() {
mController.onViewAttached();
captureStatusBarStateListeners();
final float linear = .55f;
final float eased = .65f;
mStatusBarStateListener.onDozeAmountChanged(linear, eased);
verify(mView).onDozeAmountChanged(linear, eased,
UdfpsKeyguardView.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN);
}
@Test
public void testShouldPauseAuthUnpausedAlpha0() {
mController.onViewAttached();
captureStatusBarStateListeners();
when(mView.getUnpausedAlpha()).thenReturn(0);
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testFadeFromDialogSuggestedAlpha() {
// GIVEN view is attached and status bar expansion is 1f
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
updateStatusBarExpansion(1f, true);
reset(mView);
// WHEN dialog suggested alpha is .6f
when(mView.getDialogSuggestedAlpha()).thenReturn(.6f);
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
// THEN alpha is updated based on dialog suggested alpha
verify(mView).setUnpausedAlpha((int) (.6f * 255));
}
@Test
public void testShouldNotPauseAuthOnKeyguard() {
mController.onViewAttached();
captureStatusBarStateListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
assertFalse(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthIsLaunchTransitionFadingAway() {
// GIVEN view is attached and we're on the keyguard (see testShouldNotPauseAuthOnKeyguard)
mController.onViewAttached();
captureStatusBarStateListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
// WHEN isLaunchTransitionFadingAway=true
captureKeyguardStateControllerCallback();
when(mKeyguardStateController.isLaunchTransitionFadingAway()).thenReturn(true);
mKeyguardStateControllerCallback.onLaunchTransitionFadingAwayChanged();
// THEN pause auth
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthOnShadeLocked() {
mController.onViewAttached();
captureStatusBarStateListeners();
sendStatusBarStateChanged(StatusBarState.SHADE_LOCKED);
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthOnShade() {
mController.onViewAttached();
captureStatusBarStateListeners();
// WHEN not on keyguard yet (shade = home)
sendStatusBarStateChanged(StatusBarState.SHADE);
// THEN pause auth
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testShouldPauseAuthAnimatingScreenOffFromShade() {
mController.onViewAttached();
captureStatusBarStateListeners();
// WHEN transitioning from home/shade => keyguard + animating screen off
mStatusBarStateListener.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD);
when(mKeyguardViewMediator.isAnimatingScreenOff()).thenReturn(true);
// THEN pause auth
assertTrue(mController.shouldPauseAuth());
}
@Test
public void testDoNotPauseAuthAnimatingScreenOffFromLS() {
mController.onViewAttached();
captureStatusBarStateListeners();
// WHEN animating screen off transition from LS => AOD
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
when(mKeyguardViewMediator.isAnimatingScreenOff()).thenReturn(true);
// THEN don't pause auth
assertFalse(mController.shouldPauseAuth());
}
@Test
public void testOverrideShouldPauseAuthOnShadeLocked() {
mController.onViewAttached();
captureStatusBarStateListeners();
captureAltAuthInterceptor();
sendStatusBarStateChanged(StatusBarState.SHADE_LOCKED);
assertTrue(mController.shouldPauseAuth());
mAltAuthInterceptor.showAlternateAuthBouncer(); // force show
assertFalse(mController.shouldPauseAuth());
assertTrue(mAltAuthInterceptor.isShowingAlternateAuthBouncer());
mAltAuthInterceptor.hideAlternateAuthBouncer(); // stop force show
assertTrue(mController.shouldPauseAuth());
assertFalse(mAltAuthInterceptor.isShowingAlternateAuthBouncer());
}
@Test
public void testOnDetachedStateReset() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// WHEN view is detached
mController.onViewDetached();
// THEN remove alternate auth interceptor
verify(mStatusBarKeyguardViewManager).removeAlternateAuthInterceptor(mAltAuthInterceptor);
}
@Test
public void testHiddenUdfpsBouncerOnTouchOutside_nothingHappens() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// GIVEN udfps bouncer isn't showing
mAltAuthInterceptor.hideAlternateAuthBouncer();
// WHEN touch is observed outside the view
mController.onTouchOutsideView();
// THEN bouncer / alt auth methods are never called
verify(mStatusBarKeyguardViewManager, never()).showBouncer(anyBoolean());
verify(mStatusBarKeyguardViewManager, never()).resetAlternateAuth(anyBoolean());
}
@Test
public void testShowingUdfpsBouncerOnTouchOutsideWithinThreshold_nothingHappens() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// GIVEN udfps bouncer is showing
mAltAuthInterceptor.showAlternateAuthBouncer();
// WHEN touch is observed outside the view 200ms later (just within threshold)
mSystemClock.advanceTime(200);
mController.onTouchOutsideView();
// THEN bouncer / alt auth methods are never called because not enough time has passed
verify(mStatusBarKeyguardViewManager, never()).showBouncer(anyBoolean());
verify(mStatusBarKeyguardViewManager, never()).resetAlternateAuth(anyBoolean());
}
@Test
public void testShowingUdfpsBouncerOnTouchOutsideAboveThreshold_showInputBouncer() {
// GIVEN view is attached
mController.onViewAttached();
captureAltAuthInterceptor();
// GIVEN udfps bouncer is showing
mAltAuthInterceptor.showAlternateAuthBouncer();
// WHEN touch is observed outside the view 205ms later
mSystemClock.advanceTime(205);
mController.onTouchOutsideView();
// THEN show the bouncer
verify(mStatusBarKeyguardViewManager).showBouncer(eq(true));
}
@Test
public void testFadeInWithStatusBarExpansion() {
// GIVEN view is attached
mController.onViewAttached();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
reset(mView);
// WHEN status bar expansion is 0
updateStatusBarExpansion(0, true);
// THEN alpha is 0
verify(mView).setUnpausedAlpha(0);
}
@Test
public void testShowUdfpsBouncer() {
// GIVEN view is attached and status bar expansion is 0
mController.onViewAttached();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
captureAltAuthInterceptor();
updateStatusBarExpansion(0, true);
reset(mView);
when(mView.getContext()).thenReturn(mResourceContext);
when(mResourceContext.getString(anyInt())).thenReturn("test string");
// WHEN status bar expansion is 0 but udfps bouncer is requested
mAltAuthInterceptor.showAlternateAuthBouncer();
// THEN alpha is 255
verify(mView).setUnpausedAlpha(255);
}
@Test
public void testTransitionToFullShadeProgress() {
// GIVEN view is attached and status bar expansion is 1f
mController.onViewAttached();
captureStatusBarExpansionListeners();
updateStatusBarExpansion(1f, true);
reset(mView);
when(mView.getDialogSuggestedAlpha()).thenReturn(1f);
// WHEN we're transitioning to the full shade
float transitionProgress = .6f;
mController.setTransitionToFullShadeProgress(transitionProgress);
// THEN alpha is between 0 and 255
verify(mView).setUnpausedAlpha((int) ((1f - transitionProgress) * 255));
}
@Test
public void testShowUdfpsBouncer_transitionToFullShadeProgress() {
// GIVEN view is attached and status bar expansion is 1f
mController.onViewAttached();
captureStatusBarExpansionListeners();
captureKeyguardStateControllerCallback();
captureAltAuthInterceptor();
updateStatusBarExpansion(1f, true);
mAltAuthInterceptor.showAlternateAuthBouncer();
reset(mView);
// WHEN we're transitioning to the full shade
mController.setTransitionToFullShadeProgress(1.0f);
// THEN alpha is 255 (b/c udfps bouncer is requested)
verify(mView).setUnpausedAlpha(255);
}
@Test
public void testUpdatePanelExpansion_pauseAuth() {
// GIVEN view is attached + on the keyguard
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
reset(mView);
// WHEN panelViewExpansion changes to hide
when(mView.getUnpausedAlpha()).thenReturn(0);
updateStatusBarExpansion(0f, false);
// THEN pause auth is updated to PAUSE
verify(mView, atLeastOnce()).setPauseAuth(true);
}
@Test
public void testUpdatePanelExpansion_unpauseAuth() {
// GIVEN view is attached + on the keyguard + panel expansion is 0f
mController.onViewAttached();
captureStatusBarStateListeners();
captureStatusBarExpansionListeners();
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
reset(mView);
// WHEN panelViewExpansion changes to expanded
when(mView.getUnpausedAlpha()).thenReturn(255);
updateStatusBarExpansion(1f, true);
// THEN pause auth is updated to NOT pause
verify(mView, atLeastOnce()).setPauseAuth(false);
}
private void captureBouncerExpansionCallback() {
verify(mBouncer).addBouncerExpansionCallback(mBouncerExpansionCallbackCaptor.capture());
mBouncerExpansionCallback = mBouncerExpansionCallbackCaptor.getValue();