summaryrefslogtreecommitdiffstats
path: root/policy
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2010-05-06 16:31:34 -0700
committerJim Miller <jaggies@google.com>2010-05-06 16:31:34 -0700
commit1d587e3d5d91fab1cf3048bbeeafa86445cbd08c (patch)
tree85fb56a18bd34550932a7bd260ea38f9d8f8617f /policy
parentebad36db56017000ce8b1eb813537d90248e3ad0 (diff)
downloadframeworks_base-1d587e3d5d91fab1cf3048bbeeafa86445cbd08c.zip
frameworks_base-1d587e3d5d91fab1cf3048bbeeafa86445cbd08c.tar.gz
frameworks_base-1d587e3d5d91fab1cf3048bbeeafa86445cbd08c.tar.bz2
Manual integration of I32a7b5 from froyo
Fix 2662816: Move UI update from async callback to ui thread. This fixes a bug where the view hierarchy in AccountUnlockScreen was being modified by the async callback thread from AccountManager. Change-Id: I5f1b4e04a7e4af68a5705545765f294cdbd0f17b
Diffstat (limited to 'policy')
-rw-r--r--policy/com/android/internal/policy/impl/AccountUnlockScreen.java64
1 files changed, 32 insertions, 32 deletions
diff --git a/policy/com/android/internal/policy/impl/AccountUnlockScreen.java b/policy/com/android/internal/policy/impl/AccountUnlockScreen.java
index cb88916..840c5e1 100644
--- a/policy/com/android/internal/policy/impl/AccountUnlockScreen.java
+++ b/policy/com/android/internal/policy/impl/AccountUnlockScreen.java
@@ -174,28 +174,33 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree
}
}
- private void onCheckPasswordResult(boolean success) {
- if (success) {
- // clear out forgotten password
- mLockPatternUtils.setPermanentlyLocked(false);
- mLockPatternUtils.setLockPatternEnabled(false);
- mLockPatternUtils.saveLockPattern(null);
-
- // launch the 'choose lock pattern' activity so
- // the user can pick a new one if they want to
- Intent intent = new Intent();
- intent.setClassName(LOCK_PATTERN_PACKAGE, LOCK_PATTERN_CLASS);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- mContext.startActivity(intent);
- mCallback.reportSuccessfulUnlockAttempt();
-
- // close the keyguard
- mCallback.keyguardDone(true);
- } else {
- mInstructions.setText(R.string.lockscreen_glogin_invalid_input);
- mPassword.setText("");
- mCallback.reportFailedUnlockAttempt();
- }
+ private void postOnCheckPasswordResult(final boolean success) {
+ // ensure this runs on UI thread
+ mLogin.post(new Runnable() {
+ public void run() {
+ if (success) {
+ // clear out forgotten password
+ mLockPatternUtils.setPermanentlyLocked(false);
+ mLockPatternUtils.setLockPatternEnabled(false);
+ mLockPatternUtils.saveLockPattern(null);
+
+ // launch the 'choose lock pattern' activity so
+ // the user can pick a new one if they want to
+ Intent intent = new Intent();
+ intent.setClassName(LOCK_PATTERN_PACKAGE, LOCK_PATTERN_CLASS);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ mCallback.reportSuccessfulUnlockAttempt();
+
+ // close the keyguard
+ mCallback.keyguardDone(true);
+ } else {
+ mInstructions.setText(R.string.lockscreen_glogin_invalid_input);
+ mPassword.setText("");
+ mCallback.reportFailedUnlockAttempt();
+ }
+ }
+ });
}
@Override
@@ -270,7 +275,7 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree
final String password = mPassword.getText().toString();
Account account = findIntendedAccount(login);
if (account == null) {
- onCheckPasswordResult(false);
+ postOnCheckPasswordResult(false);
return;
}
getProgressDialog().show();
@@ -283,18 +288,13 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree
mCallback.pokeWakelock(AWAKE_POKE_MILLIS);
final Bundle result = future.getResult();
final boolean verified = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT);
- // ensure on UI thread
- mLogin.post(new Runnable() {
- public void run() {
- onCheckPasswordResult(verified);
- }
- });
+ postOnCheckPasswordResult(verified);
} catch (OperationCanceledException e) {
- onCheckPasswordResult(false);
+ postOnCheckPasswordResult(false);
} catch (IOException e) {
- onCheckPasswordResult(false);
+ postOnCheckPasswordResult(false);
} catch (AuthenticatorException e) {
- onCheckPasswordResult(false);
+ postOnCheckPasswordResult(false);
} finally {
mLogin.post(new Runnable() {
public void run() {