Merge "Retain udfps auth bouncer after orientation change" into sc-qpr1-dev am: 287273767f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15660017

Change-Id: Ieb3386dbb2619c1d4d2f534fabbf20005b895679
This commit is contained in:
TreeHugger Robot
2021-08-24 17:34:34 +00:00
committed by Automerger Merge Worker
4 changed files with 35 additions and 2 deletions

View File

@@ -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;

View File

@@ -101,6 +101,12 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
return "UdfpsKeyguardViewController";
}
@Override
public void onInit() {
super.onInit();
mKeyguardViewManager.setAlternateAuthInterceptor(mAlternateAuthInterceptor);
}
@Override
protected void onViewAttached() {
super.onViewAttached();

View File

@@ -308,8 +308,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() {

View File

@@ -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,