Merge "Fix 5452698: fix broken logic in reportFailedAttempt() in lockscreen" into ics-mr0
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index 96998af..ac2a41e 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -421,16 +421,20 @@
                         Slog.i(TAG, "Too many unlock attempts; device will be wiped!");
                         showWipeDialog(failedAttempts);
                     }
-                } else if (usingPattern && mEnableFallback) {
-                    if (failedAttempts == failedAttemptWarning) {
-                        showAlmostAtAccountLoginDialog();
-                    } else if (failedAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_RESET) {
-                        mLockPatternUtils.setPermanentlyLocked(true);
-                        updateScreen(mMode, false);
-                    }
                 } else {
-                    final boolean showTimeout =
+                    boolean showTimeout =
                         (failedAttempts % LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT) == 0;
+                    if (usingPattern && mEnableFallback) {
+                        if (failedAttempts == failedAttemptWarning) {
+                            showAlmostAtAccountLoginDialog();
+                            showTimeout = false; // don't show both dialogs
+                        } else if (failedAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_RESET) {
+                            mLockPatternUtils.setPermanentlyLocked(true);
+                            updateScreen(mMode, false);
+                            // don't show timeout dialog because we show account unlock screen next
+                            showTimeout = false;
+                        }
+                    }
                     if (showTimeout) {
                         showTimeoutDialog();
                     }