Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6273bfdb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

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

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

Change-Id: Ieb3386dbb2619c1d4d2f534fabbf20005b895679
parents 7e347965 28727376
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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;
+6 −0
Original line number Diff line number Diff line
@@ -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();
+4 −2
Original line number Diff line number Diff line
@@ -308,9 +308,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
     * Sets a new alt auth interceptor.
     */
    public void setAlternateAuthInterceptor(@NonNull AlternateAuthInterceptor authInterceptor) {
        if (!Objects.equals(mAlternateAuthInterceptor, authInterceptor)) {
            mAlternateAuthInterceptor = authInterceptor;
            resetAlternateAuth(false);
        }
    }

    private void registerListeners() {
        mKeyguardUpdateManager.registerCallback(mUpdateMonitorCallback);
+15 −0
Original line number Diff line number Diff line
@@ -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,