Skip to content
Browse files

Fix 2662816: Move UI update from async callback to ui thread. DO NOT …

…MERGE

This fixes a bug where the view hierarchy in AccountUnlockScreen was being
modified by the async callback thread from AccountManager.

DO NOT MERGE because path has changed.

Change-Id: I32a7b5df8ade3dca376a342b4e5aee53d0c204f2
  • Loading branch information...
1 parent cddfd77 commit 55b16fce30bac6ba207d671757f1f3eb75739cb5 Jim Miller committed May 6, 2010
Showing with 32 additions and 32 deletions.
  1. +32 −32 phone/com/android/internal/policy/impl/AccountUnlockScreen.java
View
64 phone/com/android/internal/policy/impl/AccountUnlockScreen.java
@@ -174,28 +174,33 @@ public void onClick(View v) {
}
}
- 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 @@ private void asyncCheckPassword() {
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 void run(AccountManagerFuture<Bundle> future) {
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() {

0 comments on commit 55b16fc

Please sign in to comment.
Something went wrong with that request. Please try again.