Merge "Fix udfps flicker on camera launch + exit" into sc-dev
This commit is contained in:
@@ -781,6 +781,7 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
mKeyguardViewMediator,
|
mKeyguardViewMediator,
|
||||||
mLockscreenShadeTransitionController,
|
mLockscreenShadeTransitionController,
|
||||||
mConfigurationController,
|
mConfigurationController,
|
||||||
|
mKeyguardStateController,
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
case IUdfpsOverlayController.REASON_AUTH_BP:
|
case IUdfpsOverlayController.REASON_AUTH_BP:
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import com.android.systemui.statusbar.phone.KeyguardBouncer;
|
|||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
import com.android.systemui.util.concurrency.DelayableExecutor;
|
import com.android.systemui.util.concurrency.DelayableExecutor;
|
||||||
|
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
@@ -50,6 +51,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
@NonNull private final KeyguardViewMediator mKeyguardViewMediator;
|
@NonNull private final KeyguardViewMediator mKeyguardViewMediator;
|
||||||
@NonNull private final LockscreenShadeTransitionController mLockScreenShadeTransitionController;
|
@NonNull private final LockscreenShadeTransitionController mLockScreenShadeTransitionController;
|
||||||
@NonNull private final ConfigurationController mConfigurationController;
|
@NonNull private final ConfigurationController mConfigurationController;
|
||||||
|
@NonNull private final KeyguardStateController mKeyguardStateController;
|
||||||
@NonNull private final UdfpsController mUdfpsController;
|
@NonNull private final UdfpsController mUdfpsController;
|
||||||
|
|
||||||
private boolean mShowingUdfpsBouncer;
|
private boolean mShowingUdfpsBouncer;
|
||||||
@@ -60,6 +62,9 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
private float mTransitionToFullShadeProgress;
|
private float mTransitionToFullShadeProgress;
|
||||||
private float mLastDozeAmount;
|
private float mLastDozeAmount;
|
||||||
|
|
||||||
|
private float mStatusBarExpansion;
|
||||||
|
private boolean mLaunchTransitionFadingAway;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hidden amount of pin/pattern/password bouncer
|
* hidden amount of pin/pattern/password bouncer
|
||||||
* {@link KeyguardBouncer#EXPANSION_VISIBLE} (0f) to
|
* {@link KeyguardBouncer#EXPANSION_VISIBLE} (0f) to
|
||||||
@@ -79,6 +84,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
@NonNull KeyguardViewMediator keyguardViewMediator,
|
@NonNull KeyguardViewMediator keyguardViewMediator,
|
||||||
@NonNull LockscreenShadeTransitionController transitionController,
|
@NonNull LockscreenShadeTransitionController transitionController,
|
||||||
@NonNull ConfigurationController configurationController,
|
@NonNull ConfigurationController configurationController,
|
||||||
|
@NonNull KeyguardStateController keyguardStateController,
|
||||||
@NonNull UdfpsController udfpsController) {
|
@NonNull UdfpsController udfpsController) {
|
||||||
super(view, statusBarStateController, statusBar, dumpManager);
|
super(view, statusBarStateController, statusBar, dumpManager);
|
||||||
mKeyguardViewManager = statusBarKeyguardViewManager;
|
mKeyguardViewManager = statusBarKeyguardViewManager;
|
||||||
@@ -87,6 +93,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
mKeyguardViewMediator = keyguardViewMediator;
|
mKeyguardViewMediator = keyguardViewMediator;
|
||||||
mLockScreenShadeTransitionController = transitionController;
|
mLockScreenShadeTransitionController = transitionController;
|
||||||
mConfigurationController = configurationController;
|
mConfigurationController = configurationController;
|
||||||
|
mKeyguardStateController = keyguardStateController;
|
||||||
mUdfpsController = udfpsController;
|
mUdfpsController = udfpsController;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,11 +112,14 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
|
|
||||||
mUdfpsRequested = false;
|
mUdfpsRequested = false;
|
||||||
|
|
||||||
|
mLaunchTransitionFadingAway = mKeyguardStateController.isLaunchTransitionFadingAway();
|
||||||
|
mKeyguardStateController.addCallback(mKeyguardStateControllerCallback);
|
||||||
mStatusBarState = mStatusBarStateController.getState();
|
mStatusBarState = mStatusBarStateController.getState();
|
||||||
mQsExpanded = mKeyguardViewManager.isQsExpanded();
|
mQsExpanded = mKeyguardViewManager.isQsExpanded();
|
||||||
mInputBouncerHiddenAmount = KeyguardBouncer.EXPANSION_HIDDEN;
|
mInputBouncerHiddenAmount = KeyguardBouncer.EXPANSION_HIDDEN;
|
||||||
mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing();
|
mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing();
|
||||||
mConfigurationController.addCallback(mConfigurationListener);
|
mConfigurationController.addCallback(mConfigurationListener);
|
||||||
|
mStatusBar.addExpansionChangedListener(mStatusBarExpansionChangedListener);
|
||||||
updateAlpha();
|
updateAlpha();
|
||||||
updatePauseAuth();
|
updatePauseAuth();
|
||||||
|
|
||||||
@@ -122,10 +132,12 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
super.onViewDetached();
|
super.onViewDetached();
|
||||||
mFaceDetectRunning = false;
|
mFaceDetectRunning = false;
|
||||||
|
|
||||||
|
mKeyguardStateController.removeCallback(mKeyguardStateControllerCallback);
|
||||||
mStatusBarStateController.removeCallback(mStateListener);
|
mStatusBarStateController.removeCallback(mStateListener);
|
||||||
mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor);
|
mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor);
|
||||||
mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
|
mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
|
||||||
mConfigurationController.removeCallback(mConfigurationListener);
|
mConfigurationController.removeCallback(mConfigurationListener);
|
||||||
|
mStatusBar.removeExpansionChangedListener(mStatusBarExpansionChangedListener);
|
||||||
if (mLockScreenShadeTransitionController.getUdfpsKeyguardViewController() == this) {
|
if (mLockScreenShadeTransitionController.getUdfpsKeyguardViewController() == this) {
|
||||||
mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(null);
|
mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(null);
|
||||||
}
|
}
|
||||||
@@ -140,9 +152,11 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
pw.println("mQsExpanded=" + mQsExpanded);
|
pw.println("mQsExpanded=" + mQsExpanded);
|
||||||
pw.println("mIsBouncerVisible=" + mIsBouncerVisible);
|
pw.println("mIsBouncerVisible=" + mIsBouncerVisible);
|
||||||
pw.println("mInputBouncerHiddenAmount=" + mInputBouncerHiddenAmount);
|
pw.println("mInputBouncerHiddenAmount=" + mInputBouncerHiddenAmount);
|
||||||
|
pw.println("mStatusBarExpansion=" + mStatusBarExpansion);
|
||||||
pw.println("mAlpha=" + mView.getAlpha());
|
pw.println("mAlpha=" + mView.getAlpha());
|
||||||
pw.println("mUdfpsRequested=" + mUdfpsRequested);
|
pw.println("mUdfpsRequested=" + mUdfpsRequested);
|
||||||
pw.println("mView.mUdfpsRequested=" + mView.mUdfpsRequested);
|
pw.println("mView.mUdfpsRequested=" + mView.mUdfpsRequested);
|
||||||
|
pw.println("mLaunchTransitionFadingAway=" + mLaunchTransitionFadingAway);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -189,6 +203,10 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mLaunchTransitionFadingAway) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (mStatusBarState != KEYGUARD) {
|
if (mStatusBarState != KEYGUARD) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -237,10 +255,13 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateAlpha() {
|
private void updateAlpha() {
|
||||||
// fade icon on transition to showing bouncer
|
// fade icon on transitions to showing the status bar, but if mUdfpsRequested, then
|
||||||
|
// the keyguard is occluded by some application - so instead use the input bouncer
|
||||||
|
// hidden amount to determine the fade
|
||||||
|
float expansion = mUdfpsRequested ? mInputBouncerHiddenAmount : mStatusBarExpansion;
|
||||||
int alpha = mShowingUdfpsBouncer ? 255
|
int alpha = mShowingUdfpsBouncer ? 255
|
||||||
: (int) MathUtils.constrain(
|
: (int) MathUtils.constrain(
|
||||||
MathUtils.map(.5f, .9f, 0f, 255f, mInputBouncerHiddenAmount),
|
MathUtils.map(.5f, .9f, 0f, 255f, expansion),
|
||||||
0f, 255f);
|
0f, 255f);
|
||||||
alpha *= (1.0f - mTransitionToFullShadeProgress);
|
alpha *= (1.0f - mTransitionToFullShadeProgress);
|
||||||
mView.setUnpausedAlpha(alpha);
|
mView.setUnpausedAlpha(alpha);
|
||||||
@@ -356,4 +377,23 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
|||||||
mView.updateColor();
|
mView.updateColor();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final StatusBar.ExpansionChangedListener mStatusBarExpansionChangedListener =
|
||||||
|
new StatusBar.ExpansionChangedListener() {
|
||||||
|
@Override
|
||||||
|
public void onExpansionChanged(float expansion, boolean expanded) {
|
||||||
|
mStatusBarExpansion = expansion;
|
||||||
|
updateAlpha();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private final KeyguardStateController.Callback mKeyguardStateControllerCallback =
|
||||||
|
new KeyguardStateController.Callback() {
|
||||||
|
@Override
|
||||||
|
public void onLaunchTransitionFadingAwayChanged() {
|
||||||
|
mLaunchTransitionFadingAway =
|
||||||
|
mKeyguardStateController.isLaunchTransitionFadingAway();
|
||||||
|
updatePauseAuth();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1148,6 +1148,9 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
mStatusBarView.setPanel(mNotificationPanelViewController);
|
mStatusBarView.setPanel(mNotificationPanelViewController);
|
||||||
mStatusBarView.setScrimController(mScrimController);
|
mStatusBarView.setScrimController(mScrimController);
|
||||||
mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners);
|
mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners);
|
||||||
|
for (ExpansionChangedListener listener : mExpansionChangedListeners) {
|
||||||
|
sendInitialExpansionAmount(listener);
|
||||||
|
}
|
||||||
|
|
||||||
// CollapsedStatusBarFragment re-inflated PhoneStatusBarView and both of
|
// CollapsedStatusBarFragment re-inflated PhoneStatusBarView and both of
|
||||||
// mStatusBarView.mExpanded and mStatusBarView.mBouncerShowing are false.
|
// mStatusBarView.mExpanded and mStatusBarView.mBouncerShowing are false.
|
||||||
@@ -4932,6 +4935,14 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
|
|
||||||
public void addExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
|
public void addExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
|
||||||
mExpansionChangedListeners.add(listener);
|
mExpansionChangedListeners.add(listener);
|
||||||
|
sendInitialExpansionAmount(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendInitialExpansionAmount(ExpansionChangedListener expansionChangedListener) {
|
||||||
|
if (mStatusBarView != null) {
|
||||||
|
expansionChangedListener.onExpansionChanged(mStatusBarView.getExpansionFraction(),
|
||||||
|
mStatusBarView.isExpanded());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
|
public void removeExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
|
||||||
|
|||||||
@@ -245,5 +245,11 @@ public interface KeyguardStateController extends CallbackController<Callback> {
|
|||||||
* animation.
|
* animation.
|
||||||
*/
|
*/
|
||||||
default void onKeyguardDismissAmountChanged() {}
|
default void onKeyguardDismissAmountChanged() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Triggered when the notification panel is starting or has finished
|
||||||
|
* fading away on transition to an app.
|
||||||
|
*/
|
||||||
|
default void onLaunchTransitionFadingAwayChanged() {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -343,6 +343,7 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
|
|||||||
@Override
|
@Override
|
||||||
public void setLaunchTransitionFadingAway(boolean fadingAway) {
|
public void setLaunchTransitionFadingAway(boolean fadingAway) {
|
||||||
mLaunchTransitionFadingAway = fadingAway;
|
mLaunchTransitionFadingAway = fadingAway;
|
||||||
|
new ArrayList<>(mCallbacks).forEach(Callback::onLaunchTransitionFadingAwayChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,6 +20,11 @@ import static org.junit.Assert.assertFalse;
|
|||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.Mockito.atLeast;
|
import static org.mockito.Mockito.atLeast;
|
||||||
|
|
||||||
|
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.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -30,7 +35,6 @@ import android.testing.TestableLooper.RunWithLooper;
|
|||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.dump.DumpManager;
|
import com.android.systemui.dump.DumpManager;
|
||||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||||
@@ -40,6 +44,7 @@ import com.android.systemui.statusbar.StatusBarState;
|
|||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
import com.android.systemui.util.concurrency.DelayableExecutor;
|
import com.android.systemui.util.concurrency.DelayableExecutor;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -50,6 +55,8 @@ import org.mockito.Captor;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@RunWith(AndroidTestingRunner.class)
|
@RunWith(AndroidTestingRunner.class)
|
||||||
@@ -75,6 +82,8 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
@Mock
|
@Mock
|
||||||
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||||
@Mock
|
@Mock
|
||||||
|
private KeyguardStateController mKeyguardStateController;
|
||||||
|
@Mock
|
||||||
private KeyguardViewMediator mKeyguardViewMediator;
|
private KeyguardViewMediator mKeyguardViewMediator;
|
||||||
@Mock
|
@Mock
|
||||||
private ConfigurationController mConfigurationController;
|
private ConfigurationController mConfigurationController;
|
||||||
@@ -88,14 +97,15 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
private StatusBarStateController.StateListener mStatusBarStateListener;
|
private StatusBarStateController.StateListener mStatusBarStateListener;
|
||||||
|
|
||||||
@Captor private ArgumentCaptor<StatusBar.ExpansionChangedListener> mExpansionListenerCaptor;
|
@Captor private ArgumentCaptor<StatusBar.ExpansionChangedListener> mExpansionListenerCaptor;
|
||||||
private StatusBar.ExpansionChangedListener mExpansionListener;
|
private List<StatusBar.ExpansionChangedListener> mExpansionListeners;
|
||||||
|
|
||||||
@Captor private ArgumentCaptor<StatusBarKeyguardViewManager.AlternateAuthInterceptor>
|
@Captor private ArgumentCaptor<StatusBarKeyguardViewManager.AlternateAuthInterceptor>
|
||||||
mAltAuthInterceptorCaptor;
|
mAltAuthInterceptorCaptor;
|
||||||
private StatusBarKeyguardViewManager.AlternateAuthInterceptor mAltAuthInterceptor;
|
private StatusBarKeyguardViewManager.AlternateAuthInterceptor mAltAuthInterceptor;
|
||||||
|
|
||||||
@Captor private ArgumentCaptor<KeyguardUpdateMonitorCallback> mUpdateMonitorCallbackCaptor;
|
@Captor private ArgumentCaptor<KeyguardStateController.Callback>
|
||||||
private KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback;
|
mKeyguardStateControllerCallbackCaptor;
|
||||||
|
private KeyguardStateController.Callback mKeyguardStateControllerCallback;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -114,13 +124,14 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
mKeyguardViewMediator,
|
mKeyguardViewMediator,
|
||||||
mLockscreenShadeTransitionController,
|
mLockscreenShadeTransitionController,
|
||||||
mConfigurationController,
|
mConfigurationController,
|
||||||
|
mKeyguardStateController,
|
||||||
mUdfpsController);
|
mUdfpsController);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRegistersExpansionChangedListenerOnAttached() {
|
public void testRegistersExpansionChangedListenerOnAttached() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureExpansionListener();
|
captureExpansionListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -149,11 +160,15 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
public void testListenersUnregisteredOnDetached() {
|
public void testListenersUnregisteredOnDetached() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureStatusBarStateListeners();
|
captureStatusBarStateListeners();
|
||||||
captureExpansionListener();
|
captureExpansionListeners();
|
||||||
|
captureKeyguardStateControllerCallback();
|
||||||
mController.onViewDetached();
|
mController.onViewDetached();
|
||||||
|
|
||||||
verify(mStatusBarStateController).removeCallback(mStatusBarStateListener);
|
verify(mStatusBarStateController).removeCallback(mStatusBarStateListener);
|
||||||
verify(mStatusBar).removeExpansionChangedListener(mExpansionListener);
|
for (StatusBar.ExpansionChangedListener listener : mExpansionListeners) {
|
||||||
|
verify(mStatusBar).removeExpansionChangedListener(listener);
|
||||||
|
}
|
||||||
|
verify(mKeyguardStateController).removeCallback(mKeyguardStateControllerCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -172,7 +187,6 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
public void testShouldPauseAuthBouncerShowing() {
|
public void testShouldPauseAuthBouncerShowing() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureStatusBarStateListeners();
|
captureStatusBarStateListeners();
|
||||||
captureExpansionListener();
|
|
||||||
|
|
||||||
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
|
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
|
||||||
|
|
||||||
@@ -183,18 +197,32 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
public void testShouldNotPauseAuthOnKeyguard() {
|
public void testShouldNotPauseAuthOnKeyguard() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureStatusBarStateListeners();
|
captureStatusBarStateListeners();
|
||||||
captureExpansionListener();
|
|
||||||
|
|
||||||
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
|
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
|
||||||
|
|
||||||
assertFalse(mController.shouldPauseAuth());
|
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
|
@Test
|
||||||
public void testShouldPauseAuthOnShadeLocked() {
|
public void testShouldPauseAuthOnShadeLocked() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureStatusBarStateListeners();
|
captureStatusBarStateListeners();
|
||||||
captureExpansionListener();
|
|
||||||
|
|
||||||
sendStatusBarStateChanged(StatusBarState.SHADE_LOCKED);
|
sendStatusBarStateChanged(StatusBarState.SHADE_LOCKED);
|
||||||
|
|
||||||
@@ -205,7 +233,6 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
public void testShouldPauseAuthOnShade() {
|
public void testShouldPauseAuthOnShade() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureStatusBarStateListeners();
|
captureStatusBarStateListeners();
|
||||||
captureExpansionListener();
|
|
||||||
|
|
||||||
// WHEN not on keyguard yet (shade = home)
|
// WHEN not on keyguard yet (shade = home)
|
||||||
sendStatusBarStateChanged(StatusBarState.SHADE);
|
sendStatusBarStateChanged(StatusBarState.SHADE);
|
||||||
@@ -218,7 +245,6 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
public void testShouldPauseAuthAnimatingScreenOffFromShade() {
|
public void testShouldPauseAuthAnimatingScreenOffFromShade() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureStatusBarStateListeners();
|
captureStatusBarStateListeners();
|
||||||
captureExpansionListener();
|
|
||||||
|
|
||||||
// WHEN transitioning from home/shade => keyguard + animating screen off
|
// WHEN transitioning from home/shade => keyguard + animating screen off
|
||||||
mStatusBarStateListener.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD);
|
mStatusBarStateListener.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD);
|
||||||
@@ -232,7 +258,6 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
public void testDoNotPauseAuthAnimatingScreenOffFromLS() {
|
public void testDoNotPauseAuthAnimatingScreenOffFromLS() {
|
||||||
mController.onViewAttached();
|
mController.onViewAttached();
|
||||||
captureStatusBarStateListeners();
|
captureStatusBarStateListeners();
|
||||||
captureExpansionListener();
|
|
||||||
|
|
||||||
// WHEN animating screen off transition from LS => AOD
|
// WHEN animating screen off transition from LS => AOD
|
||||||
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
|
sendStatusBarStateChanged(StatusBarState.KEYGUARD);
|
||||||
@@ -273,6 +298,21 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
verify(mStatusBarKeyguardViewManager).removeAlternateAuthInterceptor(mAltAuthInterceptor);
|
verify(mStatusBarKeyguardViewManager).removeAlternateAuthInterceptor(mAltAuthInterceptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFadeInWithStatusBarExpansion() {
|
||||||
|
// GIVEN view is attached
|
||||||
|
mController.onViewAttached();
|
||||||
|
captureExpansionListeners();
|
||||||
|
captureKeyguardStateControllerCallback();
|
||||||
|
reset(mView);
|
||||||
|
|
||||||
|
// WHEN status bar expansion is 0
|
||||||
|
updateStatusBarExpansion(0, true);
|
||||||
|
|
||||||
|
// THEN alpha is 0
|
||||||
|
verify(mView).setUnpausedAlpha(0);
|
||||||
|
}
|
||||||
|
|
||||||
private void sendStatusBarStateChanged(int statusBarState) {
|
private void sendStatusBarStateChanged(int statusBarState) {
|
||||||
mStatusBarStateListener.onStateChanged(statusBarState);
|
mStatusBarStateListener.onStateChanged(statusBarState);
|
||||||
}
|
}
|
||||||
@@ -282,9 +322,18 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
mStatusBarStateListener = mStateListenerCaptor.getValue();
|
mStatusBarStateListener = mStateListenerCaptor.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void captureExpansionListener() {
|
private void captureExpansionListeners() {
|
||||||
verify(mStatusBar).addExpansionChangedListener(mExpansionListenerCaptor.capture());
|
verify(mStatusBar, times(2))
|
||||||
mExpansionListener = mExpansionListenerCaptor.getValue();
|
.addExpansionChangedListener(mExpansionListenerCaptor.capture());
|
||||||
|
// first (index=0) is from super class, UdfpsAnimationViewController.
|
||||||
|
// second (index=1) is from UdfpsKeyguardViewController
|
||||||
|
mExpansionListeners = mExpansionListenerCaptor.getAllValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateStatusBarExpansion(float expansion, boolean expanded) {
|
||||||
|
for (StatusBar.ExpansionChangedListener listener : mExpansionListeners) {
|
||||||
|
listener.onExpansionChanged(expansion, expanded);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void captureAltAuthInterceptor() {
|
private void captureAltAuthInterceptor() {
|
||||||
@@ -293,8 +342,9 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
|
|||||||
mAltAuthInterceptor = mAltAuthInterceptorCaptor.getValue();
|
mAltAuthInterceptor = mAltAuthInterceptorCaptor.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void captureKeyguardUpdateMonitorCallback() {
|
private void captureKeyguardStateControllerCallback() {
|
||||||
verify(mKeyguardUpdateMonitor).registerCallback(mUpdateMonitorCallbackCaptor.capture());
|
verify(mKeyguardStateController).addCallback(
|
||||||
mKeyguardUpdateMonitorCallback = mUpdateMonitorCallbackCaptor.getValue();
|
mKeyguardStateControllerCallbackCaptor.capture());
|
||||||
|
mKeyguardStateControllerCallback = mKeyguardStateControllerCallbackCaptor.getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user