Loading packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +21 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -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)) { Loading Loading @@ -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())); } Loading Loading @@ -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); } Loading packages/SystemUI/src/com/android/systemui/biometrics/AuthDialog.java +2 −0 Original line number Diff line number Diff line Loading @@ -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. Loading Loading
packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +21 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -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)) { Loading Loading @@ -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())); } Loading Loading @@ -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); } Loading
packages/SystemUI/src/com/android/systemui/biometrics/AuthDialog.java +2 −0 Original line number Diff line number Diff line Loading @@ -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. Loading