Retain udfps auth bouncer after orientation change
But also make sure to reset the auth bouncer state after hiding the udfps overlay Test: manual, atest UdfpsControllerTest Fixes: 194868950 Change-Id: I2849615795c43d0fbb213415f804c396f9259442
This commit is contained in:
@@ -706,15 +706,21 @@ public class UdfpsController implements DozeReceiver {
|
||||
return mCoreLayoutParams;
|
||||
}
|
||||
|
||||
|
||||
private void onOrientationChanged() {
|
||||
// When the configuration changes it's almost always necessary to destroy and re-create
|
||||
// the overlay's window to pass it the new LayoutParams.
|
||||
// Hiding the overlay will destroy its window. It's safe to hide the overlay regardless
|
||||
// of whether it is already hidden.
|
||||
final boolean wasShowingAltAuth = mKeyguardViewManager.isShowingAlternateAuth();
|
||||
hideUdfpsOverlay();
|
||||
|
||||
// If the overlay needs to be shown, this will re-create and show the overlay with the
|
||||
// updated LayoutParams. Otherwise, the overlay will remain hidden.
|
||||
updateOverlay();
|
||||
if (wasShowingAltAuth) {
|
||||
mKeyguardViewManager.showGenericBouncer(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void showUdfpsOverlay(@NonNull ServerRequest request) {
|
||||
@@ -820,10 +826,14 @@ public class UdfpsController implements DozeReceiver {
|
||||
Log.v(TAG, "hideUdfpsOverlay | removing window");
|
||||
// Reset the controller back to its starting state.
|
||||
onFingerUp();
|
||||
boolean wasShowingAltAuth = mKeyguardViewManager.isShowingAlternateAuth();
|
||||
mWindowManager.removeView(mView);
|
||||
mView.setOnTouchListener(null);
|
||||
mView.setOnHoverListener(null);
|
||||
mView.setAnimationViewController(null);
|
||||
if (wasShowingAltAuth) {
|
||||
mKeyguardViewManager.resetAlternateAuth(true);
|
||||
}
|
||||
mAccessibilityManager.removeTouchExplorationStateChangeListener(
|
||||
mTouchExplorationStateChangeListener);
|
||||
mView = null;
|
||||
|
||||
@@ -100,6 +100,12 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
|
||||
return "UdfpsKeyguardViewController";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInit() {
|
||||
super.onInit();
|
||||
mKeyguardViewManager.setAlternateAuthInterceptor(mAlternateAuthInterceptor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onViewAttached() {
|
||||
super.onViewAttached();
|
||||
|
||||
@@ -303,8 +303,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
* Sets a new alt auth interceptor.
|
||||
*/
|
||||
public void setAlternateAuthInterceptor(@NonNull AlternateAuthInterceptor authInterceptor) {
|
||||
mAlternateAuthInterceptor = authInterceptor;
|
||||
resetAlternateAuth(false);
|
||||
if (!Objects.equals(mAlternateAuthInterceptor, authInterceptor)) {
|
||||
mAlternateAuthInterceptor = authInterceptor;
|
||||
resetAlternateAuth(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void registerListeners() {
|
||||
|
||||
@@ -416,6 +416,21 @@ public class UdfpsControllerTest extends SysuiTestCase {
|
||||
verify(mWindowManager).removeView(eq(mUdfpsView));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hideUdfpsOverlay_resetsAltAuthBouncerWhenShowing() throws RemoteException {
|
||||
// GIVEN overlay was showing and the udfps bouncer is showing
|
||||
mOverlayController.showUdfpsOverlay(TEST_UDFPS_SENSOR_ID,
|
||||
IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD, mUdfpsOverlayControllerCallback);
|
||||
when(mStatusBarKeyguardViewManager.isShowingAlternateAuth()).thenReturn(true);
|
||||
|
||||
// WHEN the overlay is hidden
|
||||
mOverlayController.hideUdfpsOverlay(TEST_UDFPS_SENSOR_ID);
|
||||
mFgExecutor.runAllReady();
|
||||
|
||||
// THEN the udfps bouncer is reset
|
||||
verify(mStatusBarKeyguardViewManager).resetAlternateAuth(eq(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubscribesToOrientationChangesWhenShowingOverlay() throws Exception {
|
||||
mOverlayController.showUdfpsOverlay(TEST_UDFPS_SENSOR_ID,
|
||||
|
||||
Reference in New Issue
Block a user