Prevent re-entrant calls to onPause
This can occur when launching an occluding activity where the user has user the password bouncer. The IME animation begins, but is then canceled in favor of the activity being launched, which begins a chain of events that start a second call to pause. Fixes: 236348317 Test: manual (follow steps in bug to launch occluding activity) Change-Id: I158504872d41c96f1f6f27cab481945cd11c27e0
This commit is contained in:
@@ -59,6 +59,7 @@ public class KeyguardPasswordViewController
|
||||
private final boolean mShowImeAtScreenOn;
|
||||
private EditText mPasswordEntry;
|
||||
private ImageView mSwitchImeButton;
|
||||
private boolean mPaused;
|
||||
|
||||
private final OnEditorActionListener mOnEditorActionListener = (v, actionId, event) -> {
|
||||
// Check if this was the result of hitting the enter key
|
||||
@@ -202,6 +203,7 @@ public class KeyguardPasswordViewController
|
||||
@Override
|
||||
public void onResume(int reason) {
|
||||
super.onResume(reason);
|
||||
mPaused = false;
|
||||
if (reason != KeyguardSecurityView.SCREEN_ON || mShowImeAtScreenOn) {
|
||||
showInput();
|
||||
}
|
||||
@@ -222,6 +224,11 @@ public class KeyguardPasswordViewController
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
if (mPaused) {
|
||||
return;
|
||||
}
|
||||
mPaused = true;
|
||||
|
||||
if (!mPasswordEntry.isVisibleToUser()) {
|
||||
// Reset all states directly and then hide IME when the screen turned off.
|
||||
super.onPause();
|
||||
|
||||
Reference in New Issue
Block a user