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

Commit d7027f52 authored by Vincent Wang's avatar Vincent Wang Committed by Automerger Merge Worker
Browse files

Merge "Fix The pop-up security lock will disappear after rotate" into...

Merge "Fix The pop-up security lock will disappear after rotate" into tm-qpr-dev am: f2b50de5 am: aebeb9f6

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



Change-Id: I7bb9f5185967f642c536a16761b88595295e35ca
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 0d7db317 aebeb9f6
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -129,6 +129,8 @@ public class AuthContainerView extends LinearLayout
    private final Set<Integer> mFailedModalities = new HashSet<Integer>();

    private final @Background DelayableExecutor mBackgroundExecutor;
    private int mOrientation;
    private boolean mSkipFirstLostFocus = false;

    // Non-null only if the dialog is in the act of dismissing and has not sent the reason yet.
    @Nullable @AuthDialogCallback.DismissedReason private Integer mPendingCallbackReason;
@@ -441,6 +443,12 @@ public class AuthContainerView extends LinearLayout
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        if (!hasWindowFocus) {
            //it's a workaround to avoid closing BP incorrectly
            //BP gets a onWindowFocusChanged(false) and then gets a onWindowFocusChanged(true)
            if (mSkipFirstLostFocus) {
                mSkipFirstLostFocus = false;
                return;
            }
            Log.v(TAG, "Lost window focus, dismissing the dialog");
            animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
        }
@@ -450,6 +458,9 @@ public class AuthContainerView extends LinearLayout
    public void onAttachedToWindow() {
        super.onAttachedToWindow();

        //save the first orientation
        mOrientation = getResources().getConfiguration().orientation;

        mWakefulnessLifecycle.addObserver(this);

        if (Utils.isBiometricAllowed(mConfig.mPromptInfo)) {
@@ -621,6 +632,12 @@ public class AuthContainerView extends LinearLayout
        if (mBiometricView != null) {
            mBiometricView.restoreState(savedState);
        }

        if (savedState != null) {
            mSkipFirstLostFocus = savedState.getBoolean(
                    AuthDialog.KEY_BIOMETRIC_ORIENTATION_CHANGED);
        }

        wm.addView(this, getLayoutParams(mWindowToken, mConfig.mPromptInfo.getTitle()));
    }

@@ -677,6 +694,10 @@ public class AuthContainerView extends LinearLayout
                mBiometricView != null && mCredentialView == null);
        outState.putBoolean(AuthDialog.KEY_CREDENTIAL_SHOWING, mCredentialView != null);

        if (mOrientation != getResources().getConfiguration().orientation) {
            outState.putBoolean(AuthDialog.KEY_BIOMETRIC_ORIENTATION_CHANGED, true);
        }

        if (mBiometricView != null) {
            mBiometricView.onSaveState(outState);
        }
+2 −0
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@ public interface AuthDialog extends Dumpable {
    String KEY_BIOMETRIC_SENSOR_TYPE = "sensor_type";
    String KEY_BIOMETRIC_SENSOR_PROPS = "sensor_props";

    String KEY_BIOMETRIC_ORIENTATION_CHANGED = "orientation_changed";

    int SIZE_UNKNOWN = 0;
    /**
     * Minimal UI, showing only biometric icon.