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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user